Рассмотрим базу данных с таблицами продуктов и сотрудников. Существует новое требование к моделированию действующих менеджеров по продукту, поскольку они являются единственным сотрудником, ответственным за продукт, и отмечают, что некоторые продукты являются простыми или достаточно зрелыми, чтобы не требовать менеджера по продукту. То есть у каждого продукта может быть ноль или один менеджер продукта.
Подход 1: изменить таблицу Product
, чтобы добавить новый NULL
способный столбец product_manager_employee_ID
, чтобы продукт без менеджера по продукту моделировался значением NULL
.
Подход 2: создать новую таблицу ProductManagers
с не NULL
способными столбцами product_ID
и employee_ID
, с уникальным ограничением на product_ID
, так что продукт без менеджера по продукту моделируется с помощью отсутствие строки в этой таблице.
Существуют и другие подходы, но я чаще всего сталкиваюсь с этими двумя.
Если предположить, что это и законные варианты дизайна (как я склонен верить), и они просто представляют разные стили, у них есть названия? Я предпочитаю подход 2 и мне трудно передать разницу в стиле тому, кто предпочитает подход 1, не используя фактический пример (как я сделал здесь!). Было бы неплохо, если бы я мог сказать: «Я предпочитаю склоняюсь к 6NF (или какому-либо другому) стилю сам. "
Предполагая, что один из этих подходов на самом деле является антишаблоном (как я подозреваю, это может быть подходом к подходу 1, моделируя отношения между двумя сущностями как атрибутом одной из этих сущностей), имеет ли этот антишаблон имя