
- •Аннотация
- •Содержание
- •Введение
- •1 Анализ предметной области
- •2 Обоснование модели данных
- •3 Обоснование выбора субд
- •4 Описание функций групп пользователей
- •5 Описание функций управления данными
- •5.1 Хранение данных
- •5.2 Манипулирование данными
- •5.3 Назначение прав доступа
- •Генерация справок и отчетов
- •6 Организация защиты бд
- •Заключение
- •Список информационных источников
- •Приложение а
- •Основные разделы базы данных
- •Основные операции
- •Ввод данных
- •Редактирование данных
- •Удаление данных
- •Извлечение данных
- •Генерация отчетов
- •Приложение б
Приложение б
Листинг программного кода спроектированной БД для среды PostgreSQL представлен ниже
CREATE DATABASE "SHOOL"
CREATE SCHEMA IF NOT EXISTS public
CREATE TABLE "TEACHER" (
"TEACHER_ID" serial PRIMARY KEY,
"TEACHER_FULL_NAME" character(50)
);
CREATE TABLE "CLASS"
(
"CLASS_ID" serial PRIMARY KEY,
"CLASS_NUMBER" character(10)
);
CREATE TABLE "CLASSROOM"
(
"CLASSROOM_ID" serial PRIMARY KEY,
"TEACHER_ID" serial,
"CLASSROOM_NUMBER" character(10),
FOREIGN KEY ("TEACHER_ID") REFERENCES "TEACHER" ("TEACHER_ID")
);
CREATE TABLE "SUBJECT"
(
"SUBJECT_ID" serial PRIMARY KEY,
"SUBJECT_NAME" character(50)
);
CREATE TABLE "TEACHING"
(
"TEACHER_ID" serial NOT NULL,
"SUBJECT_ID" serial NOT NULL,
"ORDER" boolean,
FOREIGN KEY ("TEACHER_ID") REFERENCES "TEACHER" ("TEACHER_ID"),
FOREIGN KEY ("SUBJECT_ID") REFERENCES "SUBJECT" ("SUBJECT_ID")
);
CREATE TABLE "SCHEDULE"
(
"TEACHER_ID" serial,
"SUBJECT_ID" serial,
"CLASS_ID" serial,
"CLASSROOM_ID" serial,
"LESSON_NUMBER" smallint CHECK("LESSON_NUMBER" > 0 AND "LESSON_NUMBER" < 10),
"DATE" date,
FOREIGN KEY ("TEACHER_ID") REFERENCES "TEACHER" ("TEACHER_ID"),
FOREIGN KEY ("SUBJECT_ID") REFERENCES "SUBJECT" ("SUBJECT_ID"),
FOREIGN KEY ("CLASS_ID") REFERENCES "CLASS" ("CLASS_ID"),
FOREIGN KEY ("CLASSROOM_ID") REFERENCES "CLASSROOM" ("CLASSROOM_ID")
);
CREATE TABLE "STUDENT"
(
"STUDENT_ID" serial PRIMARY KEY,
"CLASS_ID" serial,
"STUDENT_FULL_NAME" character(50),
FOREIGN KEY ("CLASS_ID") REFERENCES "CLASS" ("CLASS_ID")
);
CREATE TABLE "STATEMENT"
(
"STUDENT_ID" serial,
"SUBJECT_ID" serial,
"PERIOD" interval,
"GRADE" character(10),
FOREIGN KEY ("SUBJECT_ID") REFERENCES "SUBJECT" ("SUBJECT_ID"),
FOREIGN KEY ("STUDENT_ID") REFERENCES "STUDENT" ("STUDENT_ID")
);
CREATE ROLE admin WITH SUPERUSER LOGIN;
CREATE ROLE head_teacher WITH LOGIN;
CREATE ROLE teacher WITH LOGIN;
CREATE ROLE student WITH LOGIN;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO head_teacher;
GRANT INSERT, UPDATE, DELETE ON TABLE "TEACHER", "STUDENT", "STATEMENT" TO head_teacher;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO teacher;
GRANT INSERT, UPDATE, DELETE ON TABLE "STATEMENT" TO teacher;
GRANT SELECT ON TABLE "STATEMENT", "SCHEDULE" TO student;