Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ паша.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
104 Кб
Скачать
☆

Приведение ко 2нф

Определим для каждой сущности первичный ключ:

Человек — № паспорта.

Работа — составной PK, состоящий из двух полей «№ паспорта» и «предприятие».

Образование — составной PK, состоящий из двух полей «№ паспорта» и «Название учебного заведения».

От номера паспорта зависят ФИО, дата рождения, место рождения, адрес проживания, город проживания, домашний телефон, почтовый индекс, номер трудовой книжки.

В сущности «Работа» от номера паспорта зависят поля предприятие, должность, дата найма, дата увольнения, а от предприятия зависят адрес предприятия, и город предприятия.

В сущности «Образование» от номера паспорта зависят название учебного заведения, начало и окончание учёбы, специальность и квалификация, а от названия заведения зависят его адрес и город.

Для удобства обращения с БД создадим таблицу городов с семантически незначащим ключом «код города» и заменим поля «Город проживания», «Город предприятия», «Город учебного заведения» на поле «код города» в каждой сущности.

Введём для таблиц предприятие и учебное заведение, семантически незначащие ключи «код предприятия» и «код учебного заведения» соответственно.

Составным ключом в таблице «Образование» будут поля № паспорта и код учебного заведения, составным ключом в таблице «работа» будут поля № паспорта и код предприятия.

Приведение к 3нф

Так как транзитивных зависимостей нет, то 2 НФ является и 3 НФ.

Таким образом, получаем 6 таблиц, представленных на рисунке 3:

Рисунок 3. Приведение к 2-3НФ.

Проектирование таблиц

Поле

Тип

Пояснение

№ паспорта

Числовой

Используем тип числовой, т. к. № паспорта – это совокупность цифр

ФИО

Символьный

Используем символьный тип, потому что имя, фамилия, отчество – состоят из букв

Дата рождения

Дата

Используем тип дата, потому что дата рождения – это совокупность дня, месяца и года

Код города

Числовой

Используем числовой тип, т.к. код будем задавать числом

Адрес

Символьный

Используем символьный тип, потому что адрес содержит буквы

Домашний телефон

Числовой

Используем числовой тип, т.к. № телефона – это совокупность чисел

Почтовый индекс

Числовой

Используем числовой тип, т.к. индекс – это совокупность чисел

Поле

Тип

Пояснение

№ паспорта

Числовой

Используем тип числовой, т. к. № паспорта – это совокупность цифр

Код предприятия

Числовой

Используем числовой тип, т.к. код будем задавать числом

Должность

Символьный

Используем символьный тип, потому что название должности – это совокупность букв

Дата найма

Дата

Используем тип дата, потому что дата – это совокупность дня, месяца и года

Дата увольнения

Дата

Используем тип дата, потому что дата – это совокупность дня, месяца и года

Поле

Тип

Пояснение

№ паспорта

Числовой

Используем тип числовой, т. к. № паспорта – это совокупность цифр

Код учебного заведения

Числовой

Используем числовой тип, т.к. код будем задавать числом

Начало учебы

Дата

Используем тип дата, потому что дата – это совокупность дня, месяца и года

Окончание учебы

Дата

Используем тип дата, потому что дата – это совокупность дня, месяца и года

Специальность

Символьный

Используем символьный тип, потому что название специальности – это совокупность букв

Квалификация

Символьный

Используем символьный тип, потому что название квалификации – это совокупность букв

Поле

Тип

Пояснение

Код предприятия

Числовой

Используем числовой тип, т.к. код будем задавать числом

Предприятие

Символьный

Используем символьный тип, потому что название предприятия – это совокупность букв

Адрес предприятия

Символьный

Используем символьный тип, потому что адрес содержит буквы

Код города

Числовой

Используем числовой тип, т.к. код будем задавать числом

Поле

Тип

Пояснение

Код учебного заведения

Числовой

Используем числовой тип, т.к. код будем задавать числом

Учебное заведение

Символьный

Используем символьный тип, потому что название учебного заведения – это совокупность букв

Адрес учебного заведения

Символьный

Используем символьный тип, потому что адрес содержит буквы

Код города

Числовой

Используем числовой тип, т.к. код будем задавать числом

Поле

Тип

Пояснение

Код города

Числовой

Используем числовой тип, т.к. код будем задавать числом

Республика

Символьный

Используем символьный тип, потому что название республики – это совокупность букв

Область

Символьный

Используем символьный тип, потому что название области – это совокупность букв

Населенный пункт

Символьный

Используем символьный тип, потому что населенного пункта – это совокупность букв

8