Целостность сущностей

Так как первичные ключи фактически служат идентификаторами объектов, то есть предназначены для различения объектов, то значения этих идентификаторов не могут содержат Null-значения (неопределенные значения).

Метаправило целостности сущностей: атрибуты, входящие в состав первичного ключа, не могут принимать null-значения.

Основное назначение БД состоит в том, чтобы хранить и предоставлять информацию о реальном мире. Для представления этой информации в БД используются привычные типы данных — строковые, численные, логические. Однако в реальном мире встречается ситуация, когда данные неизвестны или не полны.

Null-значение — специальный маркер, используемый для представления отсутствующей информации (это не нули или пробелы!). Например, поставка существует, но количество товара не известно.

Null-значение обозначает тот факт, что значение неизвестно.

Внешние ключи

Различные объекты предметной области, информация о которых хранится в БД, всегда взаимосвязаны друг с другом.

Важно выяснить, каким образом данные, хранящиеся в отношениях Поставщик, Товар, Поставка, связаны друг с другом. Эта связь определяется семантикой предметной области и описывается фразами: Один Поставщик может выполнять несколько Поставок, Один Товар может поставляться несколькими Поставками.

Это основной вид связи — один-ко-многим. Отношение, входящее в связь со стороны один, называют родительским отношением. Отношение, входящее в связь со стороны много, называется дочерним отношением.

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

Взгляните на атрибут S# (Номер поставщика) отношения SPJ (Поставка). Ясно, что значение этого атрибута допустимо только в том случае, если такое же значение существует в качестве значения первичного ключа S# отношения S (Поставщики). Например, не имеет смысла включать в SPJ поставку для поставщика S8, если в отношении S не существует поставщика S8. Таким образом, атрибут S# отношения SPJ являются примером внешнего ключа.

Определение: Пусть R2 — базовое отношение. Тогда внешний ключ FK в отношении R2 — это подмножество множества атрибутов отношения R2, такое что:

(1) существует базовое отношение R1 с первичным ключом К,

(2) каждое значение внешнего ключа FK в отношении R2 является или null-значением, или совпадает со значением первичного ключа К некоторого кортежа в отношении R1.

R1 — родительское отношение, R2 — дочернее отношение.

PS:

1. Внешний ключ, так же как и потенциальный, может быть простым и составным.

2. Каждый атрибут, входящий в данный внешний ключ, должен быть определен на том же домене, что и соответствующий атрибут первичного ключа.

3. Для внешнего ключа не требуется, чтобы он был компонентом некоторого потенциального ключа (как было в нашем примере).

4. Null-значения для атрибутов внешнего ключа допустимы только в том случае, когда атрибуты внешнего ключа не входят в состав никакого первичного ключа.

5. Так как внешние ключи фактически служат ссылками на кортежи в другом отношении, то эти ссылки не должны указывать на несуществующие объекты.

Метаправило ссылочной целостности: внешние ключи не должны быть несогласованными, то есть для каждого значения внешнего ключа должно существовать соответствующее значение первичного ключа в родительском отношении.

То есть если В ссылается на А, то А должно существовать.








Дата добавления: 2016-06-24; просмотров: 818;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.