CREATE

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 (ИД_СОТРУДНИКА, ИД_РИТУАЛА)
);


Report Page