MySQL> Должны ли столбцы таблицы psuedokey идентифицировать или неидентифицировать отношения? - PullRequest
0 голосов
/ 07 июля 2011

Взять следующие таблицы базы данных

|========|
|user    |
|========|
|id      |
|username|
|password|
|========|

|=========|
|blog     |
|=========|
|id       |
|date     |
|content  |
|author_id|
|=========|

blog.author_id предполагается подключенным к определенному user.id, независимо от того, кто написал запись в блоге явно.

Мой вопрос касается 1: 1, 1: n идентифицирующих и неидентифицирующих отношений ... Я действительно не очень понимаю их. Должны ли эти отношения быть одним из этих типов отношений или нет? И если да, то какой? И в чем это преимущество?

Ответы [ 2 ]

1 голос
/ 07 июля 2011

В этом примере между записью в блоге и автором существует соотношение 1: 1. Причина, по которой они существуют в виде отдельных сущностей / таблиц, заключается в группировке информации: пользовательские материалы не принадлежат записи blog и могут дублироваться, если кто-то пишет более одной blog.

Причина, по которой вы хотите реализовать это ограничение внешнего ключа, заключается в том, что ограничение гарантирует, что автор для записи blog существует в таблице user. В противном случае это могут быть бессмысленные / плохие данные. Внешний ключ не останавливает дубликаты - для этого вам понадобится первичный или уникальный ключ - внешний ключ проверяет только данные.

Теперь, когда Нанн прояснила для меня идентифицирующую / неидентифицирующую терминологию , blog.author_id будет идентифицирующей взаимосвязью. Потому что он определяет, кто (что user запись) автор.

Столбец id в обеих таблицах можно считать первичным ключом, поскольку искусственный / суррогатный ключ является наиболее распространенным первичным ключом. Что делает эти столбцы неидентифицирующими отношениями ...

0 голосов
/ 07 июля 2011

Поскольку блог и пользователь - это отдельные вещи, и они не определены друг другом, это неидентифицирующие отношения.Одно может быть чем-то без другого, даже если идентификатор автора может быть обязательным.

Также смотрите эту ссылку для более подробного объяснения двух терминов: В чем разница между идентифицирующими и неидентифицирующими отношениями?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...