CREATE TABLE FBV_MITGLIED
(
  PERSNR NUMBER(8, 0) NOT NULL,
  BEITRAG NUMBER(5, 2) NOT NULL
, CONSTRAINT PK_MITGLIED PRIMARY KEY
  (
    PERSNR
  )
  ENABLE
)
;

CREATE TABLE FBV_FANCLUB
(
  SID NUMBER(6, 0) NOT NULL,
  NAME VARCHAR2(20 BYTE) NOT NULL,
  GEGRUENDET DATE NOT NULL,
  OBMANN NUMBER(8, 0) NOT NULL
, CONSTRAINT PK_FANCLUB PRIMARY KEY
  (
    SID,
    NAME
  )
  ENABLE
)
;

CREATE TABLE FBV_STANDORT
(
  SID NUMBER(6, 0) NOT NULL,
  LAND VARCHAR2(20 BYTE) NOT NULL,
  PLZ VARCHAR2(7 BYTE) NOT NULL,
  ORT VARCHAR2(20 BYTE) NOT NULL
, CONSTRAINT PK_STANDORT PRIMARY KEY
  (
    SID
  )
  ENABLE
)
;

CREATE TABLE FBV_PERSON
(
  PERSNR NUMBER(8, 0) NOT NULL,
  VNAME VARCHAR2(20 BYTE) NOT NULL,
  NNAME VARCHAR2(20 BYTE) NOT NULL,
  GESCHLECHT CHAR(1 BYTE) NOT NULL,
  GEBDAT DATE NOT NULL
, CONSTRAINT PK_PERSON PRIMARY KEY
  (
    PERSNR
  )
  ENABLE
)
;

CREATE TABLE FBV_SPIEL
(
  MANNSCHAFT VARCHAR2(20 BYTE) NOT NULL,
  DATUM DATE NOT NULL,
  GEGNER VARCHAR2(20 BYTE) NOT NULL,
  ERGEBNIS VARCHAR2(20 BYTE) NOT NULL
, CONSTRAINT PK_SPIEL PRIMARY KEY
  (
    DATUM,
    MANNSCHAFT
  )
  ENABLE
)
;

CREATE TABLE FBV_TRAINER
(
  PERSNR NUMBER(8, 0) NOT NULL,
  GEHALT NUMBER(9, 2) NOT NULL,
  VON DATE NOT NULL,
  BIS DATE NOT NULL
, CONSTRAINT PK_TRAINER PRIMARY KEY
  (
    PERSNR
  )
  ENABLE
)
;

CREATE TABLE FBV_SPIELER
(
  PERSNR NUMBER(8, 0) NOT NULL,
  GEHALT NUMBER(9, 2) NOT NULL,
  POSITION VARCHAR2(20 BYTE) NOT NULL,
  VON DATE NOT NULL,
  BIS DATE NOT NULL
, CONSTRAINT PK_SPIELER PRIMARY KEY
  (
    PERSNR
  )
  ENABLE
)
;

CREATE TABLE FBV_ANGESTELLTER
(
  PERSNR NUMBER(8, 0) NOT NULL,
  GEHALT NUMBER(8, 2) NOT NULL,
  UEBERSTUNDEN NUMBER(4, 2) NOT NULL,
  E_MAIL VARCHAR2(20 BYTE) NOT NULL
, CONSTRAINT PK_ANGESTELLTER PRIMARY KEY
  (
    PERSNR
  )
  ENABLE
)
;

CREATE TABLE FBV_MANNSCHAFT
(
  BEZEICHNUNG VARCHAR2(20 BYTE) NOT NULL,
  KLASSE VARCHAR2(12 BYTE) NOT NULL,
  NAECHSTES_SPIEL DATE NOT NULL,
  CHEFTRAINER NUMBER(8, 0) NOT NULL,
  ASSISTENT NUMBER(8, 0) NOT NULL,
  KAPITAEN NUMBER(8, 0) NOT NULL
, CONSTRAINT PK_MANNSCHAFT PRIMARY KEY
  (
    BEZEICHNUNG
  )
  ENABLE
)
;

CREATE TABLE FBV_EINSATZ
(
  SPIELER NUMBER(8, 0) NOT NULL,
  MANNSCHAFT VARCHAR2(20 BYTE) NOT NULL,
  DATUM DATE NOT NULL,
  DAUER NUMBER(2, 0) NOT NULL
, CONSTRAINT PK_EINSATZ PRIMARY KEY
  (
    SPIELER,
    MANNSCHAFT,
    DATUM
  )
  ENABLE
)
;

CREATE TABLE FBV_SPIELEN
(
  MANNSCHAFT VARCHAR2(20 BYTE) NOT NULL,
  SPIELER NUMBER(8, 0) NOT NULL,
  NUMMER NUMBER(2, 0) NOT NULL
, CONSTRAINT PK_SPIELEN PRIMARY KEY
  (
    MANNSCHAFT,
    SPIELER
  )
  ENABLE
)
;

CREATE TABLE FBV_BETREUEN
(
  BETREUER NUMBER(8, 0) NOT NULL,
  SID NUMBER(6, 0) NOT NULL,
  FANCLUBNAME VARCHAR2(20 BYTE) NOT NULL,
  ANFANG DATE NOT NULL,
  ENDE DATE NOT NULL
, CONSTRAINT PK_BETREUEN PRIMARY KEY
  (
    BETREUER,
    SID,
    FANCLUBNAME
  )
  ENABLE
)
;

ALTER TABLE FBV_FANCLUB
ADD CONSTRAINT UNIQUE_FANCLUB_OBMANN UNIQUE
(
  OBMANN
)
 ENABLE
;

ALTER TABLE FBV_MANNSCHAFT
ADD CONSTRAINT UNIQUE_MANNSCHAFT_ASSISTENT UNIQUE
(
  ASSISTENT
)
 ENABLE
;

ALTER TABLE FBV_MANNSCHAFT
ADD CONSTRAINT UNIQUE_MANNSCHAFT_CHEFTRAINER UNIQUE
(
  CHEFTRAINER
)
 ENABLE
;

ALTER TABLE FBV_SPIELEN
ADD CONSTRAINT UNIQUE_SPIELEN_NUMMER UNIQUE
(
  MANNSCHAFT,
  NUMMER
)
 ENABLE
;

ALTER TABLE FBV_MITGLIED
ADD CONSTRAINT FK_MITGLIED_PERSON FOREIGN KEY
(
  PERSNR
)
REFERENCES FBV_PERSON
(
PERSNR
)
ON DELETE CASCADE ENABLE
;

ALTER TABLE FBV_FANCLUB
ADD CONSTRAINT FK_FANCLUB_MITGLIED_OBMANN FOREIGN KEY
(
  OBMANN
)
REFERENCES FBV_MITGLIED
(
PERSNR
) ENABLE
;

ALTER TABLE FBV_FANCLUB
ADD CONSTRAINT FK_FANCLUB_STANDORT FOREIGN KEY
(
  SID
)
REFERENCES FBV_STANDORT
(
SID
) ENABLE
;

ALTER TABLE FBV_SPIEL
ADD CONSTRAINT SYS_C00135680 FOREIGN KEY
(
  MANNSCHAFT
)
REFERENCES FBV_MANNSCHAFT
(
BEZEICHNUNG
) ENABLE
;

ALTER TABLE FBV_TRAINER
ADD CONSTRAINT FK_TRAINER_PERSON FOREIGN KEY
(
  PERSNR
)
REFERENCES FBV_PERSON
(
PERSNR
)
ON DELETE CASCADE ENABLE
;

ALTER TABLE FBV_SPIELER
ADD CONSTRAINT FK_SPIELER_PERSON FOREIGN KEY
(
  PERSNR
)
REFERENCES FBV_PERSON
(
PERSNR
)
ON DELETE CASCADE ENABLE
;

ALTER TABLE FBV_ANGESTELLTER
ADD CONSTRAINT FK_ANGESTELLTER_PERSON FOREIGN KEY
(
  PERSNR
)
REFERENCES FBV_PERSON
(
PERSNR
)
ON DELETE CASCADE ENABLE
;

ALTER TABLE FBV_MANNSCHAFT
ADD CONSTRAINT FK_MANNSCHAFT_CHEFTRAINER FOREIGN KEY
(
  CHEFTRAINER
)
REFERENCES FBV_TRAINER
(
PERSNR
) ENABLE
;

ALTER TABLE FBV_MANNSCHAFT
ADD CONSTRAINT FK_MANNSCHAFT_ASSISTENT FOREIGN KEY
(
  ASSISTENT
)
REFERENCES FBV_TRAINER
(
PERSNR
) ENABLE
;

ALTER TABLE FBV_MANNSCHAFT
ADD CONSTRAINT FK_MANNSCHAFT_KAPITAEN FOREIGN KEY
(
  KAPITAEN
)
REFERENCES FBV_SPIELER
(
PERSNR
) ENABLE
;

ALTER TABLE FBV_EINSATZ
ADD CONSTRAINT FK_EINSATZ_SPIEL FOREIGN KEY
(
  DATUM,
  MANNSCHAFT
)
REFERENCES FBV_SPIEL
(
DATUM,
MANNSCHAFT
) ENABLE
;

ALTER TABLE FBV_EINSATZ
ADD CONSTRAINT FK_EINSATZ_SPIELER FOREIGN KEY
(
  SPIELER
)
REFERENCES FBV_SPIELER
(
PERSNR
) ENABLE
;

ALTER TABLE FBV_SPIELEN
ADD CONSTRAINT FK_SPIELEN_MANNSCHAFT FOREIGN KEY
(
  MANNSCHAFT
)
REFERENCES FBV_MANNSCHAFT
(
BEZEICHNUNG
) ENABLE
;

ALTER TABLE FBV_SPIELEN
ADD CONSTRAINT FK_SPIELEN_SPIELER FOREIGN KEY
(
  SPIELER
)
REFERENCES FBV_SPIELER
(
PERSNR
) ENABLE
;

ALTER TABLE FBV_BETREUEN
ADD CONSTRAINT FK_BETREUEN_FANCLUB FOREIGN KEY
(
  SID,
  FANCLUBNAME
)
REFERENCES FBV_FANCLUB
(
SID,
NAME
) ENABLE
;

ALTER TABLE FBV_BETREUEN
ADD CONSTRAINT FK_BETREUEN_ANGESTELLTER FOREIGN KEY
(
  BETREUER
)
REFERENCES FBV_ANGESTELLTER
(
PERSNR
) ENABLE
;

ALTER TABLE FBV_PERSON
ADD CONSTRAINT SYS_C00135613 CHECK
(geschlecht IN ('M','W'))
 ENABLE
;

ALTER TABLE FBV_SPIEL
ADD CONSTRAINT SYS_C00135678 CHECK
(ergebnis IN ('Sieg','Unentschieden','Niederlage'))
 ENABLE
;

ALTER TABLE FBV_EINSATZ
ADD CONSTRAINT CHECK_EINSATZ_DAUER CHECK
(dauer BETWEEN 1 AND 90)
 ENABLE
;

CREATE SEQUENCE FBV_PERSNR_SEQUENCE 
  INCREMENT BY 2 
  MAXVALUE 99999 
  MINVALUE 10000 
  CACHE 20 ;
CREATE SEQUENCE FBV_SID_SEQUENCE 
  INCREMENT BY 1 
  MAXVALUE 999999999999999999999999999 
  MINVALUE 1 
  CACHE 20 ;