-- База данных «Документооборот»
-- Выполнять в уже созданной базе данных 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;