wat is het snelste?
nu wil ik weten wat het beste zou zijn:
-voor elk apart item dat een gebruiker heeft een aparte rij maken in een tabel met gebruikersnaam en itemnaam erbij.
-in de tabel users een kolom items maken waarin alle items die de gebruiker heeft staan, gescheiden door een komma. daar ik kijk ik dan of het item bestaat met preg_match(). alleen moet ik dan wel weten hoe ik dan kan tellen hoe vaak dat item daar voorkomt.
-in de tabel users voor elk item een kolom maken met int.
ik zou dus graag willen weten welke manier het snelste zou zijn. maar als jullie betere ideeën hebben, dan wil ik ze ook horen.
Quote:
Nee, dat sla je de gegevens (de namen) meerdere keren op. Dat is vragen om data-corruptie.-voor elk apart item dat een gebruiker heeft een aparte rij maken in een tabel met gebruikersnaam en itemnaam erbij.
Quote:
Nee, dodelijk voor de snelheid van de database (ga maar eens zoeken op 1 enkel item) en je slaat wederom gegevens dubbel op. Dit is veruit de slechtst mogelijke oplossing-in de tabel users een kolom items maken waarin alle items die de gebruiker heeft staan, gescheiden door een komma.
Quote:
Nee, dan kom je in de problemen wanneer er meer items dan kolommen zijn. Tevens pas je nooit het datamodel aan wanneer er meer gegevens van dezelfde soort (in dit geval items) worden opgeslagen.-in de tabel users voor elk item een kolom maken met int.
Hoe doe je het wel?
Maak 3 tabellen aan, users, items en user_items.
- users
id INT, auto_increment
naam VARCHAR
- items
id INT, auto_increment
naam VARCHAR
- user_items
id INT, auto_increment
id_user INT en foreignkey op de de tabel users.id
id_items INT en foreignkey op de de tabel items.id
Dit is dé manier om een relationele database aan te maken. Wanneer je MySQL gebruikt, zul je de innoDB-engine moeten gebruiken, maar dat is toch al de enige engine waar je wat mee kunt.
Ga je eens verdiepen in normaliseren (zie de tutorials), zul je een hoop plezier aan beleven.
heb je misschien een voorbeeldje? want met een voorbeeld leer ik het sneller.
ik kwam al uit op mysql.com, maar dat vind ik wazig uitgelegd, zal wel komen omdat het engels is.
Verder staan er in de Tutorials meer dan genoeg artikelen over het gebruik van databases, normaliseren, JOIN's, etc. etc.
ik heb er 4 staan: MyISAM, MEMORY, ARCHIVE en MRG_MYISAM.
Het kan zijn dat jouw hostingprovider geen innoDB ondersteunt. In dat geval zou ik een andere provider opzoeken, het is de enige engine waar je iets mee kunt. De rest is nauwelijks een database of dbms's te noemen.
ik zal eens vragen waarom niet.
Lullig, helemaal wanneer je weet dat dit absoluut niet nodig is.
Maar goed, wie ben ik...
hoe kan ik mijn scripts testen zonder dat ik voor een andere provider moet betalen?
MySQL lokaal installeren? Evt. inclusief Apache en PHP, dat werkt heerlijk ;)
WAMP, dan krijg je Apache, MySQL en PHP op je eigen Windows-bak.
En vergeet niet om PostgreSQL te installeren, dat is minstens 100x beter dan MySQL. (I'm still on a mission!)
Installeer En vergeet niet om PostgreSQL te installeren, dat is minstens 100x beter dan MySQL. (I'm still on a mission!)
wat is het verschil tussen MYSQL en PostgreSQL?
Yapf.net voor een overzichtje met problemen in MySQL.
Verder is het grote verschil dat PostgreSQL zich (veel beter) aan de ANSI-SQL 92/99-standaarden houdt, iedereen met SQL-kennis kan dus met PostgreSQL aan de slag.
Zie Verder is het grote verschil dat PostgreSQL zich (veel beter) aan de ANSI-SQL 92/99-standaarden houdt, iedereen met SQL-kennis kan dus met PostgreSQL aan de slag.