Database structuur video site
Ik heb laatst een videosite gebouwd waar allemaal episodes van een serie opkomen.
Dit is m'n huidige database structuur:
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
---> users
id: INT, AUTO_INCR
username: VARCHAR 25
password: TEXT
email: VARCHAR 100
---> seasons
id: INT, AUTO_INCR
---> episodes
id: INT, AUTO_INCR
seasonId: INT
title: VARCHAR 100
description: VARCHAR 500
videoSource: TEXT
---> episode_comments
id: INT, AUTO_INCR
episodeId: INT
userId: INT
ip: VARCHAR 50
comment: VARCHAR 500
id: INT, AUTO_INCR
username: VARCHAR 25
password: TEXT
email: VARCHAR 100
---> seasons
id: INT, AUTO_INCR
---> episodes
id: INT, AUTO_INCR
seasonId: INT
title: VARCHAR 100
description: VARCHAR 500
videoSource: TEXT
---> episode_comments
id: INT, AUTO_INCR
episodeId: INT
userId: INT
ip: VARCHAR 50
comment: VARCHAR 500
Zijn er enige verbeteringen hieraan? Er is geen aparte video's table omdat ik alle filmpjes embed vanuit een andere site, vandaar de "videoSource", die verwijst naar de embed-URL.
- Raoul
Gewijzigd op 19/08/2013 17:33:54 door - Raoul -
Ja die seasons tabel kan er helemaal uit, totaal nutteloos
Ja zoiets had ik idd ook, hoe weet je nu welk seizoen van welke serie is?
Dan zou ik er zoiets van maken.
---> seasons
id: INT, AUTO_INCR
serieName: VARCHAR (100)
seasonName: VARCHAR (100)
numberOfEpisodes: INT
Aan alleen een int heb je niet veel lijkt me.
En waarom is je password TEXT? Sla je die in plain text op?
Gewijzigd op 19/08/2013 17:47:16 door Chris PHP
@Chris
Ik denk dat numberOfEpisodes ook een beetje nutteloos is, aangezien ik die ook vanuit de episodes tabel kan ophalen. Bovendien heeft de serie die ik op de site zet geen namen voor hun seizoenen.
// Ik denk dat ik toch de serieName erbij ga doen, maakt het wat flexibeler.
Gewijzigd op 19/08/2013 17:47:59 door - Raoul -
Tja ik kan niet weten dat je er maar 1 serie op hebt staan, ik ging ervanuit dat je meerdere series zou hebben. Ja je episode nummer kun je 'berekenen' door deze telkens te tellen, maar waarom niet gewoon een +1 in een veld wanneer je een nieuwe toevoegd? Is minder belastend dan er telkens een apparte berekening voor te maken.
En waarom is je password TEXT? Sla je die in plain text op?
Nee, ik hash en salt ze natuurlijk. Ik ben altijd bang dat met varchar een deel van het gehashte wachtwoord gaat wegvallen dus ik doe het gewoon met text.
nee die hele seasons tabels weglaten, en in je episode tabel een kolom met season. je kunt dan het hele seizoen selecteren met WHERE season = 1. ofzo. en door die op de id oplopend te sorteren, kun je gewoon met een loopje in php een nummer eraan koppelen in de episode.
Dit werkt natuurlijk alleen in de huidige situatie waar het maar 1 serie betreft. Wanneer de site uitgebreid gaat worden en er meerdere series komen, is z'n tabel wel degelijk aan te raden.
@Raoul,
VARCHAR is stukken sneller en efficienter dan TEXT, ik zelf gebruik zoveel mogelijk VARCHAR(xxx) om het geheugen zo vrij mogelijk te houden. Mijn wachtwoord veld (sha256 + salt) staat op VARCHAR (80) aangezien deze nooit boven de 80 karakters zal komen. Dit zorgt ervoord dat mijn VARCHAR(80) minder ruimte in beslag neemt dan jou TEXT.
Ik probeer altijd zo efficient mogelijk te schrijven, dus houdt ik altijd rekening met het maximaal verwachte aantal karakters. Zo minimaliseer je overgebruik van je geheugen op de server.