Adatbázis tervezés hírekhez három nyelven
Szasztok!
Érdekelne, hogy milyen megoldást javasoltok 3 nyelvű szövegek tárolására/megjelenítésére?
Mondjuk adott egy hír tábla, ami tárolja a dátumot, a hír szövegét, azonosítóját, a feladó nevét.
Külön "oszlopban" érdemes tárolni a két másik nyelvű szöveget,
vagy egy másik táblában? Esetleg, ha sok ilyen jellegű tábla van egy DB-ben, akkor van értelme egy másik adatbázist létrehozni?
Vagy ezt hogy szokták általában csinálni?
Előre is köszi a segítséget!
Üdv:
El
■ Érdekelne, hogy milyen megoldást javasoltok 3 nyelvű szövegek tárolására/megjelenítésére?
Mondjuk adott egy hír tábla, ami tárolja a dátumot, a hír szövegét, azonosítóját, a feladó nevét.
Külön "oszlopban" érdemes tárolni a két másik nyelvű szöveget,
vagy egy másik táblában? Esetleg, ha sok ilyen jellegű tábla van egy DB-ben, akkor van értelme egy másik adatbázist létrehozni?
Vagy ezt hogy szokták általában csinálni?
Előre is köszi a segítséget!
Üdv:
El
hír nyelve
extraként lehet/érdemes esetleg megcsinálni valamilyen összerendelést a különböző nyelvű tartalmak között,
a sokoszlopos tárolással az (lehet) a baj, hogy ha neadj'isten kell egy új nyelv, akkor az egész adattáblát módosítani kell, sőt, esetleg a programot is
bbalint
<Nincs cím>
Egy táblába
--------
Poetro
metaadatok?
Ez így nem az igazi. Mert akkor minden nyelv egy külön sort eredményez, de így a közös adatok (dátum, stb.) mindegyik sorba bekerül. Normál forma rulz. Akkor már jobb ha mindegyik nyelvnek külön oszlop. De jobb ha külön tábla.
Felhő
Külön tábla
Előnye ennek a megoldásnak, hogy a nyelvek és a szövegek típusa tetszés szerint bővíthető, mégsem okoz semmilyen strukturális változtatást. Ha akarsz például a termék mellé felvehetsz egy új szöveges paramétert, szlogen néven, az is itt tárolódik, csak a szöveg típusa más.
További előnye, hogy mivel minden szöveg egyetlen táblában van, a szájt egész szövegállományában tudsz egyszerre keresni, legyen az termék, cikk, vagy bármi, cím, rövid szöveg, hosszú szöveg, stb.
`module` int(10) unsigned NOT NULL default '0',
`textType` int(10) unsigned NOT NULL default '0',
`targetID` int(10) unsigned NOT NULL default '0',
`language` char(2) NOT NULL default '',
`text` longtext NOT NULL,
PRIMARY KEY (`module`,`textType`,`targetID`,`language`),
FULLTEXT KEY `text` (`text`)
) TYPE=MyISAM;
fenntartott szavakat kerüljük
Prefix
module int(10) unsigned NOT NULL default '0',
textType int(10) unsigned NOT NULL default '0',
targetID int(10) unsigned NOT NULL default '0',
language char(2) NOT NULL default '',
text longtext NOT NULL,
PRIMARY KEY (module, textType, targetID , language),
FULLTEXT KEY text (text)
) TYPE=MyISAM;
Közben kipróbáltam, semmi gondot nem okoz, hogy text néven létrehoztam egy táblát, minden művelet működik rajta.
egy képzeletbeli adatbázis motorral?
A text nem reserved word!
http://dev.mysql.com/doc/mysql/en/reserved-words.html
* ACTION
* BIT
* DATE
* ENUM
* NO
* TEXT
* TIME
* TIMESTAMP
Ez meg azt mondja számomra, hogy megfelelően idézőjelezve még a fenntartott szavakat is lehet használni:
Az SQL92 szabványban sem reserved word, sőt, egyik SQL szerverben sem:
Sybase:
http://manuals.sybase.com/onlinebooks/group-as/asg1250e/refman/@Generic__BookTextView/26603
InterBase:
http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1121622711:51507&page=ibp_reserved
Postgre:
http://www.postgresql.org/docs/7/interactive/syntax.htm#AEN426
DB2:
http://publib.boulder.ibm.com/infocenter/db2v7luw/index.jsp?topic=/com.ibm.db2v7.doc/db2s0/db2s0521.htm
ORACLE:
http://www-rohan.sdsu.edu/doc/oracle/server803/A54660_01/appc.htm
MS SQL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ra-rz_9oj7.asp
Ezek alapján már azt hiszem, bátran általánosítható, hogy a text nevű tábla és a text nevű mező nem okoz gondot az SQL adatbázisban. Ha meg mégis, akkor én kérek elnézést a dezinformációért!
Mintha a téma kezdene átmenni kötekedésbe, az elvről, ami az eredeti felvetés volt, meg szó sem esik. Remélem nem lesz a weblaborból is prog.hu
másolás