Потенциальные ключи
Первичный ключ – некоторый набор атрибутов, уникально идентифицирующих кортеж; частный случай потенциального ключа.
Пусть существует некоторое отношение P. Тогда потенциальный ключ K – подмножество множества атрибутов P, обладающее следующими свойствами: 1) Свойство уникальности: в отношении P не существует двух различных кортежей, совпадающих по атрибутам K. 2) Свойство неизбыточности: никакое из подмножеств K не обладает свойством уникальности.
Совокупность всех атрибутов – потенциальный ключ.
Комбинация всех атрибутов заведомо обладает свойством уникальности. В таком случае возможны два варианта: 1) Комбинация всех атрибутов обладает свойством неизбыточности. 2) Существует некоторое подмножество этой комбинации, заведомо обладающее свойством уникальности и заведомо не обладающее свойством неизбыточности.
Например, у химического элемента три уникальных параметра (номер, символ, масса).
На практике чаще всего отношения имеют лишь 1 потенциальный ключ.
Потенциальный ключ, состоящий из нескольких атрибутов называется составным, а состоящий из одного атрибута – простым.
Минимальность – не совсем точное выражение.
Не следует путать логическое понятие потенциального ключа и физическое понятие уникального индекса. Важность потенциального ключа – обеспечение адресации на уровне кортежей. Иными словами, фундаментальные ключи имеют такое же значение в системе, как адресация памяти в ЭВМ.
Если отношение имеет несколько потенциальных ключей, один из них должен быть выбран первичным ключом. Остальные могут являться альтернативными. Термин ключ в сфере БД имеет множество значений, которые не следует путать. В реляционной модели: потенциальный, первичный, альтернативный, внешний; в других: индексные, хэш-ключи, ключ сортировки, ключ поиска, вторичный ключ, основной ключ, подчинённый ключ, ключ шифра, ключ секретности.
Пусть некоторое базовое отношение называется P2. Внешним ключом FK в этом отношении будет называться подмножество множества атрибутов P2 такое, что существует P1 (не обязательно отличное от P2) с потенциальным ключом CK такое, что каждое значение ключа CK совпадает со значением некоторого кортежа P1.
Каждый атрибут, входящий во внешний ключ, должен быть определён на том же домене, что и соответствующий атрибут потенциального ключа.
Для внешнего ключа не требуется, чтобы он был компонентом первичного ключа, или вообще какого-либо потенциального ключа в содержащем его отношении.
Для отношения "сотрудники" номер департамента является внешним ключом, соответствующим первичному ключу отдела.
Значения внешнего ключа представлено ссылкой к кортежу, содержащему значение потенциального ключа.
Ссылочная целостность – БД не должна содержать никаких неверных значений внешних ключей. Ограничение, согласно которому значения внешнего ключа должны быть адекватны значениям соответствующих потенциальных ключей, называется ссылочным ограничением.
Отношение, содержащее внешний ключ называется согласованным(???) отношением. Отношение, содержащее потенциальный ключ – целевым отношением. Несогласованность значений внешнего ключа – значение внешнего ключа, для которого не существует соответствующего ему значения соответствующего потенциального ключа в целевом отношении.
Существование внешних ключей – это некий "клей", соединяющий БД.
Для сохранения ссылочной целостности необходимо либо запретить операции, приводящие БД к некорректному состоянию, либо допустить с комплексом восстановительных операций.
Для каждого внешнего ключа необходимо ответить на 2 вопроса: 1) Что должно произойти при попытке удаления объекта ссылки внешнего ключа? Например, попытка удалить поставщика, у которого есть как минимум 1 поставка. Первый вариант: ограничение операции удаления; Второй вариант: при удалении удаляются все связи (каскадирование).
2) Что должно произойти при попытке обновить потенциальный ключ, на который ссылается внешний? Первый вариант: ограничение операции обновления; Второй вариант: каскадное обновление.
Можно: инициировать диалог с пользователем; удалить, но сохранить архивную копию БД; приписать поставки удалённого поставщика другому поставщику. Замечание: могут быть ссылочные циклы.
Дата добавления: 2015-09-18 | Просмотры: 631 | Нарушение авторских прав
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
|