1.4.4 某高校校园卡管理E-R模型设计
某高校学生一直以来戏称自己为“有卡一族”:考试需要学生证,食堂消费需要饭卡,进出图书馆需要图书证,加上洗澡卡、洗衣卡、饮水卡、就诊卡,少了哪一张卡都不方便。为解决学生们的烦恼,提高学校信息管理水平,学校提出了“校园一张卡”信息化建设工程,其目标是将饭卡、图书证等卡合为一张校园卡,学生可通过校园卡完成校园内各种情况下的身份认证(如进出图书馆、在校医院挂号等),以及在图书馆、校医院、食堂、餐厅、超市等的小额消费业务,做到一张校园卡覆盖学生在校生活。假设让你来设计该校的校园卡管理数据库,你会怎么做?
统一的校园卡数据管理需要打破现有部门之间的壁垒,让各部门之间的数据库应用统一的数据标准。本书将以该高校的校园卡管理系统建设为背景,介绍数据库的分析与设计。
1. 系统需求分析
依据“校园一张卡”的目标,让每位学生最多持有一张校园卡,且持此卡可以在校内商户(超市、食堂、校医院、餐厅、校内循环车、自动售货机等)消费。校园卡管理系统涉及的功能主要包括以下几个。
(1)办理与注销校园卡。
新生入学后,可持学生证办理校园卡。学生毕业离校前由校园卡服务中心统一注销校园卡。
(2)交易结算。
校园卡账户不具备透支功能,必须先充值,后消费。基于校园卡账户的消费是联机实时交易,实时扣取账户余额,并在校园卡管理系统中产生相应的消费明细(包括消费金额、消费日期等信息)。当单次消费金额超过限额时(默认为30元),会要求学生本人输入密码才能完成消费。
(3)信息查询。
包括账户基本信息查询和消费信息统计等。
(4)挂失、冻结与解除挂失。
当校园卡丢失时,持卡人应及时持本人有效证件(身份证或学生证)去指定地点申请挂失。挂失后校园卡被冻结,在解除挂失之前不能使用。冻结的校园卡如果又找到了,可以通过解除挂失,恢复卡功能;如果需要办新卡,新卡沿用原卡的卡号,原卡的余额会转到新卡中。
2. 局部E-R模型设计
根据需求分析的结果,对现实世界进行数据抽象。校园卡管理系统有学生、校园卡、商户等实体。
(1)学生:学生的属性有学号、姓名、性别、学院等。
(2)校园卡:校园卡的属性有卡号、密码、余额、状态等。
(3)商户:食堂、超市、洗衣房、校医院、校内循环车等可以抽象为商户。商户的属性有编号、名称、地址等。
实体之间的联系如下。
(1)学生与校园卡之间是一对一的联系,局部E-R模型如图1-28所示。
(2)校园卡与商户之间是多对多的联系。刷卡时会生成消费日期、消费金额等属性,局部E-R模型如图1-29所示。
图1-28 学生持有校园卡的局部E-R模型
图1-29 持卡消费的局部E-R模型
3. 全局E-R模型设计
合并两个局部E-R模型,并消除冲突。持卡消费的局部E-R模型中,校园卡实体的属性“持卡人”与学生实体的属性“学号”属于异名同义,在校园卡实体中属于冗余属性,合并后应该去掉。解决上述冲突之后,我们得到全局E-R模型,如图1-30所示。
该全局E-R模型中没有冗余数据和冗余联系,符合基本E-R模型的要求。
图1-30 校园卡管理系统的全局E-R模型