Разработка базы данных / структуры для системы бронирования нескольких отелей - PullRequest
0 голосов
/ 25 июня 2019

Я хочу создать сайт, аналогичный веб-сайтам OTA, например (booking.com и agoda.com). Но у меня проблемы при приготовлении стола. Кроме того, отельеры могут закрывать определенные номера в определенные даты, поэтому я должен где-то иметь близкое открытое поле. Я не уверен, правильно ли я сейчас это делаю, поэтому мне нужны дополнительные мозги, чтобы помочь мне сделать это лучше.

Я пробовал искать в Google проекты баз данных, но они не соответствуют моим требованиям, большинство из них только для одной структуры отеля и имеют только фиксированную цену, тогда как мои цены основаны на датах. Цены могут быть выше на PH и в выходные дни и могут быть изменены отельерами.

Что я имею в виду для своих столов:

hotel {
    hotelID (INT) PK
    hotelName (VARCHAR)
}
rooms {
    roomID (INT) PK
    roomType (VARCHAR)
}

Я планирую использовать INT при наличии (0 = закрыть и 1 = открыть)

rates {
    roomID (INT) 
    date (datetime)
    price (double)
    available (INT)
}
bookings {
    bookingID (INT) PK
    hotelID (INT)
    roomID (INT)
    checkInDate (datetime)
    checkOutDate (datetime)
    price (double)
}

1 Ответ

1 голос
/ 25 июня 2019

Может быть, эта модель дизайна поможет вам понять основную логику системы управления гостиницей.

hotels {
    id INT 11
    code VARCHAR 50
    name VARCHAR 70
    street_address TEXT 
    city_id INT 11
    state_id INT 11
    country_id INT 11
    zip_code VARCHAR 30
    added_on DATETIME
    added_by INT 11 ( ADMIN ID )
    updated_on DATETIME
    updated_by INT 11 ( ADMIN ID )
    flag TINYINT 2 DEFAULT 0
}

rooms {
    id INT 11
    hotel_id INT 11
    room_number INT 11
    floor_number INT/VARCHAR ..
    room_type INT 5 ( FK: room_types )
    added_on DATETIME
    added_by INT 11 ( ADMIN ID )
    flag TINYINT 2 (0/1) DEFAULT 0 AVAILABLE / NOT AVAILABLE
}

room_types {
    id INT 11
    hotel_id INT 11
    ......
}

room_facilities {
    id INT 11
    hotel_id INT 11
    room_id INT 11
    bed_type ( 'single', 'double', etc. )
    ac_available ...
    ..... etc.
}

room_rates {
    id INT 11
    hotel_id INT 11
    room_id INT 11
    price INT 11
    .. other price ..
    price_on DATETIME 11 ( DATE )
    added_on DATETIME
    added_by INT 11 ( ADMIN ID )
    flag TINYINT 2
}

bookings {
    id INT 11
    hotel_id INT 11
    room_id INT 11
    check_in DATETIME
    check_out DATETIME
    booking_person_id INT 11
    flag
}

booking_customer {
    id INT 11
    booking_id INT 11
    first_name ..
    last_name ..
    contact_number ..
    id_number ..
    added_on
    flag
}

booking_payment {
    id
    booking_id
    customer_id
    total_paid
    -- other price
    payment_type ( credit card/cash )
    status ( paid/ not paid ) 
}

booking_person {
    id
    hotel_id
    first_name
    last_name
    contact_number
    email
    address
    profile_picture
    added_on
    updated_on
    flag
}

Вы можете разработать свою базу данных на основе этих критериев / дизайна. Всегда старайтесь разделять данные нескольких типов в отдельные таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...