1、掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方案,并加深对数据库系统系统概念和特点的理解。
2、初步掌握基于C/S的数据库应用系统分析、设计和实现方法。
3、进一步提高学生的知识综合运用能力。
????????某银行是一家民办的小型银行企业,现有十多万客户。为提高工作效率,该银行将请公司开发一套管理系统,业务操作包括存款、取款和转账,为简化数据库设计和实现,其中转账操作仅实现银行内账户之间的转账,银行职员可以为客户进行账户管理操作,包括创建、注销账户以及修改账户信息。要求保证数据的安全性。
(数据流图超纲所学的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.数据安全性:系统需要保证数据的安全性,包括对用户密码进行加密存储、限制用户权限、记录用户操作日志等措施。
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 |
以下是创建数据库和表的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');
????????本实验设计关于银行管理系统的数据库,包含客户表、银行卡表、交易记录表、银行职员表和银行信息管理系统表。银行信息管理系统表记录着银行职员对客户的操作(创建账户、注销账户和修改账户),银行卡表记录关于卡号所属客户的相关信息,客户表记录着客户的相关信息,银行职员表记录着银行的职员的相关信息,交易记录表记录着银行卡每一笔交易的详细信息。