Philipp Hasenfratz: n:m-Beziehung

Beitrag lesen

Halihallo <vorname>

[...]

Das verstehe ich nicht, meinst du, dass ich nicht "richtig" Normalisiert habe ?

Nein. Nur das von dir gewünschte Format

Filmtitel Darstellername1
          Darsteleername2

entspräche nicht der normalisierten Form. Abgebildet würde dies etwa folgendes ergeben:

Filmtitel => ['Darstellername1', 'Darstellername2']

dies ist leider in SQL nicht abzubilden, da jedes Attribut lediglich einen und nur einen
Wert annehmen darf.

Falls du nach Filmtitel gruppierst (was du oben andeutest), werden die einzelnen Werte
der korrespondierenden Attribute zusammengezogen, jedoch kann man diese nicht mehr
eindeutig "adressieren/ausgeben". Die einzige Möglichkeit, welche SQL zur Behandlung
solcher anbietet, sind die Aggregatsfunktionen und diese liefern eben nur einen Wert (z.
B. die Summe, den Durchschnitt oder die Anzahl passender/korrespondierender
Attributwerte).
Wenn du nach Filmtitel gruppierst, jedoch die einzelnen Attributwerte (Darstellernamen)
auch ausgeben möchtest, ist

Filmtitel1 Darstellername1
Filmtitel1 Darstellername2

die einzig mögliche Notation, da du dann zu jedem Filmtitel zwar mehrere Darstellernamen
hast, jedoch in den einzelnen Datensätzen nur jeweils einen Attibutwert hast (das ist
der Grund, warum Filmtitel dann notgedrungen [weil eben mehrwertige Attribute nicht
möglich sind] mehrmals auf der linken Seite erscheint).

Etwas verständlicher ausgedrückt: Das Ergebnis (Ergebnisrelation) ist eine Tabelle,
welche in jeder Zelle nur einen Wert haben kann. Da du zu jedem Darsteller auch einen
Filmtitel hast, wird dieser auch ausgegeben [nicht wie von dir preferiert, unterdrückt].
Die Datenbank "merkt" nicht, dass der Filmtitel von einem Record weiter oben der selbe
ist; denn das ist/wäre gar nicht sinnvoll (da dies eine Art von NF2 Tabelle wäre, die es
eben nach der 1. Normalenform nicht geben soll).

Viele Grüsse

Philipp