| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- -- Создание ENUM типов
- CREATE TYPE legal_form_enum AS ENUM (
- 'ИП',
- 'ООО',
- 'ОАО',
- 'ПАО',
- 'смешанное'
- );
- CREATE TYPE document_type_enum AS ENUM (
- 'информационный',
- 'организационно-распорядительный',
- 'запросно-ответный',
- 'инициативный',
- 'другой'
- );
- -- Таблица organization (организация)
- CREATE TABLE organization (
- id SERIAL PRIMARY KEY,
- name VARCHAR(64) UNIQUE NOT NULL,
- legal_form legal_form_enum NOT NULL
- );
- -- Таблица employee (сотрудники)
- CREATE TABLE employee (
- id SERIAL PRIMARY KEY,
- name VARCHAR(64) NOT NULL,
- lastname VARCHAR(64) NOT NULL,
- patronymic VARCHAR(64),
- organization_id INTEGER NOT NULL REFERENCES organization(id) ON DELETE RESTRICT
- );
- -- Таблица correspondence (корреспонденция)
- CREATE TABLE correspondence (
- id SERIAL PRIMARY KEY,
- document_type document_type_enum NOT NULL,
- document_number VARCHAR(256) UNIQUE NOT NULL,
- receipt_date DATE NOT NULL DEFAULT CURRENT_DATE,
- execution_date DATE, -- Может быть NULL, если документ ещё не исполнен
- employee_id INTEGER NOT NULL REFERENCES employee(id) ON DELETE RESTRICT,
-
- -- Проверка что execution_date позже receipt_date или NULL
- CONSTRAINT check_execution_date CHECK (
- execution_date IS NULL OR execution_date >= receipt_date
- )
- );
|