Резервации в хотел



страница1/2
Дата01.05.2023
Размер18.32 Kb.
#117504
  1   2
Резервации в хотел обяснения за БД

Резервации в хотел
За да проектирате база данни за система за резервации в хотел, трябва да се изградят няколко таблица, които да пазят информацията за всички стаи, клиенти и оценки на престоя:
Таблица "Стая":

  • ID (уникален идентификатор на стаята)

  • Категория (например, единична, двойна, апартамент)

  • Брой легла

  • Изглед (например, градска гледка, морска гледка, гледка към гората)

  • Свободна (флаг, указващ дали стаята е свободна или е заета)

  • Цена на нощувка

Таблица "Клиент":

  • ID (уникален идентификатор на клиента)

  • Име

  • Фамилия

  • Електронна поща

  • Телефонен номер

  • Адрес

  • Държава

  • Пощенски код

  • Дата на регистрация (дата на първа резервация)

  • Дата на последна резервация

Таблица "Резервация":

  • ID (уникален идентификатор на резервацията)

  • ID на клиента

  • ID на стаята

  • Дата на пристигане

  • Дата на заминаване

Таблица "Оценка":

  • ID (уникален идентификатор на оценката)

  • ID на клиента

  • ID на стаята

  • Оценка (между 1 и 5)

  • Коментар (незадължителен)

Таблица "Плащане":

  • ID (уникален идентификатор на плащането)

  • ID на клиента

  • ID на резервацията

  • Дата на плащане

  • Стойност на плащането

Таблица "История на стаята":

  • ID на стаята

  • Дата на заетост (начална дата на период на заетост)

  • Дата на освобождаване (крайна дата на период на заетост)

Таблиците може да бъдат реализирани с помощта на релационна база данни като MySQL или PostgreSQL.
Тази база данни ще позволи на потребителите да търсят и резервират стаи, да плащат онлайн и да оценяват престоя си. Също така ще позволи на хотела да следи свободните и заетите стаи, да управлява резервациите и да събира данни за клиентите и техните престои.

Зад2
***Заявка SELECT за стаите, който са под 1000 лева, имат гледка към морето


Тази заявка SELECT използва оператора WHERE, за да филтрира стаите, които отговарят на определени условия. В този случай, условията са, че цената на стаята е под 1000 лева, има гледка към морето (променливата "sea_view" е равна на 1) и има климатик (променливата "air_conditioning" е равна на 1).
***Заявка SELECT за клиентите, който са отседнали в хотела между 2022-05-01 и 2022-06-30, запазили са двойна стая и са оставили raiting
Тази заявка SELECT използва оператора WHERE, за да филтрира клиентите, които отговарят на определени условия. В този случай, условията са, че клиентите са отседнали в хотела между 2022-05-01 и 2022-06-30 (променливите "check_in_date" и "check_out_date" са в този диапазон), са запазили двойна стая (променливата "room_type" е равна на "Double") и са оставили рейтинг (променливата "rating" не е равна на NULL).
***Заявката SELECT, която ще извлече имената на клиентите, които са оставили рейтинг равен на 5, вида на стаята, броя на леглата и коментара, ако има такъв.
Тази заявка SELECT използва оператора JOIN, за да свърже таблиците "client" и "room" по променливата "room_number". След това филтрира резултатите, като избира само тези, които имат рейтинг 5 (променливата "rating" е равна на 5). Колоните, които избира, са името на клиента (променливата "name"), видът на стаята (променливата "room_type"), броя на леглата в стаята (променливата "bed_count") и коментара на клиента (променливата "comment"). Ако клиентът не е оставил коментар, колоната "comment" ще бъде празна.
Зад3
Тази заявка избира видът на стаята (променливата "room_type") и изчислява броя на стаите от всеки вид (чрез COUNT(*)). Резултатът се групира по вид на стаята, използвайки оператора GROUP BY.

***да се изведе сумата на парите, които всеки клиент е харчил в хотела.
В тази заявка използваме функциите SUM() и GROUP BY, за да изчислим общата сума харчена от всеки клиент в хотела. Тук ползваме три таблицата - "reservations", "clients" и "rooms" - за да вземем информацията за всяка резервация, за клиента, който я е направил и за стаята, която е резервирана.

Зад4
***да се изведат данните на всички клиенти, които са резервирали стая с гледка към морето.
За да направим това, ще използваме таблиците "reservations" и "rooms" и ще ги обединим по ключа "room_number". След това ще използваме условието WHERE, за да филтрираме само резервациите за стаи с гледка към морето.
В тази заявка използваме INNER JOIN, за да обединим таблиците "reservations" и "rooms", като ги свързваме по ключа "room_number". Също така, използваме още едно INNER JOIN, за да включим информацията за клиента от таблицата "clients", като ги свързваме по ключа "id". След това използваме WHERE условие, за да филтрираме само резервациите за стаи с гледка към морето.
Зад5
да се изведат данните на всички клиенти, които са резервирали стая в хотела, включително тези, които не са направили резервация.
За да направим това, ще използваме таблиците "clients" и "reservations" и ще ги обединим по ключа "id" на клиента. Тъй като не всички клиенти направят резервация, ще използваме LEFT OUTER JOIN, за да включим всички клиенти от таблицата "clients", включително тези, които нямат резервация. След това ще използваме условието WHERE, за да филтрираме само резервациите за стаи в определен период.
В тази заявка използваме LEFT OUTER JOIN, за да обединим таблиците "clients" и "reservations", като ги свързваме по ключа "id". Тъй като не всички клиенти направят резервация, използваме LEFT OUTER JOIN, за да включим всички клиенти от таблицата "clients", включително тези, които нямат резервация. След това използваме WHERE условие, за да филтрираме само резервациите за стаи в определен период или да включим клиентите, които нямат резервация.
Зад6
Тази заявка избира имената и фамилиите на клиентите, които са изхарчили повече от средностатистическата стойност за всички клиенти. За да намерим средностатистическата стойност, използваме вложен SELECT, който избира средната стойност на полето

Сподели с приятели:
  1   2




©obuch.info 2024
отнасят до администрацията

    Начална страница