实验1: 数据建模与分析实验(I01)
一、实验名称和性质
所属课程 | 信息系统分析与设计 |
实验名称 | 数据建模与分析实验 |
实验学时 | 2 |
实验性质 | □验证 □综合 √设计 |
必做/选做 | √必做 □选做 |
二、实验目的
1.掌握E-R模型的绘制方法。
2.能将E-R模型转换为关系模型,并在关系模型中实现表间关联。
3.根据需求描述,利用Visio进行E-R模型的构建。
三、实验的软硬件环境要求
硬件环境要求:
本实验需要为每个学生提供一台个人计算机。
使用的软件名称、版本号以及模块:
本实验需要配备的软件包括:Visio 2003。
四、知识准备
前期要求掌握的知识:
数据库设计的概要设计阶段中,设计人员要从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模型,然后再把概念模型转换成逻辑模型。
实验相关理论或原理:
设计E—R图步骤:
1.对现实世界进行需求分析
包括了解组织机构情况,为分析信息流做准备;了解各部门业务情况,调查各部门输入和使用的数据及处理数据的方法与算法;确定数据库的信息组成及计算机系统应实现的功能。
2.设计局部E-R图。
基于实体集、联系、多重性、关联实体等概念,进行局部E-R图的构建。
3.合并局部E-R图
将局部E-R图合并成全局E-R图,合并时要注意消除冲突、消除冗余。
4.从E-R图导出计算机世界的关系数据模型。
其中每个实体转换为一个关系,E-R图中的联系,则根据多重性进行不同转换。
五、实验内容
1.按验证性实验的具体要求逐步完成指定题目,观察并记录实验的结果。
2.按具体要求完成设计性实验的题目,设计结果记录在实验报告上。
六、验证性实验
1.实验要求
某银行储蓄业务包括各种币种储蓄的本金和利息的相关业务。所有储蓄业务都通过银行折子或一卡通进行操作,银行折子和一卡通之间是关联账户,而储蓄又有多种类型:整存整取存款,零存整取存款,活期储蓄存款,定活两便存款。通过储蓄业务系统,银行客户可以方便的进行开户、销户、补办、挂失、解挂、修改密码、存款、取款、转账等操作。
请为该系统设计E-R图,并将其转换为关系模型。
2.实验步骤
(1)在Visio中绘制具体的E—R模型如图1示:
图1 银行储蓄业务管理信息系统的ER图
其中关键步骤提示如下:
步骤一:在“文件”菜单上,选择“新建”,选择“数据库”,选择“数据库模型图”;
步骤二:将绘图页的缩放比例调整为100%。
步骤三:将“实体关系”工具栏中的“实体”拖到绘图页,并在“数据库属性”对话框中输入相关信息,其中tbCards的基本信息图2所示。
图2 数据库属性录入界面
步骤四:将“实体关系”工具栏中的“关系”拖到绘图页,并使其箭头指向一对多中一的一方。
步骤五:单击建立好的关系,在打开的“数据库属性”页中选择已建好的联系的对应属性,选择“断开连接”则取消原有连接(如图3所示),选择两表中的对应属性,点击“关联”,可建立新的关系。
图3 关系的数据库属性窗口
(2)E-R模型转换为关系模型
经过转换得到7个关系:
tbCustomers(custIdCardNo,custName,custAddress,custPhone,custNo)
tbCards(cardNo,cardIdCardNo_custIdCardNo,cardBusinessNo,cardPassword,cardLoss,cardLossDate,cardBalance)
tbDeposit(depoFlowNo,depoCardNo_cardNo,depoOperateDate,depoMaturity,depoFromCardNo_cardNo,Depo Money)
tbFetch(fetFlowNo,fetCardNo_cardNo,fetOperateDate,fetToCardNo_cardNo,fetchMoney,receiptFlowNo)
tbOperators(optAccount,optName,optPassword,optWorkNo)
tbFeeAgent(fagKind,fagName,fagCardNo_cardNo)
tbDepositAgent(dpaflowNo,dpaKind_fagKind,dpaOperateDate,dpaCardNo_cardNo,dpaCustomerNo,dpaMoney)
(3)数据字典设计
A.表名
各表表名及说明如表1所示:
表1 银行储蓄业务管理信息系统各表表名及说明
表名 | 功能说明 |
tbCustomers | 客户信息表,记录客户的基本信息及对应的卡信息 |
tbCards | 子帐号信息表,记录客户的各子卡信息 |
tbDesposit | 存款明细表,记录客户存款信息 |
tbFetch | 取款明细表,记录客户取款信息 |
tbOperators | 操作员信息表,记录操作员的操作帐号及基本信息等 |
tbDepositAgent | 代缴费用明细表,记录代缴费用的信息明细 |
TbFeeAgent | 代缴费用单位信息表,记录代缴费用单位及对应卡号 |
B.表结构
表tbCustomers的结构如表2所示:
表2 tbCustomers的表结构
表名 | tbCustomers(客户信息表,简写cust) | ||
列名 | 数据类型(精度范围) | 空/非空 | 约束条件 |
custIdCardNo | Char(18) | 非空 | 主键,15位或者18位,末位可以是数字或字母,其他位必须是数字 |
custName | Varchar(20) | 非空 |
|
custAddress | Varchar(20) |
|
|
custPhone | Varchar(20) |
|
|
custNo | char | 非空 | 自动生成 |
补充说明 |
|
表tbCards的结构如表3所示:
表3 tbCards的表结构
表名 | tbCards(子帐号信息表,简写card) | |||
列名 | 数据类型(精度范围) | 空/非空 | 约束条件 | |
cardNo | Char(5) | 非空 | 主键,10位根据银行卡输入 | |
cardIdCardNo | Char(10) | 非空 | 外健(tbCustomers(custIdCardNo)) | |
cardBusinessNo | Char(2) | 非空 | 第1位表示币种,第2位表示储蓄种类, | |
cardPassword | Char(6) | 非空 |
| |
cardOpenDate | date | 非空 | 开户当前时间 | |
cardLoss | bool | 非空 | 挂失状态有:0-正常、1-挂失 | |
cardLossDate | Date | 非空 | 当前系统时间 | |
cardBalance | Decimal(10,2) |
|
| |
补充说明 | 销户则将记录从表中删除,将该记录插入到tbCardsHistory表中去。 | |||
表tbDeposit的结构如表4所示:
表4 tbDeposit的表结构
表名 | tbDeposit(存款明细表,简写depo) | ||
列名 | 数据类型(精度范围) | 空/非空 | 约束条件 |
depoFlowNo | Char(15) | 非空 | 主键,前8位为日期,后7位顺序生成 |
depoCardNo_cardNo | char(10) | 非空 | 外键(tbCards(cardNo)) |
depoOperateDate | date | 非空 | 操作当前日期,自动生成 |
depoMaturity | Varchar(10) |
|
|
DepoOperatorNo_ optAccount | Char(10) | 非空 | 外键(tbOperators(optNo)) |
depoFromCardNo_cardNo | Char(10) |
| 外键(tbCards(cardNo)) |
DepoMoney | Decimal(10,2) | 非空 |
|
补充说明 | 币种中用用数字表示:1-人民币,2-美元,3-港元,4-日元,5-欧元; 储蓄种类用数字表示:1-活期,2-整存整取,3—零存整取,4-定活两便 depoMaturity用于存放定期等存款业务的存期说明 |
表tbFetch的结构如表5所示:
表5 tbFetch的表结构
表名 | tbFetch(取款明细表,简写fet) | ||
列名 | 数据类型(精度范围) | 空/非空 | 约束条件 |
fetFlowNo | Char(15) | 非空 | 主键,前8位为日期,后7位顺序生成 |
fetCardNo_cardNo | Char(10) | 非空 | 外键(tbCards(cardNo)) |
fetOperateDate | date | 非空 | 操作当前日期,自动生成 |
fetToCardNo_cardNo | Char(10) |
| 外键(tbCards(cardNo)) |
DepoOperatorNo_ optAccount | char(10) | 非空 | 外键(tbOperators(optNo)) |
fetchMoney | Decimal(10,2) | 非空 |
|
fetReceiptFlowNo_depoFlowNo | Varchar(50) |
| 外键(tbDeposit(flowNO)) |
补充说明 | receiptFlowNo对于定期取款、零存争取等操作原存单流水号;
|
表tbOperators的结构如表6所示:
表6 tbOperators的表结构
表名 | tbOperators(操作员信息表,简写opt) | ||
列名 | 数据类型(精度范围) | 空/非空 | 约束条件 |
optAccount | Varchar(10) | 非空 | 主键 |
optName | Varchar(20) | 非空 |
|
optPassword | Varchar(20) | 非空 | 不能明文存放 |
optWorkNo | Varchar(20) | 非空 | 工作人员工号 |
补充说明 |
|
表tbFeeAgency的结构如表7所示:
表7 tbFeeAgency的表结构
表名 | tbFeeAgency(代缴费用种类表,简写fag) | ||
列名 | 数据类型(精度范围) | 空/非空 | 约束条件 |
fagKind | Varchar(10) | 非空 | 主键, |
fagName | Varchar(30) | 非空 |
|
fagCardNo_cardNo | Char(10) | 非空 | 外键(tbCards(cardNo)) |
补充说明 | 费用类型用字符表示:电信固话、电信网费、移动话费、煤气费、水费、电费 |
表tbDespositAgency的结构如表8所示:
表8 tbDespositAgency的表结构
表名 | tbDespositAgency(代缴费用明细表,简写dpa) | ||
列名 | 数据类型(精度范围) | 空/非空 | 约束条件 |
dpaflowNo | Char(15) | 非空 | 主键,前8位为日期,后7位顺序生成 |
dpaKind | char(10) | 非空 | 外键, (tbFeeAgency(feeKind)) |
dpaOperateDate | date | 非空 | 操作当前日期,自动生成 |
DpaOperatorNo_ optAccount | Char(10) | 非空 | 外键(tbOperators(optAccount)) |
dpaCardNo_cardNo | char(10) |
| 外键(tbCards(cardNo)) |
dpaCustomerInfo | Char(10) |
|
|
dpaMoney | Decimal(10,2) | 非空 |
|
补充说明 | dpaCustomerInfo记录交费者相关信息 |
七、设计性实验
1.实验要求
以嘉兴学院图书馆主页中“我的图书馆”为原型,自行选择自定义图书馆管理系统的开发范围,针对该范围设计ER图,并将ER图转化为关系模型。其中图书馆管理系统部分页面如图4-6所示。
图4 图书馆目录检索功能页面
图5 图书馆分类导航页面
图6 个人借书历史显示页面