Frage zu Primärschlüssel bei 1NF

NoBrainDB

Aktiver Benutzer
Beiträge
30
Hallo!

Angenommen, ich habe folgende Tabelle:

(Künstler, Werk+Jahr, ArtDesBildes,Schätzwert,Raum)

Dann normalisiere ich die ja erstmal so:

(Künstler_Vorname, Künstler_Nachname, Werk, Jahr, ArtdesBildes, Schätzwert, Raum)

Gegeben folgende Daten:

Albrecht Dürer Adam und Eva 1504 Kupferstich 10.000 € Zimmer 1

Pablo Picasso Ohne Titel 1924 Druckgrafik 20.000 € Zimmer 2

Marc Chagall Paar mit Vogel 1952 Mosaik 30.000 € Zimmer 3

Pablo Picasso Ohne Titel 1924 Kupferstich 19.000 € Zimmer 2

Otto Dix Mieze 1923 Aquarell 15.000 € Zimmer 1

Habe ich dann einen Primärschlüssel aus 5 Attributen?? Unser Lehrer pocht immer darauf, dass wir natürliche Primärschlüssel nehmen, um die funktionalen Abhängigkeiten zu sehen. Aber hier macht das doch gar keinen Sinn, oder? Wie soll man denn das hier ohne Künstlichen Primärschlüssel normalisieren?
Das Einzige, was ich hier noch machen könnte, wäre, den Schätzwert und das Werk auszugliedern in eine neue Tabelle...

Wie sollte ich hier normalisieren?
 
Werbung:
Habe ich dann einen Primärschlüssel aus 5 Attributen?? Unser Lehrer pocht immer darauf, dass wir natürliche Primärschlüssel nehmen, um die funktionalen Abhängigkeiten zu sehen. Aber hier macht das doch gar keinen Sinn, oder? Wie soll man denn das hier ohne Künstlichen Primärschlüssel normalisieren?
Das Einzige, was ich hier noch machen könnte, wäre, den Schätzwert und das Werk auszugliedern in eine neue Tabelle...

Wie sollte ich hier normalisieren?

Im Gegensatz zu Deiner Annahme

"Dann normalisiere ich die ja erstmal so:
(Künstler_Vorname, Künstler_Nachname, Werk, Jahr, ArtdesBildes, Schätzwert, Raum)"

ist das schon mal NICHT normalisiert, weil fleißige Künstler mehr als nur 1 Werk veröffentlichen. Ich sehe also den Bedarf für zumindest folgende Tabellen:

  • Künstler
  • Art den Bildes
  • Raum
  • Werk

Mach bitte Deine Hausaufgaben etwas sorgfältiger!
 
Ja Moment... ich rede von der 1. Normalform... da teilt man ja erstmal alles auf und schaut dann, was der Primärschlüssel ist... Hier brauche ich ja mindestens 5 Attribute, um eine Zeile eindeutig zu identifizieren. Und im nächsten Schritt, der 2. Normalform, da würde ich ja erst anfangen, die Tabellen aufzuteilen, sofern es Spalten gibt, die nicht vom ganzen Schlüssel abhängen, oder?
 
Wiki spuckt zur ersten Normalform das aus:
"Jedes Attribut der Relation muss einen atomaren Wertebereich haben, und die Relation muss frei von Wiederholungsgruppen sein. (Anm.: statt „atomar“ wird auch die Bezeichnung „atomisch“ verwendet.) [...] Dass die Relation frei von Wiederholungsgruppen sein muss, bedeutet, dass Attribute, die gleiche oder gleichartige Information enthalten, in eine andere Relation ausgelagert werden müssen." Quelle: http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)#Erste_Normalform_.281NF.29
Das sagt wohl alles... Oder ? :)
 
DAS ist genau mein Problem!!: Wo bitte werden denn hier:
(Seite3) http://www.leiserberge.at/tgm/lehrs..._schreibwaren/normalisierung_schreibwaren.pdf
Wiederholungsgruppen in eine neue Tabelle ausgelagert?? Die werden hier in derselben Tabelle als neue ZEILEN hinzugefügt!!
Hier übrigens auch: http://www.trainside.de/Tutorial Datenbanken/Normalisierung/Erste Normalform/

Und hier auch: http://script.hans-ott.de/321nf.htm

Und erst DANACH wird für die gesamte Tabelle ein Primärschlüssel gesucht, der eben oft aus mehreren Zeilen besteht...

Also wie jetzt? Auslagern oder neue Zeilen?
 
Und erst DANACH wird für die gesamte Tabelle ein Primärschlüssel gesucht, der eben oft aus mehreren Zeilen besteht...
Ich hoffe du hast dich da einfach verschrieben ? Ein Primärschlüssel geht NIEMALS über mehrere ZEILEN ^^
Also wie jetzt? Auslagern oder neue Zeilen?
Mach es doch so wie in deinen Tutorials :) Ich denke mal da wirst du nix mit falsch machen.
mMn sähe das dann so aus {Vorname, Nachname, Bild} -> {Jahr, ArtDesBildes, Schätzwert, Raum}
 
Ja, aber ich wills ja verstehen... Soll man Wiederholungsgruppen jetzt schon in der 1.NF auslagern oder als neue Zeilen schreiben und dann schauen, wie die funktionalen Abhängigkeiten sind vom PK sind?

Mein Problem ist, dass in der Lösung der PK aus 5 Spalten ;) besteht und dann für die 2. Normalform aber künstliche PK hergestellt wurden. Da wurde eine Tabelle für den Künstler, eine für die Werke mit Jahr , Wert und Art (mit Künstler_ID als FK) sowie eine Tabelle für den Fund, bestehend aus Werk und Zimmer (künstlicher PK).

Da wurde also erst ein natürlicher PK eingeführt und dann plötzlich ein künstlicher für die einzelnen Tabellen...
 
Ja, aber ich wills ja verstehen... Soll man Wiederholungsgruppen jetzt schon in der 1.NF auslagern oder als neue Zeilen schreiben und dann schauen, wie die funktionalen Abhängigkeiten sind vom PK sind?
Wiederholungsgruppen soll man definitiv auslagern. Steht doch in beiden Links die du geschickt hast drinn :) (Und auch in Wiki :p)
Wobei ich in deinem Fall keine sehe.
Mein Problem ist, dass in der Lösung der PK aus 5 Spalten ;) besteht und dann für die 2. Normalform aber künstliche PK hergestellt wurden. Da wurde eine Tabelle für den Künstler, eine für die Werke mit Jahr , Wert und Art (mit Künstler_ID als FK) sowie eine Tabelle für den Fund, bestehend aus Werk und Zimmer (künstlicher PK).

Da wurde also erst ein natürlicher PK eingeführt und dann plötzlich ein künstlicher für die einzelnen Tabellen...
Dann nenn mir mal die "Lösung" ? ^^
In der ersten Normalform kann man natürliche PKs meistens noch anwenden.
In der zweiten wird es da schon schwieriger, sofern du nicht gerade einen Personalstamm anlegst und immer die Personalnummer benutzen kannst :)
 
Eh, in den Links steht doch, dass man daraus mehrere Datensätze (Zeilen) machen soll?
"Derartige nicht-atomare Werte nennt man Wiederholungsgruppen.
Diese werden derartig aufgelöst, dass aus einem Datensatz mehrere
Datensätze erzeugt werden, damit in den vorhandenen Attributen pro
Datensatz alleinige Werte stehen. "

Lösung
Tabelle Künstler (ID, Vorname, Nachname)
Tabelle Werke (ID, Küstler_ID, Name, Jahr, Art, Schätzwert) (Künstler_ID ist FK auf ID in Künstler)
Tabelle Fund (ID, Werk_ID, Raum) (Werk_ID ist FK auf ID in Werke)
 
Uhhh. Ja, das war etwas unglücklich formuliert, ich meinte damit eher splitten wie in mehrere Werte in einem Datenfeld in mehrere Datensätze aufteilen^^
Achso... Die Lösung ist schon in der zweiten Normalform, ich dachte es gibt eine "Lösung" für den PK der ersten Normalform (nach dem du ursprünglich auch gefragt hattest).
Davon ausgehend das ein Raum immer Eindeutig ist passt das aber.
 
Also in der Lösung ist es Künstler, Werk, Art, Jahr, wobei in der 1. NF Künstler noch nicht in Vorname und Nachname aufgetrennt ist. Es geht um eine private Kunstsammlung und es wurde so argumentiert, dass man hier nicht zwingend auf Vorname und Nachname getrennt zugreifen muss... Aber in der 2. NF ist er dann doch getrennt.
 
Vorname und Nachname zusammen ist dann schonmal ein Verstoß gegen die 1.NF :) (Ist aber auch nur eine Richtlinie, kein Gesetz)
Art und Jahr braucht man nicht als Primärschlüssel, da es wohl kaum ein Bild gibt das in zwei verschiedenen Jahren fertiggestellt wurde bzw. ein Künstler wird auch keine zwei Bilder malen, gleich benennen und eine andere Art von Bild daraus machen, oder ?

Aber als Lernaufgabe ist die Lösung doch recht fragwürdig...
 
Ja, meine ich auch.... Hab da noch so eine, wo's um Feuerwehreinsätze geht. Da wird Datum, Uhrzeit, Einsatzort, PLZ, Str. Hausnr, Einsatzleiter, Helfer, Grund, Dauer und Fahrzeug angegeben. Und klar, wenn ich das in der 1. NF alles schön atomar mache, dann ist die Kombination aus (Datum, Uhrzeit, Einsatzort, PLZ, Str., Hausnr, Helfer_Vorname, Helfer_Nachname) der einzig eindeutige Primärschlüssel. Aber in der 2. NF sind dann auch wieder künstliche PK eingeführt worden... auch etwas seltsam...

Aber unser Prof steht sehr auf natürliche PK, weil er meint, man sieht dann die Abhängigkeiten besser und versteht das Datenmodell besser...

Und man braucht das Jahr doch, weil es zwei Bilder vom selben Künstler gibt, die gleich heißen...
 
Werbung:
Zurück
Oben