meerdere catergorien
Ik ben karel en ben 4 maanden actief met programmeren in php nu en heb een vraag:
Ik heb een video site en wil aan 1 filmpje meerdere catergorien verbinden i.p.v eentje zoals nu het geval is.
Wat is nu het snelst, efficients?
mijn ideeen zijn in de media tabel de colum catergorie verwijzen naar een id in een andere tabel en deze tabel geen van dat id de 5 catergorien terug.
of,
Meerdere nummers in een row, dus id = 40 title = test catergorie = cat1, cat2, cat3
en dan staan cat1,cat2 en cat3 natuurlijk in een andere tabel met de catergorie naam.
video_id, naam, omschrijving, etc
tabel categorie:
categorie_id, naam, omschrijving, etc
tabel video_categorie
video_id, categorie_id, (eventueel extra id met autoincrement voor unieke primary key)
In de tuts hier staat hoe je dan het beste de data kunt verwerken
Tobias Witmer op 20/09/2010 06:36:51:
(eventueel extra id met autoincrement voor unieke primary key)
Nope. De combinatie van video_id en categorie_id is in dit geval al uniek; immers een video kan niet meerdere keren in dezelfde categorie staan. Als je een unique meegeeft aan de twee kolommen in de tabel komt dat helemaal goed.
het leek mij juist handig om in 1 row in catergorie_ids meerdere id's op te slaan.
Dat moet je dus niet doen. Maak gebruik van een koppel-tabel. Meerdere kolommen zullen voor een unieke sleutel zorgen.
tabel_media id, titel, cat
tabel_catergory id, naamcat
tabel_koppelcat tabel_media.cat tabel_catergory.id
voorbeeld koppel is dan id 63, cat1, cat2, cat3 als colums?
CATEGORIE
MEDIA_CATEGORIE
Media-item 1 zit alleen in categorie 2.
Media-item 2 zit in categorie 1 en 2.
Gewijzigd op 20/09/2010 13:28:26 door Elwin - Fratsloos
deze anders even door.
neem Where `catergorie` LIKE '%##40##'
Wat zou meer efficient zijn?
Btw, bedankt voor de hulp en snelle reacties.
Karel hertens op 20/09/2010 13:39:32:
... Blijft een nadeel dat koppel tabel heel groot wordt. ...
waarom is dit een nadeel?
Nooit meerdere dingen in een vak stoppen.
Dit is niet de bedoeling.
Je snapt het nog niet dus.
Door die beide kolommen heb je een unieke sleutel. Je hoeft dus totaal niet moeilijk te gaan doen met meerdere id's in één vak.
Verder moet je gewoon het werk van de database aan de database overlaten. Die maakt het niks uit als je miljoenen records opslaat.
Heeft dit invloed op de performance? of kan mysql dit makkelijk aan? (na 1 jaar zijn dit dus 2000 filmpjes.)
En als het echt heel groot word, kan je later nog denken om een cloud omgeving te gebruiken, of gewoon met meerdere databases te werken.
Een database is er juist voor bedoeld om veel informatie te bevatten (en relaties te leggen). Sla maar een boek over dit onderwerp open, je zult voorbeelden zien van grote bedrijven met grote databases. Je zult alleen geen mysql zien (naja, hele hoge kans van niet), mysql is niet zo'n goede database...