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


CREATE TABLE RoomType25
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    Title NVARCHAR(50) NOT NULL,
    Description NVARCHAR(200),
    PricePerDay DECIMAL(10,2) NOT NULL,
    MaxGuests INT NOT NULL
);

CREATE TABLE Room25
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    RoomNumber INT NOT NULL UNIQUE,
    Floor INT NOT NULL,
    RoomTypeID INT NOT NULL,
    IsAvailable BIT NOT NULL DEFAULT 1,

    CONSTRAINT FK_Room25_RoomType25
        FOREIGN KEY (RoomTypeID)
        REFERENCES RoomType25(ID)
);

CREATE TABLE Guest25
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    FirstName NVARCHAR(50) NOT NULL,
    LastName NVARCHAR(50) NOT NULL,
    Patronymic NVARCHAR(50),
    Birthday DATE,
    Phone NVARCHAR(20) NOT NULL,
    Email NVARCHAR(100),
    Passport NVARCHAR(30)
);

CREATE TABLE Booking25
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    GuestID INT NOT NULL,
    RoomID INT NOT NULL,
    CheckInDate DATE NOT NULL,
    CheckOutDate DATE NOT NULL,
    GuestsCount INT NOT NULL,
    Status NVARCHAR(30) NOT NULL,
    Comment NVARCHAR(200),

    CONSTRAINT FK_Booking25_Guest25
        FOREIGN KEY (GuestID)
        REFERENCES Guest25(ID),

    CONSTRAINT FK_Booking25_Room25
        FOREIGN KEY (RoomID)
        REFERENCES Room25(ID),

    CONSTRAINT CK_Booking25_Dates
        CHECK (CheckOutDate > CheckInDate)
);

CREATE TABLE Service25
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    Title NVARCHAR(100) NOT NULL,
    Cost DECIMAL(10,2) NOT NULL,
    Description NVARCHAR(200),
    IsActive BIT NOT NULL DEFAULT 1
);

CREATE TABLE BookingService25
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    BookingID INT NOT NULL,
    ServiceID INT NOT NULL,
    Quantity INT NOT NULL DEFAULT 1,
    ServiceDate DATE NOT NULL,

    CONSTRAINT FK_BookingService25_Booking25
        FOREIGN KEY (BookingID)
        REFERENCES Booking25(ID),

    CONSTRAINT FK_BookingService25_Service25
        FOREIGN KEY (ServiceID)
        REFERENCES Service25(ID)
);

CREATE TABLE Payment25
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    BookingID INT NOT NULL,
    PaymentDate DATE NOT NULL,
    Amount DECIMAL(10,2) NOT NULL,
    PaymentMethod NVARCHAR(30) NOT NULL,
    Status NVARCHAR(30) NOT NULL,

    CONSTRAINT FK_Payment25_Booking25
        FOREIGN KEY (BookingID)
        REFERENCES Booking25(ID)
);

INSERT INTO RoomType25 (Title, Description, PricePerDay, MaxGuests)
VALUES
(N'Стандарт', N'Стандартный одноместный номер', 2500, 1),
(N'Стандарт двухместный', N'Номер с двумя спальными местами', 3200, 2),
(N'Комфорт', N'Номер повышенной комфортности', 4200, 2),
(N'Семейный', N'Просторный номер для семьи', 5500, 4),
(N'Люкс', N'Двухкомнатный номер класса люкс', 7500, 2),
(N'Апартаменты', N'Большой номер с кухонной зоной', 9500, 4);

INSERT INTO Room25 (RoomNumber, Floor, RoomTypeID, IsAvailable)
VALUES
(101, 1, 1, 1),
(102, 1, 2, 1),
(103, 1, 3, 0),
(201, 2, 2, 1),
(202, 2, 3, 1),
(203, 2, 4, 0),
(301, 3, 5, 1),
(302, 3, 6, 1);

INSERT INTO Guest25
(FirstName, LastName, Patronymic, Birthday, Phone, Email, Passport)
VALUES
(N'Иван', N'Иванов', N'Сергеевич', '2001-04-15', N'+7 910 123-45-67', N'ivanov@mail.ru', N'4510 123456'),
(N'Алексей', N'Смирнов', N'Андреевич', '1998-08-21', N'+7 920 234-56-78', N'smirnov@mail.ru', N'4511 234567'),
(N'Мария', N'Кузнецова', N'Игоревна', '2002-02-10', N'+7 930 345-67-89', N'kuznetsova@mail.ru', N'4512 345678'),
(N'Анна', N'Соколова', N'Викторовна', '1995-11-04', N'+7 940 456-78-90', N'sokolova@mail.ru', N'4513 456789'),
(N'Дмитрий', N'Попов', N'Алексеевич', '2000-06-18', N'+7 950 567-89-01', N'popov@mail.ru', N'4514 567890'),
(N'Екатерина', N'Волкова', N'Сергеевна', '1999-09-25', N'+7 960 678-90-12', N'volkova@mail.ru', N'4515 678901'),
(N'Никита', N'Морозов', N'Олегович', '2003-01-12', N'+7 970 789-01-23', N'morozov@mail.ru', N'4516 789012'),
(N'Ольга', N'Петрова', N'Александровна', '1997-05-30', N'+7 980 890-12-34', N'petrova@mail.ru', N'4517 890123');

INSERT INTO Booking25
(GuestID, RoomID, CheckInDate, CheckOutDate, GuestsCount, Status, Comment)
VALUES
(1, 1, '2026-09-20', '2026-09-23', 1, N'Завершено', N'Без дополнительных пожеланий'),
(2, 2, '2026-09-22', '2026-09-26', 2, N'Заселен', N'Поздний выезд'),
(3, 3, '2026-09-24', '2026-09-28', 2, N'Заселен', N'Номер с видом на город'),
(4, 4, '2026-09-28', '2026-10-02', 2, N'Забронировано', N'Тихий номер'),
(5, 5, '2026-10-01', '2026-10-05', 1, N'Забронировано', N'Раннее заселение'),
(6, 6, '2026-09-23', '2026-09-27', 4, N'Заселен', N'Семья с детьми'),
(7, 7, '2026-10-05', '2026-10-08', 2, N'Забронировано', N'Номер для некурящих'),
(8, 8, '2026-10-10', '2026-10-15', 3, N'Забронировано', N'Необходима дополнительная кровать');

INSERT INTO Service25
(Title, Cost, Description, IsActive)
VALUES
(N'Завтрак', 600, N'Завтрак в ресторане гостиницы', 1),
(N'Обед', 900, N'Комплексный обед', 1),
(N'Ужин', 1000, N'Ужин в ресторане гостиницы', 1),
(N'Трансфер', 1500, N'Трансфер до вокзала или аэропорта', 1),
(N'Прачечная', 700, N'Стирка и глажка одежды', 1),
(N'Уборка номера', 500, N'Дополнительная уборка номера', 1),
(N'Сауна', 2000, N'Посещение сауны в течение двух часов', 1),
(N'Дополнительное место', 1200, N'Дополнительное спальное место', 1);

INSERT INTO BookingService25
(BookingID, ServiceID, Quantity, ServiceDate)
VALUES
(1, 1, 1, '2026-09-21'),
(2, 1, 2, '2026-09-23'),
(2, 5, 1, '2026-09-24'),
(3, 4, 1, '2026-09-24'),
(3, 1, 2, '2026-09-25'),
(4, 1, 2, '2026-09-29'),
(5, 6, 1, '2026-10-02'),
(6, 8, 1, '2026-09-23'),
(7, 7, 1, '2026-10-06'),
(8, 8, 1, '2026-10-10');

INSERT INTO Payment25
(BookingID, PaymentDate, Amount, PaymentMethod, Status)
VALUES
(1, '2026-09-20', 7500, N'Банковская карта', N'Оплачено'),
(2, '2026-09-22', 12800, N'Банковская карта', N'Оплачено'),
(3, '2026-09-24', 16800, N'Наличные', N'Оплачено'),
(4, '2026-09-24', 6400, N'Банковская карта', N'Предоплата'),
(5, '2026-09-25', 8400, N'СБП', N'Предоплата'),
(6, '2026-09-23', 22000, N'Банковская карта', N'Оплачено'),
(7, '2026-09-25', 7500, N'СБП', N'Предоплата'),
(8, '2026-09-25', 19000, N'Банковская карта', N'Предоплата');