Лучшая схема для сложного отношения в базе данных - PullRequest
1 голос
/ 23 декабря 2011

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

quiz: таблица с некоторыми тестами

project: таблица, содержащая несколько проектов

project_has_quiz: викторина проекта таблицы отношений «многие-многие»

team: таблица, содержащая несколько команд

event: таблица, содержащая некоторые события (проект плюс дата и некоторые другие поля)

event_has_team: команда-событие таблицы «многие-многие»

Теперь я должен назначить заказ на викторины для каждой команды в событии. Например:

Скажем, у вас есть 5 тестов a, b, c, d, e.

Вы создаете проект projectA с викторинами a, b и c.

У вас есть две команды: teamA и teamB

Вы создаете событие eventA с projectA и связываете его с teamA и teamB.

Теперь я должен указать где-нибудь, что eventA с teamA должен иметь порядок викторины a, b, c и eventA с teamB должен иметь порядок викторины c, a, b.

Каков наилучший способ сделать это?

Первая идея, которую я имею, состоит в том, чтобы создать другую таблицу: event_has_team_has_quizOrder, с колонкой quizOrder, вставленной через программный код a, b, c и c, a, b. Но я не думаю, что это самый чистый способ достичь этого и что у него, безусловно, есть проблемы с денормализацией.

Большое спасибо.

1 Ответ

1 голос
/ 23 декабря 2011

вы могли бы сделать

event_has_team_has_quizOrder

(event, team, quiz, sequence)


eventA, teamA, a, 1
eventA, teamA, b, 2
eventA, teamA, c, 3
eventA, teamB, c, 1
eventA, teamB, a, 2
eventA, teamB, b, 3
...