/*

Создание тестовой базы данных Kafedra



BEGIN;
DROP TABLE lectures;
DROP TABLE students;
DROP TABLE semestrs;
DROP TABLE courses;
DROP TABLE balls;
COMMIT;
*/

BEGIN;

/* Лекторы  */

CREATE TABLE lectures (
    id_lect  INTEGER PRIMARY KEY,
    surname  VARCHAR(50) NOT NULL,
    name     VARCHAR(20) NOT NULL,
    patronim VARCHAR(50) NOT NULL,
    phone    VARCHAR(20) NOT NULL,
    mail     VARCHAR(20) NOT NULL,
    position VARCHAR(50) NOT NULL
);

COMMENT ON TABLE lectures IS 'Преподаватели кафедры';
COMMENT ON COLUMN lectures.id_lect IS 'Идентификатор преподавателя';
COMMENT ON COLUMN lectures.surname  IS 'Фамилия';
COMMENT ON COLUMN lectures.name  IS 'Имя';
COMMENT ON COLUMN lectures.patronim  IS 'Отчество';
COMMENT ON COLUMN lectures.phone  IS 'Телефон';
COMMENT ON COLUMN lectures.mail  IS 'Адрес электронной почты';
COMMENT ON COLUMN lectures.position  IS 'Должность';

INSERT INTO lectures VALUES (1,'Тлисова','Светлана','Магомедовна','8909495','Tlisova@mail.ru','Зав. кафедры ПОВТ');
INSERT INTO lectures VALUES (2,'Тлисов','Азамат','Борисович','8909495','Tlisov@mail.ru','Доцент кафедры ПОВТ');
INSERT INTO lectures VALUES (3,'Сидоров','Сидор','Сидорович','8909495','Сидоров@mail.ru','Препод. кафедры ПОВТ');

/*
/* Студенты */

CREATE TABLE students (
    id_student INTEGER PRIMARY KEY,
    surname    VARCHAR(50) NOT NULL,
    name       VARCHAR(20) NOT NULL,
    patronim   VARCHAR(50) NOT NULL,
    phone      VARCHAR(20) NOT NULL,
    mail       VARCHAR(20) NOT NULL,
    id_kaf     VARCHAR(6)  NOT NULL,
    groups      INTEGER
);

COMMENT ON TABLE students  IS 'Студенты кафедры';
COMMENT ON TABLE students.id_student IS 'Номер зачетки';
COMMENT ON TABLE students.surname  IS 'Фамилия';
COMMENT ON TABLE students.name  IS 'Имя';
COMMENT ON TABLE students.patronim  IS 'Отчество';
COMMENT ON TABLE students.phone  IS 'Телефон';
COMMENT ON TABLE students.mail  IS 'Адрес электронной почты';
COMMENT ON TABLE students.id_kaf IS 'Кафедра';
COMMENT ON TABLE students.groups IS 'Группа';

INSERT INTO students VALUES (1,"Иванов","Иван","Иванович","2345-567","Ivanov@mail.ru","ПО",2041);
INSERT INTO students VALUES (2,"Сидорова","Татьяна","Ивановна","2345-567","Sid@mail.ru","ПО",2041);
INSERT INTO students VALUES (1,"Джексон","Майкл","Иванович","2345-567","Jackson@mail.ru","ПО",2041);

/* Курсы */

CREATE TABLE courses (
    id_courses INTEGER PRIMARY KEY,
    course     VARCHAR (200) NOT NULL,
    lect       SERIAL REFERENCES lectures (id_lect)
		      ON UPDATE CASCADE
);
COMMENT ON TABLE courses IS 'Названия курсов';
COMMENT ON TABLE courses.id_courses IS 'Идентификатор курса';
COMMENT ON TABLE courses.courses IS 'Название курса';

INSERT INTO courses VALUES (1,"Высшая математика",1);
INSERT INTO courses VALUES (2,"Базы данных",1);
INSERT INTO courses VALUES (3,"Программирование",2);
INSERT INTO courses VALUES (4,"Английский язык",3);


/* Предметы */

CREATE TABLE semestrs (
    nsubsem    INTEGER PRIMARY KEY,
    nsemestr   INTEGER NOT NULL,
    id_subject INTEGER REFERENCES courses(id_courses) ON UPDATE CASCADE,
    id_lect    INTEGER REFERENCES lectures(id_lect) ON UPDATE CASCADE,
    zachet     INTEGER,
    ekzamen    INTEGER,
    kursovaja  INTEGER
);

COMMENT ON TABLE semestrs IS 'Курсы по семестрам';
COMMENT ON TABLE semestrs.nsubsem_subject IS 'Номер курса в семестре';
COMMENT ON TABLE semestrs.nsemestr IS 'Номер семестра';

INSERT INTO semestrs VALUES (1,1,1,1,1,1,0);
INSERT INTO semestrs VALUES (2,1,2,1,1,1,0);
INSERT INTO semestrs VALUES (3,1,3,2,1,1,0);
INSERT INTO semestrs VALUES (4,1,4,3,1,1,0);
INSERT INTO semestrs VALUES (5,2,1,1,1,1,0);
INSERT INTO semestrs VALUES (6,2,2,1,1,1,0);
INSERT INTO semestrs VALUES (7,2,3,2,1,1,0);
INSERT INTO semestrs VALUES (8,2,4,3,1,1,0);

CREATE TABLE zachetka (
    nzach INTEGER REFERENCES students(id_student),
    nsubsem INTEGER REFERENCES semestrs(nsunsem),
    zachet INTEGER,
    ekzamen INTEGER,
    kursovaja INTEGER
);

INSERT INTO zachetka VALUES (1,1,1,4,NULL);
INSERT INTO zachetka VALUES (1,2,1,NULL,NULL);
INSERT INTO zachetka VALUES (1,3,1,NULL,NULL);
INSERT INTO zachetka VALUES (2,4,1,NULL,NULL);
INSERT INTO zachetka VALUES (2,1,1,3,NULL);
INSERT INTO zachetka VALUES (2,2,1,NULL,NULL);
INSERT INTO zachetka VALUES (2,3,1,NULL,NULL);
INSERT INTO zachetka VALUES (2,4,1,NULL,NULL);
INSERT INTO zachetka VALUES (3,1,1,4,NULL);
INSERT INTO zachetka VALUES (3,2,1,NULL,NULL);
INSERT INTO zachetka VALUES (3,3,1,NULL,NULL);
INSERT INTO zachetka VALUES (3,4,1,NULL,NULL);
*/

COMMIT;
