SQL数据库空间方法

时间:2012-09-20 15:04:13

标签: sql system rate

前段时间我开发了酒店管理系统。不同的是,该系统被几家酒店和业主用在一个数据库中。我不能只为房型/住宿添加价格,因为它们可能与一周或另一周不同。

我用来克服移动房屋固定住宿(周末,周,周中)的问题以及预订酒店房间的可能性(无到达日,最短住宿等)是以一定的价格存储价格-表。具体如下:

tablename: Availability
int id
int roomTypeId
decimal rate
dateTime day
bit canArrive
int minimumStay
...

我想知道,现在数据库正在增长,有更多的酒店和移动房屋,如果这种方法做得恰当,或者可能有更好的方法,而不是存储每种房型和每个日期的费率。

1 个答案:

答案 0 :(得分:1)

当然!
重要的是要注意,虽然费率可以每天更改,但它们通常(否则,任何显示费率的广告都会很快过时 - 它们本来可以设计<强>>月之前。)

简单,天真(第一次迭代)设计如下:

Hotel
=========
id -- autoincrement
name -- varchar(50)
contactInformation -- (address, phone, etc)

RoomType
==========
id -- autoincrement
description -- varchar(50)

HotelRoomTypeRate
==================
id -- autoincrement
hotelId -- fk reference to hotel.id
roomTypeId -- fk reference to roomType.id
rate -- decimal
effectiveOn -- date (this is 'business'/calendar day)

HotelRoom
===========
id -- autoincrement
hotelId -- fk reference to hotel.id
roomTypeId -- fk reference to roomType.id
status -- fk reference to status table, for things like 'under construction'

HotelCheckIn
==============
id -- autoincrement
hotelId -- fk reference to hotel.id
customerId -- fk reference to customer.id
hotelRoomId -- fk reference to hotelRoom.id
checkedInOn -- date (again, 'business'/calendar day)

HotelCheckOut
===============
id -- autoincrement
hotelCheckInId -- fk reference to hotelCheckIn.id
checkedOutOn -- date (again, 'business'/calendar day)

你当然需要调整它以满足你的需要。