原创作品,出自 “晓风残月xj” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj)。
由于各种原因,可能存在诸多不足,欢迎斧正!
1需求分析
生活在21世纪,我们每个人的日常生活免不了跟银行打交道。安全、规范、操作简单、功能齐全的银行管理系统能使业务得以顺利流畅的办理,使人们获得极好的用户体验。基于这样的背景,我的选题是银行管理系统。
日常生活中的银行管理系统很复杂,对安全性和完整性要求都很高。在此我运用数据库课上所学知识,结合自己平时的银行业务体验,认为一个合格的银行管理系统至少应该具备以下几点要素:
1.安全性,不会泄露相关信息,造成损失;
2.功能齐全,各种业务可以高效办理;
3.操作简单,可以快速上手。
为了兼备以上的要素,我认为银行管理系统至少需要4类用户的参与,他们依权限可以分为银行注册师、银行营业员(以下简称营业员)、存款用户、贷款用户。
银行注册师负责登记银行信息,主要包括银行名、所在城市、总资产等。
营业员负责开户、销户,即处理客户信息,包括用户名、所在城市、所住街道,并根据客户需求是存款还是贷款分配密码和授予权限;此外,银行员工可能因为工作需要要完成各类查询、删除等工作。银行员工是整个数据库中权限较大的用户,他能看到整个银行系统客户信息以及相关的交易记录。
贷款用户属于整个数据库的底层用户,他只能在开户后根据权限登录到相应的窗口界面完成查询与贷款。在查询工程中,为了整个数据库的安全性,他只能看到自己的信息。
存款用户也属于整个数据库的底层用户,它只能在开户后根据权限登录到相应的窗口界面完成查询与存款。在查询工程中,为了整个数据库的安全性,他也只能看到自己的信息。
2数据库(DB)设计
为了完成整个数据库银行管理系统的开发,首先要设计数据库:按用户的观点对数据和信息建模,从现实世界中抽象出概念模型。整个银行管理系统可以首先预定义几个用户,如银行注册师、营业员,因为我的整个系统主要是服务广大的客户,包括存款用户与贷款用户。整个数据库有5个在现实世界中区别于其他对象的“事物”或“物体”,称之为实体(Entity)。5个实体分别为银行(Branch)、客户(Customer)、贷款(Loan)、存款(Account)、用户(User),他们共同构成了整个银行管理系统的实体集(Entity Set)。以下是各种实体所包含的所有信息,它们描述了实体集中所有成员的特征,我们称之为实体的属性(Attribute):
Branch(Branch_Name、Branch_City、Assets);
Customer(Customer_Name,Customer_City,Customer_Street);
User(User_Name,User_Pswd,User_Type);
Loan(Loan_Number,Branch_Name,Amount);
Account(Account_Number,Branch_Name,Balance);
上面的实体彼此之间并不是孤立的,他们之间有一定的约束关系,称之为联系(Relationship)。整个数据库中的联系很多,他们中有的是一一对应的关系如一个客户只能开一个户,而开过户的登陆口令和密码只能被一个客户持有,即一个User对应一个Customer;有的是一对多,如一个客户可以办理多笔代贷款,即一个Customer对应多个Loan;有的是多对一,如多个贷款号同时被一个银行拥有,即多个Loan_Number对应一个Branch;还有的是多对多的关系,如一个客户办理多笔存款,一笔存款被多个客户拥有。上面四种联系是在银行管理系统中经常用到的,他们共同构成了整个银行管理系统的联系集(Relationship Set)。
有了实体集和联系集,就可以将整个现实世界中的银行管理系统进行2级抽象,得到机器世界即DBMS支持的数据模型(Data Model),用于数据库银行管理系统的实现。
我的整个数据库的设计是基于实体-联系模型(Entity-Relation Model)的,处理该类问题的关键是设计正确全面的E-R图。
说明:为了防止过于混乱,上述E-R省去了部分一一对应关系。
在整个数据库中,完整性是很重要的。数据库的完整性是指数据的正确性和相容性。主码的各个属性不能为空和主码值唯一;当更新、删除、插入一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确。完整性包括3个部分:实体完整性、参照完整性、用户定义完整性。以上有的表中属性是两外一个表的主码,我们称为外码参照(