[norm.] Film's database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

K i p

K i p

26/04/2007 12:00:00
Quote Anchor link
Beste,

Ik vroeg mij af of dit een goed genormaliseerde database is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
+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!
 
PHP hulp

PHP hulp

21/12/2024 19:06:28
 

26/04/2007 12:07:00
Quote Anchor link
Dit klopt nog niet:
-audio INT
-subs INT
Je maakt een een-op-een relatie.
 
Joren de Wit

Joren de Wit

26/04/2007 12:09:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Thijs X

Thijs X

26/04/2007 12:13:00
Quote Anchor link
Vraagje wat is precies het voordeel in dit geval van bijvoorbeeld deze koppeltabel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
+filmregisseurs
        -id INT auto_increment
        -film INT
        -regisseur INT


Je zou ook het veld regisseur kunnen toevoegen aan de tabel films

regisseur INT
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 

26/04/2007 12:16:00
Quote Anchor link
@Blanche
Zou ook kunnen. Ligt er aan hoe je de tabel audio en sub gebruikt (in mijn denkspinsel werd het nu gebruikt al verlengde van de films tabel).

@Thijs
Je kan meerdere regisseurs hebben per film.
 
Joren de Wit

Joren de Wit

26/04/2007 12:19:00
Quote Anchor link
@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 X

Thijs X

26/04/2007 12:23:00
Quote Anchor link
Webmakerij schreef op 26.04.2007 12:16:

@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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
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:

1,4,6,7
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
Klaasjan Boven

Klaasjan Boven

26/04/2007 12:52:00
Quote Anchor link
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
 
Joren de Wit

Joren de Wit

26/04/2007 13:22:00
Quote Anchor link
Quote:
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.
 
Marvin S

Marvin S

26/04/2007 13:23:00
Quote Anchor link
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..
 
K i p

K i p

26/04/2007 13:35:00
Quote Anchor link
Webmakerij:
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:
Audio en sub met een koppeltabel•Jaar en lengte in een aparte tabel, en ook een koppeltabel

Bedankt :-)
 
Joren de Wit

Joren de Wit

26/04/2007 13:38:00
Quote Anchor link
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.
 
K i p

K i p

26/04/2007 13:58:00
Quote Anchor link
Bedankt allemaal, ik ga hem nu zo gebruiken. Nog commentaar?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
+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
 
Joren de Wit

Joren de Wit

26/04/2007 14:12:00
Quote Anchor link
Ik niet :)
 
Klaasjan Boven

Klaasjan Boven

26/04/2007 14:33:00
Quote Anchor link
Ik ook niet
 
Marvin S

Marvin S

26/04/2007 14:39:00
Quote Anchor link
@boris & blanche
dat is inderdaad waar meerdere genres kan,
daar had ik niet aan gedacht ;)..

in het geval van een jaartal 'zou' het toch wel kunnen?
dan check je met dat domain of de input uit min-max 4 cijfers bestaat..
(2004) (1963) etc...

ofniet?

ik probeer altijd zoveel mogelijk door de database te laten doen vandaar..
 
Joren de Wit

Joren de Wit

26/04/2007 14:54:00
Quote Anchor link
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?
 
Robert Deiman

Robert Deiman

26/04/2007 16:15:00
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

26/04/2007 16:26:00
Quote Anchor link
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.
 
Klaasjan Boven

Klaasjan Boven

26/04/2007 17:04:00
Quote Anchor link
@Blanche volgens mij bedoelt Robert dat juist. Daarom moet je gewoon een selectbox maken
 
Joren de Wit

Joren de Wit

26/04/2007 17:07:00
Quote Anchor link
Quote:
(...) tot aan het jaar waar we nu zitten. Een film uit 2008 kan je nog niet toevoegen, omdat het pas 2007 is.

Daar reageerde ik op. Maar uiteindelijk nog steeds geen probleem ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.