Дизайн базы данных для регистрации курса и цены - PullRequest
0 голосов
/ 09 июля 2019

Как бы вы разработали таблицы для обработки регистрационной формы и цен на предстоящее мероприятие?

Как видно из таблицы ниже:

+-----------------------------+-------------------+----------------+--------------+
|      Occupation/Level       |   Optional Item   | Base Price | Early Bird Price |
+-----------------------------+-------------------+------------+------------------+
| Residents                   |                   | $1000      | $800             |
+--------------------------------------------------------------+------------------+
| Practitioners               | Exam Prep (+$500) | $1500      | $1300            |
+--------------------------------------------------------------+------------------+
| OBYGN Consultant - Friday   |                   | $800       | $900             |
| OBYGN Consultant - Saturday |                   | $800       | $900             |
| OBYGN Consultant - Sunday   |                   | $600       | $700             |
| OBYGN Consultant - All Days |                   | $1900      | $2100            |
+-----------------------------+-------------------+------------+------------------+
  • разные цены взимаются в зависимости от профессии участника.
  • практикующие имеют доступ к дополнительной подготовительной сессии к экзамену за дополнительную плату.
  • OBGYN Консультанты имеют возможность зарегистрироваться на один / несколько дней; каждый из которых взимает различную сумму

Чтобы проиллюстрировать детали, вот скриншот старой регистрационной формы. enter image description here

Моя первоначальная идея состоит в том, чтобы сделать это очень простым, обрабатывать каждую строку отдельно и хранить сумму вместе с ней. Дни, которые может выбрать консультант OBGYN, просто становятся еще одной строкой в ​​таблице.

+----+---------------------------+----------------+------------------+
| ID |     Occupation/Level      | Base Price     | Early Bird Price |
+----+---------------------------+----------------+------------------+
|  1 | Residents                 | $1000          | $800             |
|  2 | Practitioners             | $1500          | $1300            |
|  4 | OBYGN_Consultant_Friday   | $800           | $900             |
|  5 | OBYGN_Consultant_Saturday | $800           | $900             |
|  6 | OBYGN_Consultant_Sunday   | $600           | $700             |
|  7 | OBYGN_Consultant_All_Days | $1900          | $2100            |
+----+---------------------------+----------------+------------------+

Таблица option_materials будет обрабатывать любые курсы, которые имеют дополнительные опции.

+----+----------+-----------+--------+
| ID | CourseID |   Name    | Amount |
+----+----------+-----------+--------+
|  1 |        2 | Exam Prep | $500   |
+----+----------+-----------+--------+

Видите какие-либо серьезные проблемы с этим дизайном ИЛИ видите лучший способ справиться с этим?

1 Ответ

2 голосов
/ 09 июля 2019

Зависит от того, насколько гибко вы хотите быть в будущем. Если вы, например, хотите, чтобы в следующем году цена была очень ранней, или вы будете поддерживать разные валюты, я бы сделал так:

+----+----------+---------------------------+------------+-------+----------+
| ID | CourseID |           Title           | Price Type | Price | Currency |
+----+----------+---------------------------+------------+-------+----------+
|  1 |        1 | Residents                 | Base       |  1000 | Dollar   |
|  2 |        1 | Residents                 | Early      |   800 | Dollar   |
|  3 |        2 | Practitioners             | Base       |  1500 | Dollar   |
|  4 |        2 | Practitioners             | Early      |  1300 | Dollar   |
|  5 |        4 | OBYGN_Consultant_Friday   | Base       |   800 | Dollar   |
|  6 |        4 | OBYGN_Consultant_Friday   | Early      |   900 | Dollar   |
|  7 |        5 | OBYGN_Consultant_Saturday | Base       |   800 | Dollar   |
|  8 |        5 | OBYGN_Consultant_Saturday | Early      |   900 | Dollar   |
|  9 |        6 | OBYGN_Consultant_Sunday   | Base       |   600 | Dollar   |
| 10 |        6 | OBYGN_Consultant_Sunday   | Early      |   700 | Dollar   |
| 11 |        7 | OBYGN_Consultant_All_Days | Base       |  1900 | Dollar   |
| 12 |        7 | OBYGN_Consultant_All_Days | Early      |  2100 | Dollar   |
+----+----------+---------------------------+------------+-------+----------+

Но в целом ваш подход полностью действителен.

Также лучше добавить поле даты «Создано» и «Отредактировано» в конце. Упрощает сохранение прозрачности изменений данных (возможно, вы хотите выделить опции, которые доступны только или изменились за последние 14 дней или около того)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...