Last active
August 29, 2015 14:02
-
-
Save cyhsutw/b8a05259d932f9f1ed68 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| CREATE TABLE hospital ( | |
| id BIGSERIAL PRIMARY KEY, | |
| name VARCHAR(200), | |
| city VARCHAR(200), | |
| country VARCHAR(200) | |
| ); | |
| CREATE TABLE birth ( | |
| id BIGSERIAL PRIMARY KEY, | |
| given_name VARCHAR(200), | |
| birthday DATE, | |
| hospital_id BIGINT, | |
| doctor_id BIGINT, | |
| mother_id BIGINT, | |
| FOREIGN KEY (hospital_id) REFERENCES hospital(id), | |
| FOREIGN KEY (doctor_id) REFERENCES birth(id), | |
| FOREIGN KEY (mother_id) REFERENCES birth(id) | |
| ); | |
| CREATE TYPE CRIMINAL_TYPE AS ENUM ('MURDER', 'ROBBERY', 'THEFT'); | |
| CREATE TYPE PUNISHMENT_TYPE AS ENUM ('IN JAIL', 'PAID FINE', 'FINISHED JAIL TIME'); | |
| CREATE TABLE criminal ( | |
| id BIGSERIAL PRIMARY KEY, | |
| person_id BIGINT, | |
| type CRIMINAL_TYPE, | |
| date TIMESTAMP, | |
| place VARCHAR(200), | |
| outcome BOOLEAN, | |
| status PUNISHMENT_TYPE, | |
| closing_date TIMESTAMP, | |
| FOREIGN KEY (person_id) REFERENCES birth(id) | |
| ); | |
| CREATE TABLE victim ( | |
| crime_id BIGINT, | |
| victim_id BIGINT, | |
| FOREIGN KEY (crime_id) REFERENCES criminal(id), | |
| FOREIGN KEY (victim_id) REFERENCES birth(id), | |
| PRIMARY KEY (crime_id, victim_id) | |
| ); | |
| CREATE TABLE classmate ( | |
| classmate_id BIGINT, | |
| criminal_id BIGINT, | |
| FOREIGN KEY (classmate_id) REFERENCES birth(id), | |
| FOREIGN KEY (criminal_id) REFERENCES criminal(id), | |
| PRIMARY KEY (classmate_id, criminal_id) | |
| ); | |
| CREATE TYPE DEATH_TYPE AS ENUM ('DISEASE', 'MURDER', 'ACCIDENT'); | |
| CREATE TYPE DEATH_STATUS AS ENUM ('MORGUE', 'BURIED', 'CREMATED'); | |
| CREATE TABLE death ( | |
| id BIGSERIAL PRIMARY KEY, | |
| person_id BIGINT, | |
| death DEATH_TYPE, | |
| time TIMESTAMP, | |
| place VARCHAR(200), | |
| status DEATH_STATUS, | |
| confirmed BOOLEAN, | |
| identifier_id BIGINT, | |
| relationship VARCHAR(200), | |
| FOREIGN KEY (person_id) REFERENCES birth(id), | |
| FOREIGN KEY (identifier_id) REFERENCES birth(id) | |
| ); | |
| CREATE TYPE VEHICLE_TYPE AS ENUM ('CAR', 'MOTORCYCLE', 'TRUCK'); | |
| CREATE TABLE driver_license ( | |
| owner_id BIGINT, | |
| license_type VEHICLE_TYPE, | |
| license_id BIGSERIAL, | |
| registration_date DATE, | |
| expiration_date DATE, | |
| FOREIGN KEY (owner_id) REFERENCES birth(id), | |
| PRIMARY KEY (owner_id, license_type) | |
| ); | |
| CREATE TYPE INCIDENT_TYPE AS ENUM ('STOLEN/ROBBED', 'ATTACKED', 'KILLED'); | |
| CREATE TABLE incident ( | |
| id BIGSERIAL PRIMARY KEY, | |
| victim_id BIGINT, | |
| time TIMESTAMP, | |
| place VARCHAR(200), | |
| perpetrator_id BIGINT, | |
| type INCIDENT_TYPE, | |
| solved BOOLEAN, | |
| FOREIGN KEY (victim_id) REFERENCES birth(id), | |
| FOREIGN KEY (perpetrator_id) REFERENCES birth(id) | |
| ); | |
| CREATE TABLE witness ( | |
| incident_id BIGINT, | |
| witness_id BIGINT, | |
| FOREIGN KEY (incident_id) REFERENCES incident(id), | |
| FOREIGN KEY (witness_id) REFERENCES birth(id), | |
| PRIMARY KEY (incident_id, witness_id) | |
| ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment