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
Is het zo dat er nooit een nieuw genre bijkomt? Het zal niet snel gebeuren maar het is niet uitgesloten.
Bovendien heb je nog een ander groot nadeel: hoe wil jij bijvoorbeeld makkelijk een select box genereren met alle genres waaruit je kunt kiezen? Als je de genres in een aparte tabel hebt staan is dat een fluitje van een cent.
Een ander groot nadeel is dat je op zo'n moment niet meerdere genres aan een film kunt koppelen. En films hebben vaak meerdere genres waar ze in vallen. Dit zou je evenwel kunnen ondervangen door een SET als datatype te gebruiken, maar het nadeel is dan weer dat je maximaal 64 genres kunt gebruiken.
Bedankt allemaal, ik ga hem nu zo gebruiken. Nog commentaar?
+Database: stipnl_film
+films
-id INT auto_increment
-titel VARCHAR
-jaar INT (het id van de desbetreffende rij in de tabel jaren)
-lengte INT (het id van de desbetreffende rij in de tabel lengtes)
-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
+audios
-id INT auto_increment
-audio VARCHAR
+subtitles
-id INT auto_increment
-subtitle VARCHAR
+lengtes
-id INT auto_increment
-lengte INT (in minuten dus)
+jaren
-id INT auto_increment
-jaar INT
--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
+filmaudios
-id INT auto_increment
-film INT
-audio INT
+filmsubtitles
-id INT auto_increment
-film INT
-subtitle INT
In het geval van jaartal zou het inderdaad kunnen. Maar goed, als je je jaartal uit een selectbox laat komen, weet je in ieder geval zeker dat je het goede formaat te pakken hebt.
Een bijkomend nadeel is dan wel weer de behandeling van jaartallen in de toekomst. Wou je die van tevoren ook allemaal al in je ENUM opnemen?
Ik zou de Jaartallenbox gewoon door PHP laten doen, niet via een ENUM in SQL. Met PHP kan je bijvoorbeeld -> Vanaf het jaar van de 1e film, (of de oudste film die in je DB komt) tot aan het jaar waar we nu zitten. Een film uit 2008 kan je nog niet toevoegen, omdat het pas 2007 is. -> Gewoon een selectfieldje voor maken.
Robert vergeet niet dat je op een gegeven moment misschien wel films uit de toekomst wilt toevoegen. Op IMDB zijn immers ook al films te vinden die pas in 2008 uitkomen ;)
Maar goed, ook dat is natuurlijk geen probleem. Je zou je selectbox daar immers gewoon aan kunnen aanpassen.