Частичные ключи в наборе слабых сущностей
Я немного запутался с частичными ключами. "Концепции системы баз данных Корта" гласит следующее:
Хотя набор слабых объектов не имеет первичного ключа, нам, тем не менее, необходимы средства различения всех тех объектов в наборе слабых объектов, которые зависят от одного конкретного сильного объекта. Дискриминатор набора слабых объектов - это набор атрибутов, который позволяет проводить это различие. Дискриминатор слабого набора сущностей также называется частичным ключом множества сущностей.
Моя путаница заключается в том, что если дискриминатор / частичные ключи слабых объектов способны однозначно идентифицировать набор атрибутов, то он должен называться первичным ключом, а не частичными ключами, поскольку первичные ключи - это те, которые могут однозначно идентифицировать все атрибуты связь.
Кроме того, во время серфинга в Интернете я натолкнулся на определение частичного ключа, которое гласит:
"Частичный ключ - это ключ, с помощью которого все записи таблицы не могут быть однозначно идентифицированы".
У меня возникает вопрос, что если таблица состоит из первичного ключа, который состоит из двух или более атрибутов, то если мы выберем один атрибут из этого, то он будет называться частичным ключом, как этот атрибут является частью первичного ключа, но сам по себе он не может однозначно идентифицировать все атрибуты в отношении.
2 ответа
Определение не говорит о том, что "дискриминатор / частичные ключи слабых сущностей способны однозначно идентифицировать" внутри таблицы. Это говорит о том, что человек идентифицирует слабую сущность в конкретной сильной сущности
Технические термины означают только то, что они определены для обозначения в определенном контексте допущений, включая другие определения. Вы не можете ожидать, что один и тот же термин означает одно и то же везде. Вы не можете просто посмотреть на текст определения и сделать предположения о том, к каким ситуациям оно относится и что означают его технические термины или даже используется ли слово в техническом или повседневном смысле. Когда кто-то использует термин, вы должны убедиться, что знаете, что он имеет в виду.
Реляционный суперключ однозначно идентифицирует строку. CK (ключ-кандидат) - это суперключ, который не содержит суперключ. PK (первичный ключ) - это просто некоторый CK, который вы решили назвать PK.) Таким образом, уникальность не является причиной для того, чтобы называть что-то PK или CK. (SQL PK/UNIQUE аналогичен реляционному суперключу.)
Метод книги генерирует дискриминаторы, которые не являются суперключами. Таким образом, мы можем сказать, что это согласуется с определением сети - для случаев, которые возникают в этом методе. Но если бы метод позволял генерировать дискриминаторы, которые были CK или PK, то его использование этой формулировки учебника определило бы, что "частичный ключ" - это нечто иное, чем определение в Интернете. Такой метод не может использовать (реляционный) "PK" для сильного идентификатора плюс дискриминатор, потому что это будет суперключ, но не CK или PK. (Но он все еще может использовать SQL "PK", поскольку это примерно означает основной суперключ.)
Я действительно думаю, что этот тип описаний происходит с самого первого шага в любом процессе моделирования, и тот, который любой с любым опытом моделирования данных мог бы просто исправить, даже не думая об этом.
На вики-странице "Слабая сущность" приведен классический пример пары "Заголовок / Деталь", где сама деталь не имеет ссылки на заголовок. Подумайте о двухстраничном документе, где первая страница - это заголовок, вторая страница - это детали.
Сама по себе вторая страница не может однозначно идентифицировать строку, но, конечно, любой автоматически добавит заголовок FK, чтобы мы могли однозначно идентифицировать строку.
Я не видел книгу, которую вы читаете, но я думаю, что это то, к чему это приводит. Поэтому я думаю, что все ваши последующие рассуждения верны. Взгляните на вики-страницу для получения дополнительной информации.