Махди, твои инстинкты верны. Это повторяющийся вопрос, и этот ответ с неправильным голосованием не является правильным или полным.
Посмотрите на два верхних ответа здесь:
разница между идентификацией неидентификации
Идентификация против неидентификации не имеет ничего общего с идентичностью.
Просто спросите себя, может ли запись ребенка существовать без родителя? Если ответ положительный, то он неидентифицирующий.
Основная проблема, включает ли первичный ключ дочернего элемента внешний ключ родительского элемента. В неидентифицирующих отношениях первичный ключ ребенка (PK) не может включать внешний ключ (FK).
Задайте себе этот вопрос
- Может ли дочерняя запись существовать без родительской записи?
Если ребенок может существовать без родителя, то отношения не идентифицируют. (Спасибо MontrealDevOne за более четкое изложение)
Идентифицирующее отношение один-к-одному
Номера социального страхования хорошо вписываются в эту категорию. Давайте представим, например, что номера социального страхования не могут существовать без человека (возможно, они могут в действительности, но не в нашей базе данных) person_id будет PK для таблицы person , включая столбцы, такие как name и address . (давайте будем простыми). Таблица social_security_number будет содержать столбец ssn и столбец person_id в качестве внешнего ключа. Поскольку этот FK может использоваться в качестве PK для таблицы social_security_number , это идентифицирующая связь.
Неидентифицирующая связь один-к-одному
В большом офисном комплексе у вас может быть стол office , который включает номера комнат по этажам и номер здания с PK, и отдельный стол employee . Таблица сотрудника (дочерняя) имеет FK, который является столбцом office_id из таблицы PK таблицы office . Хотя у каждого сотрудника есть только один офис, и (в данном примере) в каждом офисе есть только один сотрудник, это неидентифицирующая связь, поскольку офисы могут существовать без сотрудников, а сотрудники могут менять офисы или работать на местах.
Отношения один-ко-многим
Отношения один-ко-многим можно легко классифицировать, задавая один и тот же вопрос.
отношения многие ко многим
Отношения многие ко многим всегда определяют отношения. Это может показаться нелогичным, но потерпите меня. Возьмите две таблицы libary и books , в каждой библиотеке много книг, а копия каждой книги существует во многих библиотеках.
Вот что делает и выявляет взаимосвязь:
Чтобы реализовать это, вам нужна таблица связей с двумя столбцами, которые являются первичными ключами каждой таблицы. Назовите их столбец library_id и столбец ISBN . Эта новая таблица ссылок не имеет отдельного первичного ключа, но подождите! Внешние ключи становятся первичным ключом из нескольких столбцов для таблицы связей, поскольку дубликаты записей в таблице связей будут бессмысленными. ссылки не могут существовать без родителей; следовательно, это идентифицирующие отношения. Я знаю, чёрт не так ли?
В большинстве случаев тип отношений не имеет значения.
Все это говорит, обычно вам не нужно беспокоиться о том, что у вас есть. Просто назначьте надлежащие первичные и внешние ключи каждой таблице, и связь обнаружится сама собой.
РЕДАКТИРОВАТЬ: NicoleC , я прочитал ответ , который вы связали, и он согласен с моим. Я понимаю его мнение о SSN и согласен, что это плохой пример. Я постараюсь придумать еще один более понятный пример. Однако, если мы начнем использовать реальные аналогии при определении отношений с базой данных, аналогии всегда рушатся. Не важно, идентифицирует ли SSN человека, важно, использовали ли вы его в качестве внешнего ключа.