M4 A4 SQL Nebenbedingungen
This commit is contained in:
@@ -84,3 +84,60 @@ echo $ausgabe["COUNT(id)"];
|
|||||||
echo htmlspecialchars($ausgabe["COUNT(id)"]);
|
echo htmlspecialchars($ausgabe["COUNT(id)"]);
|
||||||
````
|
````
|
||||||
Bei der Newsletteranmeldung sollte man sich auch ggf. überlegen, wie man die Eingaben prüft un zu vermeiden, das schadhafter Code gespeichert und später abgerufen wird.
|
Bei der Newsletteranmeldung sollte man sich auch ggf. überlegen, wie man die Eingaben prüft un zu vermeiden, das schadhafter Code gespeichert und später abgerufen wird.
|
||||||
|
|
||||||
|
# Aufgabe 4
|
||||||
|
1. Eindeutigkeit für die Kombination aus Gericht und Kategorie sicherstellen
|
||||||
|
````sql
|
||||||
|
ALTER TABLE gericht_hat_kategorie
|
||||||
|
ADD CONSTRAINT gericht_kategorie_unique UNIQUE (gericht_id, kategorie_id);
|
||||||
|
````
|
||||||
|
2. In der Tabelle gericht soll eine Abfrage nach Name beschleunigt werden.
|
||||||
|
````sql
|
||||||
|
ALTER TABLE gericht
|
||||||
|
ADD INDEX idx_name (name);
|
||||||
|
````
|
||||||
|
3. Bei Löschung eines Gerichts sollen
|
||||||
|
1) die zugehörigen Zuordnungen zu einer Kategorie sowie
|
||||||
|
````sql
|
||||||
|
ALTER TABLE gericht_hat_kategorie
|
||||||
|
DROP FOREIGN KEY gericht_hat_kategorie_ibfk_1, -- (gericht_id) -> gericht(id)
|
||||||
|
ADD CONSTRAINT gericht_hat_kategorie_ibfk_1_new
|
||||||
|
FOREIGN KEY (gericht_id) REFERENCES gericht(id)
|
||||||
|
ON DELETE CASCADE;
|
||||||
|
````
|
||||||
|
2) die zugehörigen Zuordnungen zu Allergenen automatisch mit gelöscht werden.
|
||||||
|
````sql
|
||||||
|
ALTER TABLE gericht_hat_allergen
|
||||||
|
DROP FOREIGN KEY gericht_hat_allergen_ibfk_2, -- (gericht_id) -> gericht(id)
|
||||||
|
ADD CONSTRAINT gericht_hat_allergen_ibfk_2_new
|
||||||
|
FOREIGN KEY (gericht_id) REFERENCES gericht(id)
|
||||||
|
ON DELETE CASCADE;
|
||||||
|
````
|
||||||
|
4. Eine Kategorie kann nur dann gelöscht werden, wenn
|
||||||
|
1) dieser keine Gerichte zugeordnet sind und
|
||||||
|
````sql
|
||||||
|
ALTER TABLE gericht_hat_kategorie
|
||||||
|
ADD CONSTRAINT fk_gericht_hat_kategorie_kategorie_id
|
||||||
|
FOREIGN KEY (kategorie_id) REFERENCES kategorie(id)
|
||||||
|
ON DELETE RESTRICT;
|
||||||
|
````
|
||||||
|
2) diese keine Kindkategorien besitzt.
|
||||||
|
````sql
|
||||||
|
ALTER TABLE kategorie
|
||||||
|
ADD CONSTRAINT fk_kategorie_eltern_id
|
||||||
|
FOREIGN KEY (eltern_id) REFERENCES kategorie(id)
|
||||||
|
ON DELETE RESTRICT;
|
||||||
|
````
|
||||||
|
5. Wird der Code eines Allergens verändert, so ändert sich dieser Code automatisch in den referenzierenden Datensätzen.
|
||||||
|
````sql
|
||||||
|
ALTER TABLE gericht_hat_allergen
|
||||||
|
DROP FOREIGN KEY gericht_hat_allergen_ibfk_1, -- (code) -> allergen(code)
|
||||||
|
ADD CONSTRAINT gericht_hat_allergen_ibfk_1_new
|
||||||
|
FOREIGN KEY (code) REFERENCES allergen(code)
|
||||||
|
ON UPDATE CASCADE;
|
||||||
|
````
|
||||||
|
6. Eine Kombination aus ``gericht_id`` und ``kategorie_id`` in ``gericht_hat_kategorie`` soll als Primärschlüssel dienen.
|
||||||
|
````sql
|
||||||
|
ALTER TABLE gericht_hat_kategorie
|
||||||
|
ADD PRIMARY KEY (gericht_id, kategorie_id);
|
||||||
|
````
|
||||||
Reference in New Issue
Block a user