数据库原理与应用实验——综合实验

发布时间:2024年01月06日

实验7:综合实验

一、实验目的

1、掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方案,并加深对数据库系统系统概念和特点的理解。

2、初步掌握基于C/S的数据库应用系统分析、设计和实现方法。

3、进一步提高学生的知识综合运用能力。

二、实验内容

????????某银行是一家民办的小型银行企业,现有十多万客户。为提高工作效率,该银行将请公司开发一套管理系统,业务操作包括存款、取款和转账,为简化数据库设计和实现,其中转账操作仅实现银行内账户之间的转账,银行职员可以为客户进行账户管理操作,包括创建、注销账户以及修改账户信息。要求保证数据的安全性。

三、实验要求

(1)对实际系统进行需求分析,完成需求分析报告,提交文档可包括:数据流图、数据词典和系统功能分析。

(数据流图超纲所学的MySQL数据库的内容而且耗时大,所以没有加在里面!!!)

数据词典:

1. 客户表:

????客户ID:唯一标识客户的ID

????姓名:客户的姓名

????身份证号:客户的身份证号码

????地址:客户的地址

????联系电话:客户的联系电话号码

2. 银行卡表:

????卡号:唯一标识银行卡的ID

????客户ID:关联到客户表中的客户ID

????密码:银行卡的密码

????余额:银行卡的余额

????币种:银行卡的币种

????开户日期:客户开设银行卡账户的日期

????开户金额:客户最终的存款金额

????存款类型:存款的类型,比如活期存款,定期存款等

????是否挂失:‘0’表示无挂失,‘1’表示是

3. 交易记录表:

????交易ID:唯一标识交易的ID

????付款账户:关联到银行卡表中的卡号,表示付款账户

????收款账户:关联到银行卡表中的卡号,表示收款账户

????交易类型:交易的类型,比如ATM交易、网上银行交易、商户POS交易等

????交易金额:交易的金额

????交易时间:交易的时间

????其他相关交易信息:可对每笔交易作说明

4. 银行职员表:

????职员ID:唯一标识职员的ID

????姓名:银行职员的姓名

????职位:银行职员的职位

5. 银行信息管理系统表:

????记录ID:唯一标识银行信息管理记录的ID

????职员ID:关联到银行职员表中的职员ID,表示进行账户管理操作的职员

????卡号:关联到银行卡表中的卡号,表示进行账户管理被操作的客户

????操作类型:信息管理操作的类型,如创建账户、注销账户、修改账户信息等

????操作时间:信息管理操作的时间

系统功能分析:

1.存款功能:客户可以通过系统进行存款操作,将指定金额存入其账户。

2.取款功能:客户可以通过系统进行取款操作,从其账户中取出指定金额。

3.转账功能:客户可以通过系统进行转账操作,将指定金额从自己的账户转入其他账户。

4.账户管理功能:银行职员可以通过系统进行账户管理操作,包括创建新账户、注销账户以及修改账户信息。

5.数据安全性:系统需要保证数据的安全性,包括对用户密码进行加密存储、限制用户权限、记录用户操作日志等措施。

(2)设计系统数据逻辑结构,提交文档包括:E-R图、关系模式和数据结构。

E-R图:

关系模式:

客户(客户ID,姓名,身份证号,联系电话,地址)

银行卡(卡号,客户ID,密码,余额,币种,开户日期,开户金额,存款类型,是否挂失)

银行职员(职员ID,姓名,职位)

交易信息(交易ID,付款账户,收款账户,交易类型,交易时间,交易金额,其他相关交易信息)

银行信息管理系统(记录ID,客户ID,职员ID,操作类型,操作时间)

转账(交易ID,卡号)

拥有(客户ID,卡号)

数据结构:

1. 客户:

客户ID

姓名

身份证号

联系电话

地址

20230101

张三

123456789012345678

深圳市福田区

12345678901

20230102

李四

987654321098765432

深圳市南山区

13456789012

20230201

王五

567890123456789012

深圳市罗湖区

14567890123

20230202

赵六

012345678901234567

深圳市宝安区

15678901234

20230203

钱七

234567890123456789

深圳市龙华区

16789012345

20230301

黄八

345678901234567890

深圳市光明区

17890123456

20230401

罗一

456789012345678901

深圳市龙岗区

18901234567

20230501

陈二

678901234567890123

深圳市大鹏新区

19012345678

2. 银行卡

卡号

客户ID

密码

余额

币种

开户日期

开户金额

存款类型

是否挂失

10001

20230101

123456

10000.00

RMB

2023-01-01 09:00:00

10000.00

活期存款

0

10002

20230102

654321

20000.00

RMB

2023-01-02 09:30:00

20000.00

活期存款

0

10003

20230201

987654

30000.00

RMB

2023-02-01 10:00:00

30000.00

活期存款

0

10004

20230202

234567

40000.00

RMB

2023-02-02 10:30:00

40000.00

活期存款

0

10005

20230203

345678

50000.00

RMB

2023-02-03 11:00:00

50000.00

活期存款

0

10006

20230301

456789

60000.00

RMB

2023-03-01 11:30:00

1000.00

定期存款

0

10007

20230401

567890

70000.00

RMB

2023-04-01 12:00:00

100.00

定期存款

0

10008

20230501

678901

100.00

RMB

2023-05-01 14:00:00

100.00

活期存款

1

3. 银行职员:

职员ID

姓名

职位

020403

陈小生

总监

040376

高欣

经理

124984

黄翠翠

柜员

4. 交易记录:

交易ID

付款账户

收款账户

交易类型

交易金额

交易时间

其他相关交易信息

00000001

10001

10002

ATM交易

1000.00

2023-08-02 10:00:00

转账

00000002

10004

10003

网上银行交易

20000.00

2023-07-03 12:00:00

转账

00000003

10005

10006

商户POS交易

30.00

2023-06-04 14:00:00

消费

5. 银行信息管理系统:

记录ID

客户ID

职员ID

操作类型

操作时间

000001230001

124984

10001

创建账户

2023-07-01 09:00:00

000001240020

040376

10008

注销账户

2023-07-02 10:00:00

000001342031

020403

10002

修改账户

2023-07-03 11:00:00

6. 转账:

交易ID

卡号

00000001

10001

00000002

10004

7. 拥有:

客户ID

卡号

20230101

10001

20230102

10002

20230201

10003

20230202

10004

20230203

10005

20230301

10006

20230401

10007

20230501

10008

(3)创建数据库和表,输入初始数据。要求每个表的记录数不得少于3条。

以下是创建数据库和表的SQL语句:

-- 创建客户表

CREATE TABLE 客户 (

????客户ID varchar(255) PRIMARY KEY,

????姓名 VARCHAR(8) NOT?NULL,

????身份证号 CHAR(18) NOT?NULL,

????地址 VARCHAR(255) NOT?NULL,

????联系电话 CHAR(11) NOT?NULL

);

-- 创建银行卡表

CREATE TABLE 银行卡 (

????卡号 VARCHAR(255) PRIMARY KEY,

????客户ID VARCHAR(255) NOT?NULL,

????密码 VARCHAR(6) NOT?NULL,

????余额 DECIMAL(10, 2) NOT?NULL,

????币种 VARCHAR(5) DEFAULT 'RMB' NOT?NULL,

????开户日期 DATETIME?NOT?NULL,

????开户金额 DECIMAL(10, 2) NOT?NULL,

????存款类型 ENUM('活期存款','定期存款') NOT?NULL,

????是否挂失 ENUM('0','1') DEFAULT?'0' NOT?NULL,

????FOREIGN KEY (客户ID) REFERENCES 客户(客户ID)

);

-- 创建交易记录表

CREATE TABLE 交易记录 (

????交易ID VARCHAR(255) PRIMARY KEY,

????付款账户 VARCHAR(255) NOT?NULL,

????收款账户 VARCHAR(255) NOT?NULL,

????交易类型 ENUM('ATM交易','网上银行交易','商户POS交易') NOT?NULL,

????交易金额 DECIMAL(10, 2) NOT?NULL,

????交易时间 DATETIME NOT?NULL,

????其他相关交易信息 TEXT?NOT?NULL,

????FOREIGN KEY (付款账户) REFERENCES 银行卡(卡号),

????FOREIGN KEY (收款账户) REFERENCES 银行卡(卡号)

);

-- 创建银行职员表

CREATE TABLE 银行职员 (

????职员ID VARCHAR(255)?PRIMARY KEY,

????姓名 VARCHAR(8)?NOT NULL,

????职位 VARCHAR(12)?NOT NULL

);

-- 创建银行信息管理系统表

CREATE TABLE 银行信息管理系统 (

????记录ID VARCHAR(255) PRIMARY KEY,

????职员ID VARCHAR(255) NOT?NULL,

????卡号 VARCHAR(255) NOT?NULL,

????操作类型 ENUM('创建账户','修改账户','注销账户') NOT?NULL,

????操作时间 DATETIME NOT?NULL,

????FOREIGN KEY (职员ID) REFERENCES 银行职员(职员ID),

????FOREIGN KEY (卡号) REFERENCES 银行卡(卡号)

);

插入初始数据的SQL语句如下:

-- 插入客户数据

INSERT INTO 客户 (客户ID, 姓名, 身份证号, 地址, 联系电话)?VALUES 
(20230101, '张三', '123456789012345678', '深圳市福田区', '12345678901'),

(20230102, '李四', '987654321098765432', '深圳市南山区', '13456789012'),

(20230201, '王五', '567890123456789012', '深圳市罗湖区', '14567890123'),

(20230202, '赵六', '012345678901234567', '深圳市宝安区', '15678901234'),

(20230203, '钱七', '234567890123456789', '深圳市龙华区', '16789012345'),

(20230301, '黄八', '345678901234567890', '深圳市光明区', '17890123456'),

(20230401, '罗一', '456789012345678901', '深圳市龙岗区', '18901234567'),

(20230501, '陈二', '678901234567890123', '深圳市大鹏新区', '19012345678');

-- 插入银行卡数据

INSERT INTO 银行卡 (卡号, 客户ID, 密码, 余额, 币种, 开户日期, 开户金额, 存款类型, 是否挂失)?VALUES

('10001', '20230101', '123456', 10000.00, 'RMB', '2023-01-01 09:00:00', 10000.00, '活期存款', '0'),

('10002', '20230102', '654321', 20000.00, 'RMB', '2023-01-02 09:30:00', 20000.00, '活期存款', '0'),

('10003', '20230201', '987654', 30000.00, 'RMB', '2023-02-01 10:00:00', 30000.00, '活期存款', '0'),

('10004', '20230202', '234567', 40000.00, 'RMB', '2023-02-02 10:30:00', 40000.00, '活期存款', '0'),

('10005', '20230203', '345678', 50000.00, 'RMB', '2023-02-03 11:00:00', 50000.00, '活期存款', '0'),

('10006', '20230301', '456789', 60000.00, 'RMB', '2023-03-01 11:30:00', 1000.00, '定期存款', '0'),

('10007', '20230401', '567890', 70000.00, 'RMB', '2023-04-01 12:00:00', 100.00, '定期存款', '0'),

('10008', '20230501', '678901', 100.00, 'RMB', '2023-05-01 14:00:00', 100.00, '活期存款', '1');

-- 插入交易记录数据

INSERT INTO 交易记录 (交易ID, 付款账户, 收款账户, 交易类型, 交易金额, 交易时间, 其他相关交易信息)?VALUES

('00000001', '10001', '10002', 'ATM交易', 1000.00, '2023-08-02 10:00:00', '转账'),

('00000002', '10004', '10003', '网上银行交易', 20000.00, '2023-07-03 12:00:00', '转账'),

('00000003', '10005', '10006', '商户POS交易', 30.00, '2023-06-04 14:00:00', '消费');

-- 插入银行职员数据

INSERT INTO 银行职员 (职员ID, 姓名, 职位)VALUES

('124984', '黄翠翠', '柜员'),

('040376', '高欣', '经理'),

('020403', '陈小生', '总监');

-- 插入银行信息管理系统数据

INSERT INTO 银行信息管理系统 (记录ID, 职员ID, 卡号, 操作类型, 操作时间)VALUES

('000001230001', '124984', '10001', '创建账户', '2023-07-01 09:00:00'),

('000001240020', '040376', '10008', '注销账户', '2023-07-02 10:00:00'),

('000001342031', '020403', '10002', '修改账户', '2023-07-03 11:00:00');

(4)撰写实验报告。要求实验报告有如下内容:

????????1.需求分析;
????????2.数据库设计;
????????3.程序清单(sql文件);
????????4.总结。

????????本实验设计关于银行管理系统的数据库,包含客户表、银行卡表、交易记录表、银行职员表和银行信息管理系统表。银行信息管理系统表记录着银行职员对客户的操作(创建账户、注销账户和修改账户),银行卡表记录关于卡号所属客户的相关信息,客户表记录着客户的相关信息,银行职员表记录着银行的职员的相关信息,交易记录表记录着银行卡每一笔交易的详细信息。

文章来源:https://blog.csdn.net/qq_58649437/article/details/135396501
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。