Navrh databazy - vhodny postup

Jan Serak sherry na pikebo.cz
Pátek Červen 7 16:08:26 CEST 2002


Juraj Chlebec wrote:
> 
> Dobry den,
> 
> Pre navrh databazy pre projekt distancneho vzdelavania pouzivam case
> program CaseStudio (2.9). Rad by som sa spytal na vas nazor na navrh
> schemy databazy pre tento projekt...

Abych se priznal, CaseStudio neznam a jeho vystup mi pripada ponekud
zmateny (patrne tim, ze nevim presne, co jaky symbol znamena, napr.
jaky je rozdil mezi sedou a bilou entitou a mezi ostrymi a zkosenymi
rohy entity).

> A taka otazka (nie som odbornik na databazy), je bezne aby sa cudzie
> kluce kopirovali postupne cez vsetky tabulky ked nastavim vazby medzi
> tabulkami na identifikacnu relaciu? 

Tomu dotazu rozumim jen castecne, nebot obsahuje terminologicky gulas.
Napr. nechapu, proc se constraint ("integritni omezeni") nazyva Relace14
a jaka muze byt jina vazba mezi tabulkou a relaci, nez ta, ze je to
jedno
a to same (snad jen s tim rozdilem, ze "tabulka" je slovo, pouzivane
pro intuitivni uchopeni matematickeho pojmu "relace" uzivateli relacni
databaze, kteri matematickou oporu relacnich databazi neznaji).

Ale zkusim uhodnout, oc Vam jde:

Mate tabulku (relaci) modulu (nazvanou Modules), tabulku casti (Parts),
tabulku
kapitol (Chapters) atd. Mezi temito tabulkami mate definovane vazby
(integritni
omezeni), ktere maji zajistit jakysi vztah mezi casti a modulem
(informace o tom,
do ktere casti modul patri), mezi modulem a kapitolou atd.

V zasade jsou mozne dva pristupy - prirozene a umele klice (to uz nema
s relacni databazi nic spolecneho, to uz je zalezitost tykajici se
aplikace relacni databaze). Vy jste se rozhodl pro prirozene klice, tzn.
kazdy modul ma nejaky identifikator, ktery slouzi jako primarni klic
pro vyhledani modulu. Primarnim klicem casti je pak usporadana dvojice
(klic_modulu,klic_casti), pricemz klic_casti nemusi byt unikatni v ramci
cele tabulky casti. Dale primarnim klicem kapitoly je usporadana trojice
(klic_modulu,klic_casti,klic_kapitoly). Vyhodou tohoto pristupu je, ze
si kapitola nese s sebou odkaz na modul, tj. klice mohou byt
mnemotechnicke,
nevyhodou je, ze to muze byt narocnejsi na prostor a na implementaci
automatic-
keho vygenerovani klice v pripade, ze uzivatel nechce klic zadavat.

Opacnym pristupem je pouziti umelych klicu. U modulu a casti to vyjde
nastejno,
kapitola vsak uz nese pouze odkaz na cast (ponevadz constraint mezi
castmi a
moduly zarucuje, ze cast muze patrit jen jednomu modulu). Vyhody a
nevyhody
jsou evidentni: snizi se mira redundance, narok na prostor, klice lze
lehce generovat (a de facto zcela odstinit od uzivatele, ktery o nich
vubec
nemusi vedet), ale z kapitoly na modul nevede cesta prima, ale musi se
jit
pres casti.

> Navrhuje sa to takymto sposobom
> alebo staci ponechat len vazbu na predchadzajucu tabulku? Aky je
> najlepsi sposob... (schema este nie je stopercentne dotiahnuta dokonca,
> ale zmeny sa uz nepredpokladaju)

Jak jsem uvedl, kazdy ze zpusobu ma sve plusy a minusy a zalezi na
tvurci
schematu, protoze jen on vi, co se od toho schematu ocekava.

						Jan Serak


Další informace o konferenci Test