Допустим, у меня есть 3 модели:Что должен отношения таблицы выглядеть - нужно подтверждение моей техники
- пользователя
- Page
- Комментарии
я задал вопрос, основанный на если я буду иметь в каждой модели отслеживать ее отношения: SQL relationships and best practices
пример thi s будет таблицей «Страницы», в которой указывается, кто был ее автором ... Проблема заключалась в том, что если бы 2 пользователя были автором одной страницы, вам нужно было бы добавить новую определенную таблицу под названием PageRelationshipsWithUsers, которая может иметь ссылку на идентификатор страницы и идентификатор пользователя, который создал его, и отдельную строку для соавтора.
Понятно, что это звучит немного невзрачно. Я бы в конечном итоге столкнулся с нагрузкой таблиц отношений и, скорее всего, его можно было заменить только одной многоцелевой таблицей отношений ... Поэтому я решил составить таблицу соотношений следующим образом:
отношения Таблица Новый
RelationshipID | ItemID | LinkID | ItemType | LinkType | Status
-----------------------------------------------------------------------------
1 | 23(PageID) | 7(UserID) | ("Page") | ("User") | TRUE
2 | 22(CommentID) | 7(UserID) | ("Comment") | ("User") | TRUE
3 | 22(CommentID) | 23(PageID) | ("Comment") | ("Page") | TRUE
однако, я бы очень признателен некоторые материалы о том, как хорошо идеи выложив мою таблицу отношений, как это.
Любые мысли?
Ответ сказали мне коллега по работе:
Представьте таблицу выше соотношения для модели «Книга»
пользователь может взять напрокат книгу, так что отношение пользователя -> Книга ... Но что, если он может купить книгу тоже: User-> Book ....
Ooops, нам нужны новые отношения ... и учитывая, что эта таблица отношений должна была быть 1 размер подходит всем , теперь у нас есть требование добавить новую отдельную таблицу ... whoops.
Таким образом, ответ НЕТ НЕТ НЕТ. нет, это озорной. Держите свои таблицы отношений отдельными и конкретными.
Если какой-либо из ваших «типов» повторяется, они должны быть в их собственных таблицах. – Kermit
Я не уверен, что понимаю, что вы сказали. Вы имеете в виду, что если есть 2 типа страницы. один с титром и один с AwesomeTitle ... это редкий случай ... я не прав? – Jimmyt1988
Если вы хотите попасть в [3NF] (http://en.wikipedia.org/wiki/Third_normal_form), то повторяющиеся данные, которые у вас есть под типами, должны иметь свои собственные таблицы, а затем ссылаться в таблице ваших отношений. – Kermit