Was mache ich bei der SQL Abfrage falsch?
Ich möchte ein Fremdschlüssel von auto (autoid) in verkaufsvertrag hinzufügen
Postgres nutze ich
2 Antworten
Dein PrimaryKey "autoID" ist nicht in der "verkaufsvertrag" Tabelle. Der Fremdschlüssel muss in beiden Tabellen existieren.
Deine Datenbank- (Tabellen-) Struktur ist ziemlich holprig.
An deiner Stelle würde ich mir nochmal die Beziehungen deiner Tabellen zueinander näher anschauen. Stichwort 1 zu 1 / 1 zu viel / viele zu viele...
Wenn einem Verkaufsvertrag (ich finde diesen Namen unglücklich gewählt, denke es ist ein Kaufvertrag) einem oder mehreren Autos zugeordnet werden kann... dann brauchst du nur die "VerkaufsvertragID" als FS in die "auto" Tabelle speichern.
Vorallem, wenn du noch mehr Beziehungen zu anderen Tabellen herstellen möchtest, endet das... wenn du so weiter machst... in einem ziemlichen Chaos ;) (nicht böse gemeint)
schau dir auch die Normalformen zur Datenbanken an... du solltest dich min. an die 3. halten. (das heisst, auch an die 1. und 2.)
Ach... die Frage hatte ich mir auch angeschaut. Deine Arbeit zu machen... wollte ich aber nicht ;) (auch wieder nicht böse gemeint, dafür ehrlich)
Nun gut... schauen wir uns das ganze mal an...
- keine Adresse für Verkäufer und Kunden (warum, macht ja gar keinen Sinn)
- unter "Verkäufer" der Punkt... "Verkaufteautos" (wie stellst du dir das vor? ID´s mit Komma getrennt? ;) )
- generell Fehlen viele, viele Daten, welche sicher nötig sind.
- schon die erste Normalform ist nicht wirklich eingehalten (atomisieren) Name sollte in Vor- und Nachname getrennt werden (in 2 Tabellen)
- die Groß- und Kleinschreibung deiner Tabellen und der Indexe, sind ein wirklicher Graus Stichwort: einheitlich / Benennungsregeln anschauen
... usw.
Will auch nicht kleinkariert sein, aber da musst du nochmal ran.
P.S. Ich helfe ja gerne, aber ich mache nicht die Arbeit für dich... wenigstens nicht umsonst ;)
- Keine adresse da die nur zu Test zwecken sind und als Lückenfüller gelten.
- Verkaufteeautos macht tatsächlich kein sinn
- das mit den Vor und Nachname habe ich tatsächlich auch gesehen, aber erst nach der frage.
- und ja die groß und kleinschreibung ist schlecht
Ein Fremdschlüssel kann nicht AUTOID sein. Der Wert wird doch nicht in dieser Tabelle erzeugt, sondern wird bereits in der Tabelle vorgegeben, in der dieser Wert der Primärschlüssel ist.
Wenn ein Primärschlüssel in einer Tabelle als AUTOID angelegt ist, gehört dieser Wert als Fremdschlüssel in der verknüpften Tabelle als INT gespeichert.
Hi danke für deine Antwort. Mein Struktur findest du in dieser gutefrage Frage Ist das in allen Normalformen, SQL? (Datenbank, SQL) - gutefrage