2011-10-01 3 views
0

У меня есть таблица комментариев для блогов, статей, профилей. Таблица комментариев может быть супертипом и comments_blog, comments_article, comments_profile может быть подтипами.Должен ли подтип/супертип использоваться в данных?

Следует ли использовать супертип/подтип в дизайне базы данных, поскольку это объектно-ориентированный дизайн или должен иметь 3 разных таблицы?

ответ

1

все зависит от деталей. Существуют аргументы для каждого подхода. В принципе, чем больше данных распределяется между таблицами, тем больше смысла он «нормализует» данные и использует «супертип/подтип», как вы выразились. Обратите внимание: если вы примете такой подход, ваш sql может стать довольно сложным, и вам придется присоединиться к ним.

Другой вариант состоит в том, чтобы иметь таблицу и использовать простую колонку, такую ​​как «comment_type», чтобы различать, если это блог, статья или профиль. Sql для этого подхода тоже будет очень простым, а его просто where comment_type = 'whatever'. Не забудьте указать столбец «comment_type». Этот подход имеет меньшее значение, если столбцы в ваших таблицах сильно отличаются друг от друга.

+0

Согласен. Я бы добавил, что это зависит от того, сколько общего кода вы будете использовать для доступа и изменения этих различных типов комментариев. Если ваш код использует классы супертипа/подтипа, то ваше хранилище данных, скорее всего, получит выгоду от наличия аналогичной структуры. –

Смежные вопросы