Если вы хотите удалять адрес каждый раз, когда удаляете компанию, это означает, что адрес напрямую зависит от компании, и сохранение адреса в таблице компании не нарушает 3NF
.
Если атрибуты адреса зависели от чего-то другого, чем компания, вы могли бы поместить их в таблицу адресов, чтобы сделать управление адресами более логически последовательным.
Скажем, вы можете разделить адрес на country / region / town / street
части, и если часть страны компании обрела независимость или что-то подобное, вы можете изменить адрес, просто изменив поле country
в отколовшихся регионах.
Однако это означает, что вы заинтересованы в адресах, а не в атрибутах, и вам больше не следует каскадно удалять их.
Обновление:
В определениях нормальных форм слово "зависимый" означает "зависимый в моей модели"
Скажем, адрес компании: Wall Street, New York, NY, USA
.
Если в вашей модели Wall Street
зависит от New York
, который зависит от NY
, который зависит от USA
, то сохранение его в одной таблице приведет к нарушению 3NF
.
Однако, если в вашей модели :
Wall Street, New York, CA, USA
является действительным адресом (что означает, что вы не собираетесь выдавать ошибку на этом адресе)
Неверная ситуация, когда вы обновляете адрес компании только , потому что вы делаете то же самое с некоторыми другими компаниями (это означает, что что-то вроде обработки переименования улиц или объединения регионы или другие географические обновления не являются частью ваших обычных бизнес-правил)
, тогда таблица с адресами находится в 3NF
.
Из вашего желания удалять адрес каждый раз, когда вы удаляете компанию, я считаю, что вы не собираетесь отслеживать зависимости адресов, и, следовательно, вы можете сохранить адрес в таблице компаний.