diff --git a/SQL stuff/ddl_script.ddl b/SQL stuff/ddl_script.ddl new file mode 100644 index 00000000..71b526c4 --- /dev/null +++ b/SQL stuff/ddl_script.ddl @@ -0,0 +1,234 @@ +-- Generated by Oracle SQL Developer Data Modeler 22.2.0.165.1149 +-- at: 2022-11-23 12:17:07 CET +-- site: Oracle Database 11g +-- type: Oracle Database 11g + + + +-- predefined type, no DDL - MDSYS.SDO_GEOMETRY + +-- predefined type, no DDL - XMLTYPE + +CREATE TABLE club ( + id INTEGER NOT NULL, + budget INTEGER, + training_ground_quality INTEGER, + reputation INTEGER, + country_of_origin VARCHAR2(4000), + competition_id INTEGER, + manager_id INTEGER NOT NULL +); + +CREATE UNIQUE INDEX club__idx ON + club ( + manager_id + ASC ); + +ALTER TABLE club ADD CONSTRAINT club_id_un UNIQUE ( id ); + +CREATE TABLE competition ( + id INTEGER, + prize INTEGER, + country VARCHAR2(4000), + reputation INTEGER +); + +ALTER TABLE competition ADD CONSTRAINT competition_id_un UNIQUE ( id ); + +CREATE TABLE manager ( + id INTEGER, + skill INTEGER, + reputation INTEGER, + age INTEGER, + wage INTEGER, + club_id INTEGER NOT NULL +); + +CREATE UNIQUE INDEX manager__idx ON + manager ( + club_id + ASC ); + +ALTER TABLE manager ADD CONSTRAINT manager_id_un UNIQUE ( id ); + +CREATE TABLE match ( + id INTEGER, + score INTEGER, + rating INTEGER, + attendance INTEGER, + weather VARCHAR2(4000), + duration INTEGER, + "date" DATE, + referee_name VARCHAR2(4000), + competition_id INTEGER NOT NULL +); + +ALTER TABLE match ADD CONSTRAINT match_id_un UNIQUE ( id ); + +CREATE TABLE player ( + id INTEGER, + skill INTEGER, + position VARCHAR2(4000), + reputation INTEGER, + contract_status VARCHAR2(4000), + injuries INTEGER, + age INTEGER, + wages INTEGER, + transfer_value INTEGER, + club_id INTEGER +); + +ALTER TABLE player ADD CONSTRAINT player_id_un UNIQUE ( id ); + +CREATE TABLE stadium ( + id INTEGER NOT NULL, + capacity INTEGER, + reputation INTEGER, + location VARCHAR2(4000), + build_year INTEGER, + value FLOAT, + ticket_price FLOAT, + club_id INTEGER NOT NULL +); + +CREATE UNIQUE INDEX stadium__idx ON + stadium ( + club_id + ASC ); + +ALTER TABLE stadium ADD CONSTRAINT stadium_id_un UNIQUE ( id ); + +CREATE TABLE takes_part_in ( + club_id INTEGER NOT NULL, + match_id INTEGER NOT NULL +); + +ALTER TABLE takes_part_in ADD CONSTRAINT takes_part_in_pk PRIMARY KEY ( club_id, + match_id ); + +CREATE TABLE takes_place_in ( + stadium_id INTEGER NOT NULL, + competition_id INTEGER NOT NULL +); + +ALTER TABLE takes_place_in ADD CONSTRAINT takes_place_in_pk PRIMARY KEY ( stadium_id, + competition_id ); + +ALTER TABLE club + ADD CONSTRAINT club_competition_fk FOREIGN KEY ( competition_id ) + REFERENCES competition ( id ); + +ALTER TABLE club + ADD CONSTRAINT club_manager_fk FOREIGN KEY ( manager_id ) + REFERENCES manager ( id ); + +ALTER TABLE manager + ADD CONSTRAINT manager_club_fk FOREIGN KEY ( club_id ) + REFERENCES club ( id ); + +ALTER TABLE match + ADD CONSTRAINT match_competition_fk FOREIGN KEY ( competition_id ) + REFERENCES competition ( id ); + +ALTER TABLE player + ADD CONSTRAINT player_club_fk FOREIGN KEY ( club_id ) + REFERENCES club ( id ); + +ALTER TABLE stadium + ADD CONSTRAINT stadium_club_fk FOREIGN KEY ( club_id ) + REFERENCES club ( id ); + +ALTER TABLE takes_part_in + ADD CONSTRAINT takes_part_in_club_fk FOREIGN KEY ( club_id ) + REFERENCES club ( id ); + +ALTER TABLE takes_part_in + ADD CONSTRAINT takes_part_in_match_fk FOREIGN KEY ( match_id ) + REFERENCES match ( id ); + +ALTER TABLE takes_place_in + ADD CONSTRAINT takes_place_in_competition_fk FOREIGN KEY ( competition_id ) + REFERENCES competition ( id ); + +ALTER TABLE takes_place_in + ADD CONSTRAINT takes_place_in_stadium_fk FOREIGN KEY ( stadium_id ) + REFERENCES stadium ( id ); + +CREATE OR REPLACE TRIGGER fknto_club BEFORE + UPDATE OF competition_id ON club + FOR EACH ROW +BEGIN + IF :old.competition_id IS NOT NULL THEN + raise_application_error(-20225, 'Non Transferable FK constraint CLUB_COMPETITION_FK on table CLUB is violated'); + END IF; +END; +/ + +CREATE OR REPLACE TRIGGER fknto_player BEFORE + UPDATE OF club_id ON player + FOR EACH ROW +BEGIN + IF :old.club_id IS NOT NULL THEN + raise_application_error(-20225, 'Non Transferable FK constraint PLAYER_CLUB_FK on table PLAYER is violated'); + END IF; +END; +/ + +CREATE OR REPLACE TRIGGER fkntm_takes_part_in BEFORE + UPDATE OF match_id ON takes_part_in +BEGIN + raise_application_error(-20225, 'Non Transferable FK constraint on table takes_part_in is violated'); +END; +/ + +CREATE OR REPLACE TRIGGER fkntm_takes_place_in BEFORE + UPDATE OF competition_id ON takes_place_in +BEGIN + raise_application_error(-20225, 'Non Transferable FK constraint on table takes_place_in is violated'); +END; +/ + + + +-- Oracle SQL Developer Data Modeler Summary Report: +-- +-- CREATE TABLE 8 +-- CREATE INDEX 3 +-- ALTER TABLE 18 +-- CREATE VIEW 0 +-- ALTER VIEW 0 +-- CREATE PACKAGE 0 +-- CREATE PACKAGE BODY 0 +-- CREATE PROCEDURE 0 +-- CREATE FUNCTION 0 +-- CREATE TRIGGER 4 +-- ALTER TRIGGER 0 +-- CREATE COLLECTION TYPE 0 +-- CREATE STRUCTURED TYPE 0 +-- CREATE STRUCTURED TYPE BODY 0 +-- CREATE CLUSTER 0 +-- CREATE CONTEXT 0 +-- CREATE DATABASE 0 +-- CREATE DIMENSION 0 +-- CREATE DIRECTORY 0 +-- CREATE DISK GROUP 0 +-- CREATE ROLE 0 +-- CREATE ROLLBACK SEGMENT 0 +-- CREATE SEQUENCE 0 +-- CREATE MATERIALIZED VIEW 0 +-- CREATE MATERIALIZED VIEW LOG 0 +-- CREATE SYNONYM 0 +-- CREATE TABLESPACE 0 +-- CREATE USER 0 +-- +-- DROP TABLESPACE 0 +-- DROP DATABASE 0 +-- +-- REDACTION POLICY 0 +-- +-- ORDS DROP SCHEMA 0 +-- ORDS ENABLE SCHEMA 0 +-- ORDS ENABLE OBJECT 0 +-- +-- ERRORS 0 +-- WARNINGS 0 diff --git a/SQL stuff/ddl_script.xml b/SQL stuff/ddl_script.xml new file mode 100644 index 00000000..cfdf7ac1 --- /dev/null +++ b/SQL stuff/ddl_script.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +