Загрузка данных


CREATE DATABASE SCHOOLDB;
GO

USE SCHOOLDB;
GO

CREATE TABLE КАБИНЕТ (ID_КАБИНЕТА INT PRIMARY KEY IDENTITY(1,1),
НОМЕР NVARCHAR(10) NOT NULL
);

CREATE TABLE ПРЕДМЕТ(
ID_ПРЕДМЕТА INT PRIMARY KEY IDENTITY(1,1),
НАЗВАНИЕ NVARCHAR(100) NOT NULL
);

CREATE TABLE КЛАСС(
ID_КЛАСС INT PRIMARY KEY IDENTITY(1,1),
НАЗВАНИЕ NVARCHAR(20) NOT NULL,
ПАРАЛЛЕЛЬ INT NOT NULL
);

CREATE TABLE УЧИТЕЛЬ(
ID_УЧИТЕЛЬ INT PRIMARY KEY IDENTITY(1,1),
ФАМИЛИЯ NVARCHAR(50) NOT NULL,
ИМЯ NVARCHAR(50) NOT NULL,
ID_КАБИНЕТА INT NULL FOREIGN KEY REFERENCES КАБИНЕТ(ID_КАБИНЕТА)
);

CREATE TABLE ПРЕДМЕТ_УЧИТЕЛЯ (
ID_ПРЕДМЕТ_УЧИТЕЛЯ INT PRIMARY KEY IDENTITY(1,1),
ID_УЧИТЕЛЬ INT NOT NULL FOREIGN KEY REFERENCES УЧИТЕЛЬ(ID_УЧИТЕЛЬ) ON DELETE CASCADE,
ID_ПРЕДМЕТ INT NOT NULL FOREIGN KEY REFERENCES ПРЕДМЕТ(ID_ПРЕДМЕТА) ON DELETE CASCADE
);

CREATE TABLE КЛАСС_РУК (
ID_КЛАСС_РУК INT PRIMARY KEY IDENTITY(1,1),
ID_УЧИТЕЛЯ INT NULL FOREIGN KEY REFERENCES УЧИТЕЛЬ(ID_УЧИТЕЛЬ),
ID_КЛАСС INT NOT NULL FOREIGN KEY REFERENCES КЛАСС(ID_КЛАСС),
CONSTRAINT UQ_КЛАСС_РУК UNIQUE (ID_КЛАСС)
);

CREATE TABLE УЧЕНИК(
ID_УЧЕНИКА INT PRIMARY KEY IDENTITY(1,1),
ФАМИЛИЯ NVARCHAR(50) NOT NULL,
ИМЯ NVARCHAR(50) NOT NULL,
ID_КЛАСС INT NOT NULL FOREIGN KEY REFERENCES КЛАСС(ID_КЛАСС)
);

CREATE TABLE ОЦЕНКА(
ID_ОЦЕНКА INT PRIMARY KEY IDENTITY(1,1),
ID_УЧЕНИКА INT NOT NULL FOREIGN KEY REFERENCES УЧЕНИК(ID_УЧЕНИКА) ON DELETE CASCADE,
ID_ПРЕДМЕТА INT NOT NULL FOREIGN KEY REFERENCES ПРЕДМЕТ(ID_ПРЕДМЕТА),
ID_УЧИТЕЛЯ INT NOT NULL FOREIGN KEY REFERENCES УЧИТЕЛЬ(ID_УЧИТЕЛЬ),
ЧЕТВЕРТЬ INT NOT NULL CHECK (ЧЕТВЕРТЬ BETWEEN 1 AND 4),
ОЦЕНКА INT NOT NULL CHECK (ОЦЕНКА BETWEEN 1 AND 5)
);

CREATE TABLE РАСПИСАНИЕ (
ID_ЗАНЯТИЯ INT PRIMARY KEY IDENTITY(1,1),
ID_КЛАСС INT NOT NULL FOREIGN KEY REFERENCES КЛАСС(ID_КЛАСС),
ID_ПРЕДМЕТА INT NOT NULL FOREIGN KEY REFERENCES ПРЕДМЕТ(ID_ПРЕДМЕТА),
ID_КАБИНЕТА INT NOT NULL FOREIGN KEY REFERENCES КАБИНЕТ(ID_КАБИНЕТА),
ID_УЧИТЕЛЯ INT NOT NULL FOREIGN KEY REFERENCES УЧИТЕЛЬ(ID_УЧИТЕЛЬ),
ДЕНЬ_НЕДЕЛИ NVARCHAR(20) NOT NULL,
НОМЕР_УРОКА INT NOT NULL
);
GO