Предположим, что у вас есть эти таблицы: RestaurantChains
, Restaurants
, MenuItems
- с очевидными отношениями между ними. Теперь у вас есть таблицы Comments
и Ratings
, в которых хранятся отзывы и рейтинги клиентов о цепях, ресторанах и пунктах меню. Каким будет лучший способ связать эти таблицы? Очевидные решения могут быть:Поля базы данных владельца идентификатора
- Используйте столбцы
OwnerType
иOwnerID
в таблицахComments
иRatings
, но теперь я не могу добавить внешние ключи Ссылка/рейтинги с объектами они Мент для - Создать отдельный таблицы
Comments
иRatings
для каждой таблицы, напримерMenuItemRatings
,MenuItemComments
и т. Д. Это решение имеет то преимущество, что все правильные внешние ключи присутствуют и имеют очевидное несоответствие наличием много-много таблиц с в основном той же структурой.
Итак, какое решение работает лучше? Или есть даже лучшее решение, о котором я не знаю?
Меню-комментарии Ресторан-комментарии и комментарии вообще могут быть связаны в шаблоне gen-spec. Имеет ли смысл делать это, в этом случае зависит от того, как данные будут использоваться. Я не решаюсь рекомендовать gen-spec в этом случае, хотя я предложил его в ответ на несколько других сообщений –