Как спроектировать связь между контентом и отображением в реляционной базе данных? - PullRequest
0 голосов
/ 16 октября 2018

Недавно мне пришлось написать интерфейс API, который динамически отображает страницу, думая о том, чтобы отделить содержимое от пути отображения, чтобы повторно использовать конфигурацию отображения.

Общий дизайн выглядит следующим образом:

  1. Отображение шаблона таблицы шаблонов;

  2. Отображение элемента таблицы содержимого, который разделен на несколько различных типов, соответствующих различным данным и типам отображения;

  3. Несколько таблиц содержимого, detail_xxx, конкретное содержимое, например, какие продукты не имеют никакого отношения к дисплею;

  4. Соответствует содержимомуТаблица, несколько таблиц отображения, display_xxx, определяет формат отображения данных, например поля, размер изображения и т. д.

В деталях есть определенность того, как связана связь междуэлемент, детализация и отображение лучше?

Вариант 1 : связанный с таблицей сведений, поместите display_xxx_id в таблицу detail_xxx.Это была также оригинальная идея, но, согласно дизайну MVC, этот метод не полностью разделял содержимое и отображение, и в большинстве случаев детали могут быть списком;

Опция 2 : Ассоциация id таблицы элементов, elementid добавляется в detail_xxx и добавляется на дисплей, так что степень связи низкая, но степень мультиплексирования дисплея не высока, и данные легко могут быть избыточными;

Опция 3 : таблица элементов связана с полем, detail_id и display_id.Таким образом, дисплей можно использовать повторно, а контент и дисплей слабо связаны.

Теперь я использую компромисс между опцией-2 и опцией-3 , element-detail, добавляет элементную ассоциацию в таблицу деталей, потому что деталь в большинстве случаев является списком;element-display добавляет ассоциацию displayid в таблицу элементов, потому что display уникален.

Я хочу знать, что лучше, и как создать связь между контентом и его отображением?

...