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


-- ============================================
-- БД: Учет продукции на участке монтажа плат
-- ============================================

-- 1. Сотрудники
CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,
    full_name VARCHAR(150) NOT NULL,
    position VARCHAR(100) NOT NULL,
    phone VARCHAR(30)
);


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


-- 3. Продукция
CREATE TABLE products (
    product_id SERIAL PRIMARY KEY,
    product_name VARCHAR(150) NOT NULL,
    product_code VARCHAR(50) NOT NULL UNIQUE,
    description TEXT
);


-- 4. Детали
CREATE TABLE parts (
    part_id SERIAL PRIMARY KEY,
    part_name VARCHAR(150) NOT NULL,
    part_code VARCHAR(50) NOT NULL UNIQUE,
    unit VARCHAR(30) NOT NULL,
    description TEXT
);


-- 5. Операции монтажа плат
-- Центральная таблица, к которой идут связи
CREATE TABLE assembly_operations (
    operation_id SERIAL PRIMARY KEY,

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

    operation_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    quantity INT NOT NULL CHECK (quantity > 0),
    operation_type VARCHAR(100) NOT NULL,
    status VARCHAR(50) NOT NULL DEFAULT 'Выполнена',

    description TEXT,

    -- Связь с сотрудниками
    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)
);