У меня есть несколько вопросов о том, как определить отношение один ко многим.Я прочитал некоторые другие связанные вопросы о переполнении стека, но мне нужно немного больше информации:)
Предположим, у нас есть таблица "Страна" и таблица "Города".Мне кажется, что это пример отношения «один ко многим».Но когда я использую MySql Workbench для создания идентифицирующих отношений «один ко многим» между этими двумя таблицами, я получаю следующее:
Countries
---------
country_id (PK)
...
Cities
--------
city_id (PK)
country_id (PK)
...
У нас есть составной первичный ключ в таблице Cities, и он позволит следующие строки в этомtable (допустим, что country_id и city_id являются строками для лучшей читабельности):
1) France, Paris
2) England, London
3) England, Manchester
4) France, London
Чтобы это было правильно, нам нужно установить ограничение UNIQUE для city_id, чтобы оно могло принадлежать только одной стране.Но разве не более понятно, чем просто сделать country_id как NOT_NULL (FK) в таблице Cities и получить тот же эффект:
Cities
---------
city_id (PK)
country_id (FK) (NOT_NULL)
Итак, это идентифицирующая или неидентифицирующая связь?Мне кажется, что это «логически идентифицирующий», но по определению он не идентифицирующий, так как родительский PK не является частью дочернего PK.Это немного сбивает с толку:)