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


-- ==========================================
-- ШАГ 1: Удаление старых таблиц (в обратном порядке связей)
-- ==========================================
IF OBJECT_ID('dbo.Child', 'U') IS NOT NULL DROP TABLE dbo.Child;
IF OBJECT_ID('dbo.Address', 'U') IS NOT NULL DROP TABLE dbo.Address;
IF OBJECT_ID('dbo.Employee', 'U') IS NOT NULL DROP TABLE dbo.Employee;
IF OBJECT_ID('dbo.Education', 'U') IS NOT NULL DROP TABLE dbo.Education;
IF OBJECT_ID('dbo.Position', 'U') IS NOT NULL DROP TABLE dbo.Position;
IF OBJECT_ID('dbo.Department', 'U') IS NOT NULL DROP TABLE dbo.Department;

-- ==========================================
-- ШАГ 2: Создание таблиц и связей
-- ==========================================

-- 1. Справочник: Отделы (Department)
CREATE TABLE Department (
    DepartmentID int PRIMARY KEY,
    Name nvarchar(100) NOT NULL,
    Phone nvarchar(20),
    Floor int,
    Room int
);

-- 2. Справочник: Должности (Position)
CREATE TABLE Position (
    PositionID int PRIMARY KEY,
    Name nvarchar(100) NOT NULL,
    Salary decimal(10, 2)
);

-- 3. Справочник: Образование (Education)
CREATE TABLE Education (
    EducationID int PRIMARY KEY,
    Name nvarchar(100) NOT NULL
);

-- 4. Основная таблица: Сотрудники (Employee)
CREATE TABLE Employee (
    Employee_ID int PRIMARY KEY,
    FullName varchar(150) NOT NULL,
    
    PositionID int,
    FOREIGN KEY (PositionID) REFERENCES Position(PositionID),
    
    DepartmentType varchar(50),
    
    Department_ID int,
    FOREIGN KEY (Department_ID) REFERENCES Department(DepartmentID),
    
    PassportData varchar(50),
    HomePhone varchar(20),
    Gender char(1),
    BirthDate date,
    HireDate date,
    
    EducationID int,
    FOREIGN KEY (EducationID) REFERENCES Education(EducationID)
);

-- 5. Таблица: Адрес (Address)
CREATE TABLE Address (
    EmployeeID int PRIMARY KEY,
    City nvarchar(50),
    District nvarchar(50),
    Street nvarchar(50),
    House nvarchar(10),
    Entrance nvarchar(10),
    Apartment nvarchar(10),
    FOREIGN KEY (EmployeeID) REFERENCES Employee(Employee_ID)
);

-- 6. Таблица: Дети (Child)
CREATE TABLE Child (
    ChildID int PRIMARY KEY,
    FullName nvarchar(100) NOT NULL,
    BirthDate date,
    EmployeeID int NOT NULL,
    FOREIGN KEY (EmployeeID) REFERENCES Employee(Employee_ID)
);

-- ==========================================
-- ШАГ 3: Заполнение данными (по 10 записей)
-- ==========================================

-- Заполняем справочник: Отделы (10 записей)
INSERT INTO Department (DepartmentID, Name, Phone, Floor, Room) VALUES
(1, 'Бухгалтерия', '+7 (495) 111-22-33', 2, 201),
(2, 'Отдел кадров', '+7 (495) 222-33-44', 2, 202),
(3, 'IT отдел', '+7 (495) 333-44-55', 3, 301),
(4, 'Отдел продаж', '+7 (495) 444-55-66', 1, 101),
(5, 'Юридический отдел', '+7 (495) 555-66-77', 4, 401),
(6, 'Отдел маркетинга', '+7 (495) 666-77-88', 3, 302),
(7, 'Отдел логистики', '+7 (495) 777-88-99', 1, 102),
(8, 'Финансовый отдел', '+7 (495) 888-99-00', 2, 203),
(9, 'Отдел безопасности', '+7 (495) 999-00-11', 1, 103),
(10, 'Административно-хозяйственный отдел', '+7 (495) 000-11-22', 1, 104);

-- Заполняем справочник: Должности (10 записей)
INSERT INTO Position (PositionID, Name, Salary) VALUES
(1, 'Главный бухгалтер', 85000.00),
(2, 'Бухгалтер', 55000.00),
(3, 'Инспектор по кадрам', 50000.00),
(4, 'Программист', 90000.00),
(5, 'Системный администратор', 75000.00),
(6, 'Менеджер по продажам', 60000.00),
(7, 'Юрисконсульт', 70000.00),
(8, 'Маркетолог', 65000.00),
(9, 'Логист', 55000.00),
(10, 'Начальник отдела', 95000.00);

-- Заполняем справочник: Образование (10 записей)
INSERT INTO Education (EducationID, Name) VALUES
(1, 'Высшее техническое'),
(2, 'Высшее экономическое'),
(3, 'Высшее юридическое'),
(4, 'Высшее гуманитарное'),
(5, 'Среднее профессиональное'),
(6, 'Среднее специальное техническое'),
(7, 'Среднее специальное экономическое'),
(8, 'Неполное высшее'),
(9, 'Среднее общее'),
(10, 'Магистратура');

-- Заполняем таблицу: Сотрудники (10 записей)
INSERT INTO Employee (Employee_ID, FullName, PositionID, Department_ID, EducationID, PassportData, HomePhone, Gender, BirthDate, HireDate, DepartmentType) VALUES
(1, 'Иванов Иван Иванович', 1, 1, 2, '4501 123456', '+7 (495) 111-11-11', 'M', '1975-03-15', '2010-05-20', 'Постоянный'),
(2, 'Петрова Анна Сергеевна', 4, 3, 1, '4502 234567', '+7 (495) 222-22-22', 'F', '1988-07-22', '2015-08-10', 'Постоянный'),
(3, 'Сидоров Петр Алексеевич', 3, 2, 4, '4503 345678', '+7 (495) 333-33-33', 'M', '1982-11-30', '2012-03-15', 'Постоянный'),
(4, 'Козлова Елена Дмитриевна', 6, 4, 2, '4504 456789', '+7 (495) 444-44-44', 'F', '1990-01-18', '2018-06-01', 'Совместитель'),
(5, 'Новиков Алексей Владимирович', 5, 3, 1, '4505 567890', '+7 (495) 555-55-55', 'M', '1985-09-05', '2013-11-20', 'Постоянный'),
(6, 'Морозова Ольга Николаевна', 7, 5, 3, '4506 678901', '+7 (495) 666-66-66', 'F', '1978-04-12', '2011-02-28', 'Постоянный'),
(7, 'Волков Дмитрий Андреевич', 10, 6, 4, '4507 789012', '+7 (495) 777-77-77', 'M', '1980-12-25', '2014-09-15', 'Постоянный'),
(8, 'Лебедева Мария Игоревна', 8, 6, 8, '4508 890123', '+7 (495) 888-88-88', 'F', '1992-06-08', '2019-04-10', 'Совместитель'),
(9, 'Соколов Сергей Михайлович', 9, 7, 5, '4509 901234', '+7 (495) 999-99-99', 'M', '1987-02-14', '2016-07-22', 'Постоянный'),
(10, 'Павлова Татьяна Викторовна', 2, 8, 2, '4510 012345', '+7 (495) 000-00-00', 'F', '1983-10-30', '2017-01-15', 'Постоянный');

-- Заполняем таблицу: Адреса (10 записей)
INSERT INTO Address (EmployeeID, City, District, Street, House, Entrance, Apartment) VALUES
(1, 'Москва', 'Центральный', 'улица Ленина', '10', '1', '25'),
(2, 'Москва', 'Северный', 'проспект Мира', '15', '2', '42'),
(3, 'Москва', 'Западный', 'улица Гагарина', '5', '1', '18'),
(4, 'Москва', 'Восточный', 'улица Пушкина', '22', '3', '67'),
(5, 'Москва', 'Южный', 'улица Чехова', '8', '1', '12'),
(6, 'Москва', 'Центральный', 'улица Тверская', '30', '2', '89'),
(7, 'Москва', 'Северо-Западный', 'улица Арбат', '12', '1', '34'),
(8, 'Москва', 'Юго-Западный', 'улица Вернадского', '45', '4', '102'),
(9, 'Москва', 'Восточный', 'улица Сокольническая', '18', '2', '56'),
(10, 'Москва', 'Северный', 'улица Дмитровская', '25', '1', '73');

-- Заполняем таблицу: Дети (10 записей)
INSERT INTO Child (ChildID, FullName, BirthDate, EmployeeID) VALUES
(1, 'Иванов Сергей Иванович', '2010-06-15', 1),
(2, 'Иванова Мария Ивановна', '2012-08-20', 1),
(3, 'Петрова Анна Сергеевна', '2015-03-10', 2),
(4, 'Сидоров Петр Алексеевич', '2008-11-25', 3),
(5, 'Сидорова Екатерина Петровна', '2011-04-18', 3),
(6, 'Новикова Ольга Алексеевна', '2016-09-05', 5),
(7, 'Морозов Дмитрий Сергеевич', '2009-12-30', 6),
(8, 'Волков Андрей Дмитриевич', '2013-07-22', 7),
(9, 'Волкова София Дмитриевна', '2017-02-14', 7),
(10, 'Павлов Виктор Сергеевич', '2014-05-08', 10);

PRINT 'База данных успешно создана и заполнена 10 записями в каждой таблице!';