2016-02-28 2 views
0

Я проектирование базы данных, имеющие следующие объекты:

Student_detail: имеет id как PK и отдохнуть некоторые атрибуты.
Event: Имеет сведения о различных событиях. event_no - ПК. (есть около 32 событий)
Participates_in: есть отношение между student_detail и event, имеет оба своих ПК как FKs.
Team_with: это отношение от таблицы student_detail к ней, она имеет столбцы 8participant, одна колонка team_id, одна колонка for_event_no (FK to event_no). Все столбцы participant являются FKs до student_detail.id.

В одной строке этого столбца отображается команда для определенного события.
Число 8, потому что максимальный размер команды во всех случаях равен 8.
События имеют переменное количество разрешенных размеров команды.
Я разработал таблицу team_with, чтобы избежать создания 30 разных таблиц для разных событий.
В связи с этим длина запроса увеличивается. Это хороший дизайн? Я хотел бы предложить для этого предложения.Проблемы с Schema Design

ответ

0

Все ли члены команды имеют равное членство? Если в команде было 8 фиксированных ролей, я бы согласился с вашим дизайном. Если нет, я предлагаю:

teams (team_id PK, for_event_no FK) 
team_members (team_id PK/FK, student_detail_id PK/FK) 

Однако применение максимального размера команды в 8 может оказаться более сложным. Я не вижу в этом серьезной проблемы, так как вы говорите, что разные события допускают разные размеры команд, поэтому ограничение в 8 может быть включено в этот механизм, однако оно реализовано.

В чем разница между участием в событии и членством в команде, связанной с этим событием? Уже существует связь между Event и Student_detail - прямо в вашем Team_with и транзитно в моем предложении. Participates_in может быть избыточным, если участие не возможно без участия в команде.

+0

Каждое мероприятие имеет разные размеры команды. Максимальный размер этих групп - 8 (есть событие с размером команды 8, остальные - меньше). Даже я начинал думать, что один из 'Participates_in' и' team_with' является избыточным. – klbm9999

+0

Как насчет этого, в 'участвует_in', я бы включил столбцы' team_id (int) 'и и' is_leader (bool) 'и drop' team_with' – klbm9999

+0

Может ли студент принадлежать более чем одной команде за событие? – reaanb

Смежные вопросы