Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРИМЕР КУРСОВОЙ.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
672.26 Кб
Скачать

2.4.2. Вторая нормальная форма

        Целью второй нормальной формы является помещение в отдельную таблицу данных, которые только частично зависят от первичного ключа. Рис. 4.3 иллюстрирует вторую нормальную форму.

EMPLOYEE_TBL

EMPLOYEE_TBL

emp_id  last_name  first_name  middle_name  address  city  state  zip  phone  pager

emp_id  last_name  first_name  middle_name  address  city  state  zip  phone  pager

 

EMPLOYEE_PAY_TBL

position  date_hire  pay_rate  date_last_raise

emp_id  position  date_hire  pay_rate  date_last_raise

 

 

CUSTOMER_TBL

CUSTOMER_TBL

cust_id  cust_name  cust_address  cust_city  cust_state  cust_zip  cust_phone  cust_fax  ord_num

cust_id  cust_name  cust_address  cust_city  cust_state  cust_zip  cust_phone  cust_fax

 

ORDERS_TBL

prod_id  qty  ord_date

cust_id  prod_id  qty  ord_date

Рис.4.3.Вторая нормальная форма 

Согласно этому рисунку, вторая нормальная форма может быть получена из первой путем дальнейшего разбиения таблиц на более специальные составляющие.          Таблица EMPLOYEE_TBL Была разбита на две таблицы — EMPLOYEE_TBL и EMPLOYEE_PAY_TBL. Персональная информация о сотруднике компании зависит от первичного ключа (EMP_ID) и поэтому она (поля EMP_ID, LAST_NAME, FIRST_NAME, MIDDLE_NAME, ADDRESS, CITY, STATE, ZIP, PHONE и PAGER) осталась в таблице EMPLOYEE_TBL. С ДРУГОЙ стороны, информация, только частич-но зависящая от поля EMP_ID (каждого сотрудника в отдельности), была испо-льзована для заполнения таблицы EMPLOYEE_PAY_TBL (поля EMP_ID, POSITION, POSITION_DESC, DATE_HIRE, PAY_RATE, DATE_LAST_RAISE). Обратите внимание, что обе таблицы содержат столбец EMP_ID, который является в каждой из них первичным ключом и используется для установки соответствия между взаимосвязанными данными.

Из таблицы CUSTOMER_TBL мы выделили две таблицы (CUSTOMER_TBL и ORDERS_TBL) в соответствии с принципами, аналогичными использованным нами при разбиении таблицы EMPLOYEE_TBL. Столбцы, только частично зависящие от первичного ключа, были отправлены в другую таблицу. Например, информация о заказах клиентов (ORDERS_TBL) Зависит от каждого конкретного CUST_ID, однако она непосредственно не связана с общей информацией о заказчике, содержащейся в исходной таблице CUSTOMER_TBL.