Нет ни одного «правильного» ответа. Это зависит от нескольких факторов.
(. К счастью, вы не упомянули реализации Субъект Значение атрибута() модель EAV я настоятельно рекомендую вам избежать этого.)
Некоторые факторы, чтобы рассмотреть следующие вопросы:
Рассмотрим отношения ... будет каждый «категория» имеет те же отношения с другими объектами? Вы показываете «событие», имеющее атрибут location
... это атрибут, или это означает отношение к другому объекту?
Рассмотрите, как ваши запросы нужно будет записать. Вам часто придется запрашивать строки из нескольких «категорий» вместе?Для большого количества строк для лучшей производительности вам нужно избегать встроенных представлений, чтобы использовать UNION ALL
для объединения отдельных таблиц в один вид.
Существует много хорошей информации о сопоставлении «иерархии наследования» в реляционной базе данных, плюсах и минусах каждого подхода и примерах того, что это похоже, и (что наиболее важно), что представляют собой запросы.
Followup
Если требуется обрабатывать каждую категорию в отдельности, и вам не нужно запрашивать комбинированную категорию, то я бы с отдельной таблицей для каждой категории (вариант 2), для легкость и простоту.
Если вам нужно запросить объединенную категорию (например, выбрать из любой категории ORDER BY date_col
, то я, вероятно, поеду с отдельной таблицей с столбцом дискриминатора (category
), чтобы иметь возможность различать, какая категория является строкой. ограниченное количество атрибутов, у меня возникнет соблазн определить все атрибуты, а затем просто заполнить те, которые применяются к каждой категории. (Вариант 1)
Третий вариант также может быть выполнен. для работы.
Это будет довольно просто, я не думаю, что любой из атрибутов будет иметь отношение к другим объектам. На главной странице будут перечислены столбцы, под заголовком, датой, категорией и описанием, со ссылкой на полную статью. Также будет выпадающее меню, в котором вы можете выбрать только просмотр из определенной категории. Благодарим вас за советы по поводу использования 'UNION ALL'. Я полный ноб, так что хорошо знать эти вещи (также не имел понятия, что существует термин для иерархии наследования) ... мое образованное предположение было бы использовать мое третье предложение. Правильно ли это звучит? – user1966246
Также, когда вы переходите к определенной записи, он будет перечислять другие сообщения в этой категории, если это имеет значение – user1966246