Was mache ich bei der SQL Abfrage falsch?


05.09.2023, 12:01

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.)

BONEz851 
Fragesteller
 05.09.2023, 14:42

Hi danke für deine Antwort. Mein Struktur findest du in dieser gutefrage Frage Ist das in allen Normalformen, SQL? (Datenbank, SQL) - gutefrage

0
ElvanL77  05.09.2023, 15:38
@BONEz851

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 ;)

1
BONEz851 
Fragesteller
 05.09.2023, 15:46
@ElvanL77
  • 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
0
BONEz851 
Fragesteller
 05.09.2023, 15:47
@ElvanL77

Dennoch Danke dir, das ist richtige Kritik und deswegen habe ich ja die Frage gestellt

1

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.

BONEz851 
Fragesteller
 05.09.2023, 12:07

ah okay, ich probiere mein glück

0