Супертипы и подтипы затрагивают проблему «Эти вещи не совсем похожи, но они также не очень разные».
Для разработки супертипа / подтипа требуется, чтобы некоторые атрибуты были сохранены в супертипе, а некоторые - нет.храниться в подтипе.Атрибуты для каждой вещи в реальном мире разделены между двумя таблицами.
Как вы решаете, как разделить атрибуты?Атрибуты, общие для всех подтипов, перемещаются "вверх" в супертип.Так что, если вы начинали с компаний и частных лиц, они не совсем одинаковы, потому что
- один - это индивидуум, другой - (концептуально) группа людей,
- одинможет иметь детей, другой не может,
- один может жениться, другой не может
и т. д.
Они не совсемразные, потому что
- оба могут иметь несколько адресов, телефонных номеров, адресов электронной почты, веб-сайтов и т. д.,
- оба могут заключать контракты с другими компаниями,
- оба могут заключать контракты с другими лицами,
- оба обязаны подавать налоговые декларации
и т. д.
Атрибуты, общие для обоих (юридическое названиепо крайней мере) всплыть в супертип.
В вашем случае, однако, неясно, как книги, авторы и магазины вписываются в этот анализ.Понятно, что они не совсем похожи.Но они совершенно разные?Я так думаю.
Если вы говорите о чем-то вроде сообщений на веб-сайте о книгах, людях и магазинах, это уже другая история. ответ на аналогичный вопрос SO включает код.