Datenbank erstellen, Probleme mit Primärschlüsseln?

... komplette Frage anzeigen

2 Antworten

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 bewerten Vielen Dank für Deine Bewertung

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ß

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?