Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab3.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
383.49 Кб
Скачать

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

В представленной выше схеме базы данных иногда одни и те же имена атрибутов используются в разных таблицах. Например, атрибут SKILL-TYPE в таблицах WORKER и SKILL (СПЕЦИАЛЬНОСТЬ) или атрибут BLDG-ID в таблицах ASSIGNMENT и BUILDING. Оба эти атрибута иллюстрируют поня­тие внешнего ключа.

Внешний ключ — это набор атрибутов одной таблицы, являющийся ключом другой (или той же самой) таблицы. SKILL-TYPE таблицы WORKER и BLDG-ID таблицы ASSIGNMENT являются примерами внешних ключей, так как SKILL-TYPE является ключом таблицы SKILL, a BLDG-ID _ ключом таблицы BUILDING. Внешние ключи обеспечивают важные связи между таблицами. Они используются для того чтобы связать данные из од­ной таблицы с данными в другой таблице. Так, SKILL-TYPE связывает таб­лицу WORKER с таблицей SKILL, a WORKER-ID и BLDG-ID таблицы ASSIGNMENT показывают связь между таблицами WORKER и BUILDING.

Атрибуты внешнего ключа не обязательно должны иметь те же имена, что и атрибуты ключа, которым они соответствуют. Например, WORKER-ID и SUPV-ID таблицы WORKER имеют разные имена, но оба они принимают значения из области идентификационных номеров работников. Таким обра­зом, SUPV-ID является внешним ключом реляционной таблицы WORKER, ссылающимся на ключ своей собственной таблицы. Для каждого работника атрибут SUPV-ID определяет менеджера работника, который, в свою очередь, является работником. Следовательно, атрибут SUPV-ID должен содержать значение, которое является значением ключа некоторого другого кортежа таблицы WORKER. Например, на рис. 3 менеджером работника 1235 является работник 1311. Другими словами, М.Фарадей контролирует работу Х.Колумба. SUPV-ID является примером рекурсивного внешнего ключа, то есть внешнего ключа, ссылающегося на свою собственную реляционную таблицу.

Рекурсивный внешний ключ. Внешний ключ, ссылающийся на свою собственную реляционную таблицу.

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

WORKER {WORKER-ID, NAME, HOURLY-RATE, SKILL-TYPE, SUPV-ID}

Внешние ключи: SKILL-TYPE ссылается на SKILL, SUPV-ID ссылается на WORKER

ASSIGNMENT {WORKER-ID, BLDG-ID, START-DATE, NUMBER-OF-DAYS} Внешние ключи: WORKER-ID ссылается на WORKER, BLDG-ID ссылается на BUILDING

BUILDING {BLDG-ID, ADDRESS, TYPE, QLTY-LEVEL, STATUS)

SKILL {SKILL-TYPE, BONUS-RATE, HOURS-PER-WEEK}

Обратите внимание, что внешние ключи таблицы определяются немед­ленно после имени таблицы, атрибутов и ключей. Выражение «Внешние включи: SKILL-TYPE ссылается на SKIL» - это определение внешнего ключа реляционной таблицы WORKER. Оно от­ражает тот факт, что атрибут SKILL-TYPE таблицы WORKER является внешним ключом, который ссылается на ключевой атрибут SKILL-TYPE таблицы SKILL.

Подобный список, в котором даются имена реляционных таблиц с пере­числением их атрибутов (ключи подчеркнуты) и определений внешних клю­чей, называется реляционной схемой базы данных. Она является предвари­тельным итогом создания этапа жизненного цикла реляционной базы дан­ных. Кроме того, она соответствует концептуальному уровню модели ANSI/SPARC.

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

Ограничительные условия, поддерживающие целостность

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]