ugrás a tartalomhoz

Különböző szövegtípusok - új táblák vagy új mezők

Grandmaster · 2006. Már. 21. (K), 23.40
Sziasztok!

Véleményeket, ötleteket szeretnék kérni az alábbi problémát illetően:
Egy jelenleg működő oldalamhoz tartozó szövegek egy táblában tárolódnak, legyen azok bármilyen típusúak (hír, cikk, termékleírás). Ezidáig egy szöveg típusa mezővel különböztettem meg őket egymástól, onnan tudtam, hogy az éppen aktuális modulnak mely szövegeket kell kezelnie.

Most azonban eljött az idő, hogy módosításokat hajtsak végre. Idáig a szövegek nagyrészt ugyanazokkal a tulajdonságokkal rendelkeztek: azonosító, szöveg, szerző, időpont. A jövőben viszont szeretnék olyat, hogy például a hír típus tartalmakhoz kapcsolódhatnak galériák, vagy éppen a termékleírásokhoz más termékek.

Tehát bővíteni szeretném olyan tulajdonságokkal az egyes szövegtípusokat, melyek más típusoknál nem szerepelnek. Milyen megoldást javasoltok Ti ennek megvalósításához?

Én két dologra gondoltam:
1. új táblákat hozok létre - pl cikkek, hírek - melyek tartalmazzák az alapszöveg azonosítóját, továbbá a szükséges plusz tulajdonságokat.
2. Létrehozok egy "univerzális" mezőt, ahol a serialize függvényt segítségük hívva eltárolok egy tömböt a plusz információkkal.

Válaszotokat előre is köszönöm!
 
1

táblák

Gal Kristof · 2006. Már. 21. (K), 23.54
Neked egyértelműen külön táblákra van szükséged, főleg ha már felismerted ezt a lehetőséget. Ezzel mellesleg fejlesztenéd a tudásodat is, ahelyett, hogy gányolnád a régi, összetákolt egy táblás megoldást! :) Mármint úgy értem, hogy minden típusnak, pl. cikk külön táblában kell szerepelni TELJESEN, ne hivatkozgass a régi táblában lévő eredeti szövegekre...
2

Elotte ugy volt

Grandmaster · 2006. Már. 22. (Sze), 00.21
Korabban kulon taroltam minden szovegtipust, de valamiert keztetest ereztem arra, hogy egybe keruljon. Most meg megint ott allok, hogy nem tudom mitevo legyek. :)
3

XML?

virág · 2006. Már. 22. (Sze), 07.19
Szia,
ha mindenképpen így akarod, akkor tárolhatod XML-ben is egy BLOB mezőben, de szerintem picikét nincs átgondolva az egész. Tényleg jobb lenne külön táblákban tárolni egy egységes koncepció szerint, ahol egy-egy kapcsolótáblával meghatározhatnád a járulékos galériát, dokumentumtárat stb. stb. Ezt az "egy táblában tároljunk mindent" elgondolást már sokszor hallottam sok embertől, de igazán jól megtervezve és kiagyalva még nem láttam sehol (bár szóban már hallottam egészen jó ötletet is erről, de már elfelejtettem, hogy szólt a mese pontosan :) ). Nem tudom mi lenne ennek az egésznek előnye (szerinted), tán a keresésnél jól jöhet, de más téren meg sokat veszíthet vele a fejlesztő. Szerintem ne így csináld. :)
4

XML nem kell

Grandmaster · 2006. Már. 22. (Sze), 08.57
Az XML-re biztosan nincs szuksegem, hiszen barmely PHP-s valtozot serializalva berakhatom egy sima text mezobe.

Egyebkent meg azert lett igy megoldva, mert ugy tunt esszerunek, hogy a szoveges tartalmak egy tablaba tartozzanak. El akartam kerulni azt a kaotikus allapotot, hogy minden kulonbozo tartalomtipus egy tabla legyen. A kereses egyszerubb, egy ujfajta tartalomtipus felvetele szinten gyors es egyszeru.

Azert is fordultam ide, hogy par hasznos otletet kapjak meg mielott beleturnek a kodba. :) Hozzateszem, valamiert en az egy text mezo - serialize/unserialize parosra szavazok, de hatha kapok valamilyen igazan jo ellenervet.
5

a kettő kombinációja

tiku I tikaszvince · 2006. Már. 22. (Sze), 09.43
És mi lenne, ha a két lehetőséget kombinálnád.
Én úgy oldanám meg, hogy az eredeti táblát békén hagynám, és létrehoznék egy új táblát a kapcsolt tartalmakat nyilván tartására (szöveg azonosítója, kapcsolt tartalom azonosítója [,kapcsolt tartalom típusa]).
Igaz így két lekérdezést kell végrehajtanod. Bár a felesleges kéréseket, úgy megelőzheted, hogy ha a szövegek táblába teszel egy jelző értéket (default 0), melyet kapcsolt tartalom létrehozásakor igazra állítasz. Kiiratáskor pedig megnézed ezt az értéket....

TikuVoltam
6

Drupal megoldása

Poetro · 2006. Már. 22. (Sze), 17.03
Bocs, hogy megint promózok, de erre a feladatra is szerintem nagyon jó megoldása van a drupal-nak.
Azaz van egy node tábla, amiben mindenféle tartalomtípus azonos mezői tárolva vannak. Ilyenek pl: tartalom azonosítója (továbbiakban nid), léterhozó felhasználó azonosítója, tartalom típusa, cím, tartalom, létrehozás dátuma, módosítás dátuma.
Minden egyes tartalom típusnak, aminek ezen kívül más adatokat is tárolni kell saját táblája van aminek első mezője a nid, és minden egyéb mezőja a tartalom típus specifikus mező.
Ugye ekkor egy lekérdezés kell:
SELECT * FROM node n INNER JOIN {saját_adattábla} s ON s.nid = n.nid
és már készen is vagyunk, azaz megvan az adott tartalomtípus általános és specifikus része is.
Remélem a szemlélet érthető volt.
7

Ez lesz a jo

Grandmaster · 2006. Már. 22. (Sze), 18.49
Koszonom Poetro, ez nagyon jol hangzik. Valami ilyesmire gondoltam az elso pontban.