Stefan: DB Aufbau und Auswahl - Was nicht ganz verstanden.

Beitrag lesen

Hallo,
danke für die schnelle Antwort - habe allerdings noch ein paar Verständnisfragen.

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

Also habe ich nun in der Tabelle Cast nur Primary Keys?
Film_ID (primary key)
Artist_ID(primary key)
Regie_ID (primary key) (falls ich die Tabelle erweitern will)
etc.

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

Sprich ich habe dann Datensätze ala (||| hier als optische Trenunng zwicshen den beiden Spalten;-)
Film_ID ||| Artist_ID
1 ||| 25
1 ||| 26
1 ||| 235
1 ||| 655
2 ||| 3
2 ||| 45
2 ||| 33
etc.
Ist das richtig oder kann ich Datensätze haben ala
1 ||| 25, 26, 235, 655
2 ||| 3, 45, 33

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

wenn ich hier nun noch eine dritte (vierte, etc.) Tabelle verbinden will kann ich das einfach so machen? - Sprich kann ich beliebig viele Joins machen?
JOIN T_Regie ON T_Cast.Regie_ID = T_Regie.Regie_ID
etc.

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.

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.

Danke werde ich machen.

Grüße,
Stefan