Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Frage zu Primärschlüssel bei 1NF

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von NoBrainDB, 8 Januar 2015.

  1. NoBrainDB

    NoBrainDB Aktiver Benutzer

    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?
     
  2. NoBrainDB

    NoBrainDB Aktiver Benutzer

    Ist die Frage zu doof oder hat niemand ne Antwort?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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!
     
  4. NoBrainDB

    NoBrainDB Aktiver Benutzer

    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?
     
  5. Distrilec

    Distrilec Datenbank-Guru

    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 ? :)
     
  6. NoBrainDB

    NoBrainDB Aktiver Benutzer

    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?
     
  7. Distrilec

    Distrilec Datenbank-Guru

    Ich hoffe du hast dich da einfach verschrieben ? Ein Primärschlüssel geht NIEMALS über mehrere 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}
     
  8. NoBrainDB

    NoBrainDB Aktiver Benutzer

    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...
     
  9. Distrilec

    Distrilec Datenbank-Guru

    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.
    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 :)
     
  10. NoBrainDB

    NoBrainDB Aktiver Benutzer

    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)
     
  11. Distrilec

    Distrilec Datenbank-Guru

    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.
     
  12. NoBrainDB

    NoBrainDB Aktiver Benutzer

    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.
     
  13. Distrilec

    Distrilec Datenbank-Guru

    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...
     
  14. NoBrainDB

    NoBrainDB Aktiver Benutzer

    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...
     
  15. NoBrainDB

    NoBrainDB Aktiver Benutzer

    Vielen Dank übrigens! :)
     
    Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden