init_schema.sql 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. -- Создание ENUM типов
  2. CREATE TYPE legal_form_enum AS ENUM (
  3. 'ИП',
  4. 'ООО',
  5. 'ОАО',
  6. 'ПАО',
  7. 'смешанное'
  8. );
  9. CREATE TYPE document_type_enum AS ENUM (
  10. 'информационный',
  11. 'организационно-распорядительный',
  12. 'запросно-ответный',
  13. 'инициативный',
  14. 'другой'
  15. );
  16. -- Таблица organization (организация)
  17. CREATE TABLE organization (
  18. id SERIAL PRIMARY KEY,
  19. name VARCHAR(64) UNIQUE NOT NULL,
  20. legal_form legal_form_enum NOT NULL
  21. );
  22. -- Таблица employee (сотрудники)
  23. CREATE TABLE employee (
  24. id SERIAL PRIMARY KEY,
  25. name VARCHAR(64) NOT NULL,
  26. lastname VARCHAR(64) NOT NULL,
  27. patronymic VARCHAR(64),
  28. organization_id INTEGER NOT NULL REFERENCES organization(id) ON DELETE RESTRICT
  29. );
  30. -- Таблица correspondence (корреспонденция)
  31. CREATE TABLE correspondence (
  32. id SERIAL PRIMARY KEY,
  33. document_type document_type_enum NOT NULL,
  34. document_number VARCHAR(256) UNIQUE NOT NULL,
  35. receipt_date DATE NOT NULL DEFAULT CURRENT_DATE,
  36. execution_date DATE, -- Может быть NULL, если документ ещё не исполнен
  37. employee_id INTEGER NOT NULL REFERENCES employee(id) ON DELETE RESTRICT,
  38. -- Проверка что execution_date позже receipt_date или NULL
  39. CONSTRAINT check_execution_date CHECK (
  40. execution_date IS NULL OR execution_date >= receipt_date
  41. )
  42. );