PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Normalisierung


Hardwaretoaster
2006-04-28, 15:06:51
Tja, hier geht's um um Normalisierung (nach Codd):
Ursprünglich gegeben ist: Tabelle( Kunde, PLZ/Ort, Gekauftes Produkte, Besteller)
Nach ein bischcen hin und hernormalisieren (die spare ich mri mal) kommt der jenige auf:

Kundentabelle(Knr, Kunde, Besteller, PLZ)
PLZ(PLZ, Ort)
Produkt (PNr, Produkt)
Bestellung (BNr, KNr)
Bestelltes (BNr, PNr)

Passt das so? Insbesondere bei dem Kram für die Bestellung bin ich mri da unsicher...
Wäre gut, wenn jemand helfen könnte ;)


Fettgedruckt bedeutet übrigens, dass es die Entität ist, Unterstrichen ist der PRimärschlüssel, beim letzten ist der NICHT festgelegt)

Monger
2006-04-28, 15:27:03
Wenn alles richtig ist, sollte ja alles zueinander in 1:n Beziehungen stehen, und der Primärschlüssel eindeutig sein...

Kundentabelle - PLZ: n:1
Jeder Kunde hat eine Postleitzahl, eine Postleitzahl gilt für einen oder mehrere Kunden.

Bestelltes - Produkt: n:m ???
Jede Bestellung besteht aus mindestens einem Produkt, jedes Produkt lässt sich mindestens einer Bestellung zuordnen.

Bestellung - Bestelltes: n:1
Jede Bestellung gehört zu einem Kunden, jeder Kunde hat eine oder mehrere Bestellungen.


Ich bin nicht der Held bei Datenbankennormalisierungen, aber irgendwas finde ich noch schief. Erstmal würde ich mir nochmal Gedanken über die Namen machen. "Bestelltes" ist imho sowas wie eine "Einkaufsliste" oder so. Außerdem ist imho Bestelltes zu Produkt keine 1:n Beziehung. Ein Produkt kann in mehreren Bestelllisten auftauchen, eine Bestellliste kann mehrere Produkte enthalten (mal ganz abgesehen davon, dass momentan davon ausgegangen wird, dass man ein Produkt immer nur einmal kauft). Die Liste bräuchte mindestens noch einen eindeutigen Schlüssel.

Hardwaretoaster
2006-04-28, 15:56:06
Also von dem Namen "Bestelltes" können wir mal absehen, der ist eher zweitrangig.(wir können's auch ändern, wenn so irritiert, ist ja nur ein Gedankenexperiment)
Aber mit den Produkten etc. komme ich mit dir überein, hatte schon das Gefühl (ja, klingt blöd) dass da was nicht passt, nur hätte ich auch keine Idee, wie ich das rumbiege...

Monger
2006-04-28, 16:07:27
Ich setz einfach nochmal von vorne an:

Bestellungen(Bestellnummer, Produktnr)
Produkte (Produktnummer, Produktname)
Kunden(Kundennr, Kundenname, PLZ)

Was ist denn eigentlich mit "Besteller" gemeint?


... wenn ich so drüber nachdenke, brauchst du - zumindest laut der Aufgabenstellung - keine Bestelllisten. Du machst einfach eine direkte Zuordnung zwischen Kunden und bestellten Produkten:

Bestellungen(Kundennr, Produktnummer)

Jeder Kunde bestellt ein oder mehr Produkte, jedes bestellte Produkt wurde durch einen Kunden bestellt.

Eine Gliederung in einzelne Bestellungen brauchst du nur, wenn du Lieferungen zusammenfassen willst, so wie z.B. Amazon das macht. Aber ich sehe keinen Hinweis darauf, dass das nötig ist.

Hardwaretoaster
2006-04-28, 16:12:23
Besteller ist der Ansprechpartner, wenn z.B. eine Firma bestellet.

Ja, die Aufgabe ist sehr schwammig formuliert, der der usn das beibringen soll ist selbst nicht die Leuchte...
Ok, die einfacvhe Lösung leuchtet mir ein, was wäre dann der Schlüssel?
Wie ging's denn mit Zusammenfassungen?

Monger
2006-04-28, 16:21:53
Ich glaub ich sag jetzt besser nix mehr, ich bin selber ausreichend verwirrt...

Kann hier nicht jemand was dazu sagen, der das wirklich KANN? :D

Neomi
2006-04-28, 17:38:33
Bestelltes (BNr, PNr, Anzahl)

So würde ich das lösen. Ein Posten einer Bestellung ist eindeutig gekennzeichnet über die Bestellung, in der er sich befindet und das Produkt. Da dann kein Produkt mehrfach in einer Bestellung auftauchen kann, wird das über die Anzahl abgefangen.

Alternativ kannst du jedem Posten eine ID zuweisen, dann kommst du mit einem einzelnen Schlüssel statt einer Kombination aus.

Hardwaretoaster
2006-04-28, 17:43:09
Oh, es gibt kombinierte Schlüssel, das hat man uns auch noch nicht gesagt... :biggrin:
In Kombination mit der Anzahl klingt das gut, sollte auch praktisch funzzen.