
- •Семинар 1. Основы реляционных бд. Нормализация. 11.03.2005
- •Данные хранятся в двухмерной таблице без повторяющихся групп.
- •Отношение соответствует первой нормальной форме, и все неключевые атрибуты функционально зависят от полного первичного ключа.
- •3. Третья нормальная форма
- •4. Нормальная форма Бойса-Кодда
- •5. Четвертая нормальная форма
- •Отношение соответствует нормальной форме Бойса-Кодда, и многозначных зависимостей нет.
- •6. Нормализованные отношения и производительность базы данных
- •Заключение
Отношение соответствует первой нормальной форме, и все неключевые атрибуты функционально зависят от полного первичного ключа.
Понятие функциональной зависимости
customer number -> first name, last name, street, city, state, zip, phone
определитель или детерминант (determinant),— атрибут, который определяет значения других атрибутов
В 2NF каждый определитель становится первичным ключом отношения. Все атрибуты, функционально зависящие от него, становятся в отношении неключевыми атрибутами.
BRANCHNAME—> ADDRESS
BRANCHNAME—> MANAGER_NO
или в более кратком виде:
BRANCHNAME—>ADDRESS, MANAGER_NO
ACCNO—>BALANCE, TYPE
ACCNO—> BRANCHNAME, ADDRESS, MANAGER_NO
В отношений CUSTOMER можно выделить следующие FD.
REFNO—>NАМE, ADDRESS, STATUS
Множество атрибутов образует суперключ, когда каждая комбинация его значений может встретиться только однажды.
Потенциальный ключ — это суперключ, который не имеет избыточности
Например, отношение BRANCH имеет следующий суперключ,
BRANCHNAME, ADDRESS, ACCNO, BALANCE, TYPE
ACCNO—> BRANCHNAME, ADDRESS, BALANCE, TYPE
Больше сокращать нечего; это означает, что ACCNO — потенциальный ключ отношения branch
Итак, потенциальный ключ — это суперключ, который невозможно сократить (т.е. минимальный). Все атрибуты потенциального ключа называются ключевыми атрибутами. Атрибуты, не являющиеся частью потенциального ключа, называются неключевыми. Если в отношении имеется несколько потенциальных ключей, необходимо выделить один из них в качестве первичного ключа.
По определению, отношение находится во второй нормальной форме (2NF), если оно, во-первых, находится в 1NF; и, во-вторых, не содержит неключевых атрибутов, находящихся в частичной функциональной зависимости от первичного ключа.
Атрибут А находится в полной функциональной зависимости от множества атрибутов {X, Y}, если он функционально зависим от этого множества атрибутов ({X,Y}—>А) и не существует функциональной зависимости А ни от какого подмножества данного множества. Если же существует функциональная зависимость X—>А, то А находится в частичной функциональной зависимости от {X, Y}.
REFNO, ACCNO—> NAME, ADDRESS, STATUS
REFNO—> NAME, ADDRESS, STATUS
Таблица 3. Нормализованная база данных в 2NF
CUSTOMER CUSTOMER_ACCOUNT
REFNO |
NAME |
ADDRESS |
STATUS |
|
REFNO |
ACCNO |
12345 |
В. Рогов |
Катукова, 2 |
Business |
|
2345 |
120768 |
17654
|
Н. Петров
|
Конева, 4
|
Domestic
|
|
2345 |
348973 |
18764 |
С. Козлов |
Дубова, 6 |
Business |
|
7654 |
987654 |
|
|
|
|
|
8764 |
745363 |
|
|
|
|
|
8764 |
678453 |
|
|
|
|
|
8764 |
348973 |
Недостатки отношений 2NF
Отношение BRANCH имеет первичный ключ, состоящий из одного атрибута (ACCNO). Следовательно, все неключевые атрибуты находятся в полной функциональной зависимости от него. Недостатком данного отношения является повторение информации о филиале для всех счетов, обрабатываемых конкретным филиалом. Это происходит вследствие существования функциональных зависимостей некоторых атрибутов от атрибута BRANCHNAME:
BRANCHNAME—> ADDRESS, MANAGER_NO
Эта функциональная зависимость между неключевыми атрибутами называется транзитивной зависимостью. Отношение в третьей нормальной форме (3NF) не должно иметь транзитивных зависимостей. По определению, отношение находится в 3NF, если оно, во-первых, находится в 2NF, и, во-вторых, не содержит транзитивных зависимостей.