Нормализация и структура базы данных

У меня есть структура данных, которая имеет следующие таблицы

Customers
Transactions (Type A)
Transactions (Type B)

Мы добавляем Comments Таблица

Customers есть еще один из Transactions A а также Transactions BComments может быть связано либо с Transactions или Customer

Мы проводим внутреннее обсуждение формата базы данных.

Одна сторона хочет создать таблицу комментариев и 3 кросс-таблицы. Одна сторона хочет создать таблицу комментариев с внешним ключом для клиента и двумя обнуляемыми ключами для транзакций.

Существует ли правило нормальной формы, которое гласит, что одно лучше другого? Есть ли консенсус?

РЕДАКТИРОВАТЬ:

Больше ответов и особенностей

  • Комментарии никогда не будут связаны с более чем одним клиентом
  • Комментарии никогда не будут связаны с более чем одной транзакцией
  • Комментарии будут когда-либо связаны только с Транзакцией A, Транзакцией B или ни с одним; но никогда не
  • Клиенты и транзакции могут иметь 0 или более комментариев

1 ответ

Решение

Наиболее важные нормальные формы (1NF-6NF,BCNF и производные) не допускают нулевые значения в таблицах, поскольку все они основаны только на отношениях со значениями, а не на нулевых. Более полезным является принцип разработки, называемый принципом ортогонального проектирования, который определяет, что кортежи с одинаковыми атрибутами не должны появляться в нескольких местах в вашей схеме. Вполне вероятно, что ваши две таблицы транзакций и наличие комментариев в нескольких местах нарушили бы это правило ортогонального дизайна.

Вы можете создать родительскую таблицу транзакций, которая объединяет общие атрибуты ваших двух таблиц транзакций, включая атрибут комментария (шаблон супертипа / подтипа).

Другие вопросы по тегам