35 lines
1.8 KiB
MySQL
35 lines
1.8 KiB
MySQL
|
|
DROP TABLE IF EXISTS personal_account_operations;
|
||
|
|
DROP TABLE IF EXISTS employee_personal_accounts;
|
||
|
|
DROP TABLE IF EXISTS employees;
|
||
|
|
DROP SEQUENCE IF EXISTS seq_employees cascade;
|
||
|
|
|
||
|
|
CREATE SEQUENCE seq_employees START 5000;
|
||
|
|
|
||
|
|
CREATE TABLE employees
|
||
|
|
(
|
||
|
|
id BIGINT PRIMARY KEY DEFAULT nextval('seq_employees'),
|
||
|
|
name VARCHAR NOT NULL,
|
||
|
|
email VARCHAR NOT NULL
|
||
|
|
);
|
||
|
|
CREATE UNIQUE INDEX employees_unique_email_idx ON employees (email);
|
||
|
|
|
||
|
|
CREATE TABLE employee_personal_accounts (
|
||
|
|
id BIGINT PRIMARY KEY DEFAULT nextval('seq_employees'),
|
||
|
|
employee_id BIGINT NOT NULL,
|
||
|
|
personal_account VARCHAR NOT NULL,
|
||
|
|
FOREIGN KEY (employee_id) REFERENCES employees (id) ON DELETE CASCADE
|
||
|
|
);
|
||
|
|
CREATE UNIQUE INDEX employee_personal_accounts_unique_employee_account_idx
|
||
|
|
ON employee_personal_accounts (employee_id, personal_account);
|
||
|
|
|
||
|
|
CREATE TABLE personal_account_operations (
|
||
|
|
id BIGINT PRIMARY KEY DEFAULT nextval('seq_employees'),
|
||
|
|
personal_account_id BIGINT NOT NULL,
|
||
|
|
operation_date_time TIMESTAMP NOT NULL,
|
||
|
|
operation_type VARCHAR NOT NULL,
|
||
|
|
-- Money data on PostgreSQL using Java https://stackoverflow.com/a/18170030
|
||
|
|
operation_value DECIMAL NOT NULL,
|
||
|
|
FOREIGN KEY (personal_account_id) REFERENCES employee_personal_accounts (id) ON DELETE CASCADE
|
||
|
|
);
|
||
|
|
CREATE UNIQUE INDEX personal_account_operations_unique_account_datetime_idx
|
||
|
|
ON personal_account_operations (personal_account_id, operation_date_time);
|