当前位置: 首页 > news >正文

数据库系统设计_银行业务管理系统

[实验要求]

根据下面的需求描述,使用Sybase Power Designer设计相应的数据库概念模型,并转换成Oracle或MS SQL Server上的物理数据库结构。

[背景需求]

某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:

银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。 银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。 银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名电话号码家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。 银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。 每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期金额

[需求分析]

1、实体的确定:

a.从背景需求中首先可以大致确定几大实体,包括:支行、客户、员工、账户、贷款。因为这些对象都有明显的若干属性,故可以将它们设计为实体。

b.接着让我们分析某些不太确定的对象。

首先是经理,我们的问题是是否将经理设置为单独的实体,从给出的需求来看,经理是员工的一种,但是没有特殊的属性来标识,且每个员工需要一个经理的身份证号,由此看来,我们不需要将经理设置为单独的实体,只需要给“员工”实体一个一对多、指向自己的“经理”联系即可,这样在生成物理模型的时候自动将经理的身份证号添加到“员工”属性中(当然经理的此属性是自己的身份证号)。

接着是“储蓄账户”和“支票账户”,从需求描述来看,这两个对象都有各自的属性:利率和透支额。且它们是“账户”的子集,所以,自然将这两个对象设置为实体,并且继承“账户”。

最后是逐次支付情况,贷款的支付不是一次性的,而“贷款”的主键贷款号无法标识逐次支付情况,如果将每次支付的日期和金额设计为“贷款”的属性,那么相对“贷款”的其他属性来说会产生冗余,造成空间的浪费,故我们将“支付情况”设计为一个单独的实体。由于“支付情况”这个实体对“贷款”产生依赖,所以必须将“支付情况”设计成若实体。

2、联系的确定:

a.根据需求,首先确定几个明显的联系:

l 支行:账户  (1 :N)————开户

l 支行:贷款  (1 :N)————发放

l 贷款:客户  (1 :N)————拥有

l 员工:员工  (1 :N)————经理

b.两个扩展的联系:

l 存储账户/支票账户:账户   ————继承

l 贷款:支付情况  (1 :N)————逐次支付(依赖)

c. 有属性的联系:

假设一个员工只能在一个支行工作,则员工的开始工作日期是在和支行发生联系的时候产生的,故将其设置为联系的属性:

l 支行:员工  (1 :N,开始工作日期)————工作

同样,员工可能是某客户的账户负责人或贷款负责人,故在员工和客户发生联系的时候必须标明负责人的类型:

l 客户:员工  (M :N,负责人类型)  ————负责

账户中需要标明账户所有者最近访问的日期,该日期是账户所有者(即客户)和账户发生访问联系的时候产生的,故将其设计为联系的属性:

l 客户:账户  (M :N,最近访问日期)————拥有

[概念模型设计&物理模型生成]

1、根据需求分析设计概念模型CDM(基于PowerDesign):

 

1、使用PowerDesign根据设计好的概念模型CDM生成物理模型PDM:

a.选择工具(tool)-->生成物理模型(Generate Physical Data Model)

b.根据主机上安装的DBMS,在PDM Generation Option中选择相应的数据库管理系统(DBMS):

c.生成的物理模型PDM

 

 

[物理数据库的生成]

1、使用powerdesign把生成的物理模型PDM自动转换成数据库文件(bank.sql):

wps_clip_image-426

 

1、打开本机安装的数据库管理系统(DBMS,我的是MS server 2008),新建一个数据库bank:

 

b.新数据库的名字为bank;

 

c.可以看到新建的数据库中除了系统自带的表之外没有其他表;

 

1、将bank.sql文件导入到数据库中:

a.打开文件(bank.sql):

 

 

b.选择要导入的数据库,执行!

 

c.检查一下bank数据库中是否有导入的表(先刷新一下);

 

  OK,导入成功!

转载于:https://www.cnblogs.com/big-xuyue/p/3386396.html

相关文章:

  • 云桌面、云课堂究竟是什么?企业追捧是坑还是福?
  • 对hibernate框架的认知及总结
  • 三个常用的PHP图表类库
  • 在android源码中单独编译modkoid工程遇见的问题
  • Hanlp中使用纯JAVA实现CRF分词
  • kotlin使用spring mvc(三)
  • 在Ubuntu 11.04中安装Openresty
  • Nginx 部署HTTPS
  • 浅谈IP地址-1
  • Rafy 领域实体框架演示(2) - 新功能展示
  • 高程读书笔记 第六章 面向对象程序设计
  • oracle常用操作语句
  • 搞定面试官
  • 使用WPF实现3D场景[一]
  • 初识MongoDB
  • C# 免费离线人脸识别 2.0 Demo
  • es6要点
  • interface和setter,getter
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript服务器推送技术之 WebSocket
  • LeetCode算法系列_0891_子序列宽度之和
  • SpingCloudBus整合RabbitMQ
  • unity如何实现一个固定宽度的orthagraphic相机
  • windows-nginx-https-本地配置
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从setTimeout-setInterval看JS线程
  • 对象管理器(defineProperty)学习笔记
  • 前端js -- this指向总结。
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 山寨一个 Promise
  • ​queue --- 一个同步的队列类​
  • # 飞书APP集成平台-数字化落地
  • #include到底该写在哪
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (3)STL算法之搜索
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)linux下的时间函数使用
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Framework .NET Core与 .NET 的区别
  • .Net 知识杂记
  • .NET 中 GetProcess 相关方法的性能
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @JoinTable会自动删除关联表的数据
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [14]内置对象
  • [20140403]查询是否产生日志
  • [2016.7 day.5] T2
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [acm算法学习] 后缀数组SA