kostenloser Webspace werbefrei: lima-city


Normalformen verständnisfrage

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    Hey,

    ich hab ein Frage zu den 3 Normalformen, zur auffrischung =)

    ...das sind jetzt meine Formulierungen und wahrscheinlich fachlich nicht ganz korrekt xD

    Normalformen:
    Beispieltabelle:

    Die Tabelle ist nicht in der 1. Normalform da in einer Spalte der Tabelle mehrere Werte enthalten sind
    id | Album | Lieder
    1 | TestAlbum | Lied1, Lied2, Lied3
    2 | TestAlbum2 | Lied4, Lied5, Lied6

    So wäre die obige Tabelle in der 1. Normalform
    id | Album | Lieder
    1 | TestAlbum | Lied1
    2 | TestAlbum | Lied2
    3 | TestAlbum | Lied3
    4 | TestAlbum2 | Lied4
    5 | TestAlbum2 | Lied5
    6 | TestAlbum2 | Lied6

    2 Normalform
    id | idAlbum | Lieder
    1 | 1 | Lied1
    2 | 1 | Lied2
    3 | 2 | Lied4

    3 Normalform:
    idAlben | AlbenName
    1 | TestAlbum
    2 | TestAlbum2
    Die Dritte Normalform besagt das nur der Primärschlüssel
    (idAlben) und max. eine weitere spalte enthalten darf


    wobei ich jetzt mal davon ausgehe das die liednamen eindeutig sind!

    ...habe ich das so noch richtig in Erinnerung?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. meiner Meinung nach schon, aber wo ist jetzt dein Problem?
  4. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    ...ich hab das vor 3 Jahren mal gelernt und habs seit dem immer ausm Gefühl heraus gemacht, aber ich schreibe bald eine Prüfung darüber und muss das ganze dann auch formulieren können ;)

  5. t*****b

    Erst mal ist es wichtig keine Daten zu wiederholen. Zum Beispiel können Künstler verschiedene Alben machen, auf dem verschiedene Lieder sind. Das würde dann so aussehen:

    - Kuenstler
    id | Name

    - Album
    id | KuenstlerID | Name

    - Lieder
    id | AlbumId | Name

    Anders würde das aussehen, wenn keine Alben sondern einfach CDs (also CDs auf denen Musik von verschiedenen Künstlern ist). Dann könnte man es so realisieren:

    - CDs
    id | Name

    - Kuenstler
    Id | Name

    - Lieder
    id | CDid | KuenstlerID | Name
  6. e********l

    Ich denke in diesem Fall wäre es sinnvoll bei "Lieder" wie schon weiter unten von trueweb vorgeschlagen die ID vom Künstler mit zu führen. Dann kann man ohne 3 Tabellen joinen zu müssen direkt die Titel des Künstlers abfragen und kann mit einem einfachen 2 Tabellen join auch den Albumstitel zurückgeben.
    Man hat dann zwar eine gewisse Redundanz, aber die ist in dem Fall zu vertreten. Schließlich hat sie einen positiven Effekt.
  7. Hallo,

    in Prüfungen wollen die meist so Formulierungen wie im Wikipedia (jeweils der erste Satz bei den normalformen) http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

    Demzufolge stimmen deine Normalformen nicht ganz.

    1. Normalform: Jedes Attribut muß atomar sein (für sich alleine stehen)

    aid | Album | lid | Lieder
    1 | Album1 | 1 | Lied1
    1 | Album1 | 2 | Lied2
    1 | Album1 | 3 | Lied3
    2 | Album2 | 4 | Lied4
    2 | Album2 | 5 | Lied5
    2 | Album2 | 6 | Lied6

    d.h. aid und lid werden jeweils Schlüssel und der Primärschlüssel wäre (aid,lid)

    2. Normalform: Jedes Nicht-Schlüsselattribut genau von einem Schlüssel (funktional) abhängig ist

    Die Attribute Album und Lieder sind jetzt zwar von lid abhängig, aber nicht von aid - d.h. wir müssen in 2. NF umwandeln...

    Alben
    aid | Album
    1 | Album1
    2 | Album2

    Lieder
    aid | lid | Lieder
    1 | 1 | Lied1
    1 | 2 | Lied2
    1 | 3 | Lied3
    2 | 4 | Lied4
    2 | 5 | Lied5
    2 | 6 | Lied6

    3.Normalform: jedes Nichtschlüsselattribut von keinem Schlüsselkandidaten transitiv abhängt

    Hmm zwecks Datenmangel sind die Tabellen dann schon in der 3. Normalform ;-)
    Allerdings wenn du in der Tabelle Album zum Bsp. noch Daten zum Interpreten oder so hättest, müsste man diese hier auslagern, weil die Daten zum Interpreten sich ja nicht bei jedem Album ändern - sondern wenn dann insgesamt.

    Alben Lieder Interpret
    aid | Album | Interpret
    1 | Album1 | i1
    2 | Album2 | i2
    3 | Album3 | i1

    Lieder
    aid | lid | Lieder
    1 | 1 | Lied1
    1 | 2 | Lied2
    1 | 3 | Lied3
    2 | 4 | Lied4
    2 | 5 | Lied5
    2 | 6 | Lied6

    Interpret
    iid | Name | Gründung
    i1 | Interp1 | 1980
    i2 | interp2 | 1967


    Hoffe das hilft ein wenig.
    Grüßle

    Beitrag zuletzt geändert: 25.5.2009 12:36:30 von scout
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!