|
|
|
Помощь в проектировании БД (тренинги и занятия по языкам)
|
|||
|---|---|---|---|
|
#18+
Добрый день ! ! ! Ситуация такая: необходимо спроектировать и предложить вариант решения такой проблемы: запись на тренинги по языкам разные языки ( английский, немецкий, испанский и т д , всего 10 групп) ограниченные группы и разное кол-во участников английский (10 человек) немецкий (15 человек) испанский (20 человек) в каждой из групп есть староста - (случайным образом выбирается ) После прохождения тренингов и обучения , группы распускаются и затем снова идет набор слушателей на занятия. Мой вариант : таблица студенты students ( id, name, email) таблица учебные курсы lessons (id, name, count, is_blocked) name - название дисциплины , count -максимальное кол-во слушателей на курсе, is_blocked - статус таблицы false/true (заполнена ли группа) таблица учеба work (id_lessons , id_students) Есть такие ограничения: один студент может состоять в нескольких языковых группах, в одной группе могут быть различые студенты. Важно, чтобы кол-во студентов не превышало допустимый лимит (10, 15 человек и т д) и чтобы один и тот же студент не смог дважды записаться на тот же тренинг в текущий момент, но потом после завершения курсов, он сможет подать заявку. в таблице lessons я ввел поле count , чтобы регулировать это кол-во и не записывать лишних студентов на курсы, которые уже заполнены, is_blocked думаю использовать для проверки блокировки строки из этой таблицы ( т е запись на тренинги по английскому языку невозможна, так как там идет учебы и группа уже сформирована . is_blocked равен true ) , если это значение false, то можно уже думать о принятии заявки от слушателя, т е идет проверка на повторную регистрацию на тренинги ( может он уже есть и просто балуется ) . Мне нужен совет: правильный ли это подход ? каким образом можно прописать логику работу такого механизма? т е там , как я понимаю, нужны будут блокировки на уровне строк и транзакции. Насколько это в Ваших силах и желании, помогите. Это мое первое проектировании, мне будет ценным каждый совет С Уважением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 11:58 |
|
||
|
Помощь в проектировании БД (тренинги и занятия по языкам)
|
|||
|---|---|---|---|
|
#18+
авторis_blocked - статус таблицы false/true (заполнена ли группа) Не рекомендую. Это уже денормализация (заполнена ли группа можно сказать только выполнив запрос и сравнив его с лимитом). Так делают, если есть проблемы с производительностью и готовы мирится с возможными ошибками. Пропущена таблица сезон обучения (год, месяц, семестр или просто с даты по дату.). Пересечение студенты к занятиям M:M будет студент_тренинг_сезон. Первичный ключ не даст повторно зарегистрироватся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 17:42 |
|
||
|
|

start [/forum/topic.php?fid=32&gotonew=1&tid=1541256]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 353ms |

| 0 / 0 |
