Frage von Gulo23, 34

Datenbank erstellen, Probleme mit Primärschlüsseln?

Hallo,

Ich versuche eine Datenbank zu erstellen, aber es gibt Daten, die sich in der Tabelle wiederholen, da ein Kunde verschiedene Dinge bestellt und deshab mehrere Bestellungen aufgibt. Ich kann deshalb die Primärschlüssel nicht festlegen. Ich brauche diese aber, weiss jemand, wie ich das hinkriegen kann?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von wotan38, 13

Du kannst zum Primärschlüssel noch das Bestelldatum dazunehmen. Damit könntest Du für einen Kunden pro Tag eine Bestellung anlegen. Du kannst aber auch eine Bestell-Nr vergeben und diesen als Primärschlüssel verwenden. Dann hast eine Kundentabelle mit den Kundendaten und dem Primärschlüssel Kunden-Nr und eine Bestelltabelle mit den Bestelldaten und als Primärschlüssel die Bestell-Nr.

Mir scheint, Du hast das Prinzip der relationalen Datenbank nicht verstanden. Denn diese ist genau für solche Aufgaben geschaffen. Du musst aber die Datenbank richtig konzipieren.

Bei Dir ist Kunde gleich Bestellung. das ist doch falsch. Du hast einen Kunden, der Bestellungen aufgibt, und zwar mehmals. Auch wenn die Zahl der Bestellungen steigt, bleibt der Kunde einmalig. Wenn der selbe Kunde zweimal bestellt, hast Du deswegen nicht zwei Kunden. Das musst Du in Deinem Datenbankkonzept auch zum Ausdruck bringen. Alles was einmalig ist, gehört in eine eigene Tabelle mit einer Identifikation, die für seine Einmaligkeit steht. Das können auch Vorgänge sein, die aus Kombinationen von einmaligen Objekten gebildet werden, die insgesamt dann wieder einmalig sein müssen.

Beispiel:

Du hast einen Kunden, der einmalig ist > Kundentabelle, Primärschlüssel ist Kunden-Nr.

Du hast einen Artikel zum Verkaufen, der einmalig ist > Artikeltabelle, Primärschlüssel ist Artikel-Nr.

Du hast eine Bestellung, die einmalig ist > Bestelltabelle, Primärschlüssel ist Bestell-Nr.

Jetzt kannst eine Tabelle mit Bewegungsdaten mit dem Primärschlüssel aus Kunden-Nr, Bestell-Nr und Artikel-Nr einrichten.

Alle Daten des Kunden kommen in die Kundentabelle, alle Daten des Artikels in die Artikeltabelle und alle Daten der Bestellung in die Bestelltabelle.

Durch entsprechende Verknüpfung kommst Du ohne Mehrfachspeicherung an alle Deine Daten in der gewünschten Kombination dran.

Falls ein Kunde zwei Stück eines Artikels bestellt, kann dieser nur einmal gespeichert werden. Man kann das dann durch die Zusatzangabe Anzahl lösen. Zum mehrfachen Speichern, falls dies nötig wäre, müsste man die gleichen Artikel einer Bestellung mit einer aufsteigenden im Primärschlüssel positionierten laufenden Nummer versehen.


Antwort
von Tschoo, 12

Hallo!

So wie sich deine Aussage anhört, willst du den Kundennamen zum Primärschlüssel machen?

Das geht schon, aber du brauchst mehrere Tabellen. Eine mit Kundennamen, diese hat eine Spalte Kundennummer. So hast du den Kundennamen als Primärschlüssel.

Die zweite Tabelle ist die Bestelltabelle -- genauso, wie sie jetzt ist, nur statt Kundennamen die Kundennummer. Dieser Tabelle fügst du eine zusätzliche Spalte dazu, meinetwegen lfd.Nr EingangBestellung, nach jedem Eingang um 1 hochzählen -- so hast du deinen Primärschlüssel für die Bestelltabelle.

Gruß

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten