• 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)
    );
    
  • 相关阅读:
    我的2015年ccf的解答
    VS中出现“链接器工具错误,XXX工具模块对于SAFESEH映像是不安全的”的解决方法
    记录每次运行的时刻的小程序
    c语言中strcpy与strlen函数对字符串最后的''的处理
    windows8.1的启动目录的路径
    使用feof()判断文件结束时会多输出内容的原因
    [转]android sqlite db-journal文件产生原因及说明
    安卓备份 To Do(待办事项)的数据库
    下载YouTube视频的方法
    Firefox及我使用的firefox扩展
  • 原文地址:https://www.cnblogs.com/zifeiy/p/8797600.html
Copyright © 2020-2023  润新知