3. Tvorba schématu

3.1. Grafické notace a jejich přepínání

Jak již bylo uvedeno v úvodu, schéma je možné modelovat v jedné ze 3 grafických notací - Chenově, binární nebo UML. Než schéma začnete vytvářet, nejprve si rozmyslete, ve které grafické notaci budete schéma tvořit. Každá grafická notace má svá specifika, která neumí zobrazit ostatní notace, a tudíž přepínání mezi notacemi má svá omezení (některé informace nejsou v ostatních notacích zobrazitelné a některé propojení prvků je dokonce zakázané).

Přepínat grafické notace lze i během práce, ale může se stát, že ve schématu bude nutno některé objekty dekomponovat nebo smazat. Na omezení při přepínání notací budete upozorněni v dialogu pro přepínání notací (viz. Obrázek 3).

Grafickou notaci přepnete z hlavního menu ve složce VIEW -> GRAPHIC NOTATION stiskem položky požadované notace. Následně se otevře dialogové okno, ve kterém jsou všechna omezení přepnutí na požadovanou notaci uvedena včetně seznamu objektů, které nesplňují kritéria notace do které přepínáte. Akce, která bude s nevyhovujícími objekty provedena je v popisu přepínání též specifikována.

Obrázek 3- Dialog pro přepínání notací

V následujícím popisu budete na příslušné rozdíly tvorby schématu v různých grafických notacích upozorněni.

3.2. Vytvoření entitního typu

Pro vytvoření entitního typu existují 2 rovnocenné postupy.

- vytvoření nového entitního typu (zkráceně entity). Poté přesunete kurzor na pracovní plochu. Symbol kurzoru se změní na kříž a v informační ikoně se zobrazí symbol pro přidávání entity. Stiskem levého tlačítka myši vytvoříte nový entitní typ, jehož levý horní roh je usazen do místa, kde bylo kliknuto. Nové entitě je přiděleno generické jméno ENTITYxx, kde xx je automatické pořadové číslo.

Obrázek 4 - Lokální kontextové menu pracovní plochy

Po zvolení možnosti Add Entity se kurzor změní na kříž a indikace módu aplikace se změní na mód přidávání entity. Stiskem levého tlačítka myši vytvoříte v místě kurzoru nový entitní typ.

3.3. Vytvoření vztahového typu a účasti entitního typu ve vztahu

Nový vztah mezi dvěma entitními typy navážete tak, že u jedné z entit vyvoláte lokální kontextové menu stiskem pravého tlačítka myši na objektu a vyberete položku Add Relationship to other Entity. Kurzor se změní na kříž, který přesunete nad entitní typ, který chcete zapojit do vztahu a stisknete levé tlačítko myši. Vytvoří se vztahový typ s účastmi k oběma entitním typům. Všechny nové objekty mají generická jména.

V případě, že máme vztahový typ vytvořen, je možné entitní typ zapojit do vztahu - spojit ho účastí se vztahovým typem. Vytvoření účasti je možné několika způsoby.

V závislosti na grafické notaci vznikne obdobný fragment schématu, jako jedna varianta z následujícího obrázku (viz. Obrázek 5).

Obrázek 5 - Vztah mezi entitními typy (nahoře Chenova notace, uprostřed binární a dole UML)

3.4. Operace s entitním typem

Většina operací, které lze s entitním typem provádět (kromě změny jména), se zobrazí v lokálním kontextovém menu po stisknutí pravého tlačítka myši na entitním typu (viz. Obrázek 6).

Obrázek 6- Lokální kontextové menu entitního typu

3.4.1. Změna jména

Jméno entitního typu se mění na panelu vlastností umístěném v pravé části aplikace, stejně jako jména všech ostatních objektů. Do položky name napíšete jméno a potvrdíte klávesou "ENTER", "TAB" nebo stiskem levého tlačítka myši na další položku v panelu.

3.4.2. Přidání atributu

Přidání atributu se provádí volbou Add atribute v lokálním kontextovém menu. V případě práce v Chenově grafické notaci se kurzor změní v kříž a stisknutím levého tlačítka myši na pracovní ploše atribut na příslušné místo vložíte. V ostatních notacích se atribut automaticky vloží na poslední místo do příslušného entitního typu.

3.4.3. Navázání vztahu s jiným entitním typem a přidání účasti ke vztahu

Postup popsán v kapitole 3.3.

3.4.4. Vytvoření entitního podtypu

Podtyp z entitního typu vytvoříte jedním ze dvou způsobů:


Příklad ISA hierarchie naleznete na následujícím obrázku (viz. Obrázek 7).


Obrázek 7 - Příklad ISA hierarchie; Chenova notace vlevo, binární vpravo

3.4.5. Vyjmutí podtypů z hierarchie objektů

V případě, že je entitní typ nadtypem, objeví se v jeho lokálním menu navíc volba Remove ISA childs. V případě, že je podtypem, objeví se volba Reset ISA parent. A jestliže je nadtypem i podtypem zároveo, bude mít v lokálním menu položky obě (viz. Obrázek 8).

Obrázek 8 - Položky lokálního menu pro rozbití ISA vztahu

Pokud chcete odstranit z entitního nadtypu všechny podtypy, stisknete volbu Remove ISA child. Pokud chcete entitní podtyp odstranit z ISA hierarchie, stiskněte volbu Reset ISA parent.

V obou případech odebrané entitní typy "odskočí" doprava, takže je na první pohled patrné, které entitní typy byly odebrány.

3.4.6. Dekompozice s použitím identifikační závislosti

Entitní typ lze dekomponovat na dva ve dvou krocích.

  1. Z lokálního menu entity vyberete volbu Add identification dependent entity. Po zvolení se kurzor změní na kříž a stiskem levého tlačítka myši lze umístit nově vzniklý entitní typ na plochu. Společně s vytvořením entitního typu se vytvoří i identifikační závislost na původním entitním typu (příklad viz. Obrázek 9).
  2. Atributy si můžete přenést z původní entity na novou a zpět. Stisknete a držíte pravé tlačítko myši na atributu a přesunete jej nad entitní typ, ke kterému jej chcete zapojit, a atribut zde upustíte.

Obrázek 9 - Příklad identifikační závislosti (slabá entita vpravo)

3.4.7. Dekompozice s použitím vztahového typu

Dekomponovat entitní typ lze i s využitím vztahového typu a to opět ve 2 krocích.

  1. Zvolením volby Add relationship to new entity. se změní kurzor na kříž a stiskem levého tlačítka myši umístíte na plochu nový entitní typ a vztahový typ. Do vztahového typu jsou původní a nový entitní typ zapojeny s účastí (1,1) - unární a povinná účast (příklad viz. Obrázek 10).
  2. Atributy si můžete přenést z původní entity na novou a zpět. Stisknete a držíte pravé tlačítko myši na atributu a přesunete jej nad entitní typ, ke kterému jej chcete zapojit, a atribut zde upustíte.

Obrázek 10- Použití Add relationship to new entity

3.4.8. Slévání entitních typů

Pro slévání entitních typů zvolíte položku Compose entity with z lokálního menu jednoho z entitních typů. Poté vyberete entitní typ se kterým chcete entitní typ slít. Při přesunu nad jiným entitním typem se kurzor změní na ruku a po stisknutí levého tlačítka myši dojde k přilití tohoto entitního typu do entitního typu, ze kterého byla akce vyvolána. Přepojí se všechny jeho atributy, účasti ve vztahu, identifikační závislosti a ISA podtypy. Následné konflikty lze řešit v dialogovém okně kontroly konzistence schématu.

3.4.9. Přizpůsobení velikosti obsahu

Po stisku položky Readjust size z lokálního menu se velikost entity zmenší na minimální přizpůsobenou elementům uvnitř entitního typu (jménu, ISA podtypům, v binární notaci atributům, v UML notaci ještě jejich datovým typům).

3.4.10.Vytvoření a editace Constraints

U každého entitního typu můžete zadat další omezení. V lokálním menu entitního typu stisknete položku Edit constraints a otevře se dialogové okno - textový editor (viz. Obrázek 11), do kterého můžete zapsat omezení.

Obrázek 11- Editor pro vytvoření a editaci Constraints

Tyto omezení jsou zobrazitelná z definice grafických notací pouze v UML notaci. Příklad entitního typu s vyplněným Constraints naleznete na následujícím obrázku (viz. Obrázek 12).

Obrázek 12- Entitní typ v UML notaci s Constraints

3.4.11.Smazání entitního typu

Smazání entitního typu se provede volbou položky Delete z lokálního menu nebo označením objektu stiskem levého tlačítka myši na objektu a stiskem klávesy "Delete". Spolu s entitním typem se též odstraní všechny identifikační závislosti, všechny podtypy odstraňovaného entitního typu a všechny účasti tohoto entitního typu i případných podtypů ve vztazích.

3.4.12.Nastavení primárního klíče

Primární klíč je nastavován pomocí příslušné volby u atributu, který do primárního klíče chcete zapojit. Postup je popsán v kapitole 3.6.3.

3.4.13.Vytvoření slabého entitního typu (vytvoření identifikační závislosti)

Identifikační závislost se vytvoří pomocí navázání identifikačního spojení mezi dva entitní typy. Pravým tlačítkem myši vyvoláte lokální kontextové menu budoucího identifikačně závislého entitního typu, vyberete položku Add identification dependency on a kurzor se změní na kříž. Kurzor přesunete nad entitní typ, který se má stát identifikačním vlastníkem, stisknete levé tlačítko myši a vytvoří se vztah.

Příklad identifikační závislosti je zobrazen na následujícím obrázku (viz Obrázek 13).

Obrázek 13- Příklad identifikační závislosti

3.4.14.Zrušení identifikační závislosti

Identifikační závislost se zruší z lokálního menu identifikační závislosti volbou její jediné položky Delete nebo stiskem klávesy "Delete" po jejím označení.

3.5. Operace se vztahovým typem

Veškeré činnosti spojené se vztahovým typem (kromě změny jména) naleznete v jeho lokálním kontextovém menu (viz. Obrázek 14), které vyvoláte stiskem pravého tlačítka myši nad zvoleným vztahovým typem.

Obrázek 14- Lokální kontextové menu vztahového typu

3.5.1. Změna jména

Jméno vztahového typu se mění na panelu vlastností umístěném v pravé části aplikace, stejně jako jména všech ostatních objektů. Do položky name napíšete jméno a potvrdíte klávesou "ENTER", "TAB" nebo stiskem levého tlačítka myši na další položku v panelu.

3.5.2. Přidání atributu

Atributy ke vztahovým typům lze přidat pouze v Chenově notaci (UML notace podporuje atributy u vztahových typů sdružené v Association Class, ale ta není v ERM v4.0 naimplementována).

Přidání atributu ke vztahovému typu se provede volbou položky Add atribute v lokálním menu. Kurzor se změní na kříž a indikovaný mód aplikace se změní na přidávání atributu. Stiskem levého tlačítka myši na zvoleném místě umístíte nový atribut na plochu.

Příklad atributu připojeného do vztahového typu je uveden na následujícím obrázku (viz. Obrázek 15).

Obrázek 15- Vztahový typ s atributem

3.5.3. Dekompozice pomocí slabého entitního typu

Dekompozici pomocí slabého entitního typu provedete volbou položky Decompose v lokálním menu vztahového typu. Vztahový typ je nahrazen slabým entitním typem, který je identifikačně závislý na všech entitních typech původně zapojených do vztahu (spojených s původním vztahovým typem).

Vztah před a po dekompozici je zobrazen na následujících 2 obrázcích (viz. Obrázek 16 a Obrázek 17).

Obrázek 16- Dekompozice pomocí slabého entitního typu - před dekompozicí

Obrázek 17- Dekompozice pomocí slabého entitního typu - po dekompozici

3.5.4. Slévání vztahových typů (pouze v Chenově notaci)

Pro slévání vztahových typů v Chenově notaci zvolte položku Compose with z lokálního menu vztahového typu. Při přesunu kurzoru přes jiný vztahový typ dojde ke změně symbolu kurzoru na ruku a stisknete-li levé tlačítko myši nad vztahovým typem, dojde k přilití tohoto vztahového typu. Přepojí se všechny jeho atributy a účasti. Následně vzniklé konflikty lze řešit v dialogovém okně kontroly konzistence schématu.

V binární a UML notaci jsou povoleny pouze binární vztahy a proto v nich není umožněno slévání vztahových typů.

3.5.5. Smazání vztahového typu

Smazání vztahového typu provedete volbou položky Delete z lokálního menu nebo označením objektu stiskem levého tlačítka myši na objektu a stiskem klávesy "Delete".

Spolu se vztahovým typem se odstraní i všechny účasti entitních typů ve vztahu, který tento vztahový typ reprezentuje.

3.6. Operace s atributem

Většina operací je prováděna z lokálního kontextového menu atributu a změna vlastností je prováděna z panelu vlastností (viz. Obrázek 18). Počet položek v menu atributu závisí na vlastníkovi (entitní nebo vztahový typ), zvolené grafické notaci a vlastnostech atributu.

Obrázek 18- Lokální kontextové menu a panel vlastností atributu

3.6.1. Vytvoření atributu

Nový atribut je vytvářen volbou položky Add atribute u entitního typu, ke kterému má být vytvořen. Ke vztahovému typu lze stejným způsobem atribut vytvořit, ale pouze v Chenově grafické notaci.

3.6.2. Změna jména

Jméno atributu se mění na panelu vlastností umístěném v pravé části aplikace, stejně jako jména všech ostatních objektů. Do položky name napíšete jméno a potvrdíte klávesou "ENTER", "TAB" nebo stiskem levého tlačítka myši na další položky v panelu.

3.6.3. Přidání/odebrání atributu z primárního klíče

Přidání nebo odebrání atributu z primárního klíče lze provést 2 rovnocennými způsoby.

S přidáním atributu do primárního klíče se automaticky nastaví vlastnosti Unique a Mandatory na "Yes". Při odebrání atributu z primárního klíče se spolu s vlastností Primary změní na "No" i vlastnost Unique. Vlastnost Mandatory zůstává implicitně na "Yes".

Pokud je vlastníkem entitní podtyp nebo vztahový typ a pokusíte se v panelu vlastností nastavit vlastnost Primary na "Yes", budete upozorněni, že to není možné, protože tyto konstrukty nemohou mít primární klíč.

3.6.4. Přepínání vlastnosti atributu Unique

Přepínání vlastnosti Unique je stejné jako přidávání/odebírání z primárního klíče, viz. kapitola 3.6.3. (bui vyberete příslušnou volbu z lokálního menu nebo přepnete vlastnost Unique v panelu vlastností).

Přepínání této vlastnosti je dostupné, pouze tehdy, je-li vlastníkem entitní typ.

3.6.5. Přepínání povinný / nepovinný atribut

Nepovinný atribut je v Chenově notaci zobrazen jako prázdný kruh, povinný jako kruh plný. V binární notaci je povinnost vyznačena symbolem "*". Pokud je atribut povinný, má v menu volbu Optional a jejím zvolením se stane nepovinným. Pokud je nepovinný, potom má v menu volbu Mandatory a jejím zvolením se stane povinným.

3.6.6. Změna datového typu

Každému atributu lze určit datový typ Data type stiskem levého tlačítka myši na zadávacím poli v panelu vlastností. Zobrazí se dialog, kterým vyberete datový typ a upřesníte jeho vlastnosti (délku, přesnost), viz Obrázek 19.

Obrázek 19- Dialog pro výběr datového typu

V případě zvolení volby User defined lze vybrat konkrétní uživatelem nadefinovaný typ z nabídky, která se objeví (viz. Obrázek 20).

Obrázek 20- Dialog pro výběr datového typu - výběr uživatelsky definovaného typu

Změny datového typu jsou aplikovány ihned. Dialog zavřete stisknutím křížku v pravém horním rohu okna.

3.6.7. Změna pořadí atributů u entitního typu

V binární a UML grafické notaci jsou atributy drženy uvnitř entitního typu. Pokud chcete změnit pořadí atributu, musíte vyvolat lokální menu stisknutím pravého tlačítka myši a vybrat položku pro příslušný posun pořadí atributu.

Význam položek lokálního menu:

- přesune atribut na první místo
- posune atribut o jedno místo nahoru
- posune atribut o jedno místo dolu
- přesune atribut na poslední místo

Pozn.:
V případě, že pracujete v binární notaci, jsou zvl᚝ seskupeny atributy primárního klíče a zvl᚝ ostatní. Mezi těmito skupinami nelze navzájem atributy pomocí těchto tlačítek přesouvat. Například přesunete-li atribut, který není součástí primárního klíče nahoru, posune se nejvýše na první místo za atributy primárního klíče.

3.6.8. Přesun atributu k jinému entitnímu nebo vztahovému typu

Pro přesunutí atributu k jinému entitnímu typu chytnete atribut pravým tlačítkem myši a táhnete jej nad nového vlastníka, kde ho upustíte. Atribut je odpojen od původního entitního nebo vztahového typu a přidán k novému vlastníkovi. Takto lze přenášet atributy mezi entitními i vztahovými typy i kombinovaně (pokud notace dovoluje, aby vztahové typy vlastnily atributy).

3.6.9. Smazání atributu

Atribut odstraníte označením a stiskem klávesy "Delete" nebo volbou položky Delete z lokálního kontextového menu.

3.7. Operace s účastmi

Operace s účastmi jsou prováděny z lokálního kontextového menu atributu a změna vlastností je prováděna z panelu vlastností. Lokální menu účasti vyvoláte stisknutím pravého tlačítka myši na jménu účasti. Lokální kontextové menu a panel vlastností účasti jsou znázorněny na následujícím obrázku (viz. Obrázek 21).

Obrázek 21- Lokální kontextové menu a panel vlastností účasti

3.7.1. Vytvoření účasti

V případě, že máte vytvořen nějaký vztahový a entitní typ, je možné entitní typ zapojit do vztahu (spojit ho účastí se vztahovým typem), pokud není překročen maximální počet účastí vztahového typu vzhledem k aktuální grafické notaci.

Vytvoření účasti je možné několika způsoby.

3.7.2. Nastavení povinnosti / nepovinnosti (parciality)

Pokud je účast entitního typu nepovinná (0,x), potom se v lokálním menu objeví volba Mandatory, pomocí které je možné přepnout účast na povinnou. Pokud je účast povinná (1,x), potom se v lokálním menu zobrazí volba Optional, pomocí které lze účast přepnout na nepovinnou.

3.7.3. Nastavení kardinality (arity) účasti

Podobně dvoustavově se nastavuje i kardinalita účasti. Pokud je účast n-ární, potom je v menu volba Unary cardinality, pokud je unární, je v menu volba N-ary cardinality.

3.7.4. Přizpůsobení účasti

Jedině účast nabízí volbu Customize pro vyvolání dialogů pro nastavení vlastností účasti. Po stisknutí tlačítka se zobrazí dialog, který umožouje nastavit vlastnosti účasti (viz Obrázek 22).

Obrázek 22- Customize dialog pro účast

Dialog obsahuje jméno účasti Role, povinnost účasti Mandatory, přilepování entitní relace ke vztahové relaci Merge a kardinalitu Cardinality (unární nebo n-ární).

Za dialogovým oknem stojí logika, která nabízí přilepování tehdy, je-li to doporučované a naopak nenabízí tehdy, když to není možné, nebo nedoporučované. Pokud uživatel požaduje/nepožaduje přilepování, musí tuto volbu manuálně přepnout.

Textová položka se v dialogu po zadání potvrdí stiskem klávesy "Enter", ostatní vlastnosti jsou nastavovány okamžitě a nevyžadují žádné potvrzení.

3.7.5. Smazání účasti

Volbou Delete nebo stiskem klávesy "Delete" smažete účast entitního typu ve vztahu. Entitní typ i vztahový typ zůstávají nadále ve schématu.