
3.3 Приведение к 3нф
Так как транзитивных зависимостей нет, то 2 НФ является и 3 НФ.
Таким образом, получаем 6 таблиц, представленных на рисунке 3:
Рисунок 3. Приведение к 2-3НФ.
4. Проектирование таблиц Сотрудник
Поле |
Тип |
Пояснение |
№ паспорта |
Number(10,0) |
PRIMARY KEY |
ФИО |
Varchar2(40) |
Обязательное поле |
Дата рождения |
Date |
Обязательное поле |
Код города |
Number(4,0) |
Обязательное поле |
Адрес |
Varchar2(40) |
Обязательное поле |
Домашний телефон |
Number(10,0) |
10 цифр код города и номер телефона |
Почтовый индекс |
Number(6,0) |
6 цифр индекс почтового отделения |
Пояснения
№ паспорта - Используем тип числовой, т. к. № паспорта – это совокупность цифр
ФИО - Используем символьный тип, потому что имя, фамилия, отчество – состоят из букв
Дата рождения - Используем тип дата, потому что дата рождения – это совокупность дня, месяца и года
Код города - Используем числовой тип, т.к. код будем задавать числом
Адрес - Используем символьный тип, потому что адрес содержит буквы
Домашний телефон - Используем числовой тип, т.к. № телефона – это совокупность чисел
Почтовый индекс - Используем числовой тип, т.к. индекс – это совокупность чисел
Работа
Поле |
Тип |
Условие |
№ паспорта |
Number(10,0) |
PRIMARY KEY |
Код предприятия |
Number(4,0) |
PRIMARY KEY |
Должность |
Varchar2(40) |
Обязательное поле |
Дата найма |
Date |
Обязательное поле |
Дата увольнения |
Date |
Обязательное поле |
Пояснения
№ паспорта - Используем тип числовой, т. к. № паспорта – это совокупность цифр
Код предприятия - Используем числовой тип, т.к. код будем задавать числом
Должность - Используем символьный тип, потому что название должности – это совокупность букв
Дата найма - Используем тип дата, потому что дата – это совокупность дня, месяца и года
Дата увольнения - Используем тип дата, потому что дата – это совокупность дня, месяца и года
Образование
Поле |
Тип |
Пояснение |
№ паспорта |
Number(10,0) |
PRIMARY KEY |
Код учебного заведения |
Number(4,0) |
PRIMARY KEY |
Начало учебы |
Date |
Обязательное поле |
Окончание учебы |
Date |
Обязательное поле |
Специальность |
Varchar2(40) |
Обязательное поле |
Квалификация |
Varchar2(40) |
Обязательное поле |
Пояснения
№ паспорта - Используем тип числовой, т. к. № паспорта – это совокупность цифр
Код учебного заведения - Используем числовой тип, т.к. код будем задавать числом
Начало учебы - Используем тип дата, потому что дата – это совокупность дня, месяца и года
Окончание учебы - Используем тип дата, потому что дата – это совокупность дня, месяца и года
Специальность - Используем символьный тип, потому что название специальности – это совокупность букв
Квалификация - Используем символьный тип, потому что название квалификации – это совокупность букв
Предприятие
Поле |
Тип |
Пояснение |
Код предприятия |
Number(4,0) |
PRIMARY KEY |
Предприятие |
Varchar2(40) |
Обязательное поле |
Адрес предприятия |
Varchar2(40) |
Обязательное поле |
Код города |
Number(4,0) |
Обязательное поле |
Пояснения
Код предприятия - Используем числовой тип, т.к. код будем задавать числом
Предприятие - Используем символьный тип, потому что название предприятия – это совокупность букв
Адрес предприятия - Используем символьный тип, потому что адрес содержит буквы
Код города - Используем числовой тип, т.к. код будем задавать числом
Учебное заведение
Поле |
Тип |
Пояснение |
Код учебного заведения |
Number(4,0) |
PRIMARY KEY |
Учебное заведение |
Varchar2(40) |
Обязательное поле |
Адрес учебного заведения |
Varchar2(40) |
Обязательное поле |
Код города |
Number(4,0) |
Обязательное поле |
Города
Поле |
Тип |
Пояснение |
Код города |
Number(4,0) |
PRIMARY KEY |
Республика |
Varchar2(40) |
Обязательное поле |
Область |
Varchar2(40) |
Обязательное поле |
Населенный пункт |
Varchar2(40) |
Обязательное поле |
Код города - Используем числовой тип, т.к. код будем задавать числом
Республика - Используем символьный тип, потому что название республики – это совокупность букв
Область - Используем символьный тип, потому что название области – это совокупность букв
Населенный пункт - Используем символьный тип, потому что населенного пункта – это совокупность букв