Базы данных и знаний
1. Нормализация исходного отношения.
2. Разработка программ создания таблиц; формы для ввода данных в таблицу.
3. Создание отчётов.
1.Нормализация исходного отношения .
Чтобы нормализовать данное исходное отношение необходимо привести его сначала к
первой , потом ко второй , а затем и к третьей нормальной форме .
Отношения находятся в 1-ой нормальной форме тогда и только тогда, когда все
входящие в него домены содержат только атомарные значения
Основные действия для приведения к первой нормальной форме:
удаляем повторяющиеся группы в отдельных таблицах;
создаём отдельные таблицы для каждого множества отношений;
определяем первичный ключ в каждом отношении .
В результате этих действий получаем две таблицы.
В первую вошли поля , которые связаны с первичным ключом отношением “ 1 - 1 ” :
№ сотрудникаФамилияИмяОтчествоПолАдресДата рождения
Первичным ключом в этой новой таблице является № сотрудника.
Во вторую вошли поля, которые связаны с первичным ключом отношением “ 1 - ¥ ” :
№ сотрудника, №задания, содержание задания, № документа , Содержание документа,
Дата получения документа , Дата получения задания, срок выполнения задания, дата
окончания выполнения задания
№ сотрудника№ заданияСодержание задания№ документаСодержание документаДата
получения документаДата получения заданияСрок выполнения заданияДата
окончания выполнения задания
Первичным ключом в этой таблице являются составной ключ, содержащий поля “№
сотрудника, № задания.
Отношение R находится во 2-ой нормальной форме , если оно находится в 1-ой
нормальной форме , и каждый неключевой атрибут функционально полно зависит от
первичного ключа .
Основные действия: - удаление частичной зависимости .
Для приведения ко второй нормальной форме необходимо удалить частичную
зависимость .
Во второй таблице существует частичная зависимость поля “№ документа ” от
составного ключа “№ сотрудника” - “№ задания” . Это поле полностью зависит от
поля ”-“№ задания” и совсем не зависит от поля “№ сотрудника” .
Для удаления этой зависимости разделяем таблицу на две .
Первая:
№ сотрудника , № задания
№ сотрудника№задания
Первичным ключом в этой таблице является составной ключ , включающий в себя поля
“№ сотрудника“ и № задания.
Вторая:
№ задания , содержание задания, дата получения задания , срок выполнения
задания, дата окончания выполнения задания, номер документа, содержание
документа, дата получения документа
№ заданияДата получения заданияСодержание заданияСрок выполнения
заданияДата окончания выполнения заданияНомер документаСодержание
документадата получения документа
Первичным ключом в этой таблице является поле“№ задания” .
Отношение находится в 3-ей нормальной форме , если оно находится во 2-ой
нормальной форме и каждый неключевой атрибут нетранзитивно зависит от первичного
ключа .
Во второй таблице существует транзитивная зависимость:
- поля “Содержание документа” и “Дата получения документа” зависят от первичного
ключа “№ задания” через поле “№ документа”;
Для удаления этой зависимости выделяем эти поля в отдельную таблицу .
Получаем две таблицы:№ заданияСодержание заданияДата получения заданияСрок
выполненияДата окончания выполнения№ документа
Первичным ключом является поле “№ задания”
№ документаСодержание документаДата получения документа
Первичным ключом является поле “№ документа”
В результате этого получаем четыре таблицы .
Первая:№ сотрудникаФамилияИмяОтчествоПолАдресДата рождения
Первичным ключом в этой таблице является поле “№ сотрудника”
Вторая:№ сотрудника№задания
Первичным ключом в этой таблице является составной ключ , включающий в себя поля
“№ сотрудника” и “№ задания” .
Третья:№ заданияСодержание заданияДата получения заданияСрок
выполненияДата окончания выполнения№ документа
Первичным ключом в этой таблице является поле “№ задания”.
Четвёртая:№ документаСодержание документаДата получения документа
Первичным ключом в этой таблице является поле “№ документа” .
2. Разработка программ создания таблиц, формы для ввода данных в таблицы.
Создание таблицы “документы”
CREATE TABLE Докумены ( Номер_Документа INTEGER CONSTRAINT Индекс5 PRIMARY KEY ,
Содержание_Документа TEXT , Дата_Полу4ения date);
Создание таблицы “задание”
create table Задание ( Номер_Задания INTEGER CONSTRAINT a1 PRIMARY KEY,
содержание_задания text, Дата_Полу4ения date, срок_выполнения integer
,Дата_Окон4ания_Выполнения date , Номер_Документа integer);
Создание таблицы “сотрудник”
CREATE TABLE Сотрудник ( Номер_сотрудника COUNTER CONSTRAINT Индекс1 PRIMARY KEY
, Фамилия TEXT ,Имя TEXT, От4ество TEXT,Пол TEXT, Дата_Рождения date, Адрес
TEXT);
Создание таблицы
create table Сотрудник_Задание ( Номер_Сотрудника INTEGER CONSTRAINT Индек2
PRIMARY KEY ,
Номер_Задания integer);
3. Создание отчета для печати
Задание:
Вывести успешные и неуспешные задания.
Запрос состоит из двух зарпросов:
1.
SELECT Задание.Номер_Задания, Задание.содержание_задания,
Дата_Окон4ания_Выполнения-Дата_полу4ения AS разность, Дата_Окон4ания_Выполнения,
Задание.срок_выполнения
FROM Задание;
2.
SELECT Задание.Номер_Задания, Задание.содержание_задания,
(Дата_Окон4ания_Выполнения)
FROM все
WHERE срок_выполнения > разность;
Выводит успешно выполненные задания
1.
SELECT Задание.Номер_Задания, Задание.содержание_задания,
Дата_Окон4ания_Выполнения-Дата_полу4ения AS разность, Дата_Окон4ания_Выполнения,
Задание.срок_выполнения
FROM Задание;
2.
SELECT Задание.Номер_Задания, Задание.содержание_задания,
(Дата_Окон4ания_Выполнения)
FROM все
WHERE срок_выполнения > разность;
Выводит неуспешно выполненные задания