102 lines
2.8 KiB
PL/PgSQL
102 lines
2.8 KiB
PL/PgSQL
\i schema_drop.sql
|
||
|
||
CREATE TABLE IF NOT EXISTS Customers(
|
||
CPR_number integer PRIMARY KEY,
|
||
risk_type boolean default False,
|
||
password varchar(120),
|
||
name varchar(60),
|
||
address text
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS Employees(
|
||
id integer PRIMARY KEY,
|
||
name varchar(20),
|
||
password varchar(120)
|
||
);
|
||
-- Solving the accounts ISA Hierachy.
|
||
-- (-)relational style. In this case every entity is implemented
|
||
-- -objects atyle. In this case only typed objects. Implement a type on manages
|
||
-- -nulls style. In this case only accounts
|
||
|
||
-- Serial this is the account number across the system
|
||
--
|
||
|
||
CREATE TABLE IF NOT EXISTS Accounts(
|
||
account_number SERIAL PRIMARY KEY,
|
||
created_date date,
|
||
CPR_number integer REFERENCES Customers(CPR_number)
|
||
);
|
||
|
||
|
||
CREATE TABLE IF NOT EXISTS manages(
|
||
emp_cpr_number INTEGER NOT NULL REFERENCES employees(id),
|
||
account_number INTEGER NOT NULL REFERENCES accounts
|
||
);
|
||
ALTER TABLE manages ADD CONSTRAINT pk_manages
|
||
PRIMARY KEY (emp_cpr_number, account_number)
|
||
;
|
||
|
||
|
||
CREATE TABLE IF NOT EXISTS CheckingAccounts(
|
||
account_number INTEGER PRIMARY KEY
|
||
);
|
||
|
||
ALTER TABLE CheckingAccounts ADD CONSTRAINT fk_ChAcc_001
|
||
FOREIGN KEY (account_number) REFERENCES Accounts(account_number)
|
||
;
|
||
|
||
CREATE TABLE IF NOT EXISTS InvestmentAccounts(
|
||
account_number SERIAL PRIMARY KEY
|
||
);
|
||
ALTER TABLE InvestmentAccounts ADD CONSTRAINT fk_InAcc_001
|
||
FOREIGN KEY (account_number) REFERENCES Accounts(account_number)
|
||
;
|
||
|
||
-- transfers
|
||
CREATE TABLE IF NOT EXISTS Transfers(
|
||
id SERIAL PRIMARY KEY,
|
||
transfer_date date,
|
||
amount INTEGER,
|
||
from_account INTEGER REFERENCES accounts(account_number),
|
||
to_account INTEGER REFERENCES accounts(account_number)
|
||
);
|
||
|
||
COMMENT ON COLUMN Transfers.from_account IS 'has origin';
|
||
COMMENT ON COLUMN Transfers.to_account IS 'has destination';
|
||
|
||
-- checking accounts
|
||
CREATE TABLE IF NOT EXISTS Withdraws(
|
||
id SERIAL PRIMARY KEY,
|
||
account_number INTEGER REFERENCES CheckingAccounts(account_number),
|
||
amount integer,
|
||
withdraw_date date
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS Deposits(
|
||
id SERIAL PRIMARY KEY,
|
||
account_number INTEGER REFERENCES CheckingAccounts(account_number),
|
||
amount integer,
|
||
deposit_date date
|
||
);
|
||
|
||
-- investments
|
||
-- Solving the certificate ISA Hierachy.
|
||
-- -relational style. In this case every entity is implemented
|
||
-- -objects atyle. In this case only typed objects.
|
||
-- (-)nulls style. In this case only one certificate entity set
|
||
|
||
CREATE TABLE IF NOT EXISTS Certificates_of_deposit(
|
||
cd_number SERIAL PRIMARY KEY,
|
||
account_number INTEGER REFERENCES InvestmentAccounts(account_number),
|
||
start_date date,
|
||
amount integer,
|
||
maturity_date date,
|
||
rate integer --at fixed rate certificated´s of deposite
|
||
);
|
||
COMMENT ON COLUMN Certificates_of_deposit.rate IS 'at fixed rate certificated´s of deposite';
|
||
|
||
\i sql_ddl/vw_cd_sum.sql
|
||
\i sql_ddl/vw_invest_accounts.sql
|
||
\i sql_ddl/vw_invest_certificates.sql
|
||
\i sql_ddl/vw_tdw.sql
|