Загрузка данных



-- База данных «Документооборот»
-- Выполнять в уже созданной базе данных PostgreSQL

CREATE TABLE IF NOT EXISTS "Подразделение" (
    id_подразделения INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    название VARCHAR(100) NOT NULL,
    описание VARCHAR(500)
);

CREATE TABLE IF NOT EXISTS "Сотрудник" (
    id_сотрудника INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    ФИО VARCHAR(150) NOT NULL,
    должность VARCHAR(100),
    id_подразделения INTEGER REFERENCES "Подразделение"(id_подразделения)
);

CREATE TABLE IF NOT EXISTS "Тип_документа" (
    id_типа INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    наименование VARCHAR(100) NOT NULL,
    описание VARCHAR(500)
);

CREATE TABLE IF NOT EXISTS "Статус" (
    id_статуса INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    наименование VARCHAR(50) NOT NULL,
    описание VARCHAR(300)
);

CREATE TABLE IF NOT EXISTS "Документ" (
    id_документа INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    название VARCHAR(200) NOT NULL,
    дата_создания DATE,
    содержание TEXT,
    id_типа INTEGER REFERENCES "Тип_документа"(id_типа),
    id_статуса INTEGER REFERENCES "Статус"(id_статуса),
    id_автора INTEGER REFERENCES "Сотрудник"(id_сотрудника)
);

CREATE TABLE IF NOT EXISTS "Задача" (
    id_задачи INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    описание VARCHAR(500) NOT NULL,
    дата_создания DATE,
    срок_исполнения DATE,
    id_документа INTEGER REFERENCES "Документ"(id_документа),
    id_исполнителя INTEGER REFERENCES "Сотрудник"(id_сотрудника)
);

CREATE TABLE IF NOT EXISTS "История_движения" (
    id_записи INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    дата TIMESTAMP,
    действие VARCHAR(250),
    id_документа INTEGER REFERENCES "Документ"(id_документа),
    id_сотрудника INTEGER REFERENCES "Сотрудник"(id_сотрудника)
);

-- Вывод списка созданных таблиц
SELECT table_name AS "Созданные таблицы"
FROM information_schema.tables
WHERE table_schema = 'public'
  AND table_name IN (
    'Подразделение',
    'Сотрудник',
    'Тип_документа',
    'Статус',
    'Документ',
    'Задача',
    'История_движения'
  )
ORDER BY table_name;