Ik vroeg mij af of dit een goed genormaliseerde database is:
+Database: film
+films
-id INT auto_increment
-titel VARCHAR
-jaar INT
-lengte INT
-audio INT
-subs INT
-omschrijving TEXT
-plaatje VARCHAR
+regisseurs
-id INT auto_increment
-regisseur VARCHAR
+genres
-id INT auto_increment
-genre VARCHAR
+acteurs
-id INT auto_increment
-acteur VARCHAR
+kijkwijzers
-id INT auto_increment
-kijkwijzer VARCHAR
-plaatje VARCHAR
+audios
-id INT auto_increment
-audio VARCHAR
+subtitles
-id INT auto_increment
-subtitle VARCHAR
--Koppeltabellen:
+filmregisseurs
-id INT auto_increment
-film INT
-regisseur INT
+filmgenres
-id INT auto_increment
-film INT
-genre INT
+filmacteurs
-id INT auto_increment
-film INT
-acteur INT
+filmkijkwijzers
-id INT auto_increment
-film INT
-kijkwijzer INT
Alvast bedankt voor de hulp!
?
Onbekende gebruiker
26-04-2007 12:07
Dit klopt nog niet:
-audio INT
-subs INT
Je maakt een een-op-een relatie.
Als je naar DVD's kijkt kunnen films vaak ook meer dan 1 audiostream en ondertiteling hebben. Als dat het geval is zou je daar ook nog een koppeltabel voor moeten gebruiken.
Verder ziet het er goed uit.
ps. @ Webmakerij: dat is een meer-op-een relatie. Meerdere films kunnen namelijk bij 1 sub horen. Maar goed, zie mijn commentaar dat ik eerder gaf.
@Webmakerij: als dat zo is, heb je die tabellen in dit geval niet nodig. In die tabellen staat namelijk alleen maar een id en een audio/sub. Als je te maken hebt met een 1-op-1 relatie, kun je ook gewoon de naam van de audio/sub opslaan in je films tabel ;)
@Thijs
Je kan meerdere regisseurs hebben per film.
Ah ok dan snap ik het.
Blanche schreef op 26.04.2007 12:19
@Webmakerij: als dat zo is, heb je die tabellen in dit geval niet nodig. In die tabellen staat namelijk alleen maar een id en een audio/sub. Als je te maken hebt met een 1-op-1 relatie, kun je ook gewoon de naam van de audio/sub opslaan in je films tabel ;)
Ja dat dacht ik dus eerst ook maar je zou het dan bijvoorbeeld zo kunnen doen:
SELECT
regisseur
FROM
filmregisseurs
WHERE
film = film.id
Echter vraag ik me af of dit een voordeel is,
je zou namelijk een extra veld toe kunnen voegen aan films:
- regisseurs TEXT
of iets dergelijks waarin je alle regisseur ID's zet gescheiden met een comma bijvoorbeeld:
Echter vraag ik me af of dit een voordeel is,
je zou namelijk een extra veld toe kunnen voegen aan films:
- regisseurs TEXT
of iets dergelijks waarin je alle regisseur ID's zet gescheiden met een comma bijvoorbeeld:
1,4,6,7
En op dit moment help je dus je datamodel om zeep! Je gaat nooit en te nimmer meerdere waarden in 1 veld opslaan. Nu moet je namelijk al php gaan gebruiken om te kijken welke regisseurs er bij een bepaalde film horen.
In het geval van de regisseurs heb je zeker een koppeltabel nodig omdat je de maken hebt met een meer-op-meer relatie. Een film kan namelijk meerdere regisseurs hebben en een regisseur kan meerdere films gemaakt hebben.
Mijn opmerking die jij gequote hebt sloeg op een 1-op-1 relatie. Hierbij hoort 1 bepaald gegeven maar bij 1 film en dat kun je dus in de films tabel opslaan. Maar aangezien 1 bepaalde sub bij meerdere films kan horen (e.g. meerdere films kunnen nederlandse subs hebben) heb je in ieder geval te maken met een 1-op-meer relatie.
En als je verder gaat denken zou je zeggen dat een film ook meerdere subs kan hebben dus heb je te maken met een meer-op-meer relatie en dus heb je een koppeltabel nodig. Precies zoals ik in mijn allereerste reactie ook al aangaf. Ditzelfde geldt natuurlijk voor de audiostreams.
waarom maak je geen domain voor genres.. dit is iets waar nooit meer een nieuw iets bij komt.. dat kun je dus in een domain zetten.. scheelt weer een koppeltabel...en een genretabel..
Dit klopt nog niet:
-audio INT
-subs INT
Je maakt een een-op-een relatie.
Je hebt gelijk. Ik was uitgegaan van dat een film maar 1 audio kan hebben, en maar 1 ondertiteling. Dit verander ik naar een koppeltabel.
Thijs
Je zou ook het veld regisseur kunnen toevoegen aan de tabel films
regisseur INT
Webmakerij
@Thijs: Je kan meerdere regisseurs hebben per film.
Inderdaad.
Klaasjan
Als je het echt genormaliseerd hebben wil:
-jaar INT
-lengte INT
Hebben niet per definitie met de film te maken. Dat moet eigenlijk in een koppeltabel
Om elk jaar in een aparte tabel te doen, oké, daar kan ik nog wel mee akkoord gaan. Maar lengte ga je toch niet in een aparte tabel doen? Dat vind ik wel overdreven, maar het is wel logisch inderdaad. Toch is het niet logisch, maar het is wel logisch. Ja ik weet niet hoe ik dit moet zeggen :-P Ik zal er voor de compleetheid ook een koppeltabel van maken.
Blanche
En op dit moment help je dus je datamodel om zeep!
Inderdaad.
Marvin
waarom maak je geen domain voor genres.. dit is iets waar nooit meer een nieuw iets bij komt.. dat kun je dus in een domain zetten.. scheelt weer een koppeltabel...en een genretabel..
Ik weet niet precies wat een domain is, maar zoals je het vertelt klinkt het mij als een soort ENUM ofzo. Ondanks dat het niet veranderlijk is, houd ik het toch graag veranderlijk.
Wat ik nu dus ga aanpassen:
[li]Audio en sub met een koppeltabel[/li][li]•Jaar en lengte in een aparte tabel, en ook een koppeltabel[/li]