组长:辛爽组员:吴欣吕鸿见李坤益王晓妍目录1数据库设计概要2系统需求分析3系统的概念设计4逻辑结构设计5数据库的建立与实施6成果展示1数据库设计概要1.1背景随着对外经济贸易大学综合体育馆的建设进行,借助本学期数据库系统的学习,我们小组决定尝试为学校综合体育馆建立一个较为完善的管理系统,学以致用的同时为学校尽绵薄之力。综合体育馆包括羽毛球馆、乒乓球馆、游泳馆等各个场馆,通过对每个场馆及器材使用情况的了解,最大程度上满足租借者对体育馆预约的需求,需要合理的数据库结构来保存、更新和查询数据信息。在此基础上,该数据库系统提供更加完善的服务,譬如:体育馆的收费管理及租借者信息管理。基本实现对综合体育馆多方面的有效管理。1.2数据库任务概述目标该数据库系统的开发致力于为包括贸大师生在内的综合体育馆用户提供便利。主要实现以下服务功能:1、体育馆场地日常租用管理。2、器材的日常租赁管理及偶尔的购买、损坏、丢失的更新管理。3、资金的管理,日常收入以及购买器材等支出。4、用户信息的分权限管理,体育馆使用记录,信用评级等。2系统需求分析(1)系统功能图(2)日常教学相关业务流程图(2)对外租借场地、器材业务流程图(3)数据流(4)数据字典编号数据结构名含义说明组成A器材1,2,3,4,5,6B场地7,8,9,10,11,12,13C用户14,15,16,17D租借记录18,19,20,21,22,23,24,25,26,27E账号28,29,301、数据结构条目2、数据项条目——器材信息部分编号数据项名数据项类型数据项长度器材信息01器材名称字符型0101XXX乒乓球拍整型0102XXX乒乓球整型02器材编号整型03器材学生价格整型04器材教师价格整型05器材会员价格整型06器材非会员价格整型2、数据项条目——场地信息场地信息07场地编号整型08场地名称字符型0801XXX乒乓球桌字符型0802XXX篮筐字符型0803XXX羽毛球场字符型0804XXX网球场字符型0805XXX排球场字符型0806XXX形体房字符型0807XXX健身房字符型09场地学生价格整型10场地教师价格整型11场地会员价格整型12场地非会员价格整型13场地租借时间时间型2、数据项条目——用户信息用户信息14用户类型整型1401XXXX学生整型1402XXXX教师整型1403XXXX会员整型1404XXXX非会员整型1501/02/03XXXX用户账号整型1601/02/03XXXX联系电话整型1701/02/03XXXX姓名字符型2、数据项条目——租借信息租借信息18租用时间时间型1901/02/03XXXX租用价格类型(对应用户编号)整型20租用记录字符型21租用交易编号整型22租用物编号整型23租用物数量整型24租用开始时间时间型25租用结束时间时间型26租用成交价格整型27器材租借时间时间型2、数据项条目——账号信息账号信息28用户账号整型29账号余额整型30账号信用度字符型3系统的概念设计系统各功能模块设计(1)管理员管理系统局部视图(2)用户系统局部视图(3)馆长系统局部视图(4)整体E—R图整体E—R图4逻辑结构设计将E-R图向关系模型转换:场地(场地编号,场地名称,会员价格,非会员价格)器材(器材编号,器材名称,总数量,剩余数量,会员价格,非会员价格)用户(用户编号,用户姓名,用户身份,余额)已借出场地(场地编号,场地名称,租借起始时间,租借终止时间,状态)已借出器材(器材编号,器材名称,租借起始时间,租借终止时间)用户租借场地(场地编号,场地名称,用户编号,用户姓名,租借费用,租借起始时间,租借终⽌止时间,租借总时长,订单编号,备注)用户租借器材(器材编号,器材名称,用户编号,用户姓名,租借个数,租借费用,租借起始时间,租借终止时间,租借总时长,订单编号,备注)5数据库的建立与实施5.1建立数据库、表5.2数据输入5.3数据查询5.4触发器5.5存储过程5.1建立数据库、表——建库USEmasterIFEXISTS(SELECTnameFROMmaster.dbo.sysdatabasesWHEREname='GYM')DROPDATABASE[GYM]GOcreatedatabaseGYMonprimary(name='GYM_data',filename='e:\lxl\db\GYM_Data.MDF',size=5mb,filegrowth=10%)logon(name='GYM_log',filename='e:\lxl\db\GYM_Log.LDF',size=5mb,filegrowth=10%);5.1建立数据库、表——建表createtableAREA(ANOCHAR(8)PRIMARYKEY,ANAMECHAR(10),ARENTMEMBERfloat,ARENTNONMEMBERfloat);CREATETABLEUSERS(UNOCHAR(8)PRIMARYKEY,UNAMECHAR(6),UIDENTITYCHAR(6),UREMAINfloat);CREATETABLELIMIT(LNOCHAR(8)PRIMARYKEY,LIDENTITYCHAR(6),LDETAILCHAR(10));CREATETABLERESERVATION1(RANOCHAR(8),rnamechar(10),RTIMESTARTdatetime,RTIMEENDdatetime,rconditionchar(8),primarykey(rano,rtimestart),foreignkey(rano)referencesarea(ano));createtablereservation2(renochar(8),rnamechar(12),rtimestartdatetime,rtimeenddatetime,primarykey(reno,rtimestart),foreignkey(reno)referencesequipment(eno));5.1建立数据库、表——建表(续)CREATETABLELEASE1(ANOCHAR(8),Anamechar(10),UNOCHAR(8),unamechar(12),FEEfloat,LTIMESTARTdatetime,LTIMEENDdatetime,LTIMESMALLINT,LREMARKCHAR(10)primarykey(ANO,UNO,LTIMESTART),foreignkey(ANO)referencesAREA(ANO),foreignkey(UNO)referencesUSERS(UNO));CREATETABLELEASE2(ENOCHAR(8),enamechar(12),UNOCHAR(8),nnamechar(10),numbersmallint,FEEfloat,LTIMESTARTdatetime,LTIMEENDdatetime,LTIMESMALLINT,LREMARKCHAR(10)primarykey(ENO,UNO,LTIMESTART),foreignkey(ENO)referencesEQUIPMENT(ENO),foreignkey(UNO)referencesUSERS(UNO));5.2数据输入举例:INSERTAREAVALUES('01010001','篮球场',10,50)INSERTUSERSVALUES('02010003','吕鸿见','会员',1200)INSERTEQUIPMENTVALUES('03010001','篮球',2,5,30,30)--这些数据是开学前预置好的,是供上课使用的场地,状态是“不可用”--如果是用户借用的场地,则rcondtion显示的是空值(NULL)insertreservation1values('01010001','篮球场','13-05-018:00:00','13-05-0110:00:00','不可用')--这些是用户预定的场地insertlease1values('01010001','篮球场','02010001','辛爽',20,'13-05-0514:00:00','13-05-0516:00:00',2,'无')--这些是用户现场借⽤用器材的记录insertlease2values('03010001','篮球','02010002','吴欣',15,150,'13-05-028:00:00','13-05-0210:00:00',2,'无')5.3数据查询--在reservation1表中查找“篮球场”在“-05-019:00:00”和“-05-0111:00:00”是否可借用select*fromreservation1wherername='篮球场'andrtimeendbetween'13-05-019:01:00'and'13-05-0111:00:00'orrtimestartbetween'13-05-019:01:00'and'13-05-0111:00:00';--在LEASE1表中查找各个场地的收入情况selectaname,sum(fee)各项收⼊入fromlease1groupbyaname;5.3数据查询--在LEASE1表中查找“13-05-058:00:00和13-05-0712:00:00之间的收入情况selectsum(fee)收入fromlease1whereltimestartbetween'13-05-058:00:00'and'13-05-0712:00:00';--在LEASE1表中查找总收入情况selectsum(fee)总收入fromlease1;--在EQUIPMENT表中查找器材剩余数量selectename,rnumberfromequipmentwhereename='羽毛球'5.3数据查询--当用户来归还羽⽑球时,把EQUIPMENT表中rnumber改成35updateequipmentsetrnumber=35whereename='羽毛球'--在LEASE2中查找各项收入情况,与LEASE1类似selectename,sum(fee)各项收入fromlease2groupbyename;selectsum(fee)收入fromlease2whereltimestartbetween'13-05-028:00:00'and'13-05-0312:00:00';selectsum(fee)总收入fromlease2;5.4触发器5.4.1租借场地建立在“租借场地“上,功能实现:当用户借用场地后(即在LEASE1插入⼀条记录时),自动在USERS表中该⽤用户的账户上扣除相应的金额createtriggerUPDATE_USERSONLEASE1afterinsertasupdateusersseturemain=uremain-inserted.feefromusers,insertedwhereusers.uname=inserted.uname;5.4.2场地管理建立在“场地及器材管理”上,功能实现:当用户借用场地后(即在LEASE1中插入一条记录时),相应的在reservation1中插入该条记录,--该条记录在reservation1中rcondtion属性是空值(NULL)createtriggerINSERT_reservation1ONLEASE1forinsertasbegininsertintoreservation1(rano,rname,rtimestart,rtimeend)selectinserted.ano,inserted.aname,inserted.ltimestart,inserted.ltimeendfrominsertedend;5.4.3器材管理建立在“场地及器材管理”上,功能实现:当用户在现场借用器材后,在reservation2中插入该条记录createtrigger