table column friendly name

Fórumok

Ti általában hogyan oldjátok meg a következő gyakori feladatot a használt platformotokon?

Prezentálnod kell egy relációs adatbázis tábláját, táblázatos formában. Az esetek 99%-ban az attribútumoknak (oszlopoknak) más neve van az adatbázis rendszerben ("index", "name", "registrationDate" stb.), mint ahogy megjelenítéskor a táblázatban az oszlopfejlécekben látni szeretné az ember ("Kulcs", "Név", "Regisztráció dátuma").
Ezt a megfeleltetést hogyan realizáljátok?

Igazából azon gondolkozom, hogy a rengeteg lehetőség közül szerintetek melyik hatékony, egyszerű és újrafelhasználható? (Éppen most Java+MySQL-ben fogom használni, de a kérdés környezetfüggetlen.)

Arra gondoltam, hogy például az esetemben a JDBC lekérdezés-ből kapott ResultSet.ResultSetMetaData.getMetaData()-ból kinyerem az oszlopneveket. És a táblázat fejlécében megjelenítendő friendly nevet honnan veszitek ez alapján? (Esetleg többnyelvűségre is gondolva.) Lokalizációs libet használtok, és ez lesz a "hx0r" nyelv, és így lesz index => Kulcs ill. index => Index ? Vagy ezeket is táblában tároljátok, külön lekérdezés csinál hozzá egy függvény minden tábla minden oszlopához megjelenítéskor?. Vagy a tábla spéci metaadatában tároljátok (esetleg SQL "AS" label?), és onnan nyeritek ki közvetlenül a friendly nevet? Vagy van valami trükkös XML transzformációtok a metaadatokra?

Megint máshogy megfogalmazva, az MVC patternt alkalmazva a view-ban honnan jön és hogyan jelenítődnek meg a friendly oszlopnevek, mi ennek a metaadatnak az útja ebben a modellben?

ps. IMHO hiányzik ez "programtervezés" vagy hasonló fórum. Az ilyen típusú kérdések más absztrakciók, mint az "algoritmusok", még sincs jobb helyük.

Hozzászólások

Esetleg van olyan JDBC driver/wrapper/proxy ami olyan ResultSet-et ad tovább, ami annotálva van ennek megfelelően?

Tudom, hogy ez Java Persistance, de valami hasonló szép lenne, mert metaadatként adná tovább a metaadatot.

--
The Net is indeed vast and infinite...
http://gablog.eu

Praktikusnak a model inicializalasa tunik. Ugyan szigoruan veve ez megjelenitesi reteg, de egy masik szempontbol kozelitve viszont a model property-jeinek human neve - marpedig ezt a tombot ki lehet a lekerdezheto, am custom (szamitott, vagy egyeb) propertyk leirasaval is egesziteni - erre viszont csak a model kepes.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Java-ban peldaul a column headerek a TableModel resze. Azt hiszem maradok annal, h amikor ezt implementalom, itt fogom a lekerdezes metaadataibol kinyerni az eredeti nevet, majd internationalization-nal fogom leforditani human/friendly-ve.

--
The Net is indeed vast and infinite...
http://gablog.eu

gettext

Gondolom MVC modellt akarod követni, ugye ekkor az adatmegjelenítéstől független a modell.
Fogod, visszaadod a resultsetet, szt view rétegben mondjuk gettext-tel lekérdezed a hozzávaló oszlopnév-fordítást.

_(row->column_name), valahogy így. A gettext-nek megvan az a jó tulajdonsága, hogyha nincs fordítás az adott msgid-hez, akkor visszaadja azt. Így fordítatlan nyelv esetén visszakapod az oszlop nevét.

Ha csak gányolsz, akkor meg külön táblából kiolvasod az oszlopnév fordítását, s úgy állítod össze a kverit. és akkor lesz a
SELECT `Answer`.`vb_start` AS `Érvényesség kezdete` FROM Answer -ből
SELECT `Answer`.`vb_start` AS `TRANSLATE(Érvényesség kezdete)` FROM Answer

Ugye itt a translate queryn kívülről jön. így már az oszlopra viszont vagy az ismert fordítással ,vagy index alapján hivatkozol :D
Úgyhogy gettext plz. Pláne, hogy a legtöbb MVC alapú cucc alapból támogatja (RoR, CakePHP, ...) - értsd: a framework-be be van építve a támogatása, nem kell külön gányolni.

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

ps. IMHO hiányzik ez "programtervezés" vagy hasonló fórum.

IMHO vesd fel treynek, ha esszerunek talalja, megcsinalja. Igy szuletett a Virtualizacio kategoria is.