Я буду говорить о 3-й нормальной форме, так как это то, что чаще всего цитируется как разумный уровень для нормализации, хотя существует около 10 нормальных форм. По сути, 3-я НФ означает, что ничто в таблице, нормальная форма действительно не имеет отношения к отношениям (таблицам), а не к базе данных в целом, не зависит ни от чего, кроме ключа. Обычно я думаю об этом как об удалении любых ключей-кандидатов, как будто у вас есть ключ-кандидат, а также фактический ключ, тогда атрибуты функционально зависят от чего-то другого, кроме ключа.
С точки зрения адресного вопроса наличие потенциально важной сущности, такой как адрес, содержащийся в таблице для другой сущности, означает, что адрес становится транзитивно зависимым, скажем, в вашем случае, от клиента. Это означает, что адрес выживает только в том случае, если выживает клиент.
Это, конечно, не обязательно плохо, это зависит от того, нужен ли вам адрес, если у вас нет клиента.
Если это так, то на самом деле адрес теряет статус самостоятельной сущности и становится объектом-значением. Скажем, у вас есть таблица заказов, и вы хотите сохранить адрес, по которому он был отправлен, тогда это нормально. Одна ключевая вещь, если вы думаете об адресе таким образом, заключается в том, что он становится неизменным, он никогда не должен меняться, адрес, на который был отправлен заказ, всегда будет одним и тем же, он никогда не изменится, потому что это произошло и это факт.
Допустим, у вас есть требование хранить адрес вашего клиента, а также рабочий адрес, теперь вы окажетесь в ситуации, когда вам потребуется больше столбцов в таблице клиентов, чем все это заканчивается! Это приводит к практическим выборам ради здравомыслия и аккуратности, поэтому вы создаете таблицу адресов, которая может быть предназначена для сохранения нормальной формы или может быть просто для аккуратности, это зависит от того, что вы хотите делать с вновь созданным адресным объектом.
Перемещение данных из таблицы только для того, чтобы сделать таблицу более управляемой, обычно приводит к отношениям один к одному, и либо в клиентской таблице, либо вне ее нормальная форма, скорее всего, будет одинаковой.
Требуется немного практики, чтобы перемещать вещи по правильным причинам, но это того стоит.
person
M H
schedule
21.03.2020
Details
на самом деле будетSupertype
. - person Joel Brown   schedule 10.01.2013