|
@@ -0,0 +1,259 @@
|
|
|
+ Оглавление
|
|
|
+Создание БД для ИС <<Учебная часть>> 1
|
|
|
+
|
|
|
+
|
|
|
+ Создание БД для ИС <<Учебная часть>>
|
|
|
+ Введение
|
|
|
+ Цель документа
|
|
|
+Данный документ представляет собой руководство по созданию базы данных для информационной системы, разработанной для учебной части образовательного учреждения.
|
|
|
+ Область применения базы данных
|
|
|
+База данных будет использоваться для хранения информации о студентах, преподавателях, расписании занятий, успеваемости и других данных, необходимых для управления учебным процессом.
|
|
|
+ Обзор системы
|
|
|
+ Информационная система предназначена для управления учебным процессом, обеспечивая доступ к актуальным учебным материалам, оценкам, расписанию занятий и другой информации.
|
|
|
+ Функциональные требования к базе данных
|
|
|
+ База данных должна поддерживать операции по учету студентов и преподавателей, формированию расписания занятий, управлению учебным процессом и доступу к электронным образовательным ресурсам.
|
|
|
+ Нефункциональные требования к базе данных
|
|
|
+ База данных должна обеспечивать высокую производительность, надежность, безопасность и масштабируемость.
|
|
|
+ Проектирование базы данных
|
|
|
+ Описание сущностей и их атрибутов
|
|
|
+- Сущности: роли, пользователи, кафедры, специальности, группы, студенты, корпусы (филиалы), преподаватели, дисциплины преподавателей, дисциплины групп, расписание, оценки, посещаемость.
|
|
|
+- Атрибуты: данные о студентах (ФИО, группа, контактные данные), данные о преподавателях (ФИО, предметы), данные о занятиях (дата, время, аудитория), данные об успеваемости (оценки).
|
|
|
+ Полученные таблицы БД:
|
|
|
+ Роли:
|
|
|
+ ID (ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ Пользователи
|
|
|
+ ID (ключ)
|
|
|
+ Фамилия (varying (30))
|
|
|
+ Имя (varying (30))
|
|
|
+ Отчество (varying (30))
|
|
|
+ Почта (varying (30))
|
|
|
+ Номер телефона (varying (30))
|
|
|
+ Год рождения (date)
|
|
|
+ ID роли (вторичный ключ)
|
|
|
+ Кафедры
|
|
|
+ ID (ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ Специальности
|
|
|
+ ID (ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ Группы
|
|
|
+ ID (ключ)
|
|
|
+ ID специальности (вторичный ключ)
|
|
|
+ Дата поступления (date)
|
|
|
+ Название (varying (5))
|
|
|
+ Студенты
|
|
|
+ ID пользователя (вторичный ключ)
|
|
|
+ ID группы (вторичный ключ)
|
|
|
+ Корпусы(филиалы)
|
|
|
+ ID
|
|
|
+ Заведующий
|
|
|
+ Адрес
|
|
|
+ Преподаватели
|
|
|
+ ID пользователя (вторичный ключ)
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ Дисциплины
|
|
|
+ ID (ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ Количество часов (int)
|
|
|
+ Дисциплины преподавателей
|
|
|
+ ID
|
|
|
+ ID преподавателя (вторичный ключ)
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ Дисциплины групп
|
|
|
+ ID (ключ)
|
|
|
+ Семестр
|
|
|
+ ID дисциплины преподователя (вторичный ключ)
|
|
|
+ ID группы (вторичный ключ)
|
|
|
+ Расписание
|
|
|
+ ID (ключ)
|
|
|
+ Дата (date)
|
|
|
+ Номер (smallint)
|
|
|
+ ID дисциплина (вторичный ключ)
|
|
|
+ ID корпус (вторичный ключ)
|
|
|
+ Оценки
|
|
|
+ ID (ключ)
|
|
|
+ ID студента (вторичный ключ)
|
|
|
+ ID группы (вторичный ключ)
|
|
|
+ Дата (date)
|
|
|
+ Оценка (int)
|
|
|
+ Название работы (varying (30))
|
|
|
+ Посещаемость
|
|
|
+ ID (ключ)
|
|
|
+ ID расписание (вторичный ключ)
|
|
|
+ ID студента (вторичный ключ)
|
|
|
+ Посещение (bool)
|
|
|
+Полученные таблицы
|
|
|
+--роли
|
|
|
+create table Roles
|
|
|
+(
|
|
|
+ Id SERIAL primary key,
|
|
|
+ name character varying(30) unique
|
|
|
+);
|
|
|
+--пользователи
|
|
|
+create table Users
|
|
|
+(
|
|
|
+ Id Serial primary key,
|
|
|
+ first_name character varying(30) not null,
|
|
|
+ last_name character varying(30) not null,
|
|
|
+ middle_name character varying(30),
|
|
|
+ mail character varying(50) not null unique,
|
|
|
+ phone_number character varying(20) unique,
|
|
|
+ date_birth date,
|
|
|
+ Id_role int references Roles(Id) not null
|
|
|
+);
|
|
|
+--Кафедры
|
|
|
+create table Departments
|
|
|
+(
|
|
|
+ Id SERIAL primary key,
|
|
|
+ name character varying(70) unique not null
|
|
|
+);
|
|
|
+--Специальности
|
|
|
+create table Specialties
|
|
|
+(
|
|
|
+ Id SERIAL primary key,
|
|
|
+ name character varying(70) unique not null,
|
|
|
+ Id_department int references Departments(Id) not null
|
|
|
+);
|
|
|
+--Группы
|
|
|
+create table "Groups"
|
|
|
+(
|
|
|
+ Id Serial primary key,
|
|
|
+ Id_specialty int references Specialties(Id) not null,
|
|
|
+ start_date date not null,
|
|
|
+ name character varying(5) not null
|
|
|
+);
|
|
|
+--студенты
|
|
|
+create table Students
|
|
|
+(
|
|
|
+ user_Id int references Users(Id) primary key,
|
|
|
+ group_Id int references "Groups"(Id) not null
|
|
|
+);
|
|
|
+--корпусы (филиалы)
|
|
|
+create table Buildings
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ Mgr int references Users(Id) not null,--заведующий
|
|
|
+ address character varying(70) not null
|
|
|
+);
|
|
|
+--преподаватели
|
|
|
+create table Teachers
|
|
|
+(
|
|
|
+ user_Id int references Users(Id) primary key,
|
|
|
+ department_Id int references Departments(Id)
|
|
|
+);
|
|
|
+--дисциплины
|
|
|
+create table Disciplines
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ name character varying(60) not null,
|
|
|
+ department_Id int references Departments(Id) not null,
|
|
|
+ academic_hours int not null
|
|
|
+);
|
|
|
+--дисциплины преподавателей
|
|
|
+create table TeachersDisciplines
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ teacher_Id int references Teachers(user_Id) not null,
|
|
|
+ discipline_Id int references Disciplines(Id) not null
|
|
|
+);
|
|
|
+--дисциплины групп
|
|
|
+create table GroupDiscipline
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ semester int,
|
|
|
+ teacher_discipline_Id int references TeachersDisciplines(Id) not null,
|
|
|
+ group_Id int references "Groups"(Id) not null
|
|
|
+);
|
|
|
+--расписание
|
|
|
+create table Timetables
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ class_date date not null,
|
|
|
+ class_number smallint,
|
|
|
+ group_discipline_Id int references GroupDiscipline(Id) not null,
|
|
|
+ buildind_Id int references Buildings(Id) not null
|
|
|
+);
|
|
|
+--оценки
|
|
|
+create table StudentGrades
|
|
|
+(
|
|
|
+ Id Serial primary key,
|
|
|
+ student_Id int references Students(user_Id) not null,
|
|
|
+ group_discipline_Id int references GroupDiscipline(Id) not null,
|
|
|
+ graded_at date,
|
|
|
+ grade smallint not null,
|
|
|
+ work_name character varying(70)
|
|
|
+);
|
|
|
+--посещаемость
|
|
|
+create table Attendance
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ timetable_Id int references Timetables(Id) not null,
|
|
|
+ student_Id int references Students(user_Id) not null,
|
|
|
+ attended bool not null
|
|
|
+);
|
|
|
+ Связи таблиц:
|
|
|
+ Таблица 1
|
|
|
+ Связь
|
|
|
+ Таблица 1
|
|
|
+Timetables
|
|
|
+ один ко многим
|
|
|
+Attendance
|
|
|
+Students
|
|
|
+ один ко многим
|
|
|
+Attendance
|
|
|
+Students
|
|
|
+ один ко многим
|
|
|
+StudentGrades
|
|
|
+GroupDiscipline
|
|
|
+ один ко многим
|
|
|
+StudentGrades
|
|
|
+GroupDiscipline
|
|
|
+ один ко многим
|
|
|
+Timetables
|
|
|
+Buildings
|
|
|
+ один ко многим
|
|
|
+Timetables
|
|
|
+Groups
|
|
|
+ один ко многим
|
|
|
+GroupDiscipline
|
|
|
+TeachersDisciplines
|
|
|
+ один ко многим
|
|
|
+GroupDiscipline
|
|
|
+Disciplines
|
|
|
+ один ко многим
|
|
|
+TeachersDisciplines
|
|
|
+Teachers
|
|
|
+ один ко многим
|
|
|
+TeachersDisciplines
|
|
|
+Departments
|
|
|
+ один ко многим
|
|
|
+Disciplines
|
|
|
+Departments
|
|
|
+ один ко многим
|
|
|
+Teachers
|
|
|
+Users
|
|
|
+ один ко многим
|
|
|
+Teachers
|
|
|
+Users
|
|
|
+ один ко многим
|
|
|
+Buildings
|
|
|
+Users
|
|
|
+ один ко многим
|
|
|
+Students
|
|
|
+Groups
|
|
|
+ один ко многим
|
|
|
+Students
|
|
|
+Specialties
|
|
|
+ один ко многим
|
|
|
+Groups
|
|
|
+Departments
|
|
|
+ один ко многим
|
|
|
+Specialties
|
|
|
+Roles
|
|
|
+ один ко многим
|
|
|
+Users
|
|
|
+ Диаграмма БД
|
|
|
+
|