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


-- Сотрудники
CREATE TABLE employees (
    employee_id INT NOT NULL AUTO_INCREMENT,
    full_name VARCHAR(150) NOT NULL,
    position VARCHAR(100) NOT NULL,
    phone VARCHAR(30),
    
    PRIMARY KEY (employee_id)
) ENGINE=InnoDB;


-- Сборочные участки
CREATE TABLE assembly_sections (
    section_id INT NOT NULL AUTO_INCREMENT,
    section_name VARCHAR(100) NOT NULL,
    location VARCHAR(150),
    description TEXT,
    
    PRIMARY KEY (section_id),
    UNIQUE (section_name)
) ENGINE=InnoDB;


-- Продукция
CREATE TABLE products (
    product_id INT NOT NULL AUTO_INCREMENT,
    product_name VARCHAR(150) NOT NULL,
    product_code VARCHAR(50) NOT NULL,
    description TEXT,
    
    PRIMARY KEY (product_id),
    UNIQUE (product_code)
) ENGINE=InnoDB;


-- Детали
CREATE TABLE parts (
    part_id INT NOT NULL AUTO_INCREMENT,
    part_name VARCHAR(150) NOT NULL,
    part_code VARCHAR(50) NOT NULL,
    unit VARCHAR(30) NOT NULL,
    description TEXT,
    
    PRIMARY KEY (part_id),
    UNIQUE (part_code)
) ENGINE=InnoDB;


-- Операции монтажа плат
CREATE TABLE assembly_operations (
    operation_id INT NOT NULL AUTO_INCREMENT,

    employee_id INT NOT NULL,
    section_id INT NOT NULL,
    product_id INT NOT NULL,
    part_id INT NOT NULL,

    operation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    quantity INT NOT NULL,
    operation_type VARCHAR(100) NOT NULL,
    status VARCHAR(50) NOT NULL DEFAULT 'Выполнена',
    description TEXT,

    PRIMARY KEY (operation_id),

    CONSTRAINT fk_operation_employee
        FOREIGN KEY (employee_id)
        REFERENCES employees(employee_id),

    CONSTRAINT fk_operation_section
        FOREIGN KEY (section_id)
        REFERENCES assembly_sections(section_id),

    CONSTRAINT fk_operation_product
        FOREIGN KEY (product_id)
        REFERENCES products(product_id),

    CONSTRAINT fk_operation_part
        FOREIGN KEY (part_id)
        REFERENCES parts(part_id),

    CHECK (quantity > 0)
) ENGINE=InnoDB;