подтип или отдельные таблицы? - PullRequest
0 голосов
/ 10 октября 2011

У меня есть следующие объекты: книги, авторы и магазины.

Каждый из них может иметь раздел комментариев. Должен ли я хранить комментарии в отдельной таблице ИЛИ иметь дизайн подтипа / супертипа? Это технически неправильно, если я использую отдельные таблицы? Потому что в любом случае может потребоваться такой же объем работы ИЛИ дизайн подтипа может потребовать больше работы, если иерархия супертипа изменится для любого подтипа.

1 Ответ

0 голосов
/ 10 октября 2011

Супертипы и подтипы затрагивают проблему «Эти вещи не совсем похожи, но они также не очень разные».

Для разработки супертипа / подтипа требуется, чтобы некоторые атрибуты были сохранены в супертипе, а некоторые - нет.храниться в подтипе.Атрибуты для каждой вещи в реальном мире разделены между двумя таблицами.

Как вы решаете, как разделить атрибуты?Атрибуты, общие для всех подтипов, перемещаются "вверх" в супертип.Так что, если вы начинали с компаний и частных лиц, они не совсем одинаковы, потому что

  • один - это индивидуум, другой - (концептуально) группа людей,
  • одинможет иметь детей, другой не может,
  • один может жениться, другой не может

и т. д.

Они не совсемразные, потому что

  • оба могут иметь несколько адресов, телефонных номеров, адресов электронной почты, веб-сайтов и т. д.,
  • оба могут заключать контракты с другими компаниями,
  • оба могут заключать контракты с другими лицами,
  • оба обязаны подавать налоговые декларации

и т. д.

Атрибуты, общие для обоих (юридическое названиепо крайней мере) всплыть в супертип.

В вашем случае, однако, неясно, как книги, авторы и магазины вписываются в этот анализ.Понятно, что они не совсем похожи.Но они совершенно разные?Я так думаю.

Если вы говорите о чем-то вроде сообщений на веб-сайте о книгах, людях и магазинах, это уже другая история. ответ на аналогичный вопрос SO включает код.

...