Bank方案SQL
用于演示的Bank方案对应的SQL:
/*
1、branch
开展银行交易业务的场所
*/
DROP TABLE IF EXISTS branch;
CREATE TABLE branch -- 开展银行交易业务的场所
(
branch_id SMALLINT UNSIGNED PRIMARY KEY,
name varchar(20),
address varchar(20),
city varchar(20),
state varchar(2),
zip varchar(12)
);
/*
1、product_type
具有相似功能的产品的分组
*/
DROP TABLE IF EXISTS product_type;
CREATE TABLE product_type
(
product_type_cd varchar(10) PRIMARY KEY,
name varchar(50)
);
/*
3、department
执行特定职能的雇员分组
*/
DROP TABLE IF EXISTS department;
CREATE TABLE department
(
dept_id SMALLINT UNSIGNED PRIMARY KEY,
name VARCHAR(20)
);
/*
4、customer
与银行有业务往来的个人或公司
*/
DROP TABLE IF EXISTS customer;
CREATE TABLE customer
(
cust_id INTEGER UNSIGNED PRIMARY KEY,
fed_id VARCHAR(12),
cust_type_cd VARCHAR(2),
address VARCHAR(30),
city VARCHAR(20),
state VARCHAR(20),
postal_code VARCHAR(10)
);
/*
5、product
向客户提供的银行服务
*/
DROP TABLE IF EXISTS product;
CREATE TABLE product
(
product_cd VARCHAR(10) PRIMARY KEY,
name VARCHAR(50),
product_type_cd VARCHAR(10),
date_offered date,
date_retired date,
CONSTRAINT fk_product_type_cd FOREIGN KEY (product_type_cd) REFERENCES product_type (product_type_cd)
);
/*
6、employee
银行的工作人员
*/
DROP TABLE IF EXISTS employee;
CREATE TABLE employee
(
emp_id SMALLINT UNSIGNED PRIMARY KEY,
fname VARCHAR(20),
lname VARCHAR(20),
start_date DATE,
end_date DATE,
superior_emp_id SMALLINT UNSIGNED, -- FK: 关联到 自己的 emp_id
dept_id SMALLINT UNSIGNED, -- FK: 关联到 department表的 dept_id
title VARCHAR(20),
assigned_branch_id SMALLINT UNSIGNED, -- FK: 关联到 branch表的 branch_id
CONSTRAINT fk_superior_emp_id FOREIGN KEY (superior_emp_id) REFERENCES employee (emp_id),
CONSTRAINT fk_dept_id FOREIGN KEY (dept_id) REFERENCES department (dept_id),
CONSTRAINT fk_assigned_branch_id FOREIGN KEY (assigned_branch_id) REFERENCES branch (branch_id)
);
/*
7、account
为特定顾客开放的特定产品
*/
DROP TABLE IF EXISTS account;
CREATE TABLE account
(
account_id INTEGER UNSIGNED PRIMARY KEY,
product_cd VARCHAR(10), -- FK: 关联到 product表的 product_cd
cust_id INTEGER UNSIGNED, -- FK: 关联到 customer表的 cust_id
open_date DATE,
close_date DATE,
last_activity_date DATE,
status VARCHAR(10),
open_branch_id SMALLINT UNSIGNED, -- FK: 关联到 branch表的 branch_id
open_emp_id SMALLINT UNSIGNED, -- FK: 关联到 employee表的 emp_id
avail_balance FLOAT(10,2),
pending_balance FLOAT(10,2),
CONSTRAINT fk_product_cd FOREIGN KEY (product_cd) REFERENCES product (product_cd),
CONSTRAINT fk_cust_id FOREIGN KEY (cust_id) REFERENCES customer (cust_id),
CONSTRAINT fk_open_branch_id FOREIGN KEY (open_branch_id) REFERENCES branch (branch_id),
CONSTRAINT fk_open_emp_id FOREIGN KEY (open_emp_id) REFERENCES employee (emp_id)
);
/*
8、transaction
改变账户余额的操作
*/
DROP TABLE IF EXISTS transaction;
CREATE TABLE transaction
(
txn_id INTEGER UNSIGNED PRIMARY KEY,
txn_date DATETIME,
account_id INTEGER UNSIGNED, -- FK: 关联 account表的 account_id
txn_type_cd VARCHAR(10),
amount DOUBLE(10,2),
teller_emp_id SMALLINT UNSIGNED, -- FK: 关联 employee表的 emp_id
execution_branch_id SMALLINT UNSIGNED, -- FK: 关联 branch表的 branch_id
funds_avail_date DATETIME,
CONSTRAINT fk_account_id FOREIGN KEY (account_id) REFERENCES account (account_id),
CONSTRAINT fk_teller_emp_id FOREIGN KEY (teller_emp_id) REFERENCES employee (emp_id),
CONSTRAINT fk_execution_branch_id FOREIGN KEY (execution_branch_id) REFERENCES branch (branch_id)
);
/*
9、business
公司顾客(customer的子表)
*/
DROP TABLE IF EXISTS business;
CREATE TABLE business
(
cust_id INTEGER UNSIGNED PRIMARY KEY, -- FK: 关联 customer表的 cust_id
name VARCHAR(40),
state_id VARCHAR(10),
incorp_date DATE,
CONSTRAINT fk_business_cust_id FOREIGN KEY (cust_id) REFERENCES customer (cust_id)
);
/*
10、officer
允许为公司客户发起商务交易的人
*/
DROP TABLE IF EXISTS officer;
CREATE TABLE officer
(
officer_id SMALLINT UNSIGNED PRIMARY KEY,
cust_id INTEGER UNSIGNED, -- FK
fname VARCHAR(30),
lname VARCHAR(30),
title VARCHAR(20),
start_date DATE,
end_date DATE,
CONSTRAINT fk_officer_cust_id FOREIGN KEY (cust_id) REFERENCES business (cust_id)
);
/*
11、individual
个人顾客(customer表的子类型)
*/
DROP TABLE IF EXISTS individual;
CREATE TABLE individual
(
cust_id INTEGER UNSIGNED PRIMARY KEY, -- FK
fname VARCHAR(30),
lname VARCHAR(30),
birth_date DATE,
CONSTRAINT fk_individual_cust_id FOREIGN KEY (cust_id) REFERENCES customer (cust_id)
);
Bank方案SQL的更多相关文章
- 大数据量数据库设计与优化方案(SQL优化)
转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
- (4.24)【mysql、sql server】分布式全局唯一ID生成方案
参考:分布式全局唯一ID生成方案:https://blog.csdn.net/linzhiqiang0316/article/details/80425437 分表生成唯一ID方案 sql serve ...
- SQL事务
一.事务概念 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库系统上执行并发操作时事务是作为最小的 ...
- SQL Server AlwaysOn中的几个误区
原文:SQL Server AlwaysOn中的几个误区 AlwaysOn自SQL Server2012之后已经发布很久了,最近我在给一些客户做咨询的时候经常被问起是不是应该使用AlwaysOn,从客 ...
- SQL Server 文章目录
SQL Server系列: 高可用方案 SQL Server Alwayson概念总结 SQL Server AlwaysOn搭建 SQL Server2016 Alwayson新增功能 SQL Se ...
- Atitit.数据操作dsl 的设计 ---linq 方案
Atitit.数据操作dsl 的设计 ---linq 方案 1.1. sql与api方式1 1.2. Linq方案与stream方案的选择,1 1.3. 前缀表达式 vs 中缀表达式1 1.4. 要不 ...
- sql 动态行转列 (2005及以上版本)
表数据: sql: --pivot方案 sql 2005及以上版本 ) Set @sql=(Select DISTINCT ','+ N'[' +pref_name+N']' FROM dbo.Pop ...
- 新三种求数列中值SQL之效率再比拼
在 https://www.cnblogs.com/xiandedanteng/p/12677688.html 中我列举了三种求中值方案,其中日本人MICK的做法因为不适用于二百万结果集而放弃,取而 ...
- sql查询速度慢分析及如何优化查询
原因分析后台数据库中数据过多,未做数据优化数据请求-解析-展示处理不当 网络问题提高数据库查询的速度方案SQL 查询速度慢的原因有很多,常见的有以下几种:1.没有索引或者没有用到索引(查询慢最常见的问 ...
随机推荐
- NumPy入门
import numpy as np 数组与标量之间的运算作用于数组的每一个元素.
- Java并发系列[9]----ConcurrentHashMap源码分析
我们知道哈希表是一种非常高效的数据结构,设计优良的哈希函数可以使其上的增删改查操作达到O(1)级别.Java为我们提供了一个现成的哈希结构,那就是HashMap类,在前面的文章中我曾经介绍过HashM ...
- 【Linux】积累笔记
■ 关于查看系统的一些版本信息 查看系统的发行版本可以用 cat /etc/issue 或者 cat /etc/redhat-release (Centos上) 查看系统的内核版本以及系统位数 una ...
- 计时器setInterval()-慕课网
计时器setInterval() 在执行时,从载入页面后每隔指定的时间执行代码. 语法: setInterval(代码,交互时间); 参数说明: 1. 代码:要调用的函数或要执行的代码串. 2. 交互 ...
- Idea 调试代码
---恢复内容开始--- set DEBUG_PORT=8787 set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,addr ...
- 后台返回null iOS
1.第一种解决方案 就是在每一个 可能传回null 的地方 使用 if([object isEqual:[NSNUll null]]) 去判断 2.第二种解决方案 网上传说老外写了一个Categor ...
- 剑指Offer-二叉树的下一个结点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 思路 分析二叉树的下一个节点,一共有以下情况: 二叉树 ...
- 和sin有关的代码
include include using namespace std; const double TINY_VALUE=1e-10; double tsin(double x) { double g ...
- Linux 终端 Bash 常用快捷键介绍及经验
1. 最重要的自动补全 命令 解释 Tab 自动补全 不用多说,自动补全可以节省大量时间 2. 编辑跳转 命令 解释 Ctrl + A 跳转到当前行首 Ctrl + E 跳转到当前行末 Alt + F ...
- 如何在http请求中使用线程池(干货)
这段时间对网络爬虫比较感兴趣,实现起来实际上比较简单.无非就是http的web请求,然后对返回的html内容进行内容筛选.本文的重点不在于这里,而在于多线程做http请求.例如我要实现如下场景:我有N ...