Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет определению 1НФ и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
Таблица находится в третьей нормальной форме (3НФ), если она удовлетворяет определению 2НФ и не одно из ее не ключевых полей не зависит функционально от любого другого не ключевого поля.
Рисунок 6.2 – Таблица данных в 1НФ
Назв. предприятия С 80 | Дата открытия предприятия D10 | Назв. Города C20 | Назв. Типа предпр C30 | Назв. Цеха C15 | Кол-во рабочих N4 | Дата ввода в строй D8 | Дата посл реконструкции D8 | Месяц С8 | Кол-во изделий N6 | Цена N5 | Назв. Изделия C20 |
Представим функциональные зависимости для таблицы в 1НФ:
Название изделия |
Название предприятия |
Кол-во рабочих |
Кол-во изделий |
Дата открытия |
Дата ввода в строй |
Цена изделия |
Дата посл. Реконстр. |
Месяц выпуска изделия |
Предприятие | ||||
#Код предприятия | Название предприятия | Дата открытия | Город | Тип |
1 | Шахтуглесервис | 25.06.1956 | Шахтерск | Частное |
2 | Азовмаш | 24.05.1985 | Мариуполь | ООО |
3 | Азовсталь | 13.02.1991 | Краматорск | Государственное |
4 | ДМЗ | 12.03.1985 | Донецк | ОАО |
Таблица «Город» (таблица 6.2.2):
1. Код города
-Ключ: первичный ключ;
-Счетчик;
-Длинное целое;
-Размер: 3;
-Совпадение не допускаются, так как это первичный ключ, он считает записи в таблице.
2. Название города
- Текстовое;
- Размер 20;
- Обязательное поле, так как город не может быть без названия;
- Пустых строк нет, так как город не может иметь пустое название;
- Совпадения не допускаются, так как разные города не могут иметь одно и то же название.
Таблица 6.2.2 «Город»
Город | |
#Код города | Название города |
1 | Донецк |
2 | Шахтерск |
3 | Мариуполь |
4 | Краматорск |
Таблица «Тип» (таблица 6.2.3):
1. Код типа
-Ключ: первичный ключ;
-Счетчик;
-Длинное целое;
-Размер: 3;
-Совпадение не допускаются, так как это первичный ключ, он считает записи в таблице.
2. Название типа
- Текстовое;
- Размер 30;
- Обязательное поле, так как тип не может быть без названия;
- Пустых строк нет, так как тип не может иметь пустое название;
- Совпадения не допускаются, так как разные типы не могут иметь одно и то же название.
Таблица 6.2.3 «Тип»
Тип | |
#Код типа | Название типа |
1 | Государственное |
2 | Частное |
3 | ООО |
4 | ОАО |
Таблица «Изделие» (таблица 6.2.4):
1. Код города
-Ключ: первичный ключ;
-Счетчик;
-Длинное целое;
-Размер: 3;
-Совпадение не допускаются, так как это первичный ключ, он считает записи в таблице.
2. Название изделия
- Текстовое;
- Размер 20;
- Обязательное поле, так как изделия не может быть без названия;
- Пустых строк нет, так как тип не может иметь пустое название;
- Совпадения не допускаются, так как разные изделия не могут иметь одно и то же название.
Таблица 6.2.4 «Изделие»
Изделие | |
#Код изделия | Название изделия |
1 | Шайбы |
2 | Чайники |
3 | Болты |
4 | Бочки |
5 | Двигатели |
6 | Сковородки |
7 | Столы |
8 | Кровати |
9 | Компьютеры |
Таблица «Цех» (таблица 6.2.5):
1. Код цеха
-Ключ: первичный ключ;
-Счетчик;
-Длинное целое;
-Размер: 3;
-Совпадение не допускаются, так как это первичный ключ, он считает записи в таблице.
2. Название цеха
- Текстовое;
- Размер 15;
- Обязательное поле, так как изделия не может быть без названия;
- Пустых строк нет, так как цех не может иметь пустое название;
- Совпадения допускаются, так как разные цеха не могут иметь одно и то же название.
3. Количество рабочих
-Тип длинное целое;
-Размер 4;
-Совпадения допускаются, так как разные цеха могут иметь одинаковое число количества рабочих;
- Пустых строк нет, так как любой цех содержит рабочих;
-Условие на значение >0, так как на цеху не может быть ни одного рабочего.
4. Дата ввода в строй
-Тип дата
- Размер 10
- Обязательное поле, так как каждый цех имеет дату открытия;
-Совпадения допускаются, так как разные цеха могут в один день войти в строй;
- Маска: 00.00.0000;
-Значение по умолчанию =Date();
- Условие на значения <=Date()and<(дата последней реконструкции), так как цех не может быть введен в строй позже, чем была его реконструкция.
5. Дата последней реконструкции
-Тип дата;
- Размер 10;
- Не обязательное поле, так как цех мог еще не подлежать реконструкции;
-Совпадения допускаются, так как даты реконструкции разных цехов могут быть одинаковыми;
- Маска: 00.00.0000;
- Значение по умолчанию =Date()
- Условие на значения <=Date()and>(дата ввода в строй), так как цех не может быть отреконструирован раньше, чем он был введен в строй.
6. Предприятие
-Тип длинное целое;
-Размер 2;
-Обязательное поле, так как любой цех находится на каком-либо предприятии;
-Совпадения допускаются, так как несколько цехов могут быть на одном предприятии;
-Подстановка: из таблицы «Предприятие», поле «Название предприятия»;
-Внешний ключ.
Таблица 6.2.5 «Цех»
Цех | |||||
#Код цеха | Название цеха | Количество рабочих | Дата ввода в строй | Дата последней реконструкции | Предприятие |
1 | Любительский | 146 | 19.05.1999 | 26.03.2000 | Азовсталь |
7 | Конечный | 106 | 21.07.1998 | 29.03.2004 | Азовсталь |
11 | Любительский | 60 | 31.05.1996 | 16.04.2001 | Азовмаш |
13 | Промежуточный | 34 | 05.10.1995 | 06.08.1998 | ДМЗ |
15 | Промежуточный | 140 | 01.02.1986 | 12.07.1996 | Азовмаш |
24 | Древний | 25 | 03.12.1957 | 25.05.1959 | Шахтуглесервис |
25 | Любительский | 326 | 18.12.1989 | 26.04.1995 | ДМЗ |
34 | Конечный | 86 | 29.05.1973 | 16.11.2001 | Шахтуглесервис |
Таблица «Выпуск» (таблица 6.2.6):