Kivételes esetek kezelése
Olyan adatokat kell adatbázisban tárolnom, ahol az adatok 99%-a szépen illeszkedik a sémára, de 1% "rosszul viselkedik". Értem ezalatt, hogy pl. labdarúgókat kell tárolnom és az esetek 99%-ában a first_name, last_name oszlopok tökéletesen elegek a nevek tárolására, de pl. a brazilok esetében igen csak elkélne egy "művésznév" oszlop is.
Sőt manapság már az állampolgárság sem tekinthető állandó adatnak, itt is van néhány "renitens", aki vagy kettős állampolgár, vagy urambocsá' még meg is változtatja ezt az attribútumát.
A kérdésem az volna, hogy a tapasztaltabbak szerint mi a helyes tervezői döntés ilyen esetben az adatbázisséma kialakítása során? Én úgy gondolom, hogy amiatt az 1% adat miatt, ami valóban ki is használja, felesleges a többi 99%-nálz "művésznév=NULL"-t tárolni, ill. az állapolgárságra is elég egy szimpla oszlop. A kivételes eseteket pedig külön táblában egészíteném ki, természetesen az alapadatokat tartalmazó tábla kulcsát használva idegen kulcsként. Továbbá felvetődött még bennem, hogy azt is tárolni kellene, hogy kihez vn extra adat és kihez nincs, mert ha mindig megnéznénk, hogy van-e plusz adat, nem lenne túl hatékony, ezért az alaptáblát mégis ki kéne egészíteni egy extra oszloppal, de az csak egy flag lenne, hogy van-e extra adat, vagy nincs. Ez talán nem okoz nagy overhead-et (adatok 99%-ánál flag=0), és a célt is megoldja. Ti is így csinálnátok, vagy esetleg létezik valami bevált jobb módszer ilyen esetekre?
■ Sőt manapság már az állampolgárság sem tekinthető állandó adatnak, itt is van néhány "renitens", aki vagy kettős állampolgár, vagy urambocsá' még meg is változtatja ezt az attribútumát.
A kérdésem az volna, hogy a tapasztaltabbak szerint mi a helyes tervezői döntés ilyen esetben az adatbázisséma kialakítása során? Én úgy gondolom, hogy amiatt az 1% adat miatt, ami valóban ki is használja, felesleges a többi 99%-nálz "művésznév=NULL"-t tárolni, ill. az állapolgárságra is elég egy szimpla oszlop. A kivételes eseteket pedig külön táblában egészíteném ki, természetesen az alapadatokat tartalmazó tábla kulcsát használva idegen kulcsként. Továbbá felvetődött még bennem, hogy azt is tárolni kellene, hogy kihez vn extra adat és kihez nincs, mert ha mindig megnéznénk, hogy van-e plusz adat, nem lenne túl hatékony, ezért az alaptáblát mégis ki kéne egészíteni egy extra oszloppal, de az csak egy flag lenne, hogy van-e extra adat, vagy nincs. Ez talán nem okoz nagy overhead-et (adatok 99%-ánál flag=0), és a célt is megoldja. Ti is így csinálnátok, vagy esetleg létezik valami bevált jobb módszer ilyen esetekre?
Hajrá
Az ezzel foglalkozó szakirányt egyébként módszertannak hívják illetve egyetemen Adatbázisok tantárgy keretein belül is oktatják. Ha szeretnél modelleket építeni, akkor tanuld meg, hogy kell, különben meg mondj konkrétumokat, mert a se füle se farka példáidon ember a talpán, aki kiigazodik és rájön, hogy mit akarsz.
Arról persze, nem beszélve, hogy nem ártana néha entereket ütni a szövegben és tagolni a mondandódat, háta kicsit könnyebben megértjük.
Konkrét válasz a kérdésedre: Ha olyan adat van, amelyikben nem vagy biztos, hogy külön táblába kell-e tenni, akkor csinálsz egy felmérést, hogy az esetek hány százalékában kell. Aztán, hogy mit csinálsz, az már a Te egyéni döntésed, ami projekttől, szervertől és nem utolsó sorban pénztárcától függ.
tényleg attól függ
most csak az állampolgárságra térnék ki. ha "csak úgy" van egy ilyen mező, akár vesszővel is benne lehet több érték. ha komolyabb statisztikák épülnek rá, jó lehet egy külön tábla. viszont ha az időbeli változásokat is vissza kell tudni keresni, akkor olyan tábla kell, amiben a mettől-meddig adatok is szerepelnek (úgy is emlegetik, hogy idősorok). először tudni kell, hogy mire van szükség, milyen jellegű lekérdezések lesznek. aztán kell az adatbázistervezés kérdéseiről dönteni.
Tasi