关系型数据库设计——银行业务管理系统

article/2025/4/21 10:52:09

一 需求描述

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

二 E/R图实体、属性和联系确定

 

 

经分析可知实体及其属性如表一所示,说明如下:

1、  总共包含8个实体

2、  支付为弱实体,依赖于强实体贷款。

3、储蓄账户实体和支票账户实体继承于账户实体

实体及属性基本信息表如下:

序号

名称

基本属性

1

支行

名字、城市、资产

2

贷款

贷款号、金额

3

支付

时间、金额

4

员工

身份证号、姓名、电话、地址

5

客户

身份证号、姓名、街道、城市

6

账户

账户号、余额

7

储蓄账户

利率

8

支票账户

透支额

 

E/R图联系确定

 

 

序号

相关实体

联系

联系属性

1

支行:贷款

1:n

2

支行:员工

1:n

开始工作时间

3

支行:账户

1:n

4

贷款:支付

1:n

5

贷款:客户

m:n

6

员工:客户

m:n

身份

7

账户:客户

m:n

最近访问时间

8

账户: 储蓄账户

继承

9

账户: 支票账户

继承

三 用Visio绘制E/R草图

 

 

四 用powerdesigner绘制E/R图

 

 

 

五 将逻辑模型导出为物理模型

 

 

 

五 将物理模型生成SQL脚本

 

 

/*==============================================================*/
/* Table: account                                               */
/*==============================================================*/
create table account (account_id           varchar(20)          not null,branch_name          varchar(50)          not null,account_balance      money                null,constraint PK_ACCOUNT primary key nonclustered (account_id)
)
go/*==============================================================*/
/* Index: open_FK                                               */
/*==============================================================*/
create index open_FK on account (
branch_name ASC
)
go/*==============================================================*/
/* Table: branch                                                */
/*==============================================================*/
create table branch (branch_name          varchar(50)          not null,branch_city          varchar(50)          null,branch_assets        money                null,constraint PK_BRANCH primary key nonclustered (branch_name)
)
go/*==============================================================*/
/* Table: checkAccount                                          */
/*==============================================================*/
create table checkAccount (account_id           varchar(20)          not null,branch_name          varchar(50)          null,account_balance      money                null,overdraft            money                null,constraint PK_CHECKACCOUNT primary key (account_id)
)
go/*==============================================================*/
/* Table: custom                                                */
/*==============================================================*/
create table custom (custom_id            char(18)             not null,loan_id              varchar(20)          null,custom_name          varchar(20)          null,custom_street        varchar(50)          null,custom_city          varchar(50)          null,constraint PK_CUSTOM primary key nonclustered (custom_id)
)
go/*==============================================================*/
/* Index: apply_FK                                              */
/*==============================================================*/
create index apply_FK on custom (
loan_id ASC
)
go/*==============================================================*/
/* Table: have                                                  */
/*==============================================================*/
create table have (account_id           varchar(20)          not null,custom_id            char(18)             not null,recent_time          datetime             null,constraint PK_HAVE primary key (account_id, custom_id)
)
go/*==============================================================*/
/* Index: have_FK                                               */
/*==============================================================*/
create index have_FK on have (
account_id ASC
)
go/*==============================================================*/
/* Index: have2_FK                                              */
/*==============================================================*/
create index have2_FK on have (
custom_id ASC
)
go/*==============================================================*/
/* Table: loan                                                  */
/*==============================================================*/
create table loan (loan_id              varchar(20)          not null,branch_name          varchar(50)          not null,loan_sum             money                null,constraint PK_LOAN primary key nonclustered (loan_id)
)
go/*==============================================================*/
/* Index: grant_FK                                              */
/*==============================================================*/
create index grant_FK on loan (
branch_name ASC
)
go/*==============================================================*/
/* Table: payment                                               */
/*==============================================================*/
create table payment (loan_id              varchar(20)          not null,pay_time             datetime             not null,pay_sum              money                null,constraint PK_PAYMENT primary key nonclustered (loan_id, pay_time)
)
go/*==============================================================*/
/* Index: "loan-pay_FK"                                         */
/*==============================================================*/
create index "loan-pay_FK" on payment (
loan_id ASC
)
go/*==============================================================*/
/* Table: responsible                                           */
/*==============================================================*/
create table responsible (staff_id             char(18)             not null,custom_id            char(18)             not null,"identity"           "identity"           null,constraint PK_RESPONSIBLE primary key (staff_id, custom_id)
)
go/*==============================================================*/
/* Index: responsible_FK                                        */
/*==============================================================*/
create index responsible_FK on responsible (
staff_id ASC
)
go/*==============================================================*/
/* Index: responsible2_FK                                       */
/*==============================================================*/
create index responsible2_FK on responsible (
custom_id ASC
)
go/*==============================================================*/
/* Table: savingAccount                                         */
/*==============================================================*/
create table savingAccount (account_id           varchar(20)          not null,branch_name          varchar(50)          null,account_balance      money                null,rate                 decimal(8,3)         null,constraint PK_SAVINGACCOUNT primary key (account_id)
)
go/*==============================================================*/
/* Table: staff                                                 */
/*==============================================================*/
create table staff (staff_id             char(18)             not null,sta_staff_id         char(18)             null,branch_name          varchar(50)          not null,staff_name           varchar(20)          null,staff_tel            varchar(20)          null,staff_addr           varchar(50)          null,start_time           datetime             null,constraint PK_STAFF primary key nonclustered (staff_id)
)
go/*==============================================================*/
/* Index: work_FK                                               */
/*==============================================================*/
create index work_FK on staff (
branch_name ASC
)
go/*==============================================================*/
/* Index: lead_FK                                               */
/*==============================================================*/
create index lead_FK on staff (
sta_staff_id ASC
)
goalter table accountadd constraint FK_ACCOUNT_OPEN_BRANCH foreign key (branch_name)references branch (branch_name)
goalter table checkAccountadd constraint FK_CHECKACC_CAINHERIT_ACCOUNT foreign key (account_id)references account (account_id)
goalter table customadd constraint FK_CUSTOM_APPLY_LOAN foreign key (loan_id)references loan (loan_id)
goalter table haveadd constraint FK_HAVE_HAVE_ACCOUNT foreign key (account_id)references account (account_id)
goalter table haveadd constraint FK_HAVE_HAVE2_CUSTOM foreign key (custom_id)references custom (custom_id)
goalter table loanadd constraint FK_LOAN_GRANT_BRANCH foreign key (branch_name)references branch (branch_name)
goalter table paymentadd constraint "FK_PAYMENT_LOAN-PAY_LOAN" foreign key (loan_id)references loan (loan_id)
goalter table responsibleadd constraint FK_RESPONSI_RESPONSIB_STAFF foreign key (staff_id)references staff (staff_id)
goalter table responsibleadd constraint FK_RESPONSI_RESPONSIB_CUSTOM foreign key (custom_id)references custom (custom_id)
goalter table savingAccountadd constraint FK_SAVINGAC_SAINERITA_ACCOUNT foreign key (account_id)references account (account_id)
goalter table staffadd constraint FK_STAFF_LEAD_STAFF foreign key (sta_staff_id)references staff (staff_id)
goalter table staffadd constraint FK_STAFF_WORK_BRANCH foreign key (branch_name)references branch (branch_name)
go
 

 


http://chatgpt.dhexx.cn/article/Z0afZ8LV.shtml

相关文章

银行业务模拟系统的设计与实现(C语言)

实验目的 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行 由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲&#…

银行业务系统

第一 需求分析 一、需求: 模拟实现银行业务调度系统逻辑,具体需求如下: 1、银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 2、有三种对应类型的客户:VIP客…

基于C++实现银行业务系统

1. 分析 1.1 背景分析 银行业务系统的设计师银行不可缺少的部分之一。既是银行为顾客提供优良服务的承载着,又是银行能高效处理业务的秘诀,所以一个良好的银行业务系统应能按照每个窗口的业务员的处理能力相应调整业务处理的顺序。 随着银行业主数量和…

创意人像海报故障艺术海报教程故障艺术海报怎么做

制作之前我们可以参考一下真实的电视故障效果,然后通过PS功能来实现。首先要分析一下图片合适不合适,图片太小会不会看不出来效果等各种问题。类似这种效果最好上半身人像为好,这样做出来的效果会更加的明显。文章来源:http://www…

海报设计PSD模板——抖音Glitch故障艺术风格

作为新的艺术形式,它其实来源于我们生活中一个十分恼人的情景——数据和数字设备的故障。 矢量ai几何抽象故障风banner 矢量ai几何抽象故障风banner 画面出现异常、失真、变形、破碎等混乱情况,导致我们观看的欲望也没有了……但艺术家们却从这些偶然产…

Spring Cloud 极简入门

专栏亮点 优势 内容通俗易懂,更适合初学者。重实操性,专栏包含一个完整的项目实战,通过开发项目掌握技术的实际应用。案例理论结合,专栏以实际案例为主,更有利于上手应用。 专栏特色 从零讲起,轻松入门…

汪昭然:构建“元宇宙”和理论基础,让深度强化学习从虚拟走进现实

作者 | 陈彩娴 深度强化学习的故事,可以追溯到2015年: 当时,位于英国伦敦的一家小公司 DeepMind 在《Nature》上发表了一篇文章“Human-level control through deep reinforcement learning”,提出了一种新算法叫 Deep Q-Networ…

Hey AI,请写一首披头士风格的歌给我

编译 | 张震; Nurhachu Null; 王宇欣 作者 | Ben Dickson 来源 | pcmag 五月末,在东伦敦 Stepney 区的 St. Dunstan 教堂聚集了一小群人,他们一起欣赏了两个小时的爱尔兰传统音乐。不过,与以往的音乐会不同的是,部分音乐的作曲…

Oracle 18c体系架构图创作之路 - 设计者说(精品海报大放送)

编辑说明:在刚刚落幕的第八届数据技术嘉年华大会现场,我们正式发布了『Oracle 18c体系架构图』,应广大网友的呼吁,特别向不能到场的朋友放送。 (回顾嘉年华:云数据库时代:企业数据架构的云化智能…

自学 Photoshop 2022 Mac版-笔记1

最近开始系统学习 photoshop。 非设计专业,工作跟设计部门接触过,最近想自己也能上手操作一些修图做图的操作,想看看学习多久能达到熟练的水平。 我用的是 PS 2022 Mac 版。 用输出倒逼自己输入,写笔记是个好方法啊&#xff01…

PS动作一键设计数字科技未来海报效果

动作支持CS4以版本软件,动作还是到陌鱼社区下载“人工智能故障风科技海报效果PS动作合集”有3个效果,下面我们来演示一个,其它使用方法相同。 01、打开软件,载入画笔、图案、动作,关闭软件。 02、把软件切换成英文,回顾一下之前教程“怎么把P…

我竟然在CSDN玩游戏??,教你利用github page在CSDN主页放置小游戏

好耶!又多了一种摸鱼新方式 大家在网页端看我的主页或者博客时,会发现左侧多了一个小游戏hiahiahia: 这主要是通过github page创建了小游戏页面,并且通过iframe嵌入到html里实现的,大佬看到这应该已经会了,…

磨金石教育设计干货分享|20个海报设计小技巧,果断打包带走

我们做海报设计的时候,经常会在图文排版上花上很长的时间来构思,要让主题突出、要画面有活力、视觉冲击力要强、要给观者留下深刻的印象......那么今天小编就来分享20种海报设计的思路,让你在设计中思路清晰,努力不白费。 文字分…

用代码生成Glitch Art风格的抖音字体

最近看到不少文章教大家用 photoshop 实现抖音的 logo 跟字体,我也非常喜欢这种风格的字体,于是趁着晚上的时间,动手用代码实现了下此类风格的字体特效,顺便开发了个小工具,地址见文末。本文主要是从 艺术手法 和 JS …

mfc对话框ok没效果_利用PS制作逼真双重曝光效果案例演示,合成紫色城市建筑风格海报图片...

PS合成得好,那场景海报图制作就轻松了,我们通常在欣赏案例作品是发现不少大气的城市建筑风格的海报图片,是怎么样制作合成的呢,今天我们来分享PS制作逼真双重曝光效果的海报教程。摄影时,利用多重曝光,可以…

设计干货模板|孟菲斯风格促销海报让作品艺术加分!

对于孟菲斯,或许你不知道这专业词是什么意思。当你看到下面的图,是不是感觉有点似曾相识。 复古又新潮的设计! 为什么叫“孟菲斯”?据说,设计师Ettore Sottsass与一群年轻设计师在家里的公寓聚会,当时播放…

怎么做抖音故障艺术风格人物照片效果

今天我们就用陌鱼社区“80年代复古故障抖音海报效果PS动作”,简单快速制作出复古故障艺术风格人物照片海报效果,只要按这个步骤来就可以制作出如图效果,下面是这个动作制作的一些效果: 01、载入笔刷、图案、动作具体方法可参考下图,全部载入之后关闭软件。 02、把软…

如何用ps做故障艺术风格效果

今天这个教程主要是用PS动作来做的,能给我们在工作上面带来很大的方便,特别是突然做故障艺术风格海报的人来说,这个还是非常有用滴,至于动作怎么找,可以搜“赛博故障风格海报艺术效果PS动作”。 01、还是老样子&#x…

AE教程丨1分钟学会制作信号故障风特效

信号故障风近几年还是很流行的,如何让自己的设计里也能有一些信号故障风的风格呢?今天的教程就来帮助大家学习AE制作故障风视频。 AE制作信号故障风视频效果教程 1.在绘图工具内制作相应的文字海报并导入到AE; 2.新建纯色图层做抖动效果&…

JAVA线上故障排查全套路

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连&#x…