
Презентации БД (ВФ) / DB_lec3
.pdf
)$ /
Функциональная зависимости
Пример: |
|
Поставка товаров |
||
|
|
|
|
|
|
S# |
P# |
|
QTY |
|
|
|
|
|
|
S1 |
P1 |
|
100 |
|
|
|
|
|
|
S1 |
P2 |
|
100 |
|
|
|
|
|
|
S2 |
P1 |
|
200 |
|
|
|
|
|
|
S2 |
P2 |
|
200 |
|
|
|
|
|
|
S3 |
P2 |
|
300 |
|
|
|
|
|
|
S4 |
P2 |
|
400 |
|
|
|
|
|
|
|
|
|
|
(S#,P#) QTY

)$ /
Нормализация отношений
Отношение находится в некоторой нормальной форме, если оно удовлетворяет заданному набору условий

)$ /
Первая нормальная форма (1NF)
Отношение находится в 1НФ тогда и только тогда, когда все используемые домены содержат только скалярные (атомарные, простые) значения.
Пример, Ненормализованное отношение: поставляемые товары
PK(Sid,Pid)
Домен |
НОМЕР |
ИМЯ |
ГОРОД |
КОД |
ПОСТАВКА |
|
|
|
|
|
|
Атрибут |
Sid |
SName |
City |
Cod |
PS |
|
|
|
|
|
|
|
S1 |
Smith |
London |
20 |
P1, Nut, 12, 200 |
|
|
|
|
|
P2, Bolt, 17, 100 |
|
|
|
|
|
P3, Screw, 17, 100 |
|
|
|
|
|
|
|
S2 |
Jones |
Paris |
10 |
P1, Nut, 12, 150 |
|
|
|
|
|
P2, Bolt, 17, 200 |
|
|
|
|
|
|
)$ /
Первая нормальная форма (1NF)
Домен |
НОМЕР |
ИМЯ |
ГОРОД |
КОД |
НОМЕР |
НАЗВА- |
ДЕНЬ- |
КОЛ- |
|
|
|
|
|
|
НИЕ |
ГИ |
ВО |
|
|
|
|
|
|
|
|
|
Атрибут |
Sid |
SName |
City |
Cod |
Pid |
PName |
Price |
Qty |
|
|
|
|
|
|
|
|
|
|
S1 |
Smith |
London |
20 |
P1 |
Nut |
12 |
200 |
|
|
|
|
|
|
|
|
|
|
S1 |
Smith |
London |
20 |
P2 |
Bolt |
17 |
100 |
|
|
|
|
|
|
|
|
|
|
S1 |
Smith |
London |
20 |
P3 |
Screw |
17 |
100 |
|
|
|
|
|
|
|
|
|
|
S2 |
Jones |
Paris |
10 |
P1 |
Nut |
12 |
150 |
|
|
|
|
|
|
|
|
|
|
S2 |
Jones |
Paris |
10 |
P2 |
Bolt |
17 |
200 |
|
|
|
|
|
|
|
|
|
Главный недостаток 1НФ – избыточность.
Проблема обновления Проблема вставки Проблема удаления
)$ /
Вторая нормальная форма (2NF)
Отношение находится в 2НФ тогда и только тогда, когда оно находится в 1НФ, и каждый его не ключевой атрибут функционально полно зависит от любого возможного ключа этого отношения.
Домен |
НОМЕР |
ИМЯ |
ГОРОД |
КОД |
НОМЕР |
НАЗВА- |
ДЕНЬ- |
КОЛ- |
|
|
|
|
|
|
НИЕ |
ГИ |
ВО |
|
|
|
|
|
|
|
|
|
Атрибут |
Sid(PK) |
SName |
City |
Cod |
Pid(PK) |
PName |
Price |
Qty |
|
|
|
|
|
|
|
|
|
|
S1 |
Smith |
London |
20 |
P1 |
Nut |
12 |
200 |
|
|
|
|
|
|
|
|
|
|
S1 |
Smith |
London |
20 |
P2 |
Bolt |
17 |
100 |
|
|
|
|
|
|
|
|
|
|
S1 |
Smith |
London |
20 |
P3 |
Screw |
17 |
100 |
|
|
|
|
|
|
|
|
|
|
S2 |
Jones |
Paris |
10 |
P1 |
Nut |
12 |
150 |
|
|
|
|
|
|
|
|
|
|
S2 |
Jones |
Paris |
10 |
P2 |
Bolt |
17 |
200 |
|
|
|
|
|
|
|
|
|
(Sid, Pid) QTY – функционально полная
(Sid, Pid) SName или (Sid, Pid) Price – не функционально полные