CREATE DATABASE IF NOT EXISTS FI11x_ByceDB;
USE FI11x_ByceDB;
DROP TABLE IF EXISTS lieferungen;
DROP TABLE IF EXISTS lagerbestand;
DROP TABLE IF EXISTS teile_werke;
DROP TABLE IF EXISTS werke;
DROP TABLE IF EXISTS lager;
DROP TABLE IF EXISTS auftragspositionen;
DROP TABLE IF EXISTS auftraege;
DROP TABLE IF EXISTS kunden;
DROP TABLE IF EXISTS angestellte;
DROP TABLE IF EXISTS abteilungen;
DROP TABLE IF EXISTS lieferanten;
DROP TABLE IF EXISTS teile;
#
CREATE TABLE Angestellte (
Ang_Nr NUMERIC(38) NOT NULL,
Abt_Nr NUMERIC(38),
Beruf VARCHAR(50) NOT NULL,
Nachname VARCHAR(50) NOT NULL,
Vorname VARCHAR(50) NOT NULL,
Geschlecht CHAR(1) NOT NULL,
Eintrittsdatum DATE,
Gehalt NUMERIC(9 , 2 ) DEFAULT 0,
Abzuege NUMERIC(9 , 2 ) DEFAULT 0,
Ort VARCHAR(50),
Strasse VARCHAR(50),
Zeitstempel TIMESTAMP NOT NULL
);
CREATE TABLE Abteilungen (
Abt_Nr NUMERIC(38) NOT NULL,
Leiter NUMERIC(38) NOT NULL,
Name VARCHAR(50) NOT NULL,
Ort VARCHAR(50)
);
CREATE TABLE Auftraege (
AuftragsNr NUMERIC(38) NOT NULL,
Auftrags_Typ VARCHAR(50) NOT NULL,
Kun_Nr NUMERIC(38) NOT NULL,
Ang_Nr NUMERIC(38),
Bereits_Gezahlt NUMERIC,
Bestelldatum DATE,
Lieferdatum DATE,
Rechnungsdatum DATE,
Zeitstempel TIMESTAMP NOT NULL
);
CREATE TABLE Auftragspositionen (
TNr NUMERIC(38) NOT NULL,
AuftragsNr NUMERIC(38) NOT NULL,
Menge NUMERIC
);
CREATE TABLE Kunden (
Kun_Nr NUMERIC(38) NOT NULL,
Nachname VARCHAR(50) NOT NULL,
Vorname VARCHAR(50) NOT NULL,
Geschlecht VARCHAR(1),
Ort VARCHAR(50),
Strasse VARCHAR(50),
TelefonNr VARCHAR(50),
Zeitstempel TIMESTAMP
);
CREATE TABLE Lieferanten (
Lief_Nr NUMERIC(38) NOT NULL,
Name VARCHAR(50) NOT NULL,
Ort VARCHAR(50) NOT NULL,
Strasse VARCHAR(50) NOT NULL,
TelefonNr VARCHAR(50),
Zeitstempel TIMESTAMP
);
CREATE TABLE Lieferungen (
Liefer_Nr INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
Lief_Nr NUMERIC(38),
TNr NUMERIC(38) NOT NULL,
Lief_Datum DATE NOT NULL,
Menge NUMERIC DEFAULT 1 NOT NULL,
Zeitstempel TIMESTAMP NOT NULL
);
CREATE TABLE Teile (
TNr NUMERIC(38) NOT NULL,
Me VARCHAR(10),
Bezeichnung VARCHAR(50),
Typ VARCHAR(50),
Herstellkosten NUMERIC,
Einkaufspreis NUMERIC,
Mindestbestand NUMERIC,
Bestand NUMERIC,
Lieferzeit NUMERIC,
Herstelldauer NUMERIC,
Gewicht NUMERIC,
Reserviert NUMERIC,
Verfuegbar NUMERIC,
Zeitstempel TIMESTAMP
);
CREATE TABLE Teile_Werke (
TNr NUMERIC(38) NOT NULL,
WNr NUMERIC(38) NOT NULL
);
CREATE TABLE Werke (
WNr NUMERIC(38) NOT NULL,
Bezeichnung VARCHAR(50),
Ort VARCHAR(50) NOT NULL,
Strasse VARCHAR(50) NOT NULL
);
ALTER TABLE Abteilungen
ADD CONSTRAINT ABT_PK PRIMARY KEY (Abt_Nr);
ALTER TABLE Angestellte
ADD CONSTRAINT ANG_PK PRIMARY KEY (Ang_Nr);
ALTER TABLE Auftraege
ADD CONSTRAINT AU_PK PRIMARY KEY (AuftragsNr);
ALTER TABLE Auftragspositionen
ADD CONSTRAINT AR_AU_PK PRIMARY KEY (TNr,AuftragsNr);
ALTER TABLE KUNDEN
ADD CONSTRAINT KUN_PK PRIMARY KEY (Kun_Nr);
ALTER TABLE Lieferanten
ADD CONSTRAINT LIEF_PK PRIMARY KEY (Lief_Nr);
ALTER TABLE Teile
ADD CONSTRAINT T_PK PRIMARY KEY (TNr);
ALTER TABLE Teile_Werke
ADD CONSTRAINT T_WE_PK PRIMARY KEY (TNr,WNr);
ALTER TABLE Werke
ADD CONSTRAINT WE_PK PRIMARY KEY (WNr);
ALTER TABLE Angestellte
ADD CONSTRAINT ANG_ABT_FK FOREIGN KEY(Abt_Nr) REFERENCES Abteilungen(Abt_Nr);
ALTER TABLE Auftraege
ADD CONSTRAINT AU_KUN_FK FOREIGN KEY(Kun_Nr) REFERENCES KUNDEN(Kun_Nr);
ALTER TABLE Auftraege
ADD CONSTRAINT AU_ANG_FK FOREIGN KEY(Ang_Nr) REFERENCES Angestellte(Ang_Nr);
ALTER TABLE Auftragspositionen
ADD CONSTRAINT AR_AU_AR_FK FOREIGN KEY(TNr) REFERENCES Teile(TNr);
ALTER TABLE Auftragspositionen
ADD CONSTRAINT AR_AU_AU_FK FOREIGN KEY(AuftragsNr) REFERENCES Auftraege(AuftragsNr);
ALTER TABLE Lieferungen
ADD CONSTRAINT LG_LIEF_FK FOREIGN KEY(Lief_Nr) REFERENCES Lieferanten(Lief_Nr);
ALTER TABLE Lieferungen
ADD CONSTRAINT LG_T_FK FOREIGN KEY(TNr) REFERENCES Teile(TNr);
ALTER TABLE Teile_Werke
ADD CONSTRAINT T_WE_T_FK FOREIGN KEY(TNr) REFERENCES Teile(TNr);
ALTER TABLE Teile_Werke
ADD CONSTRAINT T_WE_WE_FK FOREIGN KEY(WNR) REFERENCES Werke(WNR);