|
DM /
Power Designer – Co udìlat s dìdiènostíJak udìlat dìdiènostMáte entitní typ a nìjaké speciální podtypy tohoto entitního typu: Pro vyznaèení skuteènosti, ¾e jde o podtypy, pou¾ijeme nástroj Inheritance z palety: ![]() Tímto nástrojem táhneme my¹í od podtypu k nadtypu, ![]() v modelu se objeví tyto symboly: ![]() Od dal¹ích podtypù táhneme nástrojem Inheritance ne ji¾ k nadtypu, ale k symbolu "kopeèku" v modelu. ![]() Symbol "kopeèku" je uzel, který lze posouvat; pøedstavuje objekt pro nastavení vlastností dìdiènosti: ![]() Poklepáním na objekt "kopeèku" dostaneme jeho dialog Properties. V nìm slou¾í Name, Code a Comment stejnì jako u v¹ech objektù v PD. Za¹krtnutí Mutually exclusive children a Complete znázorní tyto volby obrázky v symbolu "kopeèku" v modelu, nicménì Power Designer pro tyto volby do fyzického modelu nic nevygeneruje. Triky, kterými mù¾ete eventuelnì zajistit odpovídající omezení pro databázi, jsou popsány ní¾e. ![]() Varianty mapováníNa kartì Generation musíte rozhodnout, která z variant mapování dìdiènosti bude pou¾ita. V pøípadì, ¾e generujete rodièe i dìti, je nutno nále¾itì pøepnout Inherit only primary attributes: ![]() Kyd¾ generujete pouze rodièe (celý pøíklad je zde): ![]() Kdy¾ generujete pouze dìti: ![]() – pro tuto hierarchii: ![]() Jak zajistit vzájemnou výluènost èi úplnost èlenìníMo¾ná vás zarazilo, proè v pøíkladu vý¹e uvádìném má entita Sluzba jako primary identifier oznaèeny dva atributy, kód slu¾by a je¹tì typ slu¾by. Dùvodem je zámìr zajistit vzájemnou výluènost podtypù. Prvním krokem je tento, tj zahrnutí atributu, odli¹ujícího o jaký podtyp se jedná, do primary identikikace nadtypu. Pro tento atribut zároveò vymezíme povolené hodnoty – v tomto pøíkladu je tím odli¹ujícím atributem typ slu¾by, a vymezíme pro nìj hodnoty o a d: ![]() Dal¹í kroky se provedou a¾ ve vygenerovaném fyzickém modelu. V nìm ve sloupcích vzniklých v podtypech z toho odli¹ujícího atributu, zdìdìného z nadtypu v rámci primární identifikáce, zú¾íme vymezení hodnot na jedinou povolenou hodnotu, odpovídající tomu kterému podtypu: ![]() ![]() Tím je celý trik dokonèen. Jeho úèinek je zaji¹tìn referenèní integritou slo¾ených cizích klíèù: ![]() Slu¾ba, která je v tabulce OPERACE, nemù¾e být v tabulce ND a obrácenì. Navíc jsou tyto pøípady konzistentnì oznaèeny kódem podtypu v tabulce SLUZBA. Tento trik je mo¾no pou¾ít i v pøípadì "absorpce" podtypù do tabulky nadtypu (kdy¾ se generuje pouze rodiè) - viz Výluènost pøi absorpci do nadtypu . U rozdìlení do podtypù (kdy¾ se generují pouze dìti) je tento trik nepou¾itelný. Pokud by ¹lo o úplnost èi neúplnost èlenìní, èásteèné opatøení mù¾eme provést u nadtypu vyjmenováním èi nevyjmenováním dal¹ích pøípustných hodnot do atributu odli¹ujícího jednotlivé podtypy. Podmínku, aby ka¾dá slu¾ba v nìjaké z podøízených tabulek skuteènì byla, na SQL úrovni jednodu¹e nazajistíme (odùvodnìní ponechávám bystrému ètenáøi). < Identifikaèní závislost | Power Designer postupnì | Alternativní klíèe > |