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