Klaus Mock: DB Aufbau und Auswahl - Was nicht ganz verstanden.

Beitrag lesen

Hallo,

Soweit so gut, nun aber die Frage muß ich in der Tabelle (T_Cast) für jeden Schauspieler eine eigene Spalte anlegen (Artist_1, Artist_2, ....) oder kann ich einfach eine Spalte anlegen und dort
die ID Nummern aller im Film mitspielenden Schauspieler angeben (Spalte: Cast, Werte: (1,4,7,25,etc.)?

Eigentlich ist es besser, wedr das eine noch das andere zu machen.

Tabelle Cast enthält:
Cast_ID (primary key)
Film_ID (foreign key auf Tabelle Film)
Artist_ID (foreign key auf Tabelle Artist)

Cast_ID ist im Printip überflüssig, besser wäre es Film_ID und Artist_ID gemeinsam als Primärschlüssel zu definieren (oder zumindest einen Unique Index zu verwenden).

Dann legst Du für jede Schauspielerin, die in einem bestimmten Film mitspielt, einen Datensatz in dieser Tabelle an. Es können also entweder zwei Datensätze für ein Kammerspiel, und >1000 Datensätze für einen Monumentalschinken werden

Deine Abfrage könnte dann so aussehen:

SELECT T_Film.Film_ID, T_Film.Film_Titel,
       T_Artist.Artis_ID, T_Artist.Artist_Name
 FROM T_Film
 JOIN T_Cast ON T_Film.Film_ID = T_Cast.Film_ID
 JOIN T_Artist ON TCast.Artist_ID = T_Artist.Artist_ID
 ORDER BY T_Artist.Artist_Name

Oder auch nur
SELECT T_Film.Film_ID, T_Film.Film_Titel,
 FROM T_Film
 JOIN T_Cast ON T_Film.Film_ID = T_Cast.Film_ID
 WHERE T_Cast.Artist_ID = 123
 ORDER BY T_Film.Film_Titel

wenn DU z.B. die Filme wissen willst, bei denen die Schauspielerin mit der ID 123 mitmirkte.

Du könntest dann die Tabelle noch um weitere Attribute wie z.B. ob sie eine Hauptrolle oder Komparsin in den Film war. Eventuell willst DU auch einmal die anderen Mitwirkenden, wie Regiesseur usw. mit erfassen, was dann recht einfach geht.

Merke: Wenn Du versucht bist, in einer relationalen Datenbank in einer mit Feld1..Feldx zu arbeiten, dann sollten die Alarmglocken angehen. Im überwiegenden Fall verstößt Du damit gegen die Grundprinzipien eines solchen Systems. Wiederholfelder sollten in der Regel mehrere Datensätze werden.

Suche nach "Normalisieren von Datenbanken" im Netz, um mehr darüber zu lernen, ich habe auf die Schnelle keinen brauchbaren Link zur Hand.

Grüße
  Klaus