WUT_Computer_Science/SQL stuff/ddl_script.ddl
2022-11-23 12:27:12 +01:00

235 lines
6.7 KiB
SQL

-- 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