Ключи
Если значения некоторого атрибута однозначно идентифицирует кортежи отношений (все кортежи содержат различные значения атрибутов), атрибут называется первичным ключом отношения. Например, атрибут Д# в отношении ДЕТАЛЬ.
Не каждое отношение будет иметь первичный ключ в виде единственного атрибута. Но каждое отношение будет иметь некоторую комбинацию атрибутов, которые, взятые вмести, будут однозначно идентифицировать кортеж в отношении.
Например, (П#,Д#) в отношении ПОСТАВКА. По крайней мере комбинация из всех атрибутов будет первичным ключом. Т.о. каждое отношение будет иметь первичный ключ. Предполагается, что первичный ключ не избыточен в том смысле, что никакие из составляющих его атрибутов не являются излишними для однозначной1лишними для однозначногояющих его атрибутов не являются излишними для однозначного идентизначения атрибутов) идентификации кортежа в отношении.
Например, комбинация (Д# ЦВ) не является первичным ключом для отношения ДЕТАЛЬ.
Иногда можно встретить отношения, в которых существует более, чем одна комбинация атрибутов, способная однозначно идентифицировать кортеж. Эти отношения имеют более одного возможного ключа.
|
|
Ни один из компонент первичного ключа не должен быть нулевой.
Атрибут отношения R1 является внешним ключом, если атрибут – не первичный ключ отношения R1, но его значения являются значениями первичного ключа некоторого отношения R2.
Например атрибут Д# в отношении ПОСТАВКА внешний ключ (первичный ключ в ДЕТАЛЬ).
Первичный и внешний ключи служат для связи между отношениями. Не всегда «связывающий» атрибут является ключом. Например, если мы потребуем «соразмещения» поставщиков и деталей (связь отношений ДЕТАЛЬ и ПОСТАВЩИК), атрибуты ГОР и ГОРОД не будет ключом.
Функциональная зависимость
Атрибут Y отношения R функционально зависит от атрибута X отношения R тогда и только тогда, когда каждое значение X в отношении R в каждый момент времени связано точно с одним значением Y. Одно и тоже значение X может появляться в нескольких различных кортежах отношения R. Если Y функционально зависит от X, то по определению каждый из этих кортежей должен содержать также одно и то же значение Y.
Например, в отношении ПОСТАВЩИК атрибуты ПОСТ, СТАТ, ГОРОД функционально зависят от П#
X, Y или оба могут быть составными атрибутами.
Например, в отношении ПОСТАВКА атрибут КОЛ функционально зависит от составного атрибута (П# Д#)
Полная функциональная зависимость.
Атрибут Y находится в полной функциональной зависимости от атрибута X, если он функционально зависит X и не зависит функционально от любого подмножества атрибута X (X д.б. составным).
|
|
Например, полная функциональная зависимость (П# Д#) => КОЛ
Не находится в полной функциональной зависимости (П# СТАТ) => ГОРОД, т.к.
П# => ГОРОД
В примерах функциональной зависимости от первичного ключа.
Отношение R находится в первой нормальной форме тогда и только тогда, когда все входящие в него домены содержат только атомарные (неделимые) значения. Любое нормальное отношение находится в 1НФ.
Рассмотренные отношения находятся в четвертой нормальной форме (4НФ).
Отношение R находится в 4НФ тогда и только тогда, когда в каждый момент времени каждый кортеж отношения R состоит из значения первичного ключа, которое идентифицирует некоторый объект, и из множества взаимных произвольных значений атрибутов, некоторым образом описывающих этот объект.
Чтобы продемонстрировать процесс нормализации, возьмем отношение.
ПЕРВОЕ (П#, СТАТ, ГОРОД, Д#, КОЛ).
Считаем, что СТАТ – транспортные издержки, т.е. СТАТ функционально зависит от ГОРОД.
ГОРОД => СТАТ
ПЕРВОЕ
П# | СТАТ | ГОРОД | Д# | КОЛ |
п1 | ЛОНДОН | д1 | ||
п1 | ЛОНДОН | д2 | ||
п1 | ЛОНДОН | д3 | ||
п1 | ЛОНДОН | д4 | ||
п1 | ЛОНДОН | д5 | ||
п1 | ЛОНДОН | д6 | ||
п2 | ПАРИЖ | д1 | ||
п2 | ПАРИЖ | д2 | ||
п3 | ПАРИЖ | д2 | ||
п4 | ЛОНДОН | д2 | ||
п4 | ЛОНДОН | д4 | ||
п4 | ЛОНДОН | д5 |
Первичный ключ (П#, Д#)
Отношения R и Q с атрибутами X,Y и Y,Z.
Пример:
Отношение R с тремя атрибутами: номер работника, номер выполняемого задания, расчетный срок выполнения задания. Здесь третий атрибут неполно транзитивно зависит от первого атрибута, поскольку один и тот же работник может выполнять несколько заданий. Поэтому после приведения отношения R к ЗНФ таблице распадается на две. В первой таблице номеру работника соотносятся номера выполняемых им заданий, во второй – номер задания соответствует расчетный срок его выполнения.
В программное обеспечение реляционных баз данных включается программа для автоматической нормализации.