-- Таблица Teacher
CREATE TABLE Teacher (
    ID SERIAL PRIMARY KEY,
    Surname VARCHAR(255) NOT NULL,
    Name VARCHAR(255) NOT NULL,
    MiddleName VARCHAR(255)
);

-- Таблица Group
CREATE TABLE "Group" (
    ID SERIAL PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Type INT NOT NULL
);

-- Таблица Student
CREATE TABLE Student (
    ID SERIAL PRIMARY KEY,
    Surname VARCHAR(255) NOT NULL,
    Name VARCHAR(255) NOT NULL,
    MiddleName VARCHAR(255),
    GroupID INT NOT NULL REFERENCES "Group"(ID) ON DELETE CASCADE
);

-- Таблица Discipline
CREATE TABLE Discipline (
    ID SERIAL PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Description TEXT NOT NULL,
    Courses INT NOT NULL,
    TeacherId INT NOT NULL REFERENCES Teacher(ID) ON DELETE CASCADE
);


-- Таблица Statement
CREATE TABLE Statement (
    ID SERIAL PRIMARY KEY,
    TeacherId INT NOT NULL REFERENCES Teacher(ID) ON DELETE CASCADE,
    DisciplineId INT NOT NULL REFERENCES Discipline(ID) ON DELETE CASCADE,
    Date DATE NOT NULL
);

-- Таблица StatementStudent (многие ко многим)
CREATE TABLE StatementStudent (
    ID SERIAL PRIMARY KEY,
    StudentId INT NOT NULL REFERENCES Student(ID) ON DELETE CASCADE,
    StatementId INT NOT NULL REFERENCES Statement(ID) ON DELETE CASCADE,
    Mark INT NOT NULL
);