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.
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.
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)
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
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.
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.
Postup popsán v kapitole 3.3.
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
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.
Entitní typ lze dekomponovat na dva ve dvou krocích.
Obrázek 9 - Příklad identifikační závislosti (slabá entita vpravo)
Dekomponovat entitní typ lze i s využitím vztahového typu a to opět ve 2 krocích.
Obrázek 10- Použití Add relationship to new entity
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.
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).
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
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.
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.
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
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í.
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
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.
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
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
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ů.
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.
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
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.
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.
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íč.
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.
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.
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.
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.
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).
Atribut odstraníte označením a stiskem klávesy "Delete" nebo volbou položky Delete z lokálního kontextového menu.
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
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.
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.
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.
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í.
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.