2012-02-15 5 views
1

Я хочу создать структуру базы данных для системы бронирования отелей.Дизайн базы данных для системы бронирования отелей

Моя схема:

client (
    client_id, 
    lastname 
) 

reservation (
    reservation_id, 
    client_id, 
    checkIndate, 
    roomno 
) 

Моя проблема заключается в регистрации в части. Я уже создал оговорку; мне еще нужно создать таблицу регистрации? Если да, то какова должна быть его схема?

Есть два способа клиенты могут войти в отель:

  1. резервированием (резервирование номеров до даты заезда) или
  2. по CheckIN (идет в отель без оговорок)

Как хранить записи, которые были проверены-IN в отеле?

ответ

2

Всего пару мыслей. Я замечаю, что «roomno» - поле в таблице «резервирования». Я предполагаю, что у вас также есть таблица «комнаты», которая имеет «roomno» в качестве основного ключа и любые другие данные, которые вы можете отслеживать в комнате (номер телефона, номер_обытия и т. Д.).

Что бы я сделал, это создать таблицу под названием «Занятость». Эта таблица будет иметь три поля: «client_id», «roomno» и checkin_time. «client_id» и «roomno» будут и внешними ключами (соответственно для клиентских и комнатных таблиц). Чтобы обеспечить уникальность, я бы связал их обоих, чтобы сделать первичный ключ (в конце концов, вы могли бы купить одного клиента в двух комнатах).

Когда клиент проверяет, вы должны удалить эту строку из таблицы «Занятость». Вам захочется архивировать эту строку в другой таблице («история», «прошлое» ... что-то подобное), где вы также захотите записать «checkout_time».

С точки зрения тех изменений, которые я предложенных или предполагаемых, вот как они выглядят:

table: Room 
roomno INT 
phone_number INT 
number_of_beds INT 
smoking_allowed BOOLEAN 

table: Occupancy 
client_id BIGINT (FK referencing Client) (part of PK) 
roomno INT (FK referencing Room) (part of PK) 
checkin_time DATETIME 

table: pastStays 
client_id BIGINT (FK referencing Client) (part of PK) 
roomno INT (FK referencing Room) (part of PK) 
checkin_time DATETIME 
checkout_time DATETIME 
+0

сэр у вас есть образец вашего дизайна базы данных? PLSS .... –

+0

сэр, как я могу заставить занятие обрабатывать много записей, например: Occupancy_id 1 будет иметь несколько client_id и номер в нем. Как я могу это сделать? Или мое единственное резервирование_ид (reservation_id 1) будет обрабатывать множественное занятие_id. –

+0

@ rjtubera редактирование сделано. – Aaron

0

Я думаю, что лучше отвязать оговорку регистрации. Также возможно, что оговорки могут быть сделаны, если системы резервирования третьих лиц (блок номеров, выделенных для них). Также одно резервирование может быть для нескольких гостей, но регистрация производится для одного гостя. Также вам может потребоваться отдельная таблица комнат - одна запись за номер. Также, как правило, возможно, что для одной проверки в гостях может использоваться несколько комнат (для разной продолжительности). Следовательно, может быть полезно отделить регистрацию от заселения. Также вам может потребоваться сохранить инвентарь (доступность комнаты) отдельно. Это означает следующие таблицы.

Бронирование (идентификатор, reserverId, FromDate, Todate) - одна запись по запросу reservaion

RoomBooking (идентификатор, кубовых, roomNo, FromDate, Todate) - одна запись за номер за резервирование

отметились, (id, resId, guestId, checkInDate, checkOutDate) - одна запись для каждого гостя

Занятия (id, checkInId, fromDate, toDate) - одна запись в комнате для указанной продолжительности (это похоже на бронирование номера, но это актуально, RoomBooking как планировалось)

+0

сэр, в чем разница между оговорками и roombookinG? –

+0

отредактировал ответ –

Смежные вопросы