ugrás a tartalomhoz

Dinamikus felhasználói profilok tárolása

kalamona · 2007. Szep. 28. (P), 01.38
Sziasztok!

Szeretnék írni egy rugalmas felhasználó-adatlap kezelést. Az a probléma, hogy bővíthető kellene legyen egyedi tulajdonságokkal, ugyanakkor nem akarok egy sokmezős táblát létrehozni és rájuk bízni, hogy kitöltik e a szemszínt is vagy csak egy email címet adnak meg.

Erőforrások szempontjából jó megoldás egy olyan plusz táblát létrehozni amiben
user_id - adat neve - adat értéke szerűen tárolom az adatokat? Nem mond ez ellent mindenféle szervező-elveknek? Hiszen ez nem áll messsze attól mintha "emulálni" akarnám az egész adatbázist egy táblán belül... Hogyan szokás ezt jól csinálni?

Érdemes fenntartani egy külön emails-táblát, ami minden email cimet tárolna a rendeszerben, és ezt több-több kapcsolatok segítségével rendelnénk hozzá pl. a userekhez istetszőleges darabszámban?
 
1

Kulcs-érték tábla

janoszen · 2007. Szep. 28. (P), 05.53
Tfh vannak kulcsok a mezökre, amiket lehet használni. Ezeket eltárolod egy táblában, a felhasználóneveket egy másikban. Ezek után csinálsz mée egy táblát, amiben van egy ID, egy felhasználó, egy kulcs és egy érték mező. A középső kettő foreign key a másik két táblára és van rajtuk egy közös unique kulcs. Az érték pedig mondjuk egy TEXT. Ez tűnik a legegyszerűbb megoldásnak, de lehet még cifrázni.

Megjegyzés: egyszerűbb lett volna leírnom az SQL kódot, de így egy csomó mindenre megmarad a felfedezés öröme. ;) Ha elakadsz, szólj.
2

XML

virág · 2007. Szep. 28. (P), 07.41
Ha a szöveg alapú tárolás irányába mozdulsz el, akkor az XML-ben való eltárolás jól jöhet, ha nem MySQL-t használsz (de valószínűleg azt), akkor pl. az MSSQL-ben nagyszerű, natív eszközök vannak ehhez. De MySQL-t is lehet erre használni.

http://www.kitebird.com/articles/mysql-xml.html
3

Serialize

kicsy · 2007. Szep. 28. (P), 11.28
Csinálhatsz még olyat is, hogy egyszerűen serializált objektumként/tömbként tárolod az adatokat, egy mezőben. (Nyilván csak azokat, amik alapján nem akarsz szűrni, rendezni a lekérdezéseknél)