CREATE TABLE Customers (
CustomerID SERIAL PRIMARY KEY,
FirstName VARCHAR(100),
LastName VARCHAR(100),
Email VARCHAR(100)
);
CREATE TABLE AccountTypes (
AccountTypeID SERIAL PRIMARY KEY,
AccountTypeName VARCHAR(100)
);
CREATE TABLE Accounts (
AccountID SERIAL PRIMARY KEY,
CustomerID INT REFERENCES Customers(CustomerID),
AccountTypeID INT REFERENCES AccountTypes(AccountTypeID),
Balance DECIMAL(18, 2)
);
CREATE TABLE Transactions (
TransactionID SERIAL PRIMARY KEY,
AccountID INT REFERENCES Accounts(AccountID),
TransactionDate DATE,
Amount DECIMAL(18, 2)
);
--Inserting some sample data
INSERT INTO Customers(FirstName, LastName, Email) VALUES
('John', 'Doe', 'john.doe@example.com'),
('Jane', 'Doe', 'jane.doe@example.com'),
('Jim', 'Smith', 'jim.smith@example.com');
INSERT INTO AccountTypes(AccountTypeName) VALUES
('Savings'),
('Current');
INSERT INTO Accounts(CustomerID, AccountTypeID, Balance) VALUES
(1, 1, 10000.00),
(1, 2, 5000.00),
(2, 1, 20000.00),
(2, 2, 10000.00),
(3, 1, 15000.00),
(3, 2, 7500.00);
INSERT INTO Transactions(AccountID, TransactionDate, Amount) VALUES
(1, '2023-01-01', 500.00),
(1, '2023-01-15', -200.00),
(1, '2023-02-01', 500.00),
(1, '2023-02-15', -200.00),
(2, '2023-01-01', 200.00),
(2, '2023-01-15', -100.00),
(2, '2023-02-01', 200.00),
(2, '2023-02-15', -100.00),
(3, '2023-01-01', 1000.00),
(3, '2023-01-15', -500.00),
(3, '2023-02-01', 1000.00),
(3, '2023-02-15', -500.00);
CREATE TABLE AccountStatus (
AccountStatusID SERIAL PRIMARY KEY,
AccountID INT REFERENCES Accounts(AccountID),
Status VARCHAR(50),
StatusDate DATE
);
--Inserting some additional data
INSERT INTO Customers(FirstName, LastName, Email) VALUES
('Jack', 'Johnson', 'jack.johnson@example.com'),
('Jill', 'Johnson', 'jill.johnson@example.com'),
('Tom', 'Cruise', 'tom.cruise@example.com');
INSERT INTO AccountTypes(AccountTypeName) VALUES
('Investment'),
('Loan');
INSERT INTO Accounts(CustomerID, AccountTypeID, Balance) VALUES
(4, 1, 30000.00),
(4, 3, 15000.00),
(5, 1, 25000.00),
(5, 4, -10000.00),
(6, 2, 20000.00),
(6, 3, 12000.00);
INSERT INTO Transactions(AccountID, TransactionDate, Amount) VALUES
(4, '2023-03-01', 1500.00),
(4, '2023-03-15', -700.00),
(4, '2023-04-01', 1500.00),
(4, '2023-04-15', -700.00),
(5, '2023-03-01', 1250.00),
(5, '2023-03-15', -600.00),
(5, '2023-04-01', 1250.00),
(5, '2023-04-15', -600.00),
(6, '2023-03-01', 2000.00),
(6, '2023-03-15', -1000.00),
(6, '2023-04-01', 2000.00),
(6, '2023-04-15', -1000.00);
INSERT INTO AccountStatus(AccountID, Status, StatusDate) VALUES
(1, 'Active', '2023-01-01'),
(1, 'Suspended', '2023-02-01'),
(1, 'Active', '2023-03-01'),
(2, 'Active', '2023-01-01'),
(2, 'Closed', '2023-04-01'),
(3, 'Active', '2023-01-01'),
(4, 'Active', '2023-02-01'),
(5, 'Active', '2023-02-01'),
(6, 'Active', '2023-03-01');