USE project;

CREATE TABLE IF NOT EXISTS Produkt
(
    ProduktID   int AUTO_INCREMENT,
    Produktname VARCHAR(100),
    vegetarisch tinyint(1),
    vegan       tinyint(1),
    primary key (ProduktID)
);

CREATE TABLE IF NOT EXISTS Naehrstoff
(
    ProduktID     int,
    Eiweiss       int,
    Kohlenhydrate int,
    Fett          int,
    foreign key (ProduktID) references Produkt (ProduktID),
    primary key (ProduktID)
);

CREATE TABLE IF NOT EXISTS Allergen
(
    AllergenID          int AUTO_INCREMENT,
    Allergenbezeichnung varchar(100),
    primary key (AllergenID)
);

CREATE TABLE IF NOT EXISTS Naehrwerte
(
    ProduktID int,
    Brennwert int,
    foreign key (ProduktID) references Produkt (ProduktID),
    primary key (ProduktID)
);

CREATE TABLE IF NOT EXISTS Zusatzstoffklase
(
    Anwendungsgrund            varchar(5),
    Anwendungsgrundbezeichnung varchar(100),
    primary key (Anwendungsgrund)
);

CREATE TABLE IF NOT EXISTS Zusatzstoff
(
    E_Nummer               varchar(5),
    Zusatzstoffbezeichnung varchar(100),
    primary key (E_Nummer)
);

CREATE TABLE IF NOT EXISTS Menge
(
    MengenID        int AUTO_INCREMENT,
    ProduktID       int,
    Portionsgroesse varchar(100),
    Menge           int,
    Einheit         varchar(100),
    primary key (MengenID),
    foreign key (ProduktID) references Produkt (ProduktID)
);

CREATE TABLE IF NOT EXISTS Person
(
    PersonID        int AUTO_INCREMENT,
    Personenname    varchar(100),
    Personenvorname varchar(100),
    Naehrwertziel   int,
    Ernaerungsstil  varchar(100),
    primary key (PersonID)
);

CREATE TABLE IF NOT EXISTS Menu
(
    MenuID   int AUTO_INCREMENT,
    Menuname varchar(100),
    primary key (MenuID)
);

CREATE TABLE IF NOT EXISTS Menucontent
(
    MenuID    int,
    ProduktID int,
    foreign key (MenuID) references Menu (MenuID),
    foreign key (ProduktID) references Produkt (ProduktID),
    primary key (MenuID, ProduktID)
);

CREATE TABLE IF NOT EXISTS Allergie
(
    PersonID   int,
    AllergenID int,
    foreign key (PersonID) references Person (PersonID),
    foreign key (AllergenID) references Allergen (AllergenID),
    primary key (PersonID, AllergenID)
);

CREATE TABLE IF NOT EXISTS enthaeltZusatzstoff
(
    ProduktID       int,
    E_Nummer        varchar(5),
    Anwendungsgrund varchar(5),
    foreign key (ProduktID) references Produkt (ProduktID),
    foreign key (E_Nummer) references Zusatzstoff (E_Nummer),
    foreign key (Anwendungsgrund) references Zusatzstoffklase(Anwendungsgrund),
    primary key (ProduktID, E_Nummer, Anwendungsgrund)
);

CREATE TABLE IF NOT EXISTS Zusatzstoffunvertraeglichkeit
(
    PersonID int,
    E_Nummer varchar(5),
    foreign key (PersonID) references Person (PersonID),
    foreign key (E_Nummer) references Zusatzstoff (E_Nummer),
    primary key (PersonID, E_Nummer)
);

CREATE TABLE IF NOT EXISTS enthaeltAllergen
(
    AllergenID int,
    ProduktID  int,
    spuren_von tinyint(1),
    foreign key (AllergenID) references Allergen (AllergenID),
    foreign key (ProduktID) references Produkt (ProduktID),
    primary key (AllergenID, ProduktID)
);

CREATE TABLE IF NOT EXISTS konsumiert
(
    TransaktionsID int AUTO_INCREMENT,
    PersonID       int,
    MenuID         int,
    Datum          datetime,
    foreign key (PersonID) references Person (PersonID),
    foreign key (MenuID) references Menu (MenuID),
    primary key (TransaktionsID)
)