CREATE DATABASE IF NOT EXISTS document_flow
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE document_flow;
-- 1. Подразделение
CREATE TABLE Подразделение (
id_подразделения INT PRIMARY KEY AUTO_INCREMENT,
название VARCHAR(100) NOT NULL,
описание VARCHAR(500)
);
-- 2. Сотрудник
CREATE TABLE Сотрудник (
id_сотрудника INT PRIMARY KEY AUTO_INCREMENT,
ФИО VARCHAR(150) NOT NULL,
должность VARCHAR(100),
id_подразделения INT,
FOREIGN KEY (id_подразделения)
REFERENCES Подразделение(id_подразделения)
);
-- 3. Тип документа
CREATE TABLE Тип_документа (
id_типа INT PRIMARY KEY AUTO_INCREMENT,
наименование VARCHAR(100) NOT NULL,
описание VARCHAR(500)
);
-- 4. Статус
CREATE TABLE Статус (
id_статуса INT PRIMARY KEY AUTO_INCREMENT,
наименование VARCHAR(50) NOT NULL,
описание VARCHAR(300)
);
-- 5. Документ
CREATE TABLE Документ (
id_документа INT PRIMARY KEY AUTO_INCREMENT,
название VARCHAR(200) NOT NULL,
дата_создания DATE,
содержание TEXT,
id_типа INT,
id_статуса INT,
id_автора INT,
FOREIGN KEY (id_типа)
REFERENCES Тип_документа(id_типа),
FOREIGN KEY (id_статуса)
REFERENCES Статус(id_статуса),
FOREIGN KEY (id_автора)
REFERENCES Сотрудник(id_сотрудника)
);
-- 6. Задача
CREATE TABLE Задача (
id_задачи INT PRIMARY KEY AUTO_INCREMENT,
описание VARCHAR(500) NOT NULL,
дата_создания DATE,
срок_исполнения DATE,
id_документа INT,
id_исполнителя INT,
FOREIGN KEY (id_документа)
REFERENCES Документ(id_документа),
FOREIGN KEY (id_исполнителя)
REFERENCES Сотрудник(id_сотрудника)
);
-- 7. История движения
CREATE TABLE История_движения (
id_записи INT PRIMARY KEY AUTO_INCREMENT,
дата DATETIME,
действие VARCHAR(250),
id_документа INT,
id_сотрудника INT,
FOREIGN KEY (id_документа)
REFERENCES Документ(id_документа),
FOREIGN KEY (id_сотрудника)
REFERENCES Сотрудник(id_сотрудника)
);