Мне нужна помощь в понимании применимости внешних ключей при настройке ограничений.Я понимаю, что роль установки внешних ключей состоит в том, чтобы предотвратить потерю данных, но я обнаружил желание поместить внешний ключ в дочерний элемент, что, кажется, нарушает закономерность.Не уверен, что я делаю это правильно, и хотел бы получить несколько советов, если у меня есть правильные ограничения.
Вот мой дизайн:
(1) Я хочу, чтобы у всех моих «продуктов» был тип единицы, связанный с количеством.Единицы измерения, такие как «каждый», «фут», «галлон» и т. Д., Поэтому между количеством и единицей у вас будет что-то вроде:
Количественная единица 5 галлонов
Я нехочу разрешить кучу сумасшедших юнитов, поэтому я установил это ограничение.Это в значительной степени относится к книге.
(2) Я также считаю, что не все продукты будут иметь «изображение», поэтому я поместил внешний ключ в таблицу «ProductImage», чтобы у меня не было «продукта»."с столбцом с пустой строкой, потому что я также пытаюсь" нормализовать "дизайн.
Та же проблема с" FeeTypes ", потому что не у всех" Продуктов "будут сборы.
Я чувствую вину за то, что нарушил шаблон наложения ограничения внешнего ключа на ребенка, а не на родителя.Я просто не могу обернуться вокруг того, что FeeType - родитель.В этом конфликте в логике у меня возникает вопрос.
Является ли мой дизайн правильным с точки зрения дизайна?Я все еще ограничиваю данные должным образом?Есть ли еще какая-то «роль» помимо предотвращения потерянных данных?
Заранее спасибо.