Normalisierung

MasterMK

Benutzer
Beiträge
6
Hi Zusammen,

Ich habe irgendwie einen Hänger. Es ist sehr simpel, aber irgendwie sehe ich vor lauter Bäumen den Wald nicht mehr.


Ich habe eine Tabelle, die ich in die erste Normalform bringen möchte.
Hier ist folgende Datenzeile enthalten:


Name Beruf Hobby. PLZ
Anton,Berta Maurer,Maler Fussball,Boxen 89762


Wenn ich diese Zeile normalisieren möchte, was ist korrekt?


Variante 1)

Name Beruf Hobby. PLZ
Anton Maurer Fussball 89762
Berta Maler Boxen 89762

Variante 2)

Name Beruf Hobby. PLZ
Anton Maurer Fussball 89762
Anton Maurer Boxen 89762
Anton Maler Fussball 89762
Anton Maler Boxen 89762
Berta Maurer Fussball 89762
Berta Maurer Boxen 89762
Berta Maler Fussball 89762
Berta Maler Boxen 89762



Danke euch schonmal.
 
Werbung:
Hi Zusammen,

Ich habe irgendwie einen Hänger. Es ist sehr simpel, aber irgendwie sehe ich vor lauter Bäumen den Wald nicht mehr.


Ich habe eine Tabelle, die ich in die erste Normalform bringen möchte.
Hier ist folgende Datenzeile enthalten:


Name Beruf Hobby. PLZ
Anton,Berta Maurer,Maler Fussball,Boxen 89762


Wenn ich diese Zeile normalisieren möchte, was ist korrekt?

Keine der beiden. Du brauchst mehr Tabellen. Eine für die Personen, da ist dann Name und PLZ drin. Eine für die Berufe. Eine für die Hobbys. Eine für die Verbindung Person zu Beruf. Eine für die Verbindung Person zu Hobby.

Das ganze mit Primary und Foreign Keys herzhaft abschmecken.
 
Hi. Ich sehe, ich war nicht genau genug :)

Die Zielform habe ich und zwar genau so.

Nur will ich die Zeile in die erste NF bringen, sodass alles atomar ist.
 
Du brauchst mehr Tabellen.
Wäre es eine Prüfungsfrage wäre deine Antwort falsch. Bezogen auf das vorgegebene Datenmodell sind Beruf, Hobby und PLZ funktional vom Schlüssel Name abhängig.

Praxistauglich wäre das allerdings noch lange nicht. Und da hättest du dann auch vollkommen recht. :)

Wenn ich diese Zeile normalisieren möchte, was ist korrekt?
Nur will ich die Zeile in die erste NF bringen, sodass alles atomar ist.
Naja, das ist die eigentlich Aufgabe :)

Was denkst du? Und vor allem: Warum?

Ob du richtig liegst verraten wir dir dann schon. ;)
 
Die einzelnen Werte in den Attributen sind ja nicht klar definiert, zu wem die Gehören, daher die maximale Möglichkeit über das kartesische Produkt.

Aber das ist genau der Punkt, wo ich zweifle, ob ich richtig liege, oder nicht.
 
Dass es sinnvoll ist, sagte ich nicht. Im Zielzustand verschwindet es ja ohnehin.

Nach deinem Kommentar ist Variante 1 richtig, oder?
Warum muss ich denn hier nicht das kartesische Produkt bilden ?
 
Das stimmt auch wieder.
Ich produziere unnotige Datensätze, die nicht sinnvoll sind.

Also zurück zu Variante 1 :)

Danke dir. Das hat mir aufjedenfall schonmal geholfen.
 
Hallo

ich habe folgende Tabelle:

Buch: B_ID*, ISBN, Titel, Autor_ID, Verlag_ID, PLZ, Jahr, Ausgabe, Art_ID

B_ID ist Primärschlüssel und die unterstrichenen sind Fremdschlüssel und somit in weiteren Tabellen definiert.
Mit dem Jahr hab ich aber ein Problem. Mir wurde mitgeteilt, dass Jahr nicht einfach so stehen gelassen werden kann.
Ich kann das aber nicht nachvollziehen (Fragen kann ich meinen Kritiker nicht :-().

Wie seht ihr das... kann Jahr tatsächlich nicht so stehen bleiben und wenn nein. Wie müsste ich das lösen?
Müsste ich eine Hilfsentität (zB Buch_Jahr: ISBN_Jahr*, ISBN, Jahr) schaffen, wenn ja ist das erlaubt dass die Fremdschlüssel exakt auf die Tabelle verweisen, in welcher der Primärschlüssel der Hilfsentität als Fremdschlüssel steht?

Vielen Dank vorab und hg

Marla
 
Ich habe gerade ein kleines Verständnisproblem.
1. Was sucht die Postleitzahl in deiner Tabelle ? Sollte die nicht eher beim Autor hinterlegt sein?
2. Was soll dein "Jahr" darstellen? Das Veröffentlichungsjahr des ursprünglichen Buches? Dann passt es...
Ich sehe aber schon eine Spalte "Ausgabe" die da nicht hingehört und wenn dein "Jahr" das Veröffentlichungsjahr der Ausgabe ist, dann muss das "Jahr" leider auch weichen :)
 
ich bin auch noch relativer Neuling in Sachen Datenbank. Und ich hab gelernt, dass ich Ort nicht einfach so isoliert irgendwo reinstellen kann. Also muss ich der Klarheit halber eine eigene Entität Ort mit den Attributen PLZ als Primärschlüssel und Ortsname erstellen. PLZ dient dann in den anderen Tabellen als Fremdschlüssel. Stimmt das nicht? Hab ich da was falsch verstanden?

Das Jahr soll das Erscheinungsjahr darstellen. Hätt ich demanch eine eigene Hilfstabelle mi Erscheinungsjahr und Auflage machen müssen.
ZB in der Art: Erscheinung: Erscheinungs_ID*, Jahr, Auflage ... und dann die ID als Fremdschlüssel in die Buch Tabelle ...wäre das so richtig?
Herzlichen Dank vorab

Marla
 
Werbung:
Das ist Grundsätzlich schon richtig. Aber willst du deinem Buch einen eindeutigen Ort zuweisen? Also weißt du immer in welchem Ort der Autor das Buch geschrieben hat? Vllt. hat er ja auch ne Weltreise gemacht und das Buch während dessen geschrieben? Versuch das mal zuzuweisen... Ich denke die Information Ort ist in diesem Fall unnötig? :)


Da ein Buch verschiedene Auflagen und verschiedene Auflagen verschiedene Erscheinungsjahre haben können, musst du, wie du schon richtig erkannt hast, das ganze in einer anderen Tabelle darstellen.

Das sieht ungefähr so aus:

Tabelle: Buch
- B_ID*
- ISBN
- Titel
- Autor_ID
- Verlag_ID
- Art_ID

Tabelle: Ausgabe
- B_ID*
- Ausgabe_ID*
-Erscheinungsjahr

In diesem Fall bilden sowohl der Fremdschlüssel B_ID als auch der Wert Ausgabe_ID den Primärschlüssel.

Leider kenne ich mich nicht genug mit Büchern aus, um zu sagen ob die anderen Spalten alle richtig stehen.
 
Zurück
Oben