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



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_сотрудника)
);