Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
Vizualizace relační databáze ve webovém prostředí
Ročníková práce 2002/2003 České vysoké učení technické
Fakulta jaderná a fyzikálně inženýrská
Autor : Radek Horáček Školitel : ing. Josef Blažej, PhD.
-1-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
Poděkování
Děkuji tímto svému školiteli ročníkové práce Ing. Josefu Blažejovi PhD. za odborné vedení,rady a připomínky k textu této práce.
-2-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
1 2 3
4
5
6
7 8
Motivace............................................................................................................................. 4 Cíle ročníkové práce .......................................................................................................... 4 Filosofie řešení ................................................................................................................... 4 3.1 RODOKMEN............................................................................................................. 4 3.2 PHP............................................................................................................................. 5 3.2.1 Jak a kde funguje PHP ....................................................................................... 5 3.2.2 Proč zrovna PHP?............................................................................................... 6 3.2.3 Open Source ....................................................................................................... 6 3.2.4 Stávající verze .................................................................................................... 6 3.3 Scalable Vector Graphics (SVG) ............................................................................... 6 3.3.1 Důležité pojmy k vysvětlení:.............................................................................. 7 3.3.2 Obecné klady a zápory vektorových formátů .................................................... 8 3.3.2.1 Výhody:.......................................................................................................... 8 3.3.2.2 Nevýhody: ...................................................................................................... 8 3.3.3 Jaký je přínos SVG grafiky? .............................................................................. 9 3.3.4 Výhody SVG grafiky ....................................................................................... 10 3.3.5 Výhody SVG pro rodokmen ............................................................................ 10 3.4 Příklady dalších formátů pro uložení vektorové grafiky:......................................... 11 3.4.1.1 Formáty pro web: ......................................................................................... 11 3.4.1.2 Formáty aplikací:.......................................................................................... 11 3.5 Jazyk SQL ................................................................................................................ 11 3.5.1 MySQL............................................................................................................. 12 ŘEŠENÍ PROBLÉMU ..................................................................................................... 13 4.1 Uložení databáze ...................................................................................................... 13 4.2 Jak funguje skript na vyhledáváni a vypisování rodokmenu ................................... 13 4.3 Získání dat pro určení předků................................................................................... 14 4.3.1 Jak požívat vygenerovaný rodokmen v SVG a kde ho hledat........................ 14 4.4 A co „Konkurence”?................................................................................................ 16 Výsledky .......................................................................................................................... 17 5.1 Výběr software ......................................................................................................... 17 5.2 Spojení databáze a PHP............................................................................................ 17 5.3 Tisk SVG.................................................................................................................. 17 Možnosti dalšího řešení a rozvoje.................................................................................... 18 6.1 Potomci..................................................................................................................... 18 6.2 Načítání databáze ..................................................................................................... 18 6.3 Volitelný vzhled ....................................................................................................... 18 Závěr……………………………………..................................................................... 19 Zdroje : ............................................................................................................................. 20
-3-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
1 Motivace Možná jste ještě neměli potřebu zjišťovat a hlavně vypisovat Váš rodokmen, avšak může nastat mnoho situací, kdy to budete potřebovat, ať již je to ze zájmu o historii např. Vaší rodiny nebo z jiných důvodů. Máte-li seznam lidí, kteří jsou nějakým způsobem propojeni v rodinném stromu, je dobré si to také nějakým způsobem zobrazit. Máte-li seznam několika málo lidí, snadno si jej můžete nakreslit třeba na papíře. Co ale dělat máte-li např. seznam 600 lidí, kteří jsou provázáni v rodinném rodokmenu?? Naštěstí existuje mnoho aplikací, které dokáží pracovat a zpracovávat takové rodokmeny a poté zobrazit na počítači rodokmen vybraného člověka ať už má jít o rodokmen potomků nebo rodokmen předků. Seženete-li si tento software, nakopírujete jej někam na počítač a poté ho můžete používat. Za tento software se ovšem mnohdy musí platit a nevýhodou je, že výstupy těchto programů (vygenerované rodokmeny) většinou nejsou obrázky v nějakém používaném grafickém formátu.
2 Cíle ročníkové práce Zadáním mé ročníkové práci bylo seznámit se s implementací skriptovacího jazyka PHP běžícího na straně serveru. Dále jsem se seznamoval s výhodami vektorové grafiky a to hlavně formátem SVG, jehož standard můžete najít na
. Cílem mé práce bylo zpracování relační rodopisné databáze. Pomocí jazyka PHP a grafického formátu SVG jsem měl napsat script, který bude vytvářet vektorový grafický výstup v podobě SVG obrázku rodokmenu předků, a to vše má samozřejmě probíhat na straně serveru. Databáze byla pevně dána a obsahovala 4 vzájemně propojené tabulky s více než 600 lidmi. Nebyla zde možnost např. dodávat do databáze nové osoby. Mým hlavní úkolem bylo mimo jiné ukázat jak precizní,elegantní a zajímavé je použití vektorové grafiky na vykreslování rodokmenů.
3 Filosofie řešení 3.1 RODOKMEN Slovo rodopis (genealogy) je odvozen z řeckého slova a znamená studium hledání historie své rodiny a svých předků. Známe-li tyto záznamy, můžeme ho vepsat do rodinného stromu. V rodinném stromu mohou být informace jako jméno a příjmení člověka,datum narození, svatby, úmrtí atd. Rodinné stromy se dělí: Rozrod (descendant tree) máme strom potomků a z hledaného člověka může vycházet libovolný počet potomků – dětí z dětí mohou vycházet opět vnuci hledaného atd. -4-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí Vývod (ancestor tree) tento strom předků je definován tak,že z hledaného vycházejí maximálně dva rodiče,tj. otec a matka, a z nich opět maximálně 2 rodiče z každého předka atd. můžeme si snadno zjistit,že máme-li rodokmen do osmé generace může mít hledaný až 28 předků v osmé generaci,což může být 256 předků. Předek (ancestor) – je definován jako osoba, které jste potomkem, neboli osoba v rodinném stromu předků, která je dříve narozená než např. Vy a je na vyšší úrovni Potomek (descendant) – je definován jako osoba, která se nachází ve stromu potomků. Bratranec (first cousins) lidé, kteří mají stejné prarodiče jako vy
3.2 PHP V roce 1994 dal dohromady Rasmus Lerdorf kombinaci skriptů v Perlu, aby zjistil, kdo se díval na jeho výsledky. Pozvolna se lidé začali o tyto skripty zajímat, takže byl později vydány jako balíček „Personal Home Page“ tools (původní význam PHP). Vzhledem k zájmu napsal skriptovací jádro společně s jiným nástrojem pro analýzu vstupu z formulářů v HTML: FI (Form Interpreter), tedy to co bylo nazýváno PHP/FI nebo PHP2. To bylo někdy uprostřed roku roku 1995. Později lidé začali používat tyto nástroje pro mnohem komplikovanější věci a vývoj přešel z jednoho člověka na skupinu hlavních programátorů odpovídající za projekt a jeho organizaci. To byl počátek PHP3. Tato skupina programátorů (Rasmus Lersdorf, Andi Gutmans, Zeev Suraski, Stig Bakken, Shane Caraveo a Jim Winstead) zlepšila rozšířila skriptovací jádro a přidala jednoduché API, které umožňuje jiným programátorům volnost v přidávání funkcí do jazyka vytvořením modulů. Syntaxe jazyka byla také zdokonalena konstrukcemi, které budou důvěrně známy lidem, přecházejícím z objektově orientovaných a procedurálních jazyků jako např. C, C++,Java atd. Jazyk PHP se skládá z obvyklých doplňků řídících struktur, operátorů, druhů proměnných, deklarací funkcí a deklarací tříd a objektů, které byly obvykle očekávány od kompilovaného nebo interpretovaného jazyka a přesto jsou mu vlastní.
3.2.1 Jak a kde funguje PHP PHP(zkratka pro PHP Hypertext Preprocessor) je skriptovací jazyk zabudovaný na straně serveru. To znamená, že pracuje uvnitř dokumentu HTML a propůjčuje mu tak generování požadovaného obsahu. Vaše webové sídlo můžete převést na webovou aplikaci, která není pouze sadou statických stránek, jež nemohou být aktualizovány tak často, a stačí tak pro osobní webové sídlo, ale nestačí pro obchod nebo vzdělávání.
-5-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
3.2.2 Proč zrovna PHP? Je zde totiž mnoho důvodů, proč užívat raději PHP než například ASP. A to je jednoduchost, nejpřirozenější způsob práce s databázemi a také nezávislost na platformě. PHP bylo navrženo, aby pracovalo na webu a v této oblasti také vyniká : připojování a dotazování databáze je jednoduchá úloha, která může být zpracována na dvou až třech řádcích kódu. Skriptovací jádro má dobře optimalizovánu dobu odezvy potřebnou ve webových aplikacích. Také může být přímo součástí webového serveru, čímž zvyšuje jeho propustnost. Pokud bylo důvodem jenom zvýšené rychlosti skriptů, pak bude PHP jedním z mnoha řešení. Ale v PHP existuje více srovnání než je toto. Jde o jednoduchost a robustnost jazyka a skriptovacího jádra. Jde o připojitelnost ke stále se zvyšujícímu počtu databázových serverů, kratší cykly vývoje a jednoduchost (díky syntaxi a konstrukcím) vytváření modulárních a znovu použitelných komponent. Úlohy můžete provádět tak snadno, jako vytváření formuláře zpětné vazby, který odesílá email správci webu, do systému správy dokumentů řízeného databází, do helpdesk nebo do systému sledující chyby, do aplikace s nákupním košíkem, nebo právě to co je mým tématem ročníkové práce a to vytváření rodopisné databáze pomocí SVG na .
3.2.3 Open Source PHP patří mezi Open Source, co to znamená? Zde neexistuje čekání na další vydání kvůli přidání funkce nebo přidání chyby. Prostě vezmete zdrojový kód, upravíte jej a máte to, okamžitá úprava a kompletní řízení. Žádné další hádání, je-li funkce bezpečná, kód není utajený. A kdo ví, možná se vaše úprava stane populární, takže ji ostatní možná budou chtít používat také. A nemůžete předčit cenu vývojového prostředí kombinace Linux, Apache, PHP, která je nejen levnější než jiná vývojová prostředí, ale také robustnější.
3.2.4 Stávající verze Stávající verze je PHP4 založená na jádře Zend, detaily najdete na . Toto skriptovací jádro bylo od začátku navrženo tak, aby bylo jednoduše implementovatelné do různých aplikací. PHP je první aplikací, která používá jádro Zend, ale mělo být zahrnuto také v jiných balíčcích, např. v MySQL.
3.3 Scalable Vector Graphics (SVG) Konsorcium W3C již delší dobu vyvíjí standard SVG (Scalable Vector Graphics), založený na technologii XML. Začátkem září 2001 bylo vydáno doporučení k užívání SVG 1.0.
-6-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
3.3.1 Důležité pojmy k vysvětlení: • • •
• • •
SVG (Scalable Vector Graphic) - jazyk pro popis dvoudimenzionální vektorové grafiky v XML. DOM (Document Object Model) - objektový model dokumentu, byl vyvinut konsorciem W3C, především pro určení, jakým způsobem mají webové prohlížeče a vložené skripty v budoucnu přistupovat k dokumentům HTML a XML. SMIL (Synchronized Multimedia Integration Language) - jazyk pro synchronizovanou integraci multimédií. Používá XML k identifikaci a správě souborů s textem, obrázky, zvuky a úryvky videa, určených k vytváření multimediálních prezentací. RDF (Resource Description Framework) - standard pro výměnu metadat vyvinutý konsorciem W3C. XML (eXtensible Markup Language) - značkovací jazyk pro popis struktury dokumentu. Dokument XML obsahuje specifické instrukce, nazývané značky, elementy a entity, které ohraničují části dokumentu. XSL (XML Stylesheet Language) - pro publikování informací ve formátu XML je nezbytné nahradit značky příslušnými styly textu. Pro tento účel je vyvíjen XSL, společně s XSLT (standard XSL Transformation - transformace XSL).
Po prvním návrhu specifikace, který byl zveřejněn v lednu roku 1999, následoval běžný schvalovací proces. Ten vyvrcholil uvolněním verze 1.0. Od 5. září 2001 tak SVG 1.0 konečně nese označení W3C Recommendation (doporučení), a je tedy oficiálně zpřístupněno pro všeobecné použití. Doporučení W3C představuje zejména shodný názor členů konsorcia (reprezentujících významnou část oblasti informačních technologií) na SVG jako na standard pro vytváření vektorové grafiky. Ředitel W3C Tim Berners-Lee při příležitosti uvolnění specifikace SVG uvedl, že „pomocí SVG se grafika na webu změní z pouhé dekorace na opravdovou grafickou informaci“. Tak, jak je XML univerzálním, platformově nezávislým nástrojem pro výměnu dat a dokumentů na webu, přenáší SVG výhody XML do světa vektorové grafiky. Dovoluje totiž grafiku významově popsat, a tím patřičné informace vyhledávat, třídit, popřípadě zobrazovat ve více jazycích. SVG 1.0 je postaveno na základech dalších specifikací W3C, jako je DOM (Document Object Model), CSS, XSL, RDF, XML Linking nebo SMIL. Pro zajímavost, SMIL (Synchronized Multimedia Integration Language) je standard pro synchronizaci multimediálních procesů, který byl konsorciem W3C doporučen ve stejný den jako SVG. Při vývoji SVG se nezačínalo od úplného začátku. Byly využity už dříve vypracované návrhy specifikací pro vektorovou grafiku, jako je na PostScriptu založený jazyk PGML od firmy Adobe (Precision Graphics Markup Language) nebo VML (Vector Markup Language) podporovaný Microsoftem. Představu, jakou má SVG perspektivu z hlediska zájmů komerční sféry, může ozřejmit seznam společností, které se pod hlavičkou W3C na vývoji SVG podílejí: Adobe Systems, AOL/Netscape, Apple, Autodesk, Bitflash, Canon, Corel, CSIRO, Eastman Kodak, Ericsson, Excosoft, Hewlett-Packard, IBM, ILOG, IntraNet Systems, KDDI, Macromedia, Microsoft, Nokia, OASIS, Openwave, Opera, Oxford Brookes University, Quark, Savage Software, Schemasoft, Sun Microsystems, Xerox a ZoomOn. Skutečně důležitým činitelem pro prosazení SVG je však jeho podpora v aplikacích. Z hlediska masového rozšíření na webu je nejpodstatnější podpora v prohlížečích. Zdaleka nejpoužívanějším prohlížečem je v dnešní době MS Internet Explorer. Ten však přímou podporu zakomponovánu nemá. Microsoft však umožňuje připojit k Exploreru zvnějšku
-7-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí nástroje ostatních výrobců, které s těmito standardy pracovat umí. Toho využila firma Adobe, která stojí v čele vývoje SVG, a pro Internet Explorer vytvořila zásuvný modul (plug-in) Adobe SVG Viewer. Tento modul ve verzi 2.0 je možné volně stáhnout, a to na adrese . Už teď je dispozici také verze Adobe SVG Viewer 3.0. Adobe také včlenila SVG do svých hlavních produktů – např. obrázky nakreslené v Adobe Illustrator 9.0 je možné ukládat ve formátu SVG. Co se tedy týče podpory SVG Internet Explorerem, lze konstatovat, že Explorer prostřednictvím plug-inu od Adobe jazyku SVG rozumí. Problém rozšíření SVG se tak váže k otázce šíření Adobe SVG Vieweru mezi uživatele. Jediným prohlížečem, který má v současné době přímou podporu SVG, tedy bez nutnosti doinstalování plug-inu, je Mozilla.
Oficiální stanovisko W3C organizace k formátu Scalable Vector Graphic(SVG) SVG 1.1, SVG 1.0 a SVG Mobile Profiles (oficiální doporučení W3C 14.ledna 2003) je, že to jsou webové standardy (W3C doporučení). Práce pokračuje na SVG 1.2 (oficiální doporučení předpokládáno na leden 2004) a také na budoucím profilu pro mobilní komunikaci a tisk. SVG je jazyk pro popis dvoudimenzionální grafiky v XML. SVG dovoluje použít tři typy grafických objektů : vektorové tvary (např. čáry skládající se z linek a křivek) obrázky a texty. Grafické objekty mohou být seskupovány, stylovány, transformovány a složeny v již dříve vytvořeném modelu. Text může být XML formát vhodný pro aplikace,které zlepšují a zpřístupňují SVG grafiku. Sada znaků obsahuje množství transformací,různých filtrů,šablon atd. SVG vykreslování může být dynamické a interaktivní. Document Object Model(DOM) pro SVG,jež obsahuje úplný XML DOM umožňující přímou a výkonnou tvorbu vektorových grafických animací skriptováním. Bohatá možnost případných instrukcí jako jsou např. onmouseover nebo onclick může být připojeny k jakémukoliv grafickému SVG objektu.
3.3.2 Obecné klady a zápory vektorových formátů 3.3.2.1 Výhody: • • • •
Užitečné při ukládání předloh, která jsou založeny na prvcích složenýcb z čar a jednoduchých grafických objektů. Přízpůsobení požadavkům výstupních zařízení. Pokud obsahují pouze data v ASCII formátu, mohou být lehce editovány. Většinou je velmi jednoduché převést vektorová data do bitmapového formátu a takto je i uložit.
3.3.2.2 Nevýhody:
-8-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí • • •
Nehodí se pro ukládání příliš složitých předloh, jako jsou fotografie, kde jsou barvy prioritní záležitostí a jejich hodnoty se mohou měnit pixel od pixelu. Aby se dosáhlo co největší kvality zobrazení vektorových informací je třeba použít rastrové displeje s vysokou rozlišovací schopností. Rekonstrukce (zobrazení) vektorových dat může být delší, než je tomu u bitmapových dat stejné složitosti.
3.3.3 Jaký je přínos SVG grafiky? Webové stránky mohou vypadat graficky mnohem lépe, třeba jako stránky magazínu. Mohou se využívat různé typografické efekty a výhodou je také možnost přesného umístění a nastavení rozměrů mnoha elementů stránky. Hlavní přínos vektorové grafiky na webu je ten, že se grafika na www stránkách bude zobrazovat správně i při různých rozlišeních monitoru, a na všech platformách od nejmenších přenosných zařízení přes kancelářské monitory až po specializovaná tiskařská studia budou dokumenty s SVG menší a více interaktivní. V dnešní době se web skládá z obrázků, které jsou většinou vytvořeny a prezentovány ve formátu GIF, JPEG či PNG, což jsou soubory bitmapového charakteru, jehož podstatou je tzv. rastr. Znamená to, že informace je v souboru ukládána pro každý pixel a obrázek se zobrazuje ve své pevné velikosti. Avšak naproti tomu SVG, tak jako jiná vektorová grafika, má v sobě obsaženy informace pro kreslení různých objektů, jako jsou třeba čáry a křivky, a o jejich vzhledu. Tyto informace jsou až ve chvíli zobrazení převedeny na rastrový formát a to v požadované velikosti. Zde můžete porovnat velikosti obrázku v různých frekventovaně užívaných grafických fotmátech v tabulce č.1, porovnávaný obrázek byl obr.č 1
obr. č. 1 porovnávaný obrázek
tab č.1 grafický formát
bmp
gif
jpg
png
svg
velikost
679 kB
13 kB
75,8 kB
33 kB
4.49 kB
-9-
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
3.3.4 Výhody SVG grafiky •
•
•
•
•
•
Volitelná velikost SVG obrázku - bitmapová grafika sice po vytvoření může vypadat dobře, ale problémy nastávají v případě, když je zobrazována na různých druzích monitorů a v různých velikostech. Další problémy mohou nastat při tisku obrázku, který má rozdílnou velikost od originálu. V takovém případě je kvalita bitmapové grafiky velmi vzdálená od dokonalosti. Naproti tomu v SVG je možné bez obav měnit velikost obrázku podle potřeby, aniž by to mělo za následek zhoršení jeho kvality. Výhodu libovolné velikosti vektorového obrázku oceníme především při potřebě získání detailů jednotlivých sekcí obrázku. Menší velikost - vektorové obrázky budou ve stejném případě po kompresi podstatně menší než jejich ekvivalent v bitmapové podobě, což se projeví rychlejším a pohodlnějším načítáním www stránek při použití SVG formátu. Samozřejmě, že toto tvrzení platí především pro grafiku, která je pro vyjádření ve vektorové podobě vhodná. Kompatibilita - další výhodou je, že SVG grafika je psaná v XML, což znamená, že SVG jazyk pro vektorovou grafiku nám zajistí plnou kompatibilitu s jinými XML aplikacemi a budeme jej moci užívat ve spojení s jinými sadami XML značek, které patří například do XHTML, MathML, atd. Role CSS - kaskádové styly hrají důležitou úlohu v SVG grafice zejména při nastavování fontů, barev čar a výplní a jiných aspektů zobrazení.. Právě toto dovolí designerům www stránek opětovně používat stejnou grafiku na různých stránkách a přestylizovaní grafických objektů. Interaktivita - obrázky vytvořené ve vektorovém formátu pro grafiku SVG mohou být dynamické a interaktivní. Je tomu tak díky objektovému modelu dokumentu (DOM) pro SVG, který umožní přímé a výkonné grafické vektorové animace přes skriptování. W3C standard – je součástí standardů, které jsou doporučovány pro tvorbu webových stránek organizací W3C
3.3.5 Výhody SVG pro rodokmen Pro zobrazování rodokmenů existuje v SVG mnoho důvodů, proč užívat právě SVG formátu. • Interaktivní řízení hloubky I. – měli bychom plně rozvinutý strom avšak my bychom chtěli nějaké větve zbalit, jelikož by se nám mohli zdát nepotřebné. V SVG i XML existuje několik možností,jak vyřešit právě tento problém. • Interaktivní řízení hloubky II. – další možnost využití SVG v zobrazení rodokmenu by byla například to,že máme zobrazený rodokmen předků a chtěli bychom např. u Zdenka Stiela zjistit, kolik má potomků, ale přitom také najednou nechat zobrazený předchozí rodokmen předků a na stejném obrázku mít i potomky Zdenka Stiela. To nám právě SVG umožňuje.
- 10 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí •
Spojení mezi dvěma osobami – chtěli-li bychom z databáze vybrat dvě osoby a nalézt spojení mezi těmito dvěma osobami. V SVG to lze velice snadno a elegantně vykreslit a tento vygenerovaný soubor bude v porovnání s jinými grafickými formáty velice malé velikosti.
3.4 Příklady dalších formátů pro uložení vektorové grafiky:
3.4.1.1 Formáty pro web: •
VML (Vector Markup Language) - stejně jako SVG využívá syntaxi XML. Formát podporovala firma Microsoft, ale nedočkal se většího rozšíření.
3.4.1.2 Formáty aplikací: • • • •
DWG - je interní binární formát programů CAD (Computer Aided Design). Formát je schopen načíst jak program Corel Draw tak program Adobe Illustrator. Pro výměnu dat s jinými aplikacemi by ale měl sloužit formát DXF DXF (Data eXchange File) - je formát programů CAD, určený pro výměnu dat mezi různými aplikacemi. AI (Adobe Illustrator) - formát programu Adobe Illustrator. CDR (Corel DRaw) - formát programu Corel Draw.
3.5 Jazyk SQL Na rozdíl od programovacích procedurálních jazyků, neprocedurální jazyky, mezi které patří i SQL, popisují, co požadujeme od databáze a nikoliv jak to je třeba provést. Počátky jazyka SQL sahají do roku 1974, kdy se ještě nazývá Sequel a je zaměřen hlavně na svou dotazovací část. Akronym Sequel znamenal tehdy Structured English QUEry Language. Od poněkud nadnesené koncepce strukturované angličtiny se však ustoupilo a dnes se hovoří pouze o SQL (Structured Query Language). Zlomem ve vývoji SQL se stala jeho standardizace organizací ANSI v roce 1986 a její přijetí ISO v r. 1987. Standard představoval v podstatě dialekt SQL firmy IBM a byl charakterizován jako „průnik existujících implementací“. Nazývá se též SQL86. Rozšíření
- 11 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí definičního jazyka týkající se možností definovat integritní omezení se nazývá SQL89. Další vývoj jazyka vyústil do standardu SQL92 [12], který byl přijat ANSI a ISO v r. 1992. SQL je více než dotazovací jazyk. Je možné v něm definovat data a provádět aktualizace tak, jak je obvyklé u každého SŘBD. Možné je i definovat přístupová práva k tabulkám. Databázové modelování světa v SQL má tyto rysy: • • • • • •
Data jsou uložená v databázi ve formě tabulek, které jsou bud' skutečné (odpovídají schématu databáze) nebo virtuální (pohledy). SQL vrací data programu (nebo interaktivně uživateli), který se nemusí starat o fyzickou strukturu či umístění dat. Poloha tabulek v databázi není důležitá, jsou identifikovány jménem. Pořadí sloupců v tabulkách není důležité, jsou identifikovány jménem. Pořadí řádků v tabulkách není důležité, jsou identifikovány hodnotami ve sloupcích. Data jsou vždy prezentována uživateli jako tabulky, bez ohledu na jejich vnitřní strukturu použitou v databázi.
Dalším rysem implementací SQL je možnost definovat v SQL indexy, tj. indexové struktury umožňující rychlejší přístup k řádkům tabulek při zpracování uživatelského požadavku. Jejich vyhodnocování ovšem provádí SŘBD, který sám určuje eventuální použití indexů, případně rozhodne o jejich dočasném (či trvalém) vytvoření. Dotazovací jazyk SQL je ovšem nezávislý na fyzické organizaci dat; použití indexů se nevyskytuje explicitně v uživatelských dotazech. Pohledy i indexy mohou být v průběhu existence relační databáze definovány a opět rušeny, a to podle požadavků uživatele. V architektuře rozsáhlejších IS je přirozené nechat tuto starost na správci dat. SQL se v relačních SŘBD vyskytuje obvykle ve dvou verzích současně interakční a hostitelské. V interakční verzi se příkazy dají používat samostatně v režimu online, v hostitelské se příkazy SQL stávají součástí hostitelského jazyka, jako je např. C, nebo nějakého jazyka typu 4GL. V hostitelské verzi je nutné vhodně realizovat vazby mezi proměnnými programovacího jazyka a výsledky dotazů v SQL. Všeobecně je známo minimálně trojí použití SQL: •
SQL jako dotazovací (nebo obecněji manipulační) jazyk pro relační databáze,
•
SQL jako složka hostitelského jazyka pro programování databázových aplikací,
•
SQL jako jazyk komunikace mezi různými zdroji dat.
Dnes, v souvislosti s integrací heterogenních informačních zdrojů umístěných v síti, nabývá důležitosti hlavně poslední typ použití. SQL není považován za jazyk koncového uživatele (nemá např. vstupní a výstupní příkazy). Přednost se dnes dává atraktivnějším koncovým uživatelským prostředkům, kde SQL slouží jako jazyk v pozadí.
3.5.1 MySQL
- 12 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí MySQL je čistě relační databázový systém. Je to multiuživatelská databáze, může běžet více vláken pro souběžné zpracování požadavků od mnoha klientů. Má některá nestandardní rozšíření oproti ANSI SQL92 specifikaci (např. datové typy, přídavné atributy domén, case sensitive názvy databází a další změny v SQL příkazech – uvedeno v dokumentaci).
4 ŘEŠENÍ PROBLÉMU Mým hlavním cílem mé ročníkové práce bylo zpracovat relační rodopisnou databázi a pomocí jazyka PHP napsat skript, který bude vytvářet rodokmen ve formátu SVG. To se podařilo a výsledek můžete najít na webových stránkách . Databáze je uložena v MySQL. Databáze byla načtena a nelze do ní vkládat nové lidi ani nelze rušit nějaké členy z databáze. Pro PHP a MySQL by nebyl problém vkládat např. nové členy, avšak mým hlavním cílem bylo ukázat výhody vektorové grafiky a její snadnost použití. Zobrazování rodokmenu je teoreticky možné samozřejmě v obou směrech a to jak zobrazení stromu potomků tak i stromu předků. Avšak prohledávání stromu potomků je podstatně složitější matematický problém,jelikož neznáme přesný počet potomků,jelikož ten by mohl být teoreticky libovolný, zde by se tedy jednalo o n-ární strom, kde n by mohlo být jakékoliv kladné přirozené číslo. Prohledávání stromu předků je podstatně lehčí, jelikož víme, že z jednoho člověka mohou vycházet nejvýše dva předci. Prohledávání v tomto stromu lze tedy převést na prohledávání binárního stromu. Mým cílem bylo ukázat, jak snadné a výhodné je využití vektorové SVG grafiky, proto na mých webových stránkách naleznete prohledávání a zobrazování stromu předků.
4.1 Uložení databáze Databáze je uložena v MySQL. Původně byla dodána ve formátu CSV a poté přeformátovaná právě do MySQL, jelikož PHP spolupracuje velice dobře s MySQL. V databázi je asi 600lidí. V této databázi jsou 4 vzájemně provázané tabulky, jejichž struktura je následující : 1) tabulka individual_list -> pole: clovek, pohlavi, prijmeni, jmeno 2) tabulka fact_list -> pole: clovek, stav, rok, misto, cislo 3) tabulka relation_list ->pole : clovek, family 4) tabulka family_list -> pole : family, clovek1, clovek2 Člověk je zde jednoznačně identifikován v poli clovek jako Ičíslo a rodina je jednoznačně identifikovaná jako Fčíslo v poli family
4.2 Jak funguje skript na vyhledáváni a vypisování rodokmenu Skript na vyhledávání a zobrazování rodokmenu funguje na principu prohledávání binárního stromu. Kdy program hledá jestli má hledaný člověk nějaké předky. Jestli zjistí,že má například otce, zavolá se rekurzivně na otce ten samý skript a použije stejného principu na nyní otcovy předky, to se opakuje do té doby, než narazíme že právě hledaný nemá například předky, což může být třeba zaviněno tím, že už rodokmen hlouběji neznáme díky neexistenci archivu. - 13 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
4.3 Získání dat pro určení předků 1) 2) 3) 4) 5)
z individual_list zvolím hledanou osobu díky příkazům MySQL z fact_list doplním známé údaje hledaného člověka z relation_list zjistím, ve které rodině je hledaný dítětem ve family_list zjistím, kdo je v této rodině matka a otec pro matku i otce aplikuji ten samý postup,kdy projdu opět od 1) do 4), chybí-li zde nějaký záznam, například zde není otec nebo matka,tak mohu skončit
Skript tedy funguje tak, že na začátku mu dáme vyhledat člověka zadaného jako Ixxx, ten zapíše do SVG souboru souřadnice buňky a informace(jméno, příjmení,datum narození nebo třeba úmrtí…) a poté prohledává, má-li hledaný nějaké rodiče, najde-li někoho, aplikuje ten samý postup na dalšího člověka.
4.3.1 Jak požívat vygenerovaný rodokmen v SVG a kde ho hledat Má ročníkové se nachází na mých osobních webových stránkách, které jsou dostupné na . Zde kliknete na odkaz ROČNÍKOVÁ PRÁCE a objeví se zde návod a seznam všech lidí z databáze. Kliknete-li na jakéhokoliv člověka, tzn. na odkaz vygenerovat rodopis měla by se Vám objevit vygenerovaná SVG stránka. Hledaný člověk bude úplně na začátku rodinné pyramidy , kdy hledaný bude mít maximálně dva rodiče, čtyři prarodiče, osm praprarodičů……. výhodou formátu SVG je, že patří do XML a tudíž zde můžete nadefinovat i odkazy jako třeba na webové stránce v HTML. Takže kliknete-li do pole jakéhokoliv člověka na právě vygenerované stránce SVG, např. jeho otce, vygeneruje se Vám opět další SVG obrázek, kdy na vrcholu rodinného stromu bude nyní otec syna, které jsme dali vyhledat v předchozím kroku. Nyní bych rád napsal, jak se obecně pohybovat v SVG obrázku, je-li příliš velký, chceme-li ho zvětšit atd. Někdy se stane, že člověk kterého hledáme má v databázi rodinný strom, který má např. 6 generací. To už se nám v klasickém zobrazení nevejde na celou obrazovku,protože pak má hledaný v šesté generaci až 128 předků. Máte-li nainstalován Adobe SVG plug-in ve vašem prohlížeči, existuje zde jednoduchá možnost jak se pohybovat v obrázku. Zmáčknete na klávesnici klávesu ALT + levé tlačítko myši, objeví se Vám místo šipky ruka, a nyní při stisku ALT a levého tlačítka se můžete pohybovat na SVG obrázku , kdy posouváním myši měníte polohu v SVG obrázku. Dále zde existuje funkce zvětšení(ZOOM IN) nebo zmenšení(ZOOM OUT), což může být dobré například tehdy,kdy si chcete přiblížit nějakého člověka, nebo chcete-li naopak vidět přehledněji celý rodokmen, ovšem menší použijte ZOOM OUT. Chcete-li tyto funkce použít, najeďte myší někam na SVG obrázek a zmáčkněte levé tlačítko na myši. Poté - 14 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí se Vám objeví nabídka, kde si můžete vybrat právě ZOOM OUT nebo ZOOM IN. V této nabídce můžete nalézt také možnost HIGHER QUALITY, měla by být zaškrtnuta, když na tuto volbu kliknete přepne se Vám obrázek do nižší kvality.
Následující obrázek č.2 ukazuje, jak se zobrazuje seznam všech lidí z databáze. Kliknutím na odkaz vygenerovat rodopis se Vám vygeneruje stránka s rodokmenem. obr č. 2 – výpis databáze na webu
- 15 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
Další obrázek č.3 je už právě vygenerovaná stránka,která je ve formátu SVG, kdy si můžete obrázek přiblížit nebo se třeba posunovat. obr. č. 3 – vygenerovaná stránka v SVG
4.4 A co „Konkurence”? Samozřejmě existuje mnoho softwarových balíků na zobrazování rodokmenů. Menším problémem se ovšem může stát velikost takovéhoto softwarového balíku. Výhodou může však mnohdy být, že tyto programy umí spravovat databáze. Samozřejmostí bývá většinou zobrazování v grafickém režimu. Bylo samozřejmě vyvinuto mnoho aplikací na zpracování rodokmenů například v textovém režimu, což mohou být např. generátory HTML stránek, ale v dnešní době „pouze” textový režim není pro běžné uživatele moc příjemný a proto by mohl textový výstup mnoho z nich odradit. Například mezi programy pro správu databáze a tvorbu tiskových sestav běžící na lokálním počítači patří např. Family Tree Maker nebo Brother’s Keeper . Pro vykreslování složitějších kombinací rodokmenu, ať už se jedná o rozrod nebo vývod můžete používat Gedcom Viewer - 16 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí . Online zpřístupněná databáze je na stránkách Online Genealogical Database Index , výstup je ovšem pouze v textovém režimu. Ještě je zde možnost online vykreslování stromu z databáze pomocí vektorové grafiky na Internet Tree , což je velice podobné mým cílům ročníkové práce, avšak vykreslování neprobíhá na straně serveru, ale pomocí aplikace v Javě, což probíhá na straně klienta.
5 Výsledky 5.1 Výběr software Na začátku jsem se seznámil s jazykem PHP, MySQL a vektorovou grafikou SVG. Nainstaloval jsem na mém počítači APACHE server a PHP verzi 4.2.3. CGI server. Jazyk PHP jsem nastudoval z knihy Programujeme PHP profesionálně [2] a také ze stránek . Grafický formát SVG a jeho informace o používání je volně dostupný na oficiálních stránkách W3C
5.2 Spojení databáze a PHP Mým dalším cílem bylo spojit databázi a PHP. Databáze byla nahrána na server. K vložení databáze jsem použil aplikaci MySQLAdmin, která je volně dostupná na webu. Poté jsem začal psát skript, který zpracovává a zobrazuje rodopisnou databázi. Skript zpracovává a zobrazuje pouze strom předků. Samozřejmě bych mohl napsat skript zpracovávající také strom potomků, avšak to nebylo mým hlavním cílem ročníkové práce. Mým cílem bylo ukázat jak jednoduše a elegantně dokáže SVG vykreslovat rodokmen.
5.3 Tisk SVG Vytištění výsledku je možné přímo z webových stránek. Je zde však menší problém, že se Vám vytiskne pouze to co je vidět v aktuálním okně. Podle zatím oficiálního stanoviska W3C SVG zatím přímo nepodporuje přímou práci a spolupráci s tiskem. Proto alternativní možnost pro tisk by bylo používat nějaký SVG editor, který už umí pracovat s SVG a má více možností právě s tiskem SVG, např. Corel Draw 11 nebo Adobe InDesign 2.
- 17 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
6 Možnosti dalšího řešení a rozvoje 6.1 Potomci Pomocí jazyka PHP a SVG by bylo také možné napsat skript zobrazující strom potomků. V PHP by to nebyl takový problém, spíše jde o to, že je to poměrně složitější matematický problém. Po seznámení se a napsání této procedury by pak bylo zobrazování výsledku v SVG opět velice elegantní, jelikož by se zde mohlo využít dalších výhod tohoto grafického formátu.
6.2 Načítání databáze Dalším možným vylepšením by také mohlo být to, že by zde mohla být možnost nahrávat do databáze data lidí podle potřeby přímo z webu. Formát je přesně dán, je to GEDCOM ve specifikaci 5.5 . Uživatel by si nahrál podle této specifikace data a poté by tato databáze byla uložena na serveru a zpracována.
6.3 Volitelný vzhled Velice příjemným vylepšením pro uživatele by také mohl být volit si vhled pozadí nebo třeba buněk podle potřeby a vkusu uživatele. SVG totiž umí zpracovávat CSS (Cascading Style Sheets) a má velice mnoho možností, jak upravit vhled a pozadí. Existují zde totiž funkce jako gradient, filtr nebo dobrá práce s textem. A v případě, že by mohl měnit díky jakéhosi webového formuláře tyto parametry v těchto funkcích lehce měnit, čímž by došlo k dalšímu jak vizuálnímu tak také k uživatelskému zkvalitnění.
- 18 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
7 Závěr Skript, který zobrazuje rodokmen vybrané osoby byl úspěšně napsán. Cíle ročníkové práce byly splněny. Srovnání velikosti souborů ve vektorových grafických formátech oproti jiným běžným grafickým formátů jako např. JPEG nebo BMP je v tab. č. 1 je pouze jedna z mnoha výhod, proč byl vybrán vektorový grafický formát SVG pro vykreslování rodokmenů. Databáze je na serveru uložena v MySQL. Má ročníková práce běží na webových stránkách , kde si můžete vykreslovaní rodokmenu snadno vyzkoušet. Skript je optimalizován pro prohlížeč Microsoft Internet Explorer.
- 19 -
Radek Horáček - Ročníková práce 2002/2003 Vizualizace relační databáze ve webovém prostředí
8 Zdroje : [1] http://w3.org [2] Programujeme PHP profesionálně – J. Castagnetto, H. Rawat, S. Schumann, Ch. Scollo, D. Veliath, vydav. Computer Press Praha 2002, 2.vydání, ISBN 80-7226-310-2 [3] PHP 4 – učebnice základů jazyka – Jiří Bráza, vyd. Grada Publishing, 1. vydání, Praha 2002, ISBN 80-247-0442-0 [4] D. Brousil, Některé komponenty informačního systému školy, bakalářské práce, 2001 http://bimbo.fjfi.cvut.cz/~brousil/bakaldoc/ [5] http://www.php.net [6] The GEDCOM Standard, http://gendex.com/gedcom55/55gctoc.htm [7] http://www.zend.com [8] http://www.adobe.com/svg/viewer/install/main.html
- 20 -