CREATE
CREATE TABLE ЛЮДИ (
ИД_ЧЕЛОВЕКА UUID PRIMARY KEY,
ФАМИЛИЯ TEXT,
ИМЯ TEXT,
ОТЧЕСТВО TEXT,
ДАТА_РОЖДЕНИЯ DATE CHECK (ДАТА_РОЖДЕНИЯ <= current_date),
НОМЕР_ПАСПОРТА INTEGER UNIQUE CHECK (НОМЕР_ПАСПОРТА > 0)
);
CREATE TABLE КЛИЕНТЫ (
ИД_КЛИЕНТА UUID PRIMARY KEY,
ТЕЛЕФОН VARCHAR(16) UNIQUE,
ЭЛ_ПОЧТА TEXT UNIQUE,
ИД_ЧЕЛОВЕКА UUID NOT NULL UNIQUE REFERENCES ЛЮДИ ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE СОТРУДНИКИ (
ИД_СОТРУДНИКА UUID PRIMARY KEY,
ДАТА_ПРИЁМА TIMESTAMP NOT NULL DEFAULT current_timestamp,
ДАТА_УВОЛЬНЕНИЯ TIMESTAMP,
ТЕЛЕФОН VARCHAR(16),
ИД_ЧЕЛОВЕКА UUID NOT NULL REFERENCES ЛЮДИ ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE ВЫПОЛНЯЕМЫЕ_РАБОТЫ (
ИД_РАБОТЫ UUID PRIMARY KEY,
НАЗВАНИЕ VARCHAR(100) NOT NULL,
ОПИСАНИЕ TEXT,
ЗАРПЛАТА REAL CHECK (ЗАРПЛАТА >= 0)
);
CREATE TABLE СОТРУДНИК_РАБОТА (
ИД_СОТРУДНИКА UUID REFERENCES СОТРУДНИКИ ON DELETE CASCADE ON UPDATE CASCADE,
ИД_РАБОТЫ UUID REFERENCES ВЫПОЛНЯЕМЫЕ_РАБОТЫ ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (ИД_СОТРУДНИКА, ИД_РАБОТЫ)
);
CREATE TABLE ВИДЫ_РИТУАЛОВ (
ИД_ВИДА_РИТУАЛА UUID PRIMARY KEY,
НАЗВАНИЕ VARCHAR(100) NOT NULL,
ОПИСАНИЕ TEXT
);
CREATE TABLE МЕСТА_РИТУАЛОВ (
ИД_МЕСТА_РИТУАЛА UUID PRIMARY KEY,
НАЗВАНИЕ VARCHAR(100) NOT NULL,
ОПИСАНИЕ TEXT,
АДРЕС TEXT
);
CREATE TABLE РИТУАЛЫ (
ИД_РИТУАЛА UUID PRIMARY KEY,
ДАТА_НАЧАЛА TIMESTAMP DEFAULT current_timestamp,
ДАТА_ВЫПОЛНЕНИЯ TIMESTAMP,
ИД_КЛИЕНТА UUID REFERENCES КЛИЕНТЫ ON DELETE SET NULL ON UPDATE CASCADE,
ИД_МЕСТА_РИТУАЛА UUID REFERENCES МЕСТА_РИТУАЛОВ ON DELETE SET NULL ON UPDATE CASCADE,
ИД_ВИДА_РИТУАЛА UUID REFERENCES ВИДЫ_РИТУАЛОВ ON DELETE SET NULL ON UPDATE CASCADE
);
CREATE TABLE РАСХОДЫ_И_МАТЕРИАЛЫ (
ИД_РАСХОДА_И_МАТЕРИАЛА UUID PRIMARY KEY,
НАЗВАНИЕ VARCHAR(100) NOT NULL,
ОПИСАНИЕ TEXT,
СУММА REAL CHECK (СУММА >= 0),
ИД_РИТУАЛА UUID REFERENCES РИТУАЛЫ ON DELETE SET NULL ON UPDATE CASCADE
);
CREATE TABLE МОРГИ (
ИД_МОРГА UUID PRIMARY KEY,
НАЗВАНИЕ VARCHAR(100) NOT NULL,
ТЕЛЕФОН VARCHAR(16) UNIQUE,
АДРЕС TEXT
);
CREATE TABLE ТРУПЫ (
ИД_ТРУПА UUID PRIMARY KEY,
ДАТА_СМЕРТИ TIMESTAMP CHECK (ДАТА_СМЕРТИ <= current_timestamp),
ПРИЧИНА_СМЕРТИ TEXT,
ИД_МОРГА UUID REFERENCES МОРГИ ON DELETE SET NULL ON UPDATE CASCADE,
ИД_ЧЕЛОВЕКА UUID NOT NULL UNIQUE REFERENCES ЛЮДИ ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE ДОХОДЫ (
ИД_ДОХОДА UUID PRIMARY KEY,
НАЗВАНИЕ VARCHAR(100) NOT NULL,
СУММА REAL NOT NULL CHECK (СУММА > 0),
ОПИСАНИЕ TEXT,
ИД_РИТУАЛА UUID REFERENCES РИТУАЛЫ ON DELETE SET NULL ON UPDATE CASCADE
);
CREATE TABLE РИТУАЛ_ТРУП (
ИД_РИТУАЛА UUID REFERENCES РИТУАЛЫ ON DELETE CASCADE ON UPDATE CASCADE,
ИД_ТРУПА UUID REFERENCES ТРУПЫ ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (ИД_РИТУАЛА, ИД_ТРУПА)
);
CREATE TABLE СОТРУДНИК_РИТУАЛ (
ИД_СОТРУДНИКА UUID REFERENCES СОТРУДНИКИ ON DELETE CASCADE ON UPDATE CASCADE,
ИД_РИТУАЛА UUID REFERENCES РИТУАЛЫ ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (ИД_СОТРУДНИКА, ИД_РИТУАЛА)
);