DIPLOMOVÁ PRÁCE - Cuni.cz

Transcription

Univerzita Karlova v PrazeMatematicko-fyzikální fakultaDIPLOMOVÁ PRÁCEBc. Hana KozelkováEditor datových modelů s podporou reverzního datového inženýrstvíKatedra softwarového inženýrstvíVedoucí diplomové práce: Mgr. Pavel JežekStudijní program: Informatika, softwarové systémy

2

Děkuji panu Mgr. Pavlu Ježkovi za vedení mé práce, za rady a za čas, který mi běhemvypracovávání této práce věnoval.Prohlašuji, že jsem svou diplomovou práci napsala samostatně a výhradně s použitímcitovaných pramenů. Souhlasím se zapůjčováním práce.V Praze dne 10.4.2009Hana Kozelková3

4

OBSAH1ÚVOD .91.11.22CÍLE PRÁCE.10STRUKTURA PRÁCE .10VÝCHOZÍ TEORIE .122.1NÁVRH RELAČNÍ DATABÁZE .122.1.1 Alternativy ER modelování.132.2ER DIAGRAM .132.2.1 O vztazích podrobněji.142.2.2 Extended ER diagram s dědičností.162.2.3 Principy návrhu .172.3PŘEVOD Z ER MODELU DO RELAČNÍHO MODELU .183DATOVÉ REVERZNÍ INŽENÝRSTVÍ .203.1REVERZNÍ INŽENÝRSTVÍ OBECNĚ .203.2K ČEMU SLOUŽÍ DRE .203.3JAK SE PROVÁDÍ DRE.203.4ALGORITMY PRO DRE.213.4.1 Algoritmus Bláha – Premerlani.223.4.2 Algoritmus zaměřený na n-ární vztahy.233.4.3 Seskupovací algoritmus .233.4.4 Transformační algoritmus .243.4.5 Algoritmus Reda Alhajj .273.4.6 Srovnání algoritmů .283.5VYBRANÝ ALGORITMUS DETAILNĚJI.293.5.1 Zjišťování kandidátních klíčů .293.5.2 Zjišťování cizích klíčů.303.5.3 Vytvoření RID grafu .313.5.4 Nalezení kardinalit vztahů .313.5.5 Odstranění symetrických vztahů.313.5.6 Odstranění tranzitivních vztahů .323.5.7 Identifikace vztahů s atributy, vztahů M:N a n-árních vztahů.333.5.8 Nalezení ISA hierarchií .344ROZŠÍŘENÍ PŮVODNÍ VERZE PROGRAMU ERTOS.364.1HLAVNÍ BODY ROZŠÍŘENÍ .364.2ZMĚNA VÝVOJOVÉHO PROSTŘEDÍ .374.3OPRAVY PŮVODNÍ VERZE.374.4ZMĚNY PŘI ROZŠIŘOVÁNÍ PŮVODNÍHO PROGRAMU .384.4.1 Více modelů .384.4.2 Nový způsob ukládání souborů.394.4.3 Další změny .414.5POUŽITÉ KNIHOVNY .414.5.1 Knihovna pro dockování.414.5.2 Knihovna pro automatické rozložení grafů .424.5.3 Knihovny pro přístup k databázím .445IMPLEMENTACE REVERZNÍHO INŽENÝRSTVÍ .455

5.1ZÍSKÁVÁNÍ INFORMACÍ O DATABÁZI.455.2PRŮVODCE PROCESEM REVERZNÍHO INŽENÝRSTVÍ .465.2.1 Hledání klíčů .485.2.2 Vytváření ER modelu .495.2.3 Algoritmus v případě nedostatečných dat .515.3DATABÁZOVÝ MODEL.515.4ROZMÍSTĚNÍ OBJEKTŮ NOVĚ VYTVOŘENÉHO DIAGRAMU .525.5PROVÁDĚNÍ ALGORITMU POSTUPNĚ NA VYŽÁDÁNÍ .525.5.1 Rozšíření ER diagramu.545.6PROMÍTÁNÍ ZMĚN ER DIAGRAMU DO DB DIAGRAMU .565.7TECHNICKÉ DETAILY .575.7.1 Vlákna a synchronizace přístupu na formulář .575.7.2 Získávání informací z konkrétních databázových systémů .596HODNOCENÍ VÝSLEDKŮ ALGORITMU .636.1DRE V JINÉM SOFTWARU .636.1.1 DB-MAIN 9.0.636.1.2 Toad Data Modeler 3.3 .676.1.3 Embarcadero ER/studio 8.0 .696.1.4 DbWrench 1.5.2.706.1.5 Závěrečné shrnutí .706.2NEDOKONALOSTI ALGORITMU .706.3POUŽITÉ TESTOVACÍ DATABÁZE .717ZÁVĚR .72POUŽITÁ LITERATURA .74PŘÍLOHY .77PŘÍLOHA A – OBSAH CD-ROM.77PŘÍLOHA B – UŽIVATELSKÁ DOKUMENTACE .78Instalace programu .78Spuštění programu.78Způsoby práce s editorem.79Editace ER diagramu .79Kontrola schématu.85Transformace schématu do relačního modelu .85Databázový diagram .86Zpětná transformace z databáze (DRE) .87Uložení do souboru.92Podrobný popis pracovního prostředí.93PŘÍLOHA C – SQL SKRIPT VYGENEROVANÝ Z PROGRAMU ERTOS .98PŘÍLOHA D – UKÁZKA ER DIAGRAMŮ VYTVOŘENÝCH POMOCÍ DRE.1006

Název práce: Editor datových modelů s podporou reverzního datového inženýrstvíAutor: Bc. Hana KozelkováKatedra: Katedra softwarového inženýrstvíVedoucí diplomové práce: Mgr. Pavel JežekE-mail vedoucího: pavel.jezek@dsrg.mff.cuni.czAbstrakt:Tato práce rozšiřuje bakalářskou práci s názvem Editor ER diagramů s podporou převodu dorelačního modelu a program ERtoS, který vznikl jako její součást. Původní programpodporuje kreslení ER diagramů klasickou notací, dále jsou podporovány ISA hierarchie,n-ární vztahy, atributy u vztahů i několikanásobné atributy.Hlavním cílem práce je zavést do editoru reverzní inženýrství, které umožňuje vytvořit ERdiagram z existující databáze. Výsledný editor podporuje konceptuální a logické modelya jejich obousměrný převod. Logický model může být vypsán v podobě SQL skriptu. Datovéreverzní inženýrství (DRE) provádí program pomocí přímého připojení do databáze, množinupodporovaných databází lze rozšířit pomocí pluginů.Práce obsahuje teoretický úvod do ER modelování a DRE. Je zde srovnáno několikexistujících algoritmů pro DRE, podrobně je popsán vybraný algoritmus včetně navrženýchzlepšení a také způsobu implementace. Na závěr je provedeno porovnání s několikapodobnými programy jak z komerční, tak akademické sféry.Klíčová slova: datové reverzní inženýrství, návrh databází, konceptuální modelování, ERdiagram, CASE nástrojTitle: Data Modeling Editor with Support for Reverse Data EngineeringAuthor: Bc. Hana KozelkováDepartment: Department of Software EngineeringSupervisor: Mgr. Pavel JežekSupervisor’s e-mail address: pavel.jezek@dsrg.mff.cuni.czAbstract:The thesis builds on author’s bachelor thesis called An editor of ER diagrams supportingconversions to relational model and application ERtoS, which was created as a part of it. Theoriginal program supports drawing ER diagrams using the classical notation, also ISAhierarchies, n-ary relationships, relationships with attributes and multivalued attributes aresupported.The main goal of this thesis is to implement reverse engineering into the ERtoS editor thatwould enable creating ER diagrams from existing databases. The resulting editor supportsboth conceptual and logical models and their two-way conversion. The logical model can beexported as an SQL script. The program uses direct database connection to perform the datareverse engineering (DRE). The set of supported databases can be extended using plugins.The thesis contains the theoretical introduction to ER modeling and DRE. A few existingDRE algorithms are compared, the selected algorithm is described in detail includingsuggested improvements and implementation. Finally the thesis concludes with a comparisonof similar programs from both commercial and academic domain.Keywords: data reverse engineering, database design, conceptual modeling, ER diagram,CASE tool7

8

1 ÚVODDatabáze jsou v současnosti nejčastěji používaným způsobem uložení dat. Aby databázesplňovala požadavky uživatelů, například na rychlý přístup k datům, snadnou údržbu či malouspotřebu zdrojů, je třeba databázi dobře navrhnout. Návrhem uspořádání databáze se zabýváproces nazvaný datové modelování. Návrhář databáze si musí nejprve rozmyslet, jakou částreality bude chtít v databázi ukládat. Poté vybrané reálné objekty a vazby mezi těmito objektyzkoumá a snaží se je popsat. Během návrhu je popis objektů postupně upravován tak, abynakonec odpovídal způsobu uložení ve zvoleném databázovém systému.K formalizovanému, ale dostatečně srozumitelnému prvotnímu popisu slouží konceptuálnídatové modely. Mezi nejznámější z nich patří ER (z angl. Entity Relationship) modelznázorňovaný pomocí ER diagramu. Zatímco ER model je jednoduchý a vhodný způsobpopsání struktury dat, dnešní databáze jsou většinou postaveny na jiném přístupu zvanémrelační model. Relační model organizuje data do tabulek, tzv. relací, skládajících se z řádkůa sloupců. Přestože relační teorie má své přímé principy návrhu databáze, tak zejménaz důvodu jednoduššího návrhu se často používá ER model, který se následně do relačníhomodelu transformuje.Pro účely datového modelování existuje celá řada softwarových nástrojů. Často se jednáo komerční nástroje používající určitou metodiku, která je ale vzdálena původnímu ERdiagramu a teoretickým poznatkům. V rámci mé bakalářské práce v roce 2006 vznikl programERtoS (zkratka z ER to SQL). Jedná se o editor ER diagramů podporující převod do relačníhomodelu. Aplikace se používá při výuce předmětu Databázové systémy na MFF UK. Programpodporuje takové prvky ER diagramu a způsob jejich zobrazování, aby to bylo v souladu s ERdiagramy probíranými při výuce. Také převod do relačního modelu je prováděn přesně podledaných pravidel, nedochází k žádnému zjednodušování. Výsledkem převodu je skript v jazyceSQL pro vytvoření potřebných tabulek v databázovém systému.Ne vždy se vytváří jen nové databáze, někdy se databázový specialista setká už s běžícídatabází, které potřebuje porozumět. Ať už z důvodu její údržby nebo potřeby vývoje novéhoinformačního systému, který nahradí zastarávající systém. Pokud nemá k dispozici podrobnoudokumentaci nebo možnost zeptat se autorů, nezbývá nic jiného než získat informace zesamotné databáze. Proces, který se o to snaží, se nazývá datové reverzní inženýrství (zkráceněDRE z angl. Data Reverse Engineering). Cílem reverzního inženýrství neboli zpětnétransformace je získat z existující databáze její popis, nejlépe konceptuální model, pro jejíporozumění. Zatímco dosud jsme se zabývali modelováním databáze úplně od nuly, DREumožňuje vytvořit model už z existující databáze. Tato problematika není úplně jednoduchá,k dané databázi většinou neexistuje jednoznačně určený konceptuální model.Existuje řada prací, které navrhují postupy, jak provádět DRE. Postupy se liší mírou nutnostizásahů člověka a použitým zdrojem informací o databázi. V mnoha případech se jedná jeno přibližné algoritmy. Také programy pro datové modelování jsou často obohaceny funkcínazvanou reverzní inženýrství. Tato funkce ale až na výjimky neprovádí DRE až dokonceptuálního modelu, ale víceméně jen vizualizuje obsah databáze.9

1.1 Cíle práceHlavním cílem této práce je rozšířit stávající aplikaci ERtoS o efektivní podporu reverzníhodatového inženýrství. Aby tento cíl mohl být splněn, je potřeba: důkladně se seznámit s oblastí DRE;vybrat a implementovat vhodnou DRE metodu, která by měla splňovat následujícíkritéria: jejím výsledkem je ER diagram odpovídající zdrojovému relačnímu modelu; musí být do vysoké míry automatizovatelná, tak aby uživatel musel zasahovatjen v nejnutnějších případech; zdroj informací pro DRE musí být obecný, aby se metoda dala použít provětšinu relačních databází, jako nejvhodnější se jeví schéma databázea samotná data z databáze;modulárním způsobem umožnit připojení k různým databázovým systémům prozískání dat pro DRE;vytvořený model v aplikaci přehledně zobrazit jako ER diagram;přidat do aplikace logický model, který: bude zobrazovat výsledek převodu z ER modelu do relačního modelu; se použije pro zobrazení mezivýsledku DRE; bude sloužit k vizualizaci struktury databáze.Vedlejším cílem práce je rozšíření aplikace ERtoS co se týče její všeobecné použitelnosti, cožzahrnuje například: přidání podpory datových typů pro konkrétní databázové systémy;možnost definovat kandidátní klíče pro více atributů najednou;více kontrol, např. kontrola duplicit názvů integritních omezení.1.2 Struktura prácePráce je členěna do několika kapitol. V první kapitole je popsán úvod do řešené problematikya jsou vyjmenovány cíle práce.Druhá kapitola se zabývá teorií návrhu relační databáze, zvláště podrobně popisuje ERdiagram a všechny jeho konstrukty. V závěru kapitoly je stručně shrnuto téma převodu z ERmodelu do relačního modelu, kterým se zabývala zmíněná bakalářská práce.Třetí kapitola vysvětluje, co je datové reverzní inženýrství a rozebírá některé reverzní metodya algoritmy. Podrobně jsou pak popsány všechny kroky zvoleného algoritmu včetněprovedených vylepšení.Čtvrtá kapitola popisuje, v čem spočívá rozšíření původní aplikace ERtoS z hlediskaprogramátora. Je zde zmíněno, co bylo do aplikace přidáno a co muselo být změněnoz důvodu rozšiřování, se kterým se ne úplně všude počítalo.Pátá kapitola je věnována popisu implementace jednotlivých částí pro podporu reverzníhoinženýrství. Jsou zde popsány problémy, které při implementaci vznikly a jak byly řešeny.10

Šestá kapitola obsahuje popis několika podobných programů zabývajících se DRE a jejichsrovnání s programem ERtoS.V závěrečné kapitole je zhodnoceno navržené řešení a splnění všech vytyčených cílů. Také jezde nástin dalšího možného vývoje programu.Text je prokládán obrázky ER diagramů, které byly z velké části převzaty přímo z aplikaceERtoS. Některé části textu byly převzaty z mé bakalářské práce a jsou označeny postranníčárou.11

2 VÝCHOZÍ TEORIE2.1 Návrh relační databázeNavrhnout dobře strukturovanou relační databázi je nelehký úkol. Při návrhu se provádídatová analýza, která se skládá z několika fází (obrázek 2.1). V jejich průběhu se postupněvytváří stále konkrétnější schémata, která znázorňují požadovaná data.Obrázek 2.1 Fáze návrhu databázeV první fázi se prostřednictvím konzultací s uživateli a zadavateli systému formulujía shromažďují přesné požadavky na to, co vše má být v databázi uloženo. Z takto získanýchinformací se vytvoří konceptuální model, který je výsledkem první fáze.Konceptuální datový model popisuje data v databázi na abstraktní úrovni nezávisle na jejichfyzickém uložení. Proces tvorby konceptuálního modelu se nazývá konceptuální modelování.Jeho výsledkem je konceptuální model znázorněný jako konceptuální schéma nebo diagram,který má co nejvýstižněji zachycovat pohled člověka na danou část reálného světa [2]. Mezinejznámější konceptuální datové modely patří ER model.ER modelování lze metodologicky rozdělit do dvou kroků: [2] v prvním kroku se definují nezávislé entity, vztahy a závislé entity, to se opakuje do tédoby, než se dospěje k souhlasu mezi zadavateli a analytiky;v druhém kroku se formulují atributy a klíče entit – klíčů může být v tomto stádiui více.V další fázi (zvané logický návrh [3]) se vytvoří relační model pomocí transformace objektůz ER diagramu. Následuje formulace definic tabulek v relačním databázovém systémuobsahujících atributy, primární a cizí klíče.V posledním stádiu (tzv. fyzickém návrhu [3]) se zabýváme přesnou definicí doménjednotlivých atributů, což zahrnuje i některá integritní omezení, vytváříme indexy prorychlejší přístup k datům a provádíme další optimalizace.12

2.1.1 Alternativy ER modelováníRelační schéma lze vytvořit také přímo z požadavků na aplikaci bez použití ER modelování.Relační schémata se takto vytvářela ještě před zavedením ER modelu (relační model bylzaveden Edgarem Coddem o šest let dříve než vznikl ER model [4]). Ze vstupních požadavkůse určí relevantní atributy, které se přiřadí do jednotlivých relačních tabulek.Tento proces se nazývá normalizace. Postupně vznikají relační schémata, která odpovídajízvyšujícím se stupňům tzv. normálních forem. Normální forma určuje úroveň normalizaceschématu, u vyšších normálních forem se vyskytuje méně redundantních dat v tabulkácha ubývají anomálie při manipulacích s daty.Narozdíl od konceptuálního návrhu, kdy je prováděn návrh shora-dolů (nejdříve seidentifikují entity a pak se jim přiřadí atributy), se při normalizaci uplatňuje přístup opačný,nejdříve se najdou atributy a ty se přiřazují do tabulek, které v podstatě představují entity [4].Zkušení systémoví analytici používají kombinaci obojího.Zastánci objektové metodiky by k modelování dat doporučili jeden z diagramů UML (z angl.Unified Modeling Language), a to diagram tříd [5]. Zopakujme, že navrhujeme relačnídatabázi a data tedy modelujeme proto, abychom na základě toho vytvořili relační (a neobjektovou) databázi. V diagramu tříd lze sice nepřímo popsat entity, atributy a vztahy, alenapříklad primární atributy nebo povinnost členství atributu už nelze (bez použití rozšíření)pomocí UML vyjádřit. Z výše uvedeného plyne, že využití staršího ER modelu je pro návrhrelační databáze vhodnější.2.2 ER diagramER diagram byl zaveden a poprvé použit Peterem Chenem v roce 1976 [6]. Brzy došlo k jehorozšíření a stal se obecně uznávaným standardem. Diagram obsahuje typy entit a typy vztahů.Entitní typ představuje nezávisle existující objekt reálného světa. Vztahový typ je vazbamezi dvěma nebo více typy entit.Samotný pojem entita či vztah označuje výskyt (instanci) typu entity či typu vztahu. Např.pro entitní typ Čtenář z obrázku 2.2 je entitou konkrétní čtenář Jan Novák. V dalším textubudeme pro zjednodušení většinou používat pojem entita a vztah i pro entitní a vztahový typ,význam by měl být zřejmý z kontextu.Obrázek 2.2 Ukázka ER diagramu v Chenově notaciEntitám lze přiřazovat určité vlastnosti označované jako atributy. U atributu se kromě názvuupřesňuje množina hodnot, jakých může atribut nabývat (tzv. doména). Někdy se uvádí, zda13

atribut může mít prázdnou hodnotu Null a zda musí mít unikátní hodnotu (označováno jakoUnique). Např. entita Čtenář na obrázku má atributy Jméno, Příjmení a Rodné číslo. "JanNovák" je hodnota atributu Jméno pro konkrétního čtenáře.Entity se v těchto diagramech popisují pomocí obdélníků, vztahy se znázorňují pomocíkosočtverců. Postupně vznikaly další způsoby, jak diagramy zakreslovat, původní notace bylatotiž poměrně náročná na prostor (viz obrázek 2.2).Skupina atributů, které musí pro každou entitu z entitního typu nabývat jedinečných hodnot,tvoří tzv. identifikačního klíč entity. Entita se dá pomocí hodnot těchto atributů jednoznačněurčit. Identifikační klíč je tvořen identifikačními atributy, ostatní atributy jsou pouze popisné.Entity identifikovatelné pouze svými atributy se nazývají silné entity.Ostatní entity jsou označovány jako slabé. Pro jejich jednoznačnou identifikaci musí býtpoužit i atribut jiné entity, tzv. identifikačního vlastníka. Příkladem slabé entity může býtnapř. článek v časopise, jehož identifikační atribut je strana, na které článek začíná. Proúplnou identifikaci článku je třeba také uvést časopis, ve kterém se článek nachází. TakžeČlánek je slabá entita a Časopis je její identifikační vlastník.Model může být rozšířen o zvláštní druhy atributů. Příkladem skupinového atributu jeatribut Adresa, dá se totiž dále dělit na název města, ulice a číslo domu. Skupinové atributyjsou užitečné, jestliže potřebujeme někdy přistupovat k jejich jednotlivým složkám a jindynám vystačí atribut jako celek. Vícehodnotové atributy mohou zase obsahovat několikhodnot, ty ale musí být stejného typu.2.2.1 O vztazích podrobnějiVztah mezi entitami více charakterizuje kardinalita vztahu. Kardinalita vztahu v původnímChenově ER diagramu může nabývat těchto hodnot: 1 : 1 - každé entitě odpovídá maximálně jedna druhá entita.1 : N - první entitě může odpovídat více než jedna druhá entita, druhé entitě odpovídámaximálně jedna první entita. V tomto případě nazýváme druhou entitudeterminantem první entity.M : N - první entitě může odpovídat více než jedna druhá entita, druhé entitě odpovídávíce než jedna první entita.Tyto kardinality mají význam maximálního počtu entit, jejichž entitní typ se účastní vztahu.Jednotlivé entity ale do vztahu nemusí vstupovat. Potřebujeme tedy určit také minimálníúčast, tj. rozlišit povinné a nepovinné členství ve vztahu. Entitní typ, který má povinnéčlenství ve vztahu, je existenčně závislý na druhém entitním typu. Členství ve vztahu alenejde z popsaných hodnot kardinalit poznat. Proto se v později odvozených modelech začalypoužívat dvouhodnotové kardinality.Pro každou entitu to místo jedné hodnoty znamená dvojici hodnot (min, max). Hodnotyvyjadřují, kolikrát minimálně a kolikrát maximálně se může instance dané entity účastnitvztahu. Platí 0 min max a 1 max.Pro srovnání uvedeme příklad. Jestliže vztah Projekt – Vedoucí projektů má kardinalitu N:1,tak to znamená, že jeden vedoucí projektu může mít na starosti žádný nebo několik projektůa projekt není veden více než jedním vedoucím. Chybí zde ale informace o tom, zda je daná14

entita povinna účastnit se vztahu. I když víme, že projekt musí mít alespoň jednohovedoucího, pomocí této kardinality to nelze vyjádřit.Pro stejný vztah Projekt – Vedoucí projektů by se v novějších modelech použily kardinality(1,1):(0,N). Rozdíl je nejen v tom, že používáme dvě hodnoty, které můžou nabývat i hodnoty0 v případě nepovinné účasti ve vztahu. Ale také je použito obrácené pořadí zápisu a čteníkardinalit, což může způsobovat nedorozumění. Například na obrázku 2.3 se čte kardinalita vesměru šipek a má tento význam: Čtenář má možnost si vypůjčit libovolný počet dokumentů,ale dokument může být vždy půjčen maximálně jednomu čtenáři. V této práci je použit právětento způsob zápisu, který byl také zaveden při výuce předmětu Databázové systémy a tedyv programu by to mělo být v souladu.Obrázek 2.3 Princip čtení kardinalit vztahuJak už bylo řečeno, vztah může propojovat i více než dvě entity, v tom případě se jednáo n-ární vztahy. Ukažme si na příkladu, jak by v takovém případě vypadaly kardinality.Příklad bude z databáze o pojištění, kde vztah Pojištění propojuje entity Pojišťovna, Autoa Osoba. Osoba představuje majitele auta. Každé auto, které je v databázi, je pojištěno u právějedné pojišťovny a každá pojišťovna má uzavřenou nejméně jednu smlouvu. Správnékardinality v tomto případě jsou pří použití původního ER modelu 1:N:1. V případě modelůzaložených na účasti ve vztahu popořadě (1,N):(1,1):(0,N).Mezi určitými dvěma entitami může vést více různých vztahů. Například mezi entitamiČtenář a Dokument mohou existovat vztahy Výpůjčka a Rezervace. Vztah může taképropojovat dva stejné entitní typy, takový vztah nazýváme self-relace nebo rekurzivní vztah.Každá entita, která se účastní vztahu, hraje ve vztahu určitou roli. U jednotlivých propojenímezi entitami a vztahy je tedy dobré specifikovat roli, která lépe popíše funkci vztahu. Funkcevztahu se liší podle směru čtení vztahu, jak je vidět na obrázku 2.3. Do role bychom v tomtopřípadě mohli zapsat slovesa z tučně zobrazeného textu. Role se zapisuje do blízkosti čárypropojující entitu se vztahem.Role se hodně využije právě u self-relací, kde se pomocí role odliší dva výskyty stejné entity.Například při self-relaci na entitě Zaměstnanec se může jednat o role Nadřízenéhoa Podřízeného. Vztah propojuje stejný entitní typ, ale dvě různé entity - dva různézaměstnance, kdy jeden hraje v tomto vztahu roli nadřízeného a druhý roli podřízeného. Je to15

důležité rozlišit vzhledem ke kardinalitám. Podřízený může mít jen jednoho nadřízeného, a nenaopak.Také vztahy mohou mít atributy. Zvláště u vztahů s kardinalitou M:N se mohou objevitvlastnosti, jejichž hodnota je dána konkrétní kombinací entit účastnících se vztahu. Tatovlastnost představuje atribut, který nemůže být přiřazen žádné z entit a musí být přiřazenvztahu. Jako příklad můžeme uvést atribut pokuty udělené čtenáři za nevrácení konkrétníhodokumentu u vztahu Výpůjčka. U kardinalit 1:1 a 1:N se takový atribut dá přenést do jednéz entit, ale záleží na návrháři, kam se bude atribut hodit více.2.2.2 Extended ER diagram s dědičnostíExtended ER diagram (EER) obsahuje všechny dosud popsané konstrukty ER diagramua navíc některé prvky z objektově-orientovaného modelování jako např. dědičnost. Umožňujetak modelovat aplikace přesněji.Základem rozšíření je možnost vyjádřit vztah generalizace/specializace mezi entitami, tzv.ISA hierarchii. Využije se v případě, kdy máme obecnou entitu a několik dalších entit, kterémají všechny vlastnosti obecné entity. Navíc se ale navzájem liší dalšími specializovanýmivlastnostmi. Právě popsaný případ nazýváme generalizací, specializace se na to dívá z opačnéstrany: entity jednoho entitního typu můžeme podle jejich vlastností rozdělit do několikapodskupin (podtypů).Například entita Osoba může představovat

podporuje kreslení ER diagram ů klasickou notací, dále jsou podporovány ISA hierarchie, n-ární vztahy, atributy u vztah ů i n ěkolikanásobné atributy. Hlavním cílem práce je zavést do editoru reverzní inženýrství, které umož ňuje vytvo řit ER diagram z existující databáze.