Entwickler-Ecke

Datenbanken - Film Datenbank Entwurf


eruhenon - Mi 13.06.07 16:43
Titel: Film Datenbank Entwurf
Moin!
Ich muss für die Schule eine Filmdatenbank schreibn. Bislang hatte mein Entwurf folgender massen ausgesehn:

T_primary
mit Titel,Bewertung,FSprache(fremdschlüsel sind alle bei mir mit einem F vorangestellt), FDarsteller1, Fdarsteller2 bis5

T_darsteller
Darsteller


Das Problem ist nun entstanden wenn ich versuche per sql entsprchend zu verknüpfen meckert Delphi rum (ist ja auch verständlich) und zwar bei den Darstellern. Es zeigt mir ja nur ein Feld an mit dem Wert Darsteller. und nicht Darsteller1-5. Da ich mir die Namen anzeigen lassen will und nciht die Zahlen^^.

Hoffe es hat jemand das Problim aus meiner etwas konfusen beschreibung verstanden... =)

thx


JensLaskowski - Mi 13.06.07 17:20

Wäre gut, wenn du deinen SQL String mal posten würdest.

Benuzt du ein left outer join??

Mit freundlichen Grüßen
JensLaskowski


azubi_20 - Mi 13.06.07 17:51

ich würde noch einen dritten Typ bzw. Tabelle einführen, in der die Beziehung Film - Dasteller gespeichert ist :


T_primary
mit FilmID,Titel,Bewertung,FSprache(fremdschlüsel sind alle bei mir mit einem F vorangestellt), FFilm_DarstellerID

n:n-Beziehung

T_film_darsteller
ID
FDarstellerID
FFilmID

n:n-Beziehung

T_darsteller
DarstellerID
Darsteller

Auf diese Weise kannst du ausserdem beliebig viele Darsteller einem Film zuordnen.


eruhenon - Mi 13.06.07 20:34

also mein sql-string sieht wie folgt aus:

select distinct * from T_primary , T_darsteller, t_besitzer, t_lable, t_sprache
where fsprache=id_sprache and flable=id_lable and fbesitzer=id_besitzer
and fdarsteller1=id_darsteller

würde bei der extra tabelle nicht dann ein film mehrfach angezeigt werden sobald er mehrere Schaupieler hat?


Agawain - Mi 13.06.07 21:54

ja, aber nun kommt es ja auch drauf an, was Du machen willst.

Z.B. Ein Formular, da stellst Du die Einzeldaten des Films in einzelnen EditFeldern dar, als die Felder der Filmtabelle dar.

Die ist dann auch der Master...

unter diese hängst Du ein BDgrid, dort werden die Darsteller ls Detaildaten angezeigt.

Die weitere Vorgehensweise hängt von der Delphi-Version und den verwendeten Komponenten ab.

Was immer geht, Table-Komponenten dafür verwenden und in diesem Fall der Darstellertabelle als Mastersource die Filmtabelle anzugeben.
Dann müssen noch die Masterfields angegeben werden, also die Felder, die beide Tabellen verknüpfen.

Für eine Schulaufgabe wahrscheinlich die pragmatischste Lösung.

Eine weitere Möglichkeit wäre die Verwendung von parametrisierten Abfragen, lies mal in der Delphi-Hilfe dazu.

Gruß

Aga