CREATE TABLE regions ( region_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, region_name VARCHAR(30) ); INSERT INTO regions (region_id, region_name) VALUES (1,'Europe'), (2,'Americas'), (3,'Asia'), (4,'Middle East and Africa'); SELECT setval('regions_region_id_seq', 4, true); CREATE TABLE countries ( country_id CHAR(2) PRIMARY KEY, country_name VARCHAR(45), region_id INTEGER NOT NULL REFERENCES regions (region_id) ); INSERT INTO countries(country_id,country_name,region_id) VALUES ('AR','Argentina',2), ('AU','Australia',3), ('BE','Belgium',1), ('BR','Brazil',2), ('CA','Canada',2), ('CH','Switzerland',1), ('CN','China',3), ('DE','Germany',1), ('DK','Denmark',1), ('EG','Egypt',4), ('FR','France',1), ('HK','HongKong',3), ('IL','Israel',4), ('IN','India',3), ('IT','Italy',1), ('JP','Japan',3), ('KW','Kuwait',4), ('MX','Mexico',2), ('NG','Nigeria',4), ('NL','Netherlands',1), ('SG','Singapore',3), ('UK','United Kingdom',1), ('US','United States of America',2), ('ZM','Zambia',4), ('ZW','Zimbabwe',4); CREATE TABLE locations ( location_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, street_address VARCHAR(45), postal_code VARCHAR(12), city VARCHAR (30) NOT NULL, state_province VARCHAR (25), country_id CHAR(2) NOT NULL REFERENCES countries (country_id) ); INSERT INTO locations (location_id,street_address,postal_code,city,state_province,country_id) VALUES (1,'9122 Rockfeller Rd','34232','Effingham','Indiana','US'), (2,'44 Isaac Newton Ave','54898','London','London','UK'), (3,'Deutschland 3232','79822','Munich','Bavaria','DE'), (4,'210 W Main St','84032','Lehi','Utah','US'); SELECT setval('locations_location_id_seq', 4, true); CREATE TABLE departments ( department_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, department_name VARCHAR (30) NOT NULL, location_id INTEGER REFERENCES locations (location_id) ); INSERT INTO departments (department_id, department_name, location_id) VALUES (1,'Management', 1), (2,'Information Technology',2), (3,'Human Resources',3), (4,'Sales',1); SELECT setval('departments_department_id_seq', 4, true); CREATE TABLE employees ( employee_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR(20), last_name VARCHAR(25) NOT NULL, start_date DATE NOT NULL DEFAULT CURRENT_DATE, job_title VARCHAR(100) NOT NULL, salary NUMERIC (9, 2) NOT NULL, manager_id INTEGER, department_id INTEGER, FOREIGN KEY (department_id) REFERENCES departments (department_id), FOREIGN KEY (manager_id) REFERENCES employees (employee_id) ); INSERT INTO employees (employee_id, first_name, last_name, start_date, job_title, salary, manager_id, department_id) VALUES (1,'John','Smith','1989-05-07','President',364000.00,NULL,1), (2,'Pointy','HairedBoss','1999-08-12','CTO',27000.00,1,2), (3,'Dilbertzoni','DeScrewed','2001-02-02','Software Engineer',77000.00,2,2), (4,'Vanda','Socialist','1994-03-06','VP Equity Diversity Inclusion',90000.00,1,3), (5,'Howard','TheDuck','2001-08-11','VP Sales', 80000.00,1,4), (6,'Luke','Fett','2007-07-21','Sales Guy',68000.00,5,4), (7,'John','SkipWork','2003-05-03','HR Henchman',68000.00,4,3), (8,'Lea','Palpatine','2009-07-04','UI Designer',87000.00,2,2); SELECT setval('employees_employee_id_seq', 8, true); CREATE TABLE dependents ( dependent_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, first_name VARCHAR (50) NOT NULL, last_name VARCHAR (50) NOT NULL, employee_id INTEGER NOT NULL REFERENCES employees (employee_id) ); INSERT INTO dependents (dependent_id, first_name, last_name, employee_id) VALUES (1,'Spoiled','Smith',1), (2,'DoNothin','Smith',1), (3,'Rafael','HairedBoss',2), (4,'Beta','HairedBoss',2), (5,'Wanda','DeScrewed',3); SELECT setval('dependents_dependent_id_seq', 5, true);