МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
ТВЕРСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Факультет – Информационных технологий
Направление – Информационные системы и технологии
Кафедра – Информационных систем
ОЦЕНКА СЛОЖНОСТИ И ОБОСНОВАНИЕ ПРАВИЛЬНОСТИ И КОНЕЧНОСТИ ПРОГРАММ
Отчёт по лабораторной работе № 1
по курсу «Управление данными»
Вариант №17
Выполнил студент группы:
Ильин Александр ИСТ.18.07.
Проверил:
Полтавцев А.А.
Тверь, 2020
Оглавление
Описание предметной области. 3
Бизнес правила. 3
Нормализация. 3
Описание предметной области
Вариант 17. Предметная область ИС: Личные данные о студентах. Минимальный список характеристик данных: Фамилия и инициалы студента, курс, факультет, специальность, дата рождения студента, семейное положение, сведения о семье.
Бизнес правила
1. Каждый студент имеет номер зачетной книжки.
2. Каждый студент имеет ФИО.
3. На каждой специальности может читаться несколько курсов.
4. Каждый студент учится на одном факультете.
5. На одном факультете может быть несколько специальностей.
6. Каждый студент учится на одной специальности.
7. Каждый студент имеет дату рождения.
8. Каждый студент имеет данные о семейном положении.
9. Каждый студент имеет сведения о семье.
Нормализация
1 нормальная форма
CREATE TABLE Student_data
(
number INT NOT NULL, -- номер зачетной книжки
name VARCHAR (40) NOT NULL, -- ФИО
code_sub INT NOT NULL, -- код курса
subject VARCHAR (60) NOT NULL, -- курс
faculty VARCHAR (40) NOT NULL, -- факультет
code_spec INT NOT NULL, -- код специальности
specialty VARCHAR (40) NOT NULL, -- специальность
date_birth DATE NOT NULL, -- дата рождения
status VARCHAR (60) NULL, -- семейное положение
family VARCHAR (60) NULL, -- сведения о семье
);
Функциональные зависимости (Functional Dependencies - FD):
1.number->(name, code_sub, code_spec, date_birth, status, family)
Выводимые ФЗ:
1.number->subject (из number->code_sub->subject)
2.number->(specialty, faculty) (из number->code_spec->(specialty, faculty))
Нахождение PK
number->(name, code_sub, code_spec, date_birth, status, family)
code_sub->subject
code_spec->(specialty, faculty)
number->(name, code_sub, subject, faculty, code_spec, specialty, date_birth, status, family)
ПЕРВИЧНЫЙ КЛЮЧ: number. number->(name, code_sub, subject, faculty, code_spec, specialty, date_birth, status, family)
ALTER TABLE Student_data
ADD CONSTRAINT PK_Student_data PRIMARY KEY (number);
diagramm_0
2 нормальная форма
Student_data в 2NF, но не в 3NF
3 нормальная форма
number->(name, code_sub, code_spec, date_birth, status, family)
CREATE TABLE Student
(
number INT NOT NULL, -- номер зачетной книжки
name VARCHAR (40) NOT NULL, -- ФИО
code_sub INT NOT NULL, -- код курса
code_spec INT NOT NULL, -- код специальности
date_birth DATE NOT NULL, -- дата рождения
status VARCHAR (60) NULL, -- семейное положение
family VARCHAR (60) NULL, -- сведения о семье
);
Функциональные зависимости (Functional Dependencies - FD):
number->(name, code_sub, code_spec, date_birth, status, family)
ПЕРВИЧНЫЙ КЛЮЧ: number. number->(name, code_sub, code_spec, date_birth, status, family)
ALTER TABLE Student
ADD CONSTRAINT PK_Student PRIMARY KEY (number);
Student в 3NF
code_sub->subject
CREATE TABLE Subject
(
code_sub INT NOT NULL, -- код курса
subject VARCHAR (60) NOT NULL, -- курс
number INT NOT NULL, -- номер зачетной книжки
code_spec INT NOT NULL, -- код специальности
);
Функциональные зависимости (Functional Dependencies - FD):
code_sub->subject
ПЕРВИЧНЫЙ КЛЮЧ: code_sub. code_sub->subject
ALTER TABLE Subject
ADD CONSTRAINT PK_Subject PRIMARY KEY (code_sub);
Subject в 3NF
code_spec->(specialty, faculty)
CREATE TABLE Unit
(
code_spec INT NOT NULL, -- код специальности
specialty VARCHAR (40) NOT NULL, -- специальность
faculty VARCHAR (40) NOT NULL, -- факультет
);
Функциональные зависимости (Functional Dependencies - FD):
code_spec->(specialty, faculty)
ПЕРВИЧНЫЙ КЛЮЧ: code_spec. code_spec->(specialty, faculty)
ALTER TABLE Unit
ADD CONSTRAINT PK_Unit PRIMARY KEY (code_spec);
Unit в 3NF
Внешние ключи:
ALTER TABLE Subject
ADD CONSTRAINT FK_Subject_Student FOREIGN KEY (number)
REFERENCES Student (number);
ALTER TABLE Subject
ADD CONSTRAINT FK_Subject_Unit FOREIGN KEY (code_spec)
REFERENCES Unit (code_spec);
diagramm_1
ОЧИСТКА (cleanup)
DROP TABLE Student_data;
ALTER TABLE Subject
DROP CONSTRAINT FK_Subject_Student;
ALTER TABLE Subject
DROP CONSTRAINT FK_Subject_Unit;
DROP TABLE Student;
DROP TABLE Subject;
DROP TABLE Unit;