Zadání úlohy do projektu z předmětu IPP 2013/2014



Podobné dokumenty
Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Úvod do databázových systémů

Úvod do databázových systémů

Databázové systémy. Cvičení 6: SQL

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Modul EPNO. Téma: Elektronické odesílání evidenčních listů přepravy nebezpečných odpadů

10. blok Logický návrh databáze

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Tabulka fotbalové ligy

PRG036 Technologie XML

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY.

SPORTONGO UŽIVATELSKÁ PŘÍRUČKA

CRS komunikační rozhraní

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Databázové systémy Cvičení 5.2

Minebot manuál (v 1.2)

Specifikace ASYMBO XML feedu

Databáze I. Přednáška 4

Operační systém UNIX

5. POČÍTAČOVÉ CVIČENÍ

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

DPKOM_06 Dědičnost entit a zpětná volání posluchači

Transformace konceptuálního modelu na relační

NewBolting. Uživatelský manuál. pro AVEVA PDMS 12.1.SP2 a SP4.

Full-textové vyhledávání. Július Štroffek Revenue Product Engineer Sun Microsystems

V této příloze je podrobně popsána struktura XML dokumentu s mapou (viz kapitolu 5.3), příklad tohoto XML dokumentu je na přiloženém CD v souboru

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

SPRÁVA ZÁKLADNÍCH REGISTRŮ PODMÍNKY PRO PŘIPOJENÍ AGENDOVÝCH INFORMAČNÍCH SYSTÉMŮ DO ISZR. verze 2.00

DPH v Exact Globe Next 2013

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

B A B A B A B A A B A B B

6. SQL složitější dotazy, QBE

Pokročilé Webové služby a Caché security. Š. Havlíček

Syntaxí řízený překlad

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

DUM 12 téma: Příkazy pro tvorbu databáze

Sada 1 - PHP. 14. Úvod do jazyka SQL

Parametrizace, harmonogram

Databázové systémy a SQL

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Helios RED a Internetový obchod

EXTRAKT z mezinárodní normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním materiálem o normě.

Předávání údajů do Informačního systému výzkumu, experimentálního vývoje a inovací ve formátu XML

NÁVRH A REALIZACE WWW PREZENTACE ČKR

10. Editor databází dotazy a relace

Robot bude XML stahovat každý den v brzkých ranních hodinách. Při nedostupnosti souboru nebo dlouhém načítání souboru nebude aktualizace provedena.

Dotazovací jazyk SQL I

PELIKAN DANIEL Definice XML exportů

Databázové systémy trocha teorie

13. blok Práce s XML dokumenty v databázi Oracle

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Popis struktury XML rozhraní pro elektronické podání hromadné žádosti o zápis do registru PZ

RELAČNÍ DATABÁZOVÉ SYSTÉMY

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Programování v C++ 1, 6. cvičení

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

17. července :51 z moravec@yahoo.com

Gramatická evoluce a softwarový projekt AGE

2D standard pro jízdní doklady ČD, a.s.

Formální jazyky a gramatiky Teorie programovacích jazyků

Projekt Atlasu znečištění ovzduší

PRÉCIS STRUKTUROVANÁ DATABÁZE JAKO ODPOVĚĎ NA NESTRUKTUROVANÝ DOTAZ. Dominik Fišer, Jiří Schejbal

02 Klasifikace bezpečnostních tříd OBSAH

Kontrolní hlášení v programu STEP FOX.

Funkce logování v NetLogu umožňuje záznam činnosti žáků pro další analýzu.

Příloha č. 18. Specifikace bloku PŘÍPRAVA. Příloha k zadávací dokumentaci veřejné zakázky Integrační nástroje, vstupní a výstupní subsystém

UNIVERZITA PALACKÉHO V OLOMOUCI

1. Uživatelská úprava příkazů I.

ČVUT FAKULTA ELEKTROTECHNICKÁ, TECHNICKÁ 2, PRAHA, ČESKÁ REPUBLIKA. Semestrální projekt. Systém speech2text (pracovní název)

Programování v Javě I. Únor 2009

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Manuál k databázi soupisů duší

4. Základy relačních databází, logická úroveň návrhu

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

1. Relační databázový model

SPIRIT Nové funkce. SOFTconsult spol. s r. o., Praha

Objekty a třídy. Procedurální a objektově orientované programování. V této kapitole se naučíte: Procedurální a objektově orientované programování

Ostatní portálové aplikace

Programování v Javě I. Leden 2008

Příklady pracovních postupů

Popis rozhraní Číselníkové webové služby

Webové služby. Martin Sochor

Teoretické minimum z PJV

Validační pravidla NRKN

Interpret jazyka IFJ2011

Distanční opora předmětu: Databázové systémy Tématický blok č. 7: Fulltextové vyhledávání Autor: RNDr. Jan Lánský, Ph.D.

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):


Ostatní portálové aplikace

24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.

Transkript:

Zadání úlohy do projektu z předmětu IPP 2013/2014 Zbyněk Křivka a Dušan Kolář E-mail: {krivka, kolar}@fit.vutbr.cz, {54 114 1313, 54 114 1238} XTD: XML2DDL Zodpovědný cvičící: Ondřej Navrátil(inavra@fit.vutbr.cz) 1 Detailní zadání úlohy Skript na základě XML souboru s daty vytvoří sadu SQL příkazů generujících příslušnou strukturu tabulek v SQL databázi, ve které by se data obsažená ve vstupním souboru mohla nacházet. VstupnímsouboremmůžebýtlibovolnýXMLsouborbezspeciálníchznaků 1 vnázvechelementů a atributů. Skript provede analýzu vstupního souboru a následně pro každý netextový element(mimo kořenového) vytvoří SQL příkaz generující tabulku pojmenovanou právě podle elementu. Výsledná tabulka bude obsahovat sloupce reprezentující jednotlivé atributy, textové elementy a odkazy na tabulky(implementovaných formou cizích klíčů) reprezentované dalšími podelementy. V případě shody jmen elementů bude vytvářena jediná tabulka obsahující sloupce pro sjednocení atributů a podelementů všech těchto elementů. Například pro elementy <book title="automata and Languages"/> a <book author="karel Čapek" title="robot"/> bude výsledkem jedna tabulka book obsahující sloupce author a title. Mimo sloupce, vzniklé z atributů, netextových i textových podelementů (název sloupců vzniklých z textových elementů bude value), bude každá tabulka obsahovat sloupec danýjménemtabulkyspředponou PRK apříponou ID reprezentujícítzv.primárníklíč. Tvarvýstupníhosouboru budecase insensitive 2 ajedánnásledujícímpředpisem(neterminály jsou v úhlových závorkách, <OFILE> je startující neterminál, tokeny jsou odděleny bílým znakem, zbývající řetězce jsou terminální s tím, že terminály psané velkými písmeny reprezentují klíčová slova, kdežto terminály psané malými písmeny jsou literály definované níže): <OFILE> --> <HEADER> <DDL> <HEADER> --> empty <HEADER> --> header <DDL> --> <CREATE-TABLE> <DDL> <DDL> --> empty <CREATE-TABLE> --> CREATE TABLE table_name ( <ID>, <DECLARATIONS> ) ; <ID> --> PRK_table_name_ID INT PRIMARY KEY <DECLARATIONS> --> <DECLARATION>, <DECLARATIONS> <DECLARATIONS> --> <DECLARATION> <DECLARATION> --> column_name data_type Datové typy (data type) vyskytující se ve výsledném souboru budou BIT, INT, FLOAT, NVARCHAR a NTEXT. Datové typy budou přiřazovány sloupcům tak, že: pokud daný atribut, nebo textový podelement bude obsahovat ve všech jeho výskytech u stejnojmenných elementů hodnotu 0, 1, T rue, F alse, nebo hodnota nebude zadána vůbec, použije sedatovýtypbit, 1 Speciálnímznakemjemyšlenlibovolnýznak,kterýbyporušovalstrukturuvýstupníhosouborudefinovanouníže. 2 Nebudouserozlišovatmaláavelkápísmena. 1

pokud daný atribut, nebo textový podelement bude obsahovat celé číslo, pak datový typ sloupce bude INT, pokud daný atribut, nebo textový podelement bude obsahovat reálné číslo(dle standardu C99), pak datový typ sloupce bude FLOAT, pokud daný atribut bude obsahovat textový řetězec, pak datový typ sloupce bude NVARCHAR, pokud daný textový podelement neodpovídá výše určeným podmínkám pro datové typy BIT, INT, FLOAT, pak bude výsledný sloupec datového typu NTEXT. Navíc, pokud podelementem je další netextový podelement a ten se objeví ve všech elementech stejného jména maximálně n krát(n je dáno parametrem etc=n viz definice parametrů), vytvoří se m sloupcůtypuint,přičemžnázevbudedánkonkatenacínázvupodelementusnumařetězcem ID, kde num {empty,1,2,...,m}amjemaximálnípočetstejnojmennýchpodelementůdanéhoelementu.zapředpokladu,že m = 1,nenípotřebasloupecindexovatanumpakpovažujtezaprázdný řetězec. Pokud se v elementu objeví podelement stejného názvu vícekrát jak n, tak se naopak vytvoří jeden nový sloupec typu INT v tabulce určené názvem podelementu. Název sloupce bude určenkonkatenacínázvuelementuařetězce ID.Tedy,pro<book><author/><author/></book> a --etc=2 budou vytvořeny sloupce author1id a author2id v tabulce book. Naopak pro <book><author/><author/></book> a--etc=1 bude vytvářen sloupec s názvem book ID v tabulceauthor.odkazy 3,kterébyvedlynatabulkuvzniklouzkořenovéhoelementuse,přirozeně, negenerují. Ostatní lexémy jsou definovány následovně: table name, resp. column name jsou identifikátory tabulek, resp. jejich sloupců, empty reprezentuje prázdný řetězec, num je libovolné dekadické, nezáporné, celé číslo a header je hlavička výstupního souboru, kde se bude nacházet na prvním řádku uvozenadvojznakem -- azakončenadvěmakonciřádku.zbývajícíobsahhlavičkybudeurčen volitelným parametrem--header= hlavička tak, že hlavička(bez ohraničujících apostrofů, či uvozovek)budevloženabezprostředněza --.Vpřípadě,ženebudehlavičkaparametremskriptu specifikována,dovýstupníhosouborusenevkládáanidvojznak --,anidvojíkonecřádku. Definice parametrů skriptu: --help viz společné zadání všech úloh --input=filename zadaný vstupní soubor ve formátu XML --output=filename zadaný výstupní soubor ve formátu definovaném výše --header= hlavička na začátek výstupního souboru se vloží zakomentovaná hlavička --etc=n pro n 0 určuje maximální počet sloupců vzniklých ze stejnojmenných podelementů -a nebudou se generovat sloupce z atributů ve vstupním XML souboru -b pokud element bude obsahovat více podelementů stejného názvu, bude se uvažovat, jako byzdebylpouzejedinýtakový,alestímžebudeuvažovántensnejvyššímdatovýmtypem dle odstavce Řešení konfliktů(tento parametr nesmí být kombinován s parametrem--etc=n) 3 Sloupcevzniklékonkatenacínázvutabulkya ID 2

-g lze jej uplatnit v kombinaci s jakýmikoliv jinými přepínači vyjma--help. Při jeho aktivaci bude výstupním souborem pouze XML tvaru <tables> <table name="nazev_tabulky"> <relation to="nazev_cizi_tabulky" relation_type="vztah" />... </table>... </tables> kde mezi <tables> a </tables> budou zahrnuty všechny, za normálních okolností, generované tabulky a mezi tagy <table> a </table> všechny relace(včetně cyklu). Vztah bude nabývat pouzejednuzhodnot 1:1, 1:N, N:1nebo N:M,vzávislostinatypurelace(vizobrázek9ve 4. snímcích k přednáškám IDS). Relace jsou tranzitivní a symetrické- tj. pokud tabulka A je vrelacisba BjevrelacisC,pakbudedovýstupuzahrnutairelacezAdo C,zBdo Aa z C do A. Určení kardinality je detailněji popsáno v sekci Určení kardinality relací. Při nezadání parametru--input=filename, resp.--output=filename, uvažujte standardní vstup resp. výstup a při nezadání--etc=n považujte n neomezené. Příklad: <Earth> <country name="slovenská republika"> <capital>bratislava</capital> </country> <country name="česká republika" population="8900000"> <capital>praha</capital> <city>brno</city> <city>olomouc</city> </country> </Earth> Je-li skript spuštěn s parametrem--etc=1, generují se tabulky country, city a capital. V tabulce country budou sloupce PRK country ID, name, capital ID a population. Tabulka city bude obsahovat sloupce PRK city ID, country ID a value, a konečně tabulka capital bude složena ze sloupců PRK capital ID a value. Řešení konfliktů: Vstupní XML soubor bude vždy validní. Na druhou stranu, během zpracování můžete narazit na atributy stejného názvu ale jiných datových typů. V tomto případě výsledný datový typ bude roven nejvyššímu zúčastněnému datovému typu podle uspořádání BIT < INT < FLOAT < NVARCHAR < NTEXT. Při konfliktu názvu sloupců vznikajících z atributů nebo textových elementů a sloupců reprezentující odkaz do tabulky negenerujte žádný výstupní soubor, ale ukončete skript s chybovým hlášením vypsaným na standardní chybový výstup a vraťte návratový kód 90. Pokud nějaký element obsahuje atribut value a současně textový podelement, pak se generuje pouze jeden sloupec value s vyšším datovým typem dle uvedeného uspořádání. 3

Určení kardinality relací: Následující algoritmus definuje postup pro korektní určení kardinality vztahů mezi tabulkami. Jednotlivé kroky algoritmu jsou záměrně popsány s použitím matematických formalismů a záleží na studentovi, nakolik je schopen tyto metody aplikovat a reflektovat ve své implementaci. Předpokládáme, že již bylo pro daný vstup vytvořeno korektní databázové schéma. Toto schéma budeme reprezentovat množinou T všech tabulek a dále relací vzájemného odkazování F T T. Pokud (a,b) F,tedy afb,potomtabulka aobsahuje(alespoňjeden)sloupecodkazujícísedo tabulky b(vklasickémpřípaděnazvanýbid).vdalšímbudemepoužívatsyntaxi a b. Výstupem algoritmu bude zobrazení R : T T {1:N,1:1,N:1,N:M,ε} reprezentující požadované kardinality (hodnota ε vyjadřuje, že mezi tabulkami není žádný vztah). Zobrazení získáme následujícím postupem: 1.(výchozíbod) R =. 2.(inicializace) a,b T: (a)pokud a = b,pak R(a,b) = 1:1. (b)pokud a b,a bab a,pak R(a,b) = N:M. (c)pokud a b,a baneplatí b a,pak R(a,b) = N:1. (d)pokud a b,b aaneplatí a b,pak R(a,b) = 1:N. (e)jinak R(a,b) = ε. 3.(tranzitivita vztahů 1:N) Dokud je možné provést nějakou změnu, proveď a,b T, R(a,b) = ε:pokud c T : R(a,c) = 1:N,R(c,b) = 1:N,pak R(a,b) = 1:N. 4.(tranzitivita vztahů N:1) Dokud je možné provést nějakou změnu, proveď a,b T, R(a,b) = ε:pokud c T : R(a,c) = N:1,R(c,b) = N:1,pak R(a,b) = N:1. 5.(vznikatranzitivitavztahů N:M)Dokudjemožnéprovéstnějakouzměnu,proveď a,b T, R(a,b) = ε:pokud c T : R(a,c) ε,r(c,b) ε,pak R(a,b) = R(b,a) = N:M. Výsledné zobrazení R popisuje všechny relace v tomto schématu. 2 Bonusová rozšíření VAL(až 2 body): Jako bonusové rozšíření lze implementovat ověření, zda XML soubor určený parametrem--isvalid=filename obsahuje data, která lze bezezbytku vložit do databázové struktury tabulek vzniklé pro soubor daný parametrem--input=filename. V případě že ano, bude se generovat výstup standardním způsobem. Pokud ne, skript se ukončí chybou s návratovou hodnotou 91. Volitelné parametry-a a-b aplikujte i na testovaný XML soubor. Tedy, pokud XML soubor sloužící jako vstup i testovaný soubor současně má nějaké atributy a skript je spouštěn s parametrem -a, pak bude test v pořádku a výstup se bude generovat standardním způsobem. 3 Poznámky k hodnocení Výstup bude automaticky analyzován(je nezbytné, aby byl syntakticky správně dle zadané gramatiky) a bude z něj následně vytvářen XML soubor. Ten pak bude porovnáván nástrojem JExamXML pro porovnání XML souborů. Při generování SQL příkazů není tedy třeba brát zřetel na uspořádání generovaných deklarací tabulek, ani na pořadí jednotlivých sloupců v rámci jedné tabulky. 4

Revize zadání: 2014-03-05: Doplněn popis parametru-g. 5