3、IDChar(4)房间号码(主键)否2RoomTypeNameVarchar(20)客房类型是3RoomPositionVarchar(20)房间楼层是4BedNumSmallInt额定床数是5PeopleNumSmallInt额定人数是6FactPeopleNumSmallInt实际人数是7RemarkVarchar(50)备注是下面是客户表,用于记录客户信息。客户表(Client)编号字段名称数据结构说明是否允许空值默认值1ClientIDChar(18)客户身份证号(主键)否2ClientNameVarchar(20)姓名是3SexVarchar(2)性别是4NativePlaceVar
4、char(50)籍贯是下面是客户入住表,用于记录客户入住信息。客户入住表(ClientBookIn)编号字段名称数据结构说明是否允许空值默认值1ClientIDChar(18)客户身份证号(主键)否2RoomIDChar(4)房间号码(主键)否3BookInDateDateTime入住日期(主键)否4CheckDateDateTime结算日期是5TotalMoneyMoney结算金额是06RemarkVarchar(50)备注是在建立完所有数据表之后,还要根据E-R图创建表间的关系。表间关系如下ClientBookIn表和Client表之间的关系:FK_ClientBookIn_ClientC
5、lientBookIn表和Room表之间的关系:FK_ClientBookIn_RoomRoom表和RoomType表之间的关系:FK_Room_RoomTypeClientBookIn$ClientIDRuomlDBaoklrill注teCheckliaTat:ilFiluneyRemarknos-FKClientBooklnRoomRoomno_电FKRoomRoumTTeRuurnlDRuumTj.ri|elT:diTieRuumFitiunBeiliburiFeuplhITijitiFa:tFeoplelbiiTiRem:fkRooiTypeFhurLHAirCurLilitionTo
7、ntID,dbo.ClientBookIn.RoomID,dbo.ClientBookIn.BookInDate,dbo.ClientBookIn.CheckDate,dbo.ClientBookIn.TotalMoney,dbo.Room.RoomTypeName,dbo.RoomType.PriceFROMdbo.ClientINNERJOINdbo.ClientBookInONdbo.Client.ClientID=dbo.ClientBookIn.ClientIDINNERJOINdbo.RoomONdbo.ClientBookIn.RoomID=dbo.Room.RoomIDINNE
8、RJOINdbo.RoomTypeONdbo.Room.RoomTypeName=dbo.RoomType.RoomTypeName(4)设计存储过程根据数据操作需要,需要创建4个存储过程:StoredProcedureAddClient存储过程该存储过程负责在客户入住时,对相应的客房实际人数增加1该存储过程代码如下:CREATEPROCEDUREdbo.StoredProcedureAddClient(RoomIDchar(4)ASUpdateRoomSetFactPeopleNum=FactPeopleNum+1WhereRoomID=RoomIDGOStoredProcedureMinu
9、sClient存储过程该存储过程负责在客户结算时,对相应的客房实际人数减少1。该存储过程代码如下:CREATEPROCEDUREdbo.StoredProcedureMinusClient(RoomIDchar(4)ASUpdateRoomSetFactPeopleNum=FactPeopleNum-1WhereRoomID=RoomIDRETURNGOStoredProcedureClientBookIn存储过程该存储过程负责在客户入住时,判断该客户是否存在,如不存在,则向客户表中添加该客户信息,同时向客户入住表中添加该客户的入住信息,并将客房表中相应的客房实际人数增加1。该存储过程代码如下
10、:createproceduredbo.StoredProcedureClientBookIn(RoomIDchar(4),ClientIDchar(18),ClientNamevarchar(20),Sexvarchar(2),NativePlacevarchar(50),BookInDatedatetime,Remarkvarchar(50)asselectCount=count(*)fromClientwhereClientID=ClientIDifCount=0begininsertintoClientvalues(ClientID,ClientName,Sex,NativePlace
11、)endinsertintoClientBookIn(ClientID,RoomID,BookInDate,Remark)values(ClientID,RoomID,BookInDate,Remark)updateRoomSetFactPeopleNum=FactPeopleNum+1WhereRoomID=RoomIDgoStoredProcedureClientCheck存储过程该存储过程负责在客户结算时,更新客户入住表中该客户的结算日期和结算金额,并将客房表中相应的客房实际人数减少1。该存储过程代码如下:1、结算日期由客户端(前端应用程序)传入createproceduredbo.St