пользователь user287724 дает следующий пример книги и отношения автора:
Однако книга написана автором, и автор мог написать несколько книг. Но книга должна быть написана автором, она не может существовать без автора. Следовательно, отношения между книгой и автором являются идентифицирующими отношениями.
Это очень запутанный пример и определенно не является допустимым примером для identifying relationship
.
Да, book
не может быть записан без хотя бы одного author
, но author
(это внешний ключ) book
равен НЕ ИДЕНТИФИКАЦИЯ book
в books
таблица!
Вы можете удалить author
(FK) из строки book
и по-прежнему можете идентифицировать строку книги по некоторому другому полю (ISBN
, ID
, ... и т. Д.), НО НЕ автор книги !!
Я думаю, что действительным примером identifying relationship
будет отношение между (таблица продуктов) и (таблица данных конкретного продукта) 1:1
products table
+------+---------------+-------+--------+
|id(PK)|Name |type |amount |
+------+---------------+-------+--------+
|0 |hp-laser-510 |printer|1000 |
+------+---------------+-------+--------+
|1 |viewsonic-10 |screen |900 |
+------+---------------+-------+--------+
|2 |canon-laser-100|printer|200 |
+------+---------------+-------+--------+
printers_details table
+--------------+------------+---------+---------+------+
|Product_ID(FK)|manufacturer|cartridge|color |papers|
+--------------+------------+---------+---------+------+
|0 |hp |CE210 |BLACK |300 |
+--------------+------------+---------+---------+------+
|2 |canon |MKJ5 |COLOR |900 |
+--------------+------------+---------+---------+------+
* please note this is not real data
В этом примере Product_ID
в таблице printers_details
считается FK, ссылающимся на таблицу products.id
, а ТАКЖЕ PK в таблице printers_details
, это идентификационная связь, потому что Product_ID
(FK) в таблице принтеров ИДЕНТИФИКАЦИЯ строки внутри дочерней таблицы, мы не можем удалить product_id
из дочерней таблицы, потому что мы больше не можем идентифицировать строку, потому что мы потерял свой первичный ключ
Если вы хотите поместить его в 2 строки:
идентифицирующая связь - это связь, когда ФК в
дочерняя таблица считается PK (или идентификатором) в дочерней таблице, в то время как
по-прежнему ссылается на родительскую таблицу
Другой пример может быть, когда у вас есть 3 таблицы (импорт - продукты - страны) в базе данных импорта и экспорта для базы данных некоторых стран
Таблица import
- это дочерний элемент, в котором есть эти поля (product_id
(FK), country_id
(FK), объем импорта, цена, импортированные единицы, способ транспортировки ( air, sea))
we may use the (
product_id , the
country_id`) для идентификации каждой строки импорта, «если они все в одном и том же году», здесь оба столбца могут составлять первичный ключ в дочерней таблице (импорт), а также ссылаясь на родительские таблицы.
Пожалуйста, я счастлив, что я наконец-то понял концепцию identifying relationship
и non identifying relationship
, поэтому, пожалуйста, не говорите мне, что я не прав со всеми этими поднятиями голосов для полностью неверного примера
Да, логически книга не может быть написана без автора, но книга может быть идентифицирована без автора, на самом деле она не может быть идентифицирована с автором!
Вы можете на 100% удалить автора из строки книги и все же можете идентифицировать книгу! .