以下为我数据库结构,请帮忙掌掌眼,看有无问题,有没有需要补充的。(先不考虑会员注册那一套东西,所以暂没有会员表)。
共16个表:
(1)系统配置表(2)国家表
国家ID
国家英文名
国家中文名
国旗
国徽
英文介绍文字
中文介绍文字
备注(3)城市表
城市ID
国家ID
城市英文名
城市中文名
城市介绍缩略图
城市英文介绍
城市中文介绍
备注(4)酒店资料表:
酒店ID
酒店英文名
酒店中文名
星级标准ID
报价方式ID
最低价
最高价
酒店类型
所在国家ID
所在城市ID
位置
缩略图
介绍图1(外观)
介绍图2(大堂)
介绍图3(客房)
酒店实景FLASH
可接受的信用卡ID
简介(5)信用卡表
信用卡ID
信用卡英文名
信用卡中文名
信用缩略图
备注(6)房型表
房型ID
房型英文名
房型中文名
备注(7)房间资料表
酒店ID
房型ID
额定入住人数
报价方式ID
床型ID
是否包含早餐
是否包含宽带
均价
房型特点(能否加床)
能加床数量
加床价(/张/天)
是否提供额外早餐
提供的额外早餐的种类
额外早餐的价格(/份)
是否提供额外宽带
提供的宽带类型
额外的宽带价格(/小时)
备注(8)早餐表
早餐ID
早餐英文名
早餐中文名
备注(9)床型表
床型ID
床型英文名
床型中文名
备注(10)房间状态表
房间状态ID
酒店ID
房型ID
房间状态
房价
加床价
额外早餐价
vip房价
vip加床价
vip额外早餐价
有效期(如2007-01-01/2007-06-01)
备注(11)报价方式表
报价方式ID
货币符号(如:RMB、USD)
货币名称(如:人民币、美元)
备注(12)酒店订单表
订单号
酒店ID
房型ID
房间数量
入住日期
入住时间
退房日期
退房时间
成人数
加床数
额外早餐份数
额外宽带小时数
客户航班号
客人姓名
联络人姓名
国家ID
证件号
性别
确认方式
手机
固话
传真
E-mail
特殊要求
报价方式ID
总费用
订单提交时间
订单状态
管理人员ID
备注(13)订单状态表
订单状态ID
订单状态英文名
订单状态中文名
备注(14)酒店星级表
星级ID
星级标准
星级英文名
星级中文名
星级图片
备注(15)系统邮件表
系统邮件ID
SMTP服务器
端口号
SMTP服务器的邮箱
SMTP服务器的用户帐号
SMTP服务器的用户密码
邮件主题
邮件内容
邮件格式
备注(16)管理用户表
管理用户ID
用户名
密码
真实姓名
权限等级
最后登陆时间

解决方案 »

  1.   

    系统配置表忘了,补上:
    (1)系统配置表
    系统配置ID
    开放/关闭
    关闭原因
    站点关键字
    后台地址
    网站英文名
    网站中文名
    网址
    联系E-MAIL
    固话
    传真
    技术支持E-MAIL
    备注
      

  2.   

    helloyou0 你好.
    你指的是有效期(如2007-01-01/2007-06-01)吗?我嫌字段太多,就用"/"隔开,到时候以“/”号拆分一下就可以了。另:涉及到图片的,都存储的是图片相对地址,图片存在数据库里的话较贵。(好像mysql数据库都1M = RMB 10元)
      

  3.   

    我刚换工作,之前的工作性质跟这都不沾边,可能了解比较少,比较混乱,再加上自身水平低,可能就有很多疏漏和错误的地方,还望诸位不吝指教.NO.1
    ----------------------------------------------------------------------------------------
    chenqiuwu():
    基价(也就是稳定价,或者市场价) | 浮动价 | 浮动价加入时间 | 有效天数而非日期
    浮动价并非全价,而是折扣率、优惠值等。
    我想已经表达得很清楚了,有什么问题,可以交流。
    ----------------------------------------------------------------------------------------
    回复:先表示感谢!是的,您说的对,总体是这样分的,但是我现在供值的是一个小的旅游公司,他们并没有跟各酒店、机场等有合作关系,所以酒店的即时数据(比如每天不一样的价格)是比较难获得的,所以之前的思路就是:一个价格。这个价格可能高于酒店的基价,这样跟客人有转圜的余地。但我后来考虑还是要有这么个功能,以后好扩展,所以后来又改了。因为仓促,加之前后台、设计、美工...都我一个人,所以感觉很乱,贻笑大方了。
    另:照您的来的话,前台用户搜索的时候,是否有点麻烦?比如客户要搜“2007-01-01”到“2007-03-30”这个时间段的酒店,根据您的这样设计,sql语句如何写呢?想不出,望指教。NO.2
    ----------------------------------------------------------------------------------------
    showerXP(小阿!) :
    可以考虑的:
    先不要考虑如何设计数据库什么的,而是搞清楚客观世界具体的事务流程是如何运转的。简单点,还是从需求找答案。要不然,做出来得系统很有可能日后会要很大的修改,而且修改起来非常复杂。
    ----------------------------------------------------------------------------------------
    回复:是的,关键是公司老板催得急,我也从没搞过这类东西,比较迷糊吧。谢谢。
    NO.3
    ----------------------------------------------------------------------------------------
    zjstandup(横乂还) :
    根据需求描述:
    一个酒店的一个类型的房间价格每天都不一样
    所以房间价格应该跟类型挂钩吧?而不是跟每个的房间挂钩!
    其他的我再想想
    ----------------------------------------------------------------------------------------
    回复:对,一个酒店的一个类型的房间价格应该是相同的,我准备把价格放到“房态表”中,您看的那是之前的,因为我没想好...不过我之前就是想把价格单拎出来的,房型表就是房型编号和名称。
    NO.4
    ----------------------------------------------------------------------------------------
    zjstandup(横乂还):
    我觉得单看房型和价格可不可以这样:
    房型价格对应表:
    房型ID 价格 有效期这样的话可以设置每个房型每个日子的每个价格了,假如这个房型一年365天的价格都不一样,那么这个表中将有365条这个房型的记录!那如果有很多重复的话,就应该考虑减少冗余了
    ----------------------------------------------------------------------------------------
    回复:感谢!我也想过这样,但我觉得可能还有更好的方法,所以就没动....欢迎随时指教。
      

  4.   

    楼主的:
    比如客户要搜“2007-01-01”到“2007-03-30”这个时间段的酒店,根据您的这样设计,sql语句如何写呢?想不出,望指教。
    ---------------------------------------------------------------------------这里涉及到一个时间段交集的计算问题。我的算法:1。取两个时间段的最大和最小两端,算之间的天数,设A
    2。两个时间段的总跨度,设B。(比如第一个时间段的跨度为20天,第二时间段的跨度为10天,则总跨度为30天)
    3。A>B则无交集,A<=B则有交集。
    querystart查询时间段的起始时间
    queryend查询时间段的结束时间...where greatest("&queryend&",end)-least("&querystart&",start)<=days+"&days&"
    -------------------
    另外,你做一个稍微大点的数据库设计的时候,一定要把握住哪个表作为核心表。在这里明显是酒店在某段时间内的某个有效房间。这样的表,唯一确定一条信息的是两个字段:有效时间段与房间号。这条信息有些共有属性,比如所属的房型,价格,当前价格,入住人数等。
    当有人入住,则房间处于占用状态,一旦人搬出则为有效房间。
    所以应该设两个表,旧表与新表(或分为两大类),当有人从房间搬出则这条信息自动进入旧表中。旧的用来查询以前纪录,一般客户少用,新的则用来供前台用户查询当前有效房间。
      

  5.   

    chenqiuwu() ,你好.
    ------------------------------------------------------------------------
    1。取两个时间段的最大和最小两端,算之间的天数,设A
    2。两个时间段的总跨度,设B。(比如第一个时间段的跨度为20天,第二时间段的跨度为10天,则总跨度为30天)
    ------------------------------------------------------------------------
    没怎么看明白,你说的"两个时间段"是指前台客户选择的搜索时间段吗?比如客户要搜“2007-01-01”到“2007-03-30”这个时间段的酒店...“两个时间段的总跨度”我也不明白。望指点。
    如:
    某一酒店在2007-02-10到2007-02-15日有人入住了,现在某一客人在前台选择搜索的日期条件——从“2007-01-01”到“2007-03-30”期间的房....
      

  6.   

    整个思路类似于判断 在横坐标轴上两个线段是否有重合。 两个线段共4个端点,选4个端点中的最左和最右端由此也得出可能的最大长度。用这个长度和两个线段的长度和做比较。 大于则不重合,小于则重合。
     时间段1:“2007-01-01”到“2007-03-30”  (时间跨度为3个月,大概为90天)
     时间段2:(数据库中房间对应的起始时间与结束时间字段) (时间跨度为数据库字段days的值)
      

  7.   

    chenqiuwu,非常感谢!!!不过我觉得字段days应该可以不用要,比对的时候直接算出也行啊...感谢你给我你的算法!!!我可太笨啦:]谢谢!散分!