多酒店预订系统的数据库设计/结构

时间:2019-06-25 05:13:24

标签: php database phpmyadmin

我想开发一个类似于(booking.com&agoda.com)OTA网站的网站。但是我在摆桌子时遇到了麻烦。酒店经营者也可以在特定日期关闭特定房间,所以我必须在某个地方有一个封闭的开放场地。我不确定目前是否做得正确,因此我需要一些额外的头脑来帮助我更好地进行设计。

我曾尝试在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 个答案:

答案 0 :(得分:1)

也许这种设计模型将帮助您了解酒店管理系统的基本逻辑。

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
}

您可以根据这些条件/设计来开发数据库。 始终尝试将多种类型的数据隔离到单独的表中。