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


/* =========================================================
   БАЗА ДАННЫХ ПО ПРОЕКТАМ
   Названия таблиц и полей — транслитом
   Данные — на русском языке
   ========================================================= */


/* =======================
   1. ZAKAZCHIK
   ======================= */

CREATE TABLE Zakazchik
(
    id INT PRIMARY KEY IDENTITY(1,1),
    naimenovanie NVARCHAR(100) NOT NULL,
    kontaktnoe_lico NVARCHAR(100) NOT NULL,
    telefon NVARCHAR(20),
    email NVARCHAR(100)
);


/* =======================
   2. PROEKT
   ======================= */

CREATE TABLE Proekt
(
    id INT PRIMARY KEY IDENTITY(1,1),
    naimenovanie NVARCHAR(150) NOT NULL,
    opisanie NVARCHAR(300),
    data_nachala DATE,
    data_okonchaniya DATE,
    zakazchik_id INT NOT NULL,

    CONSTRAINT FK_Proekt_Zakazchik
        FOREIGN KEY (zakazchik_id)
        REFERENCES Zakazchik(id)
);


/* =======================
   3. SMETA
   ======================= */

CREATE TABLE Smeta
(
    id INT PRIMARY KEY IDENTITY(1,1),
    nomer NVARCHAR(30) NOT NULL,
    data_sostavleniya DATE,
    obshchaya_stoimost DECIMAL(14,2),
    proekt_id INT NOT NULL,

    CONSTRAINT FK_Smeta_Proekt
        FOREIGN KEY (proekt_id)
        REFERENCES Proekt(id)
);


/* =======================
   4. POZITSIYA SMETY
   ======================= */

CREATE TABLE Pozitsiya_smety
(
    id INT PRIMARY KEY IDENTITY(1,1),
    naimenovanie_rabot NVARCHAR(150) NOT NULL,
    edinitsa_izmereniya NVARCHAR(30),
    kolichestvo DECIMAL(10,2),
    tsena_za_edinitsu DECIMAL(12,2),
    stoimost DECIMAL(14,2),
    smeta_id INT NOT NULL,

    CONSTRAINT FK_PozitsiyaSmety_Smeta
        FOREIGN KEY (smeta_id)
        REFERENCES Smeta(id)
);


/* =======================
   5. DOKUMENT
   ======================= */

CREATE TABLE Dokument
(
    id INT PRIMARY KEY IDENTITY(1,1),
    naimenovanie NVARCHAR(150) NOT NULL,
    tip NVARCHAR(50),
    data_zagruzki DATE,
    put NVARCHAR(255),
    proekt_id INT NOT NULL,

    CONSTRAINT FK_Dokument_Proekt
        FOREIGN KEY (proekt_id)
        REFERENCES Proekt(id)
);


/* =======================
   6. ETAP STROITELSTVA
   ======================= */

CREATE TABLE Etap_stroitelstva
(
    id INT PRIMARY KEY IDENTITY(1,1),
    naimenovanie NVARCHAR(150) NOT NULL,
    poryadkovyy_nomer INT,
    data_nachala DATE,
    data_okonchaniya DATE,
    proekt_id INT NOT NULL,

    CONSTRAINT FK_Etap_Proekt
        FOREIGN KEY (proekt_id)
        REFERENCES Proekt(id)
);


/* =======================
   7. SPECIALIST
   ======================= */

CREATE TABLE Specialist
(
    id INT PRIMARY KEY IDENTITY(1,1),
    fio NVARCHAR(150) NOT NULL,
    spetsialnost NVARCHAR(100),
    telefon NVARCHAR(20),
    email NVARCHAR(100)
);


/* =======================
   8. ETAP - SPECIALIST
   Связующая таблица
   ======================= */

CREATE TABLE Etap_specialist
(
    etap_id INT NOT NULL,
    specialist_id INT NOT NULL,

    CONSTRAINT PK_Etap_specialist
        PRIMARY KEY (etap_id, specialist_id),

    CONSTRAINT FK_EtapSpecialist_Etap
        FOREIGN KEY (etap_id)
        REFERENCES Etap_stroitelstva(id),

    CONSTRAINT FK_EtapSpecialist_Specialist
        FOREIGN KEY (specialist_id)
        REFERENCES Specialist(id)
);



/* =========================================================
   ДОБАВЛЕНИЕ ДАННЫХ
   ========================================================= */


/* =======================
   ZAKAZCHIK
   ======================= */

INSERT INTO Zakazchik
    (naimenovanie, kontaktnoe_lico, telefon, email)
VALUES
(N'ООО СтройГрад', N'Иванов Сергей Петрович',
 N'+7 910 111-22-33', N'ivanov@stroygrad.ru'),

(N'ООО Новый Дом', N'Петров Алексей Викторович',
 N'+7 920 222-33-44', N'petrov@novydom.ru'),

(N'АО ЯрСтрой', N'Смирнов Дмитрий Олегович',
 N'+7 930 333-44-55', N'smirnov@yarstroy.ru'),

(N'ООО Комфорт', N'Соколов Андрей Игоревич',
 N'+7 940 444-55-66', N'sokolov@komfort.ru'),

(N'ООО ГородПроект', N'Кузнецов Максим Сергеевич',
 N'+7 950 555-66-77', N'kuznetsov@gorodproekt.ru');


/* =======================
   PROEKT
   ======================= */

INSERT INTO Proekt
    (naimenovanie, opisanie, data_nachala, data_okonchaniya, zakazchik_id)
VALUES
(N'Жилой дом на улице Ленина',
 N'Строительство многоквартирного жилого дома',
 '2026-02-01', '2026-12-20', 1),

(N'Офисный центр',
 N'Строительство современного офисного здания',
 '2026-03-10', '2027-01-15', 2),

(N'Торговый центр',
 N'Строительство торгового комплекса',
 '2026-04-01', '2027-03-30', 3),

(N'Частный жилой дом',
 N'Строительство двухэтажного частного дома',
 '2026-05-15', '2026-11-25', 4),

(N'Спортивный комплекс',
 N'Строительство спортивного комплекса с бассейном',
 '2026-06-01', '2027-06-01', 5);


/* =======================
   SMETA
   ======================= */

INSERT INTO Smeta
    (nomer, data_sostavleniya, obshchaya_stoimost, proekt_id)
VALUES
(N'СМ-001', '2026-01-20', 12500000.00, 1),
(N'СМ-002', '2026-03-01', 18450000.00, 2),
(N'СМ-003', '2026-03-20', 25300000.00, 3),
(N'СМ-004', '2026-05-01', 7800000.00, 4),
(N'СМ-005', '2026-05-20', 32900000.00, 5);


/* =======================
   POZITSIYA SMETY
   ======================= */

INSERT INTO Pozitsiya_smety
    (naimenovanie_rabot, edinitsa_izmereniya,
     kolichestvo, tsena_za_edinitsu, stoimost, smeta_id)
VALUES
(N'Земляные работы',
 N'м3', 500, 1200.00, 600000.00, 1),

(N'Устройство фундамента',
 N'м3', 300, 8500.00, 2550000.00, 1),

(N'Возведение стен',
 N'м2', 900, 4300.00, 3870000.00, 2),

(N'Монтаж кровли',
 N'м2', 650, 3100.00, 2015000.00, 3),

(N'Внутренняя отделка',
 N'м2', 1000, 2500.00, 2500000.00, 4),

(N'Монтаж электропроводки',
 N'м', 1500, 850.00, 1275000.00, 5),

(N'Установка окон',
 N'шт.', 70, 18000.00, 1260000.00, 2),

(N'Благоустройство территории',
 N'м2', 800, 1600.00, 1280000.00, 5);


/* =======================
   DOKUMENT
   ======================= */

INSERT INTO Dokument
    (naimenovanie, tip, data_zagruzki, put, proekt_id)
VALUES
(N'Техническое задание',
 N'DOCX', '2026-01-15',
 N'D:\Proekty\Tehnicheskoe_zadanie.docx', 1),

(N'Чертёж здания',
 N'PDF', '2026-03-05',
 N'D:\Proekty\Chertezh.pdf', 2),

(N'Проектная документация',
 N'PDF', '2026-03-25',
 N'D:\Proekty\Proektnaya_dokumentatsiya.pdf', 3),

(N'План строительства',
 N'XLSX', '2026-05-10',
 N'D:\Proekty\Plan_stroitelstva.xlsx', 4),

(N'Договор',
 N'DOCX', '2026-05-25',
 N'D:\Proekty\Dogovor.docx', 5);


/* =======================
   ETAP STROITELSTVA
   ======================= */

INSERT INTO Etap_stroitelstva
    (naimenovanie, poryadkovyy_nomer,
     data_nachala, data_okonchaniya, proekt_id)
VALUES
(N'Подготовка территории',
 1, '2026-02-01', '2026-02-20', 1),

(N'Устройство фундамента',
 2, '2026-02-21', '2026-04-10', 1),

(N'Возведение стен',
 3, '2026-04-11', '2026-07-15', 1),

(N'Монтаж кровли',
 4, '2026-07-16', '2026-08-30', 1),

(N'Отделочные работы',
 5, '2026-09-01', '2026-12-10', 1),

(N'Подготовка площадки',
 1, '2026-03-10', '2026-04-01', 2),

(N'Строительство каркаса',
 2, '2026-04-02', '2026-08-30', 2),

(N'Внутренние работы',
 3, '2026-09-01', '2026-12-20', 2);


/* =======================
   SPECIALIST
   ======================= */

INSERT INTO Specialist
    (fio, spetsialnost, telefon, email)
VALUES
(N'Козлов Михаил Андреевич',
 N'Инженер',
 N'+7 910 100-10-10',
 N'kozlov@company.ru'),

(N'Волков Сергей Игоревич',
 N'Архитектор',
 N'+7 910 200-20-20',
 N'volkov@company.ru'),

(N'Морозов Павел Олегович',
 N'Прораб',
 N'+7 910 300-30-30',
 N'morozov@company.ru'),

(N'Новиков Артём Сергеевич',
 N'Электрик',
 N'+7 910 400-40-40',
 N'novikov@company.ru'),

(N'Фёдоров Андрей Петрович',
 N'Отделочник',
 N'+7 910 500-50-50',
 N'fedorov@company.ru');


/* =======================
   ETAP - SPECIALIST
   ======================= */

INSERT INTO Etap_specialist
    (etap_id, specialist_id)
VALUES
(1, 1),
(1, 3),
(2, 1),
(2, 3),
(3, 2),
(3, 3),
(4, 1),
(4, 3),
(5, 4),
(5, 5);