Zusammengesetzter Schlüssel

Mariexshx

Fleissiger Benutzer
Beiträge
57
Wenn ich die Tabelle beinhaltet erstellen will mit(rezeptid, zutatid, mengenangabe)
Wobei rezeptid und zutatenid primär und fremdschlüssel sind. Wie mache ich das dann im Create Befehl Primary key(rezeptid, zutatenid) und foreign key(rezepid, zutatenid)? Oder anders ?
 
Werbung:
Nur der PK ist ein zusammengesetzter Schlüssel, die FKs sind je eigenständig.

Code:
CREATE TABLE beinhaltet (
    rezeptid INT NOT NULL FOREIGN KEY REFERENCES rezepte(id),
    zutatid INT NOT NULL FOREIGN KEY REFERENCES zutaten(id),
    menge INT NOT NULL,
    PRIMARY KEY (rezeptid, zutatid)
);
 
Wenn du es wirklich weiter entwickeln willst musst du dir immer wieder Fragen stellen die du nur durch Logik beantworten kannst. Ich backe nicht sehr oft aber ich weiß das Eier mal für den Teig, mal für die Füllung oder für beides gebraucht werden. Wenn du das berücksichtigst, könntest du zu dem Schluss kommen das dein zusammengesetzter PK ein Problem darstellt, du könntest eine Position Eier für Teig, und eine Position Eier für Füllung in der selben Tabelle anlegen wollen. Hier würde man in der Datenbanklehre her gehen und das Unterscheidungsmerkmal Teig/Füllung als Spalte anlegen und mit als PK definieren.
 
Die Tabelle mit den Spalten war so vorgegeben
Wenn du es wirklich weiter entwickeln willst musst du dir immer wieder Fragen stellen die du nur durch Logik beantworten kannst. Ich backe nicht sehr oft aber ich weiß das Eier mal für den Teig, mal für die Füllung oder für beides gebraucht werden. Wenn du das berücksichtigst, könntest du zu dem Schluss kommen das dein zusammengesetzter PK ein Problem darstellt, du könntest eine Position Eier für Teig, und eine Position Eier für Füllung in der selben Tabelle anlegen wollen. Hier würde man in der Datenbanklehre her gehen und das Unterscheidungsmerkmal Teig/Füllung als Spalte anlegen und mit als PK definieren.
 
Wenn du es wirklich weiter entwickeln willst musst du dir immer wieder Fragen stellen die du nur durch Logik beantworten kannst. Ich backe nicht sehr oft aber ich weiß das Eier mal für den Teig, mal für die Füllung oder für beides gebraucht werden. Wenn du das berücksichtigst, könntest du zu dem Schluss kommen das dein zusammengesetzter PK ein Problem darstellt, du könntest eine Position Eier für Teig, und eine Position Eier für Füllung in der selben Tabelle anlegen wollen. Hier würde man in der Datenbanklehre her gehen und das Unterscheidungsmerkmal Teig/Füllung als Spalte anlegen und mit als PK definieren.
ich glaube, das geht dann doch zu weit. Wo die Eier reinkommen ist dann Bestandteil der Rezeptbeschreibung, die 'beinhaltet' - Tabelle beinhaltet die Mengen, die insgesamt benötigt werden.
 
ich glaube, das geht dann doch zu weit.
Das glaube ich auch.

An solchen Stellen ist es wahrscheinlich auch ratsam, das Lernmaterial parat zu haben und Analogien aus dem Unterricht oder Übungsaufgaben einzubeziehen.
Außerdem machen solche Beispiele auch klar, dass meist nicht nur einen Weg gibt, eine Aufgabe umzusetzen. Irgendwo muss man eine Grenze zwischen Modell und Wirklichkeit ziehen. Was könnte ich alles abbilden und wie komplex soll/ darf es denn werden.
 
Werbung:
Ich finde das ist ein gutes Beispiel um genau die Probleme in der Realtiät zu zeigen. Datenbanken wachsen und jeder Entwickler tut gut daran darüber nach zu denken was er da eigentlich baut und ob das auch zukünftigen Anforderungen noch gerecht wird.
 
Zurück
Oben