Таблица находится во второй нормальной форме (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):