Хорошо, я надеюсь, что это подходящий вопрос для stackoverflow, поскольку я пытаюсь понять концепцию, а не исправлять фрагмент кода, который не будет работать.
Я возьму общий пример формы (родительская таблица) и поля формы (дочерняя таблица). Логически, это будет определяющее отношение, так как поле формы не может существовать без формы.
Это заставило бы меня подумать, что для перевода отношения логического в техническое отношение достаточно простого NOT NULL
для поля form_id в таблице form_field, (см. левую часть выше).
Однако, когда я добавляю идентифицирующие отношения с помощью MySQL Workbench, form_id не только NOT NULL
, но также и часть первичного ключа. (см. правую часть выше).
И когда я добавляю неидентифицирующее отношение, NOT NULL
по-прежнему применяется так логически, что это действительно будет также идентифицирующее отношение.
Я думаю, это меня немного смущает, а также тот факт, что до сих пор я всегда просто использовал поле id в качестве первичного ключа.
Итак, я понимаю концепцию логической идентификации и неидентифицирующих отношений, но я не понимаю техническую часть . Почему, как этот ответ, говорится: "Правильный" способ сделать часть внешнего ключа дочернего первичного ключа?" В чем преимущество этих составных первичных ключей?