SQL-Bank-Model-Database / 0_Banking_DDL.sql
0_Banking_DDL.sql
Raw
--------------------------------------------------------------------------------
/*				                 Banking DDL           		  		          */
--------------------------------------------------------------------------------

    CREATE TABLE branch(
    branch_name VARCHAR(40),
    branch_city VARCHAR(25),
    assets NUMERIC(20,2) CHECK (assets > 0),
    CONSTRAINT branch_pkey PRIMARY KEY(branch_name)  
    );
    
CREATE TABLE customer(
    cust_ID VARCHAR(15),
    customer_name VARCHAR(30) NOT NULL,
    customer_street VARCHAR (40),
    customer_city VARCHAR(30),
    CONSTRAINT customer_ID_pkey PRIMARY KEY(cust_ID)
    );
CREATE TABLE loan(
    loan_number VARCHAR(20),
    branch_name VARCHAR(40),
    amount NUMERIC(20,2) DEFAULT 0.00 CHECK(amount>0),
    CONSTRAINT loan_number_pkey PRIMARY KEY(loan_number),
    CONSTRAINT loan_branch_name FOREIGN KEY(branch_name) REFERENCES branch(branch_name)
        ON DELETE SET NULL
        ON UPDATE CASCADE
    
);

CREATE TABLE borrower(
             cust_ID VARCHAR(15),
             loan_number VARCHAR(20),
             CONSTRAINT borrower_pkey PRIMARY KEY(cust_ID,loan_number),
    		 CONSTRAINT borrower_loan_number_fkey1 FOREIGN KEY (loan_number) REFERENCES loan(loan_number)
			    ON DELETE CASCADE
                ON UPDATE CASCADE,
             CONSTRAINT borrower_custID_fkey2 FOREIGN KEY (cust_ID) REFERENCES customer(cust_ID)
			    ON DELETE SET NULL
                ON UPDATE CASCADE
    );
    
CREATE TABLE account(
             account_number VARCHAR(20),
             branch_name VARCHAR(40),
             balance NUMERIC (20,2) DEFAULT 0.00,
             CONSTRAINT account_number_pkey PRIMARY KEY(account_number),
             CONSTRAINT account_branch_name_fkey1 FOREIGN KEY (branch_name) REFERENCES branch(branch_name)
                ON DELETE SET NULL
                ON UPDATE CASCADE
);

CREATE TABLE depositor(
             cust_ID VARCHAR(15),
             account_number VARCHAR(20),
             CONSTRAINT depositor_pkey PRIMARY KEY(cust_ID,account_number),
             CONSTRAINT deporitor_cust_ID_fkey FOREIGN KEY(cust_ID) REFERENCES customer(cust_ID)
                ON DELETE CASCADE
                ON UPDATE CASCADE
                );