Primary key pres dve tabulky?
"Zíka Aleš, Ing."
Ales.Zika na pel.cb.ds.mfcr.cz
Čtvrtek Listopad 2 07:44:16 CET 2000
Zdravim,
jde v PostgreSQL udelat neco jako PRIMARY KEY nebo UNIQUE INDEX pres
vice tabulek?
Jde o nasledujici situaci. V programi pro vyhodnocovani zavodu mam
tabulku KMEN, kde jsou udaje o jednotlivych zavodnicich, kazdy zavodnik je
identifikovan automaticky generovanym ID. Startovni listina pro konkretni
zavod pak obsahuje jen tato ID, a pro ostatni udaje se saha do KMENe.
Ale udaje o zavodnikovi se muzou menit - jak starne, meni se mu
vekova kategorie a vykonostni trida, muze zmenit oddil, holky se vdaji...
Jenze, kdyz to zmenim v puvodnim zaznamu, bude to mit vliv na pripadne
opakovane vypisy ze starsich zavodu. Tak me napadlo, ze pokud se bude menit
udaj o zavodnikovi, tak mu vygeneruju novy zaznam s novam ID, takze zavodnik
bude v KMENu nekolikrat a kazdy zavod bude ukazovat na verzi, ktera byla
platna v dobe jeho konani.
Jenze tady se mi nelibi, ze tabulka KMEN bude bobtnat a to bude
zpomalovat jeji vyber behem jedouciho zavodu, kdy ta databaze bude dost
zatizena. Tak me napadlo vytvorit jeste tabulku KMENARCH, ktera bude
potomkem tabulky KMEN. Kdyz se budou menit udaje o zavodnikovi, zalozi se
nova verze v tabulce KMEN a zaroven se starsi verze vcetne sveho ID presune
do KMENARCH. Aktualni zavod tak bude hledat jen v kratke tabulce KMEN, pro
archivni vypis by se pouzila Postgresovska syntaxe: SELECT ... FROM kmen*; a
hledalo by se v obou.
Tady je ovsem hlavni podminka, ze ID musi byt vzajemne unikatni v
tabulkach KMEN i KMNENARCH. Pokud se budou obe vytvaret standardnim
postupem, tak je to zajisteno, muze se to ale porusit, kdyz se v tom bude
nekdo hrabat a menit ID rucne.
Nepochybne to lze zajistit nejakym triggerem, mozna i klauzuli
CHECK, jen me zajimalo, jestli neexistuje nejaka elegantnejsi moznost jako
UNIQUE nebo PRIMARY KEY pres vice (pribuznych) tabulek.
Ales Zika
Pelhrimov
e-mail: Ales.Zika na pel.cb.ds.mfcr.cz
Ales.Zika na seznam.cz
SMS: Ales.Zika na sms.underground.cz
Další informace o konferenci Test