DATABASE DESIGN

profilejoelgisele


  • 3 years ago
  • 2
files (2)

Practice.sql

DROP TABLE CRUISE_PASSENGER CASCADE CONSTRAINTS; DROP TABLE PASSENGER CASCADE CONSTRAINTS; DROP TABLE CRUISE_PORT CASCADE CONSTRAINTS; DROP TABLE PORT CASCADE CONSTRAINTS; DROP TABLE CRUISE CASCADE CONSTRAINTS; DROP TABLE SAILOR CASCADE CONSTRAINTS; DROP TABLE SHIP CASCADE CONSTRAINTS; CREATE TABLE SHIP( ship_number INT PRIMARY KEY, ship_name VARCHAR2(300), weight NUMBER, year_built DATE, passenger_capacity INT ); CREATE TABLE SAILOR( sailor_id INT PRIMARY KEY, name VARCHAR2(300), date_of_birth DATE, nationality VARCHAR2(70), supervisor_id INT, FOREIGN KEY (supervisor_id) REFERENCES SAILOR(sailor_id) ); CREATE TABLE CRUISE( cruise_serial_number INT PRIMARY KEY, sailing_date DATE, return_date DATE, departure_port VARCHAR2(300), ship_number INT, FOREIGN KEY (ship_number) REFERENCES SHIP(ship_number) ); CREATE TABLE PORT( port_name VARCHAR2(300), country VARCHAR2(100), population INT, passport_required VARCHAR2(3), docking_fee NUMBER(10, 2), PRIMARY KEY (port_name, country) ); CREATE TABLE CRUISE_PORT ( cruise_serial_number INT, port_name VARCHAR2(300), country VARCHAR2(100), PRIMARY KEY (cruise_serial_number, port_name, country), FOREIGN KEY (cruise_serial_number) REFERENCES CRUISE(cruise_serial_number), FOREIGN KEY (port_name, country) REFERENCES PORT(port_name, country) ); CREATE TABLE PASSENGER( passenger_number INT PRIMARY KEY, name VARCHAR2(300), home_address VARCHAR2(300), nationality VARCHAR2(70), date_of_birth DATE ); CREATE TABLE CRUISE_PASSENGER( cruise_serial_number INT, passenger_number INT, payment_amount NUMBER, satisfaction_rating INT, PRIMARY KEY (cruise_serial_number, passenger_number), FOREIGN KEY (cruise_serial_number) REFERENCES CRUISE(cruise_serial_number), FOREIGN KEY (passenger_number) REFERENCES PASSENGER(passenger_number) ); INSERT INTO SHIP VALUES (1, 'Ship A', 5000, TO_DATE('2000-01-01', 'YYYY-MM-DD'), 200); INSERT INTO SHIP VALUES (2, 'Ship B', 6000, TO_DATE('2005-01-01', 'YYYY-MM-DD'), 250); INSERT INTO SAILOR VALUES (1, 'John Sailor', TO_DATE('1980-05-15', 'YYYY-MM-DD'), 'American', NULL); INSERT INTO SAILOR VALUES (2, 'Jane Sailor', TO_DATE('1985-08-20', 'YYYY-MM-DD'), 'British', 1); INSERT INTO CRUISE VALUES (101, TO_DATE('2023-06-01', 'YYYY-MM-DD'), TO_DATE('2023-06-15', 'YYYY-MM-DD'), 'Port A', 1); INSERT INTO CRUISE VALUES (102, TO_DATE('2023-07-01', 'YYYY-MM-DD'), TO_DATE('2023-07-15', 'YYYY-MM-DD'), 'Port B', 2); INSERT INTO PORT VALUES ('Port A', 'Country A', 1000000, 'Yes', 1500.00); INSERT INTO PORT VALUES ('Port B', 'Country B', 800000, 'No', 1200.00); INSERT INTO CRUISE_PORT VALUES (101, 'Port A', 'Country A'); INSERT INTO CRUISE_PORT VALUES (102, 'Port B', 'Country B'); INSERT INTO PASSENGER VALUES (1, 'Alice Passenger', '123 Main St', 'Canadian', TO_DATE('1990-03-10', 'YYYY-MM-DD')); INSERT INTO PASSENGER VALUES (2, 'Bob Passenger', '456 Oak St', 'German', TO_DATE('1988-12-05', 'YYYY-MM-DD')); INSERT INTO CRUISE_PASSENGER VALUES (101, 1, 1200.00, 4); INSERT INTO CRUISE_PASSENGER VALUES (102, 2, 1500.00, 5);