Я быстро изучаю тонкости проектирования баз данных (то, что еще неделю назад было для меня новым), но я сталкиваюсь с некоторыми вопросами, которые не кажутся сразу очевидными, поэтому я надеялся получить некоторые разъяснения. .
Вопрос, который у меня есть, касается внешних ключей. Как часть моего дизайна, у меня есть таблица Company. Первоначально я включил информацию об адресе непосредственно в таблицу, но, поскольку я надеялся достичь 3NF, я вынес информацию об адресе в отдельную таблицу, Address. Чтобы сохранить целостность данных, я создал строку в Company с именем "addressId" в качестве INT, а таблица Address имеет соответствующий addressId в качестве первичного ключа.
Что меня немного смущает (или то, что я хочу убедиться, что делаю правильно), так это определение того, какая таблица должна быть главной (ссылочной) таблицей, а какая дочерней (ссылающейся) таблицей. При первоначальной настройке я сделал таблицу Address главной, а Company — дочерней. Однако теперь я считаю, что это неправильно из-за того, что должен быть только один адрес для каждой компании, и, если строка компании удалена, я бы хотел, чтобы соответствующий адрес также был удален (удаление КАСКАД).
Я могу подойти к этому совершенно неправильно, поэтому я был бы признателен за любые хорошие эмпирические правила о том, как лучше всего думать об отношениях между таблицами при использовании внешних ключей. Спасибо!