酒店系统数据库设计_第1页
酒店系统数据库设计_第2页
酒店系统数据库设计_第3页
酒店系统数据库设计_第4页
酒店系统数据库设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品好资料学习推荐酒店管理系统一酒店管理系统的需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询等方面,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,得出本系统所处理的数据流程。针对一般酒店客房信息管理系统的需求,内容和流程分析,设计下面的数据项和数据结构:员工标准信息,包括的数据项有:员工编号,姓名,性别,出生日期,工龄,密码,电话,备注等。客户标准信息,包括的数据项有:客户编号,性名,性别,出生日期,身份证号,手机,备注等。客房标准信息,包括的数据项有:客房编号,类型编号,状态,备注等。类型标准信息,包括的数据项有:类型编号,类型名称

2、,费用,总量,剩余量,备注等。订单标准信息,包括的数据项有:订单编号,员工编号,客户编号,客房编号,时间,押金,备注等。退房标准信息,包括的数据项有:员工编号,客户编号,客房编号,时间,备注等。二.概念结构设计:经过对酒店一般形式的调查,了解到了该系统包括的实体类型有:员工、客户、客房等。经过分析画出了“酒店管理系统”数据库的E-R图,分别如图1图6所示:员工员工编号姓名性别出生日期工龄密码电话备注图-1 员工实体 E-R图客户客户编号姓名性别出生日期身份证号手机备注图-2 客户实体 E-R图客房客房编号类型编号状态备注图-3 客房实体 E-R图类型类型编号类型名称费用总量剩余量备注图-4 类

3、型实体 E-R图订单订单编号员工编号客户编号客房编号时间押金备注图-5 订单实体 E-R图退房员工编号客房编号客户编号时间备注图-6 退房实体 E-R图通过对个实体之间联系的分析,将局部E-T图综合成全局E-R图,如图-7所示:n客户员工客房退房住宿n离开m登记管理分类类型预定登记订单nmmnnmmmnnm图-7 全局E-R图三.逻辑结构设计:根据概念设计的结果,将其转换为关系模型:员工(员工编号,姓名,性别,出生日期,工龄,密码,电话,备注)客户(客户编号,性名,性别,出生日期,身份证号,手机,备注)客房(客房编号,类型编号,状态,备注)类型(类型编号,类型名称,费用,总量,剩余量,备注)订

4、单(订单编号,员工编号,客户编号,客房编号,时间,押金,备注)退房(员工编号,客户编号,客房编号,时间,备注)四.物理结构设计:1员工表列名数据类型是否允许为空默认值是否为主键员工编号Char(10)否是姓名Char(10)否性别Char(2)否男出生日期Smalldatetime工龄Int密码Char(6)否电话Char(20)备注Text2.客户表列名数据类型是否允许为空默认值是否为主键客户编号Char(10)否是姓名Char(10)否性别Char(2)否男出生日期Smalldatetime身份证号Char(18)否手机Char(20)备注Text3.客房表列名数据类型是否允许为空默认值是

5、否为主键客房编号Char(6)否是类型编号Char(2)否状态Char(4)备注Text4.类型表列名数据类型是否允许为空默认值是否为主键类型编号Char(2)否是类型名称Char(16)否费用Int总量Int剩余量Int备注Text5.订单表列名数据类型是否允许为空默认值是否为主键订单编号Char(10)否是员工编号Char(10)客户编号Char(10)客房编号Char(6)时间SmalldatetimeGETDATE()押金Int备注Text6.退房表列名数据类型是否允许为空默认值是否为主键员工编号Char(10)客户编号Char(10)客房编号Char(5)时间Smalldatetim

6、eGETDATE()备注Text题目:(一)1用T-SQL语句创建数据库CREATEDATABASE 酒店管理系统ONPRIMARY(NAME=酒店管理系统_data1,FILENAME=E:SQL酒店管理系统酒店管理系统_data1.mdf,SIZE=5,MAXSIZE=UNLIMITED,FILEGROWTH=2),FILEGROUP FGROUP(NAME=酒店管理系统_data2,FILENAME=E:SQL酒店管理系统酒店管理系统_data2.ndf,SIZE=5,MAXSIZE=UNLIMITED,FILEGROWTH=2)LOGON(NAME=酒店管理系统_log1,FILENA

7、ME=E:SQL酒店管理系统酒店管理系统_log1.ldf,SIZE=10,MAXSIZE=UNLIMITED,FILEGROWTH=4)GO2用T-SQL语句创建所有的表及设置主键CREATETABLE 员工表(员工编号CHAR(10)NOTNULLPRIMARYKEY, 姓名CHAR(10)NOTNULL, 性别CHAR(2)NOTNULL, 出生日期SMALLDATETIME, 工龄INT, 密码CHAR(6)NOTNULL, 电话CHAR(20), 备注TEXT)GOCREATETABLE 客户表(客户编号CHAR(10)NOTNULLPRIMARYKEY, 姓名CHAR(10)NOT

8、NULL, 性别CHAR(2)NOTNULL, 出生日期SMALLDATETIME, 身份证号CHAR(18)NOTNULL, 手机CHAR(20), 备注TEXT)GOCREATETABLE 客房表(客房编号CHAR(6)NOTNULLPRIMARYKEY, 类型编号CHAR(2)NOTNULL, 状态CHAR(4), 备注TEXT)GOCREATETABLE 类型表(类型编号CHAR(2)NOTNULLPRIMARYKEY, 类型名称CHAR(16)NOTNULL, 费用INT, 总量INT, 剩余量INT, 备注TEXT)GOCREATETABLE 订单表(订单编号CHAR(10)NOT

9、NULLPRIMARYKEY, 员工编号CHAR(10), 客户编号CHAR(10), 客房编号CHAR(6), 时间SMALLDATETIME, 押金INT, 备注TEXT)GOCREATETABLE 退房表(员工编号CHAR(10), 客户编号CHAR(10),客房编号CHAR(6), 时间SMALLDATETIME, 备注TEXT)GO3用T-SQL语句给需要设外键的表设置外键ALTERTABLE 客房表ADDCONSTRAINT FK_类型表_客房表FOREIGNKEY(类型编号)REFERENCES 类型表(类型编号)GOALTERTABLE 订单表ADDCONSTRAINT FK_

10、员工表_订单表 FOREIGNKEY(员工编号)REFERENCES 员工表(员工编号)GOALTERTABLE 订单表ADDCONSTRAINT FK_客户表_订单表 FOREIGNKEY(客户编号)REFERENCES 客户表(客户编号)GOALTERTABLE 订单表ADDCONSTRAINT FK_客房表_订单表 FOREIGNKEY(客房编号)REFERENCES 客房表(客房编号)GOALTERTABLE 退房表ADDCONSTRAINT FK_员工表_退房表 FOREIGNKEY(员工编号)REFERENCES 员工表(员工编号)GOALTERTABLE 退房表ADDCONSTR

11、AINT FK_客户表_退房表 FOREIGNKEY(客户编号)REFERENCES 客户表(客户编号)GOALTERTABLE 退房表ADDCONSTRAINT FK_客房表_退房表 FOREIGNKEY(客房编号)REFERENCES 客房表(客房编号)GO4用T-SQL语句给表加上check约束、UNIQUE约束、DEFAULT约束ALTERTABLE 员工表ADDCONSTRAINT CK_员工性别CHECK(性别 IN(男,女)GOALTERTABLE 员工表ADDCONSTRAINT DF_员工性别DEFAULT(男)FOR 性别GOALTERTABLE 客户表ADDCONSTRA

12、INT CK_客户性别CHECK(性别 IN(男,女)GOALTERTABLE 客户表ADDCONSTRAINT DF_客户性别DEFAULT(男)FOR 性别GOALTERTABLE 客户表ADDCONSTRAINT UQ_身份证号UNIQUE(身份证号)GOALTERTABLE 订单表ADDCONSTRAINT DF_订房时间DEFAULT(GETDATE()FOR 时间GOALTERTABLE 退房表ADDCONSTRAINT DF_退房时间DEFAULT(GETDATE()FOR 时间GO5使用insert语句初始化数据库INSERTINTO 员工表(员工编号,姓名,性别,出生日期,工

13、龄,密码,电话)VALUES(0109090101,张三,男,1982-2-1,2,123401INSERTINTO 客户表(客户编号,姓名,性别,出生日期,身份证号,手机)VALUES(1009010001,王恒,女,1987-8-1613623455776)INSERTINTO 客房表(客房编号,类型编号,状态)VALUES(120501,12,空)INSERTINTO 类型表(类型编号,类型名称,费用,总量,剩余量)VALUES(12,豪华双人房,480,20,20)INSERTINTO 订单表(订单编号,员工编号,客户

14、编号,客房编号,押金)VALUES(1005010001,0109090101,1009010001,120506,50)INSERTINTO 退房表(员工编号,客户编号,客房编号)VALUES(0109090102,1009010001,210301)(二)1、流程控制语句与函数(1)、用上while 语句 根据入住天数,查询客户应付费用declare y intdeclare x intset x=0set y=0while xdatediff(day,2010-12-10,getdate()beginset x=x+1set y=x*300endselect fare=y(2)、用上if

15、else 语句查出普通房中,单人房多少钱。declare x charset x=单人房if x=单人房select普通单人间100元elseselect普通双人间280元go(3)、用上case函数查询客户的年龄信息select 姓名,年龄=casewhenyear(getdate()-year(出生日期)=50 then老年whenyear(getdate()-year(出生日期)between 40 and 50 then中年else青年endfrom 客户表go(4)、用上substring函数截取“酒店管理系统”中“管理系统”这四个字。selectsubstring(酒店管理系统,3

16、,4)(5)、用上datediff函数查询员工年龄等级select 姓名,年龄=casewhendatediff(year,出生日期,getdate()=50 then老年whendatediff(year,出生日期,getdate()between 40 and 50 then中年else青年endfrom 员工表go(6)、自定义一个标量函数并调用它定义一个标量函数查询类型名称为“豪华单人房”的客房数createfunction kfs()returnsintasbegindeclare y intselect y=count(*)from 客房表a,类型表bwhere a.类型编号=b.

17、类型编号groupby 类型名称having 类型名称=豪华单人房return yend调用:select dbo.kfs()2、SELECT查询(1)、用上selectfromwhere语句查找出所有性别为男的员工SELECT*FROM 员工表WHERE 性别=男(2)、用上distinct 关键字查找出所有客房的类型名称SELECTDISTINCT 类型名称FROM 类型表(3)、用上top 关键字查找出客户表中的前四名客户的信息SELECTTOP 4 *FROM 客户表(4)、用上in 子句查找出所有豪华双人房和豪华单人房的客房编号和类型名称SELECT 客房编号,类型名称FROM 客房

18、表a,类型表bWHERE a.类型编号=b.类型编号AND 类型名称IN(豪华双人房,豪华单人房)(5)、用上 between 子句查找出年龄为20到25之间的所有客户信息SELECT*FROM 客户表WHEREDATEDIFF(YEAR,出生日期,GETDATE()BETWEEN 20 AND 25(6)、用上like 子句查找出姓“张”的男员工信息SELECT*FROM 员工表WHERE 姓名LIKE张%AND 性别=男(7)、进行多表连接查找出各个员工姓名和其接待客户的姓名SELECT 员工表.姓名AS 员工,客户表.姓名AS 客户FROM 员工表JOIN 客户表JOIN 订单表ON 客

19、户表.客户编号=订单表.客户编号ON 员工表.员工编号=订单表.员工编号(8)、用上into子句为员工表添加一条新的记录INSERTINTO 员工表(员工编号,姓名,性别,出生日期,工龄,密码,电话)VALUES(0109090101,张三,男,1982-2-1,2,123401(9)、用上update 语句修改客户表的数据,将客户编号为“1009010001”的手机改为UPDATE 客户表SET 手机HERE 客户编号=1009010001(10)、用上delete 语句删除客户表中,客户编号为“10090100

20、01”的信息DELETE 客户表WHERE 客户编号=1009010001(11)、用上count函数查找出性别为女的所有员工,并统计其人数SELECT*FROM 员工表WHERE 性别=女COMPUTECOUNT(性别)(12)、用上order by 子句查找出客房类型,并按费用从高到低输出类型名称和费用SELECT 类型名称,费用FROM 类型表ORDERBY 费用DESC(13)、用上group by子句统计出男、女员工各有多少人SELECT 性别,人数=COUNT(*)FROM 员工表GROUPBY 性别(14)、使用子查询,用上all子句查找出所消费用都大于李明所消费用的所有客户信息

21、SELECT 姓名,费用FROM 客户表a,订单表b,客房表c,类型表dWHERE a.客户编号=b.客户编号AND c.客房编号=b.客房编号AND c.类型编号=d.类型编号AND 费用ALL(SELECT d.费用FROM 客户表a,订单表b,客房表c,类型表dWHERE a.客户编号=b.客户编号AND c.客房编号=b.客房编号AND c.类型编号=d.类型编号AND 姓名=李明)3、视图、索引、游标(1)、用上create view 语句创建订单视图,包括职工的姓名和订单号。createview 订单视图asselect 姓名,订单编号from 员工表,订单表where员工表.员工

22、编号=订单表.员工编号go(2)、用上create index语句创建一个唯一的非聚集索引根据员工表的姓名、出生日期列创建一个名为姓名_出生日期的索引。createuniquenonclusteredindex 姓名_出生日期on 员工表(姓名asc,出生日期desc)(3)、用上declare cursor语句创建一个游标并对该游标进行打开、读取、关闭、删除等操作。声明一个名为员工的游标,并对该游标进行打开、读取、关闭、删除。declare 员工cursordynamicforselect 姓名,工龄from 员工表where 性别=男forupdateof 姓名goopen 员工gofetchnextfrom 员工goclose 员工deallocate 员工4、存储过程、触发器、数据备份(1)、创建一个带输入参数的存储过程,并调用它。查询员工表中的员工的信息,任意输入一个员工编号,例输入:0109090101createprocedure ups_get number varchar(40)asselect*from 员工表where 员工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论