OCL a integritní omezení

Rozměr: px
Začít zobrazení ze stránky:

Download "OCL a integritní omezení"

Transkript

1 OCL a integritní omezení Karel Richta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze 2011 Softwarové inženýrství I., BI-SI1 04/2011, Přednáška 9 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 1/78

2 Proč OCL? Pomocí diagramů UML nelze popsat všechno proto je součástí specifikace UML i definice OCL. Co je zvláštní na následujícím obrázku? (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 2/78

3 Jiný příklad: Předměty a zkoušky class Studium bez omez... Student - jméno: string - příjmení: string studuje Předmět - kód: string - název: string si zapsal +z 1 +má Zkouškový termín - datum: Date - místnost: int (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 3/78

4 Předměty a zkoušky o něco lépe class Příklad Studium s omezením Student - jméno: string - příjmení: string studuje Předmět - kód: string - název: string si zapsal +z 1 Student/studentka si mohou zapsat zkouškový termín pouze z předmětů, které právě studují. {C1} +má Zkouškový termín - datum: Date - místnost: int (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 4/78

5 OCL -ObjectConstraintLanguage pochází z metodiky Syntropy(IBM) je čistě funkcionální (bez vedlejších efektů) není to programovací jazyk -je určen pro vyjádření invariantů - je to specifikační jazyk je silně typovaný (každý výraz OCL má definován typ) má předdefinovanou sadu typů (primitivní typy Integer, Boolean, String, Real, UnlimitedIntegera z nichutvořené kolekce) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 5/78

6 Jak vypadá zápis v OCL? context <jméno> [inv pre post]: <výraz> klíčové slovo contextslouží pro definici kontextu pro výraz v OCL, např. zápis: context Osoba inv : <výraz> označuje, že uvedený výraz se vztahuje k instancikontextu (třídy) Osoba (na kterou se lze odkazovat klíčovým slovem self) klíčová slova inv, pre, postzastupují stereotypy <<invariant>>, <<precondition>>, <<postcondition>> (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 6/78

7 Příklad zápisu v OCL context Osoba inv: self.příjem > tento zápis vyjadřuje, že pro každou instance třídy Osoba, musí mít atribut příjem hodnotu větší než context x:osoba inv: x.příjem > označuje totéž context x:osoba inv OK : x.příjem > zavádí pro toto integritní omezení jméno (OK) Příklad popisu metody: context Osoba::pridej(kolik:Integer):Integer pre : kolik > nemá smysl přidávat méně post : result = + kolik (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 7/78

8 Příklad: Předměty a zkoušky class Studium v OCL Student - jméno: string - příjmení: string studuje Předmět - kód: string - název: string si zapsal {C1} «Invariant» {-- Student/studentka si mohou zapsat zkouškový termín pouze z předmětů, které právě studují. inv C1 : is-element(self.si_zapsal.z, studuje)} +z 1 +má Zkouškový termín - datum: Date - místnost: int (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 8/78

9 EA vygeneruje tabulky, ale integritní omezení ne. (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 9/78

10 Příklad: Hypotéky Uvažme příklad světa hypoték - ukázka z katalogu požadavků: 1. Každá hypotéka bude vždy pro jednu osobu. 2. Osoba si může vzít několik hypoték. 3. Každou nemovitost vlastní právě jedna osoba. 4. Osoba může vlastnit libovolný počet nemovitostí. 5. Každá hypotéka musí být zajištěna nejméně jednou nemovitostí. 6. Nemovitost může být použita k zajištění více hypoték. (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 10/78

11 Příklad modelu evidence hypoték class Hypotéky bez omezení Nemovitost - označení: string - hodnota: penize +je_zajištěna 1..* +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje +má_půjčenu Hypotéka - od: datum - do: datum - celková_částka: peníze = ,- - měsíční_splátka: peníze (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 11/78

12 Příklad: Hypotékyo něco lépe class Hypotéky s omezením Nemovitost - označení: string - hodnota: penize +je_zajištěna 1..* +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba + žádost(peníze, Nemovitost) : boolean +pro 1 «Invariant» {Hypotéka může být zajištěna pouze takovými nemovitostmi, které daná osoba vlastní.} {C1} +zajišťuje +má_půjčenu Hypotéka - od: datum - do: datum - celková_částka: peníze = ,- - měsíční_splátka: peníze (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 12/78

13 class DDL CASE (EA) vygeneruje tabulky, ale integritní omezení ne. Nemov itost «column» označení: VARCHAR2(50) hodnota: penize *pfk nemovitostid: Integer FK je_majetkem: Integer «PK» + PK_Nemovitost(Integer) «FK» + skládá se z(integer) + FK_je_majetkem(Integer) +PK_Nemovitost (nemovitostid = nemovitostid) «FK» +Nemovitost JoinHypotékaToNemov itost «column» *FK nemovitostid: Integer *FK hypotékaid: Integer +FK_je_majetkem +Hypotéka 1..* (je_majetkem = osobaid) «FK» (hypotékaid = hypotékaid) «FK» +PK_Osoba +PK_Hypotéka 1 Osoba «column» jméno: VARCHAR2(50) příjmení: VARCHAR2(50) příjem: peníze *PK osobaid: Integer «PK» + PK_Osoba(Integer) +PK_Osoba 1 (pro = osobaid) «FK» +FK_pro Hypotéka «column» od: datum do: datum celková_částka: peníze = ,- měsíční_splátka: peníze *PK hypotékaid: Integer FK pro: Integer «FK» + Nemovitost(Integer) + Hypotéka(Integer) «PK» + PK_Hypotéka(Integer) «FK» + FK_pro(Integer) 13 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 13/78

14 CASE vygenerujesql, aleio ne. DROP TABLE Hypotéka CASCADE CONSTRAINTS;... CREATE TABLE Hypotéka ( od DATE, do DATE, celková_částka NUMBER(12,2) DEFAULT ,-, měsíční_splátka NUMBER(12,2), hypotékaid Integer NOT NULL, pro Integer );... ALTER TABLE Hypotéka ADD CONSTRAINT PK_Hypotéka PRIMARY KEY (hypotékaid);... ALTER TABLE Hypotéka ADD CONSTRAINT FK_pro FOREIGN KEY (pro) REFERENCES Osoba (osobaid);... (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 14/78

15 Ale mohl by něco vygenerovat V popisu integritního omezení v jazyce OCL je dost informace pro vygenerování integritního omezení např. pro SQL: ALTER TABLE JoinHypotékaToNemovitost ADD CONSTRAINT C2 CHECK ( /* -- Hypotéky osoby mohou být zajištěny pouze nemovitostmi, které tato osoba vlastní. */ ); context inv: self.je_zajištěna.je_majetkem = self.pro nemovitostid.je_majetkem = hypotékaid.pro (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 15/78

16 Kdy použít OCL? pro vyjádření integritních omezení v datovém modelu (diagramu tříd) pro vyjádření typových omezení při definici stereotypů pro popis vstupních a výstupních podmínek operací, nebo pro popis operací (metod) ve tvaru: operace(x1,, xn) = výraz kde výrazmůže obsahovat x1,, xn jako navigační jazyk (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 16/78

17 self.příjem Výrazy v OCL hodnota vlastnosti objektu o kterém v daném kontextu mluvíme v tomtopřípadě se jedná o atribut a hodnotu typu peníze x.vlastní hodnota vlastnosti objektu o kterém v daném kontextu mluvíme v tomtopřípadě se jedná o vztah a hodnotu typu kolekce nemovitostí (případně prázdná) class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* Nemovitost se zde chápe jako + žádost(peníze, Nemovitost) : boolean +pro 1 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 17/78

18 Příklad použití OCL I. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Kolik osob může vlastnit auto? Vlastníkem auta může být osoba, které je alespoň 18 let? context Car inv: self.owner.age >= 18 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 18/78

19 Příklad použití OCLII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Co znamená podmínka? context Person inv: self.age >= 18 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 19/78

20 Příklad modelu evidence hypoték class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 20/78

21 OCL lze použít pro navigaci class Příklad modelu pro hypotéky skládá se z 1 Chceme označit Nemov itost měsíční splátky +vlastní - označení: string hypoték osoby Q: - hodnota: penize +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba Q.má_půjčenu.měsíční_splátka +je_zajištěna 1..* Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. (je to množina údajů výsledek je typu Bag(peníze) ) + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 21/78

22 Integritní omezení v OCL class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* +zajišťuje Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze + žádost(peníze, Nemovitost) : boolean +pro 1 Hypotéka musí být zajištěna nemovitostí, jejíž cena není menší než celková zapůjčená částka (pokud je zajištěna +má_půjčenu jednou nemovitostí). context Hypotéka inv : self.celková_částka <= self.je_zajištěna.hodnota (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 22/78

23 Typy v OCL předefinované primitivní typy (s obvyklými operacemi): Integer Boolean String Real UnlimitedInteger konstruktory: Collection, Set, Bag, Sequence s operátory: collect, select, reject, forall, exists, iterate, include, count, union, intersect, isempty, notempty, isunique,... (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 23/78

24 Primitivní typy Typ Boolean Integer Operace and, or, xor, not, implies, if-then-else *, +, -, /, abs(), div(integer), mod(integer), min(integer), max(integer) Real String *, +, -, /, abs(), floor(), round(), max(real), min(real) size(), concat(string), toupper(), tolower(), substring(integer, Integer) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 24/78

25 Operace s primitivními typy size() : Integer (počet znaků v řetězci self) substring(lower : Integer, upper : Integer) : String (podřetězec self začínající na pozici lower a končící na pozici upper. Pozice se počítají od 1 do self.size(). pre: 1 <= lower pre: lower <= upper pre: upper <= self.size() concat(s : String) : String (spojení řetězců self a s) post: result.size() = self.size() + s.size() post: result.substring(1, self.size() ) = self post: result.substring(self.size() + 1, result.size() ) = s (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 25/78

26 Výčtové typy context Person inv: gender = Gender::male (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 26/78

27 Příklad použití OCLIII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ow nership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Všechna vozidla osob jsou černá: context Person inv: self.fleet -> forall(v v.colour = Colour::black) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 27/78

28 Výrazy v OCL (pokr.) x.vlastní -> isempty() test, zda hodnota typu kolekce nemovitostí je prázdná x.vlastní.hodnota kolekce hodnot typu peníze představující cenu nemovitostí, které objekt x vlastní x.vlastní.hodnota -> sum() cena nemovitostí, které objekt x vlastní, spočítaná jako součet hodnot jednotlivých nemovitostí class Pøíklad modelu pro hypotéky skládá se z 1 Nemovitost - oznaèení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - pøíjmení: string - pøíjem: peníze Osoba +je_zajištìna 1..* + žádost(peníze, Nemovitost) : boolean Nemovitost se zde chápe jako (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 28/78 jednotka vlatnictví. Pokud nějakou +pro 1

29 Vytváření kolekcí Set {2, 4, 1, 5, 7, 13, 11, 17 } OrderedSet {1, 2, 3, 5, 7, 11, 13, 17 } Sequence {1, 2, 3, 5, 7, 11, 13, 17 } Bag {1, 2, 3, 2, 1} (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 29/78

30 Pro všechny objekty jsou definovány metody: Typ Operace oclistypeof(t : OclType) : Boolean ocliskindof(t : OclType) : Boolean oclinstate(s : OclState) : Boolean oclisnew() : Boolean oclastype(t : OclType) : instance of OclType (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 30/78

31 Kolekce Typ Collection Operace ->size(), ->includes(object), ->includesall(collection), ->excludes(object), ->excludesall(collection), ->count(object), ->isempty(), ->notempty(), ->sum(), ->exists(expression), ->forall(expression), ->isunique(expression), ->sortedby(expression), ->iterate(expression), ->any(expression), ->one(expression) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 31/78

32 Příklad použití OCLIV. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Nikdo nemůže vlastnit více než 3 vozidla context Person inv: self.fleet -> size <= 3 nebo změníme násobnost v diagramu to je ale statické, nemůže se to dynamicky měnit. (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 32/78

33 Kolekce typu Set Typ Collection::Set Operace ->union(set), ->union(bag), ->intersection(set), ->intersection(bag), ->including(object), ->excluding(object), ->symmetricdifference(set), ->select(expression), ->reject(expression), ->collect(expression), ->count(object), ->assequence(), ->asbag() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 33/78

34 Kolekce typu Bag Typ Collection::Bag Operace ->union(bag), ->union(set), ->intersection(bag), ->intersection(set), ->including(object), ->excluding(object), ->symmetricdifference(set), ->select(expression), ->reject(expression), ->collect(expression), ->count(object), ->assequence(), ->asset() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 34/78

35 Kolekce typu Sequence Typ Collection::Sequence Operace ->union(bag), ->union(set), ->intersection(bag), ->intersection(set), ->including(object), ->excluding(object), ->symmetricdifference(set), ->select(expression), ->reject(expression), ->collect(expression), ->count(object), ->assequence(), ->asset() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 35/78

36 Přesnější vyjádření IO class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* + žádost(peníze, Nemovitost) : boolean Hypotéka musí být zajištěna +pro 1 Nemovitost se zde chápe jako nemovitostmi, jejichž součet jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí cen není menší než celková se na samostatné části dle podílu vlastníků. zapůjčená částka. +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu context Hypotéka inv : self. celková_částka <= self. je_zajištěna.hodnota -> sum() Y36SIN - Jazyk OCL (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 36/78 36

37 A obráceně class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* +zajišťuje Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze + žádost(peníze, Nemovitost) : boolean +má_půjčenu +pro 1 Nemovitost může zajišťovat pouze tolik hypoték, jejichž součet celkových částek není větší, než cena nemovitosti. context Nemovitost inv : self.zajišťuje.celková_částka -> sum() <= self.hodnota Richta: NSWI041 - Jazyk OCL 37 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 37/78

38 object Hypotéky bez hranic Důležitá podmínka class Příklad modelu pro hypotéky H-123 :Hypotéka Karlštejn :Nemovitost pro Josef :Osoba zajištěna? vlastní Bouda :Nemovitost skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* +zajišťuje Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze + žádost(peníze, Nemovitost) : boolean +má_půjčenu +pro 1 Hypotéky osoby mohou být zajištěny pouze nemovitostmi, které tato osoba vlastní. context Hypotéka inv : self.je_zajištěna.je_majetkem = self.pro Richta: NSWI041 - Jazyk OCL 38 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 38/78

39 Vlastnosti operací v OCL class Příklad modelu pro hypotéky skládá se z 1 Nemov itost +vlastní - označení: string Osoby - mohou hodnota: penize žádat o hypotéky, pokud suma +je_zajištěna 1..* měsíčních splátek osoby nepřesáhne 30% příjmu osoby. +je_majetkem Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. 1 - jméno: string - příjmení: string - příjem: peníze Osoba + žádost(peníze, Nemovitost) : boolean +pro 1 +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu context Osoba::žádost(částka:peníze,zajištění:Nemovitost) pre : (self.má_půjčenu.měsíční_splátka -> sum()) + částka/počet_splátek <= self.příjem * 0.3 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 39/78 39

40 Typická vlastnost hierarchie class Příklad modelu pro hypotéky skládá se z 1 Nemov itost - označení: string - hodnota: penize +vlastní +je_majetkem 1 - jméno: string - příjmení: string - příjem: peníze Osoba +je_zajištěna 1..* Nemovitost se zde chápe jako jednotka vlatnictví. Pokud nějakou nemovitost vlatsní více osob, rozdělí se na samostatné části dle podílu vlastníků. + žádost(peníze, Nemovitost) : boolean +pro 1 Nemovitost se nemůže skládat sama ze sebe. +zajišťuje 1..* Hypotéka - od: datum - do: datum - celková_č ástka: peníze - měsíční_splátka: peníze +má_půjčenu context Nemovitost inv : not (self.skládá_se_z iselement(self)) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 40/78

41 Příklad použití OCLV. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +ow ner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Nikdo nevlastní víc než 3 černá vozidla: context Person inv: self.fleet -> select(v v.colour = Colour::black)-> size <= 3 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 41/78

42 Příklad použití OCLVI. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Co znamená podmínka? context Person inv: self.fleet -> iterate(v ; acc:integer=0 if (v.colour = Colour::black) then acc+1 else acc endif) <= 3 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 42/78

43 Příklad použití OCLVII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Co znamená podmínka? context Person inv: self.fleet -> age < 18 implies forall(v not v.ocliskindof(car)) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 43/78

44 Příklad použití OCLVIII. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Existuje červené auto: context Car inv: Car.allInstances -> exists(c c.colour = Colour::red) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 44/78

45 Příklad použití OCLIX. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Metoda setage třídy Person pro nezáporný argument newage nastaví atribut age: context Person::setAge(newAge:Integer):Integer pre: newage >= 0 post: self.age = newage (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 45/78

46 Příklad použití OCLX. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Vyvolání metody birthday třídy Person zvýší věk osoby o 1: context Person::birthday() post: self.age = + 1 (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 46/78

47 Příklad použití OCLXI. class Auta Person - name: String - birthdate: Date - /age: int + getname() : String {query} + birthday() : Date + setage(int) : int +owner 1 ownership Vehicle +fleet - colour: Colour «enumeration» Colour black white red Date - day: int - month: int - year: int Car Bike Výsledek volání metodygetnametřídy Person je hodnota atributu name: context Person::getName():String post: result = self.name nebo, protože getname je {query}: context Person inv: self.getname = self.name (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 47/78

48 Úrovně modelů (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 48/78

49 Příklad využití OCL (metamodeluml) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 49/78

50 Příklad podmínky v OCL (metamodel) class Model elementu «metaclass» Element - mustbeowned: boolean +owner 0..1 Element, který musí mít vlastníka, musí mít vlastníka. +ownedelement context Element inv: self.mustbeowned() implies owner->notempty() (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 50/78

51 Příklad: definice odvozené vlastnosti Elementy, které vlastní daný element (je to odvozené sjednocení). /ownedelement: Element[*] (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 51/78

52 Příklad: definice odvozené vlastnosti Element, který vlastní tento element (owner) je to odvozené sjednocení (union). /owner: Element [0..1] (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 52/78

53 Příklad: popis operace v OCL Operace allownedelements() vrací všechny elementy, které přímo či nepřímo vlastní daný element context Element::allOwnedElements(): Set(Element) post: result = ownedelement -> union( ownedelement->collect(e e.allownedelements() ) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 53/78

54 Příklad: podmínky v OCL Element nemůže přímo, nebo nepřímo vlastnit sám sebe context Element inv: not self.allownedelements() -> includes(self) (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 54/78

55 The End (ČVUT) OCL a integritní omezení BI-SI1, 2011, Přednáška 9, 55/78

Jazyk OCL a modelem řízený vývoj 1

Jazyk OCL a modelem řízený vývoj 1 Jazyk OCL a modelem řízený vývoj 1 Karel Richta Katedra softwarového inženýrství, MFF UK Malostranské nám.25, 118 00, Praha 1 Tel: 221917316 e-mail: richta@ksi.mff.cuni.cz www: http://www.ksi.mff.cuni.cz/~richta/

Více

Rekonstrukce OCL z SQL *

Rekonstrukce OCL z SQL * Rekonstrukce OCL z SQL * Karel RICHTA 1 1 Katedra softwarového inženýrství, MFF UK Praha Malostranské nám. 25, 118 00 Praha karel.richta@mff.cuni.cz Abstrakt. Jednou z často citovaných zkratek poslední

Více

UML. Unified Modeling Language. Součásti UML

UML. Unified Modeling Language. Součásti UML UML Unified Modeling Language 1995 počátek 1997 verze 1.0 leden dnes verze 2.0 (vývoj stále nedokončen) Standardní notace OMG podpora velkých firem (Microsoft, IBM, Oracle, HP ) popisuje struktury popisuje

Více

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

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D. http://siret.cz/hoksza Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hksza, Ph.D. http://siret.cz/hksza Osnva Seznámení s SQL Server Management Studiem (SSMS) Základní architektura

Více

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc. 1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace

Více

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

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE 2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy

Více

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

Databázové systémy Cvičení 5.2 Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id)) Vzorové příklady SQL Tabulka: Kniha CREATE TABLE kniha název VARCHAR(50, PRIMARY KEY (id Tabulka: Autoři CREATE TABLE autoři jméno VARCHAR(10, příjmení VARCHAR(20, titul VARCHAR(7, prostřední VARCHAR(10,

Více

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

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,

Více

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

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL 4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená

Více

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

Transformace konceptuálního modelu na relační Transformace konceptuálního modelu na relační Michal Valenta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze c Michal Valenta, 2016 BI-DBS, LS 2015/16

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Unifikovaný modelovací jazyk UML

Unifikovaný modelovací jazyk UML Unifikovaný modelovací jazyk UML Karel Richta katedra počíta tačů FEL ČVUT Praha richta@fel fel.cvut.czcz Motto: Komunikačním m prostředkem informační komunity se postupem času stala angličtina. Chcete-li

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Diagramy tříd - základy

Diagramy tříd - základy Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka Zákazník -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: Číslo šablony: Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek: Anotace: CZ.1.07/1.5.00/34.0410

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký Tvorba informačních systémů 1/35 Konceptuální

Více

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

6. SQL složitější dotazy, QBE 6. SQL složitější dotazy, QBE Příklady : Veškeré příklady budou dotazy nad databází KONTAKTY nebo KNIHOVNA nebo FIRMA Databáze KONTAKTY OSOBA (Id_osoba, Příjmení, Jméno, Narození, Město, Ulice, PSČ) EMAIL

Více

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

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL o proceduralitu od společnosti ORACLE je jazyk

Více

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL) SQL strukturovaný dotazovací jazyk Structured Query Language (SQL) SQL - historie 1974-75 - IBM - 1.prototyp - SEQUEL od 1979 - do praxe - ORACLE (1979) IBM - SQL/DS (1981), DB/2 (1983) postupně přijímán

Více

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

Návrh a tvorba WWW stránek 1/14. PHP a databáze Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované

Více

Semestrální práce z DAS2 a WWW

Semestrální práce z DAS2 a WWW Univerzita Pardubice Fakulta elektrotechniky a informatiky Semestrální práce z DAS2 a WWW Databázová část Matěj Trakal 8.12.2009 Kapitola 1: Obsah KAPITOLA 1: OBSAH 2 KAPITOLA 2: ZÁKLADNÍ CHARAKTERISTIKA

Více

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: Číslo šablony: Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek: Anotace: CZ.1.07/1.5.00/34.0410

Více

Dolování v objektových datech. Ivana Rudolfová

Dolování v objektových datech. Ivana Rudolfová Dolování v objektových datech Ivana Rudolfová Relační databáze - nevýhody První normální forma neumožňuje vyjádřit vztahy A je podtypem B nebo vytvořit struktury typu pole nebo množiny SQL omezení omezený

Více

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

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

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce Databázové systémy 2 Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: čtvrtek, 4 5 Obor: ININ SWIN E-mail: jtichava@students.zcu.cz Databázové systémy II. KIV/DB2 LS 2007/2008 Zadání semestrální

Více

Návrh - návrhové třídy a vzory

Návrh - návrhové třídy a vzory Návrh - návrhové třídy a vzory Ing. Jiří Mlejnek Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Jiří Mlejnek, 2011 jiri.mlejnek@fit.cvut.cz Softwarové

Více

- sloupcové integritní omezení

- sloupcové integritní omezení CREATE TABLE - CREATE TABLE = definice tabulek a jejich IO - ALTER TABLE = změna definice schématu - aktualizace - INSERT INTO = vkládání - UPDATE = modifikace - DELETE = mazání CREATE TABLE Základní konstrukce

Více

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

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_038.ICT.34 Tvorba webových stránek SQL stručné minimum OA a JŠ Jihlava, VY_32_INOVACE_038.ICT.34 Číslo

Více

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

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

Měřící systém se vzdáleným přístupem. Databáze

Měřící systém se vzdáleným přístupem. Databáze ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ KATEDRA MĚŘENÍ Měřící systém se vzdáleným přístupem Databáze Jiří Javůrek 2003/2005 0. Obsah 0. Obsah...1 1. Požadavky...2 2. Struktura databáze...2

Více

Konceptuální modelování. Pavel Tyl 21. 3. 2013

Konceptuální modelování. Pavel Tyl 21. 3. 2013 Konceptuální modelování Pavel Tyl 21. 3. 2013 Vytváření IS Vytváření IS Analýza Návrh Implementace Testování Předání Jednotlivé fáze mezi sebou iterují Proč modelovat a analyzovat? Standardizované pracovní

Více

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,... Jazyk SQL 1 Přehled SQL 1) jazyk pro definici dat (DDL), 2) jazyk pro manipulaci dat (DML), 3) jazyk pro definice pohledů 4) jazyk pro definice IO 5) jazyk pro přiřazení přístupových práv (DCL) 6) řízení

Více

Tabulka fotbalové ligy

Tabulka fotbalové ligy Semestrální práce na X36DB2 Michal Rezler Jan Zmátlík Tabulka fotbalové ligy a tabulka střelců 8. prosinec 2011 Obsah 1 Zadání....................................................... 3 1.1 Stručný popis.............................................

Více

Souhrn Apendixu A doporučení VHDL

Souhrn Apendixu A doporučení VHDL Fakulta elektrotechniky a informatiky Univerzita Pardubice Souhrn Apendixu A doporučení VHDL Práce ke zkoušce z předmětu Programovatelné logické obvody Jméno: Jiří Paar Datum: 17. 2. 2010 Poznámka k jazyku

Více

Sada 1 - PHP. 03. Proměnné, konstanty

Sada 1 - PHP. 03. Proměnné, konstanty S třední škola stavební Jihlava Sada 1 - PHP 03. Proměnné, konstanty Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a

Více

Databázové modelování. Analýza Návrh konceptuálního schématu

Databázové modelování. Analýza Návrh konceptuálního schématu Databázové modelování Analýza Návrh konceptuálního schématu 1 Vytváření IS Analýza Návrh Implementace Testování Předání SW Jednotlivé fáze mezi sebou iterují 2 Proč modelovat/analyzovat? Standardizované

Více

DBS Konceptuální modelování

DBS Konceptuální modelování DBS Konceptuální modelování Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze Michal.Valenta@fit.cvut.cz c Michal Valenta, 2010 BIVŠ DBS I, ZS 2010/11 https://users.fit.cvut.cz/

Více

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

Databázové systémy. Cvičení 6: SQL Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi

Více

Skripty základy VB, vestavěné objekty, příklady

Skripty základy VB, vestavěné objekty, příklady Skripty základy VB, vestavěné objekty, příklady Tento dokument popisuje základy VB, vestavěné objekty, jejich metody a vlastnosti. Na závěr jsou uvedeny typické příklady použití. Stav ke dni: 9.12.2006

Více

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

A5M33IZS Informační a znalostní systémy. Relační databázová technologie A5M33IZS Informační a znalostní systémy Relační databázová technologie Přechod z konceptuálního na logický model Entitní typ tabulka Atribut entitního typu sloupec tabulky Vztah: vazba 1:1 a 1:N: Vztah

Více

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová

Více

Kapitola 6: Omezení integrity. Omezení domény

Kapitola 6: Omezení integrity. Omezení domény - 6.1 - Omezení domény Referenční integrita Aserce Spouštěče (Triggers) Funkční závislosti Kapitola 6: Omezení integrity Omezení domény Omezení integrity zabraňují poškození databáze; zajišťují, že autorizované

Více

Jazyk SQL slajdy k přednášce NDBI001

Jazyk SQL slajdy k přednášce NDBI001 Jazyk SQL slajdy k přednášce NDBI001 Jaroslav Pokorný MFF UK, Praha pokorny@ksi.mff.cuni.cz Dotazovací jazyky 1 Přehled SQL92 1) jazyk pro definici dat, 2) interaktivní jazyk pro manipulaci dat, 3) jazyk

Více

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B PŘIJÍMACÍ TEST Z INFORMATIKY A MATEMATIKY NAVAZUJÍCÍ MAGISTERSKÉ STUDIUM V OBORU APLIKOVANÁ INFORMATIKA FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITY HRADEC KRÁLOVÉ ČÁST A Registrační číslo Hodnocení -

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek 5 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, Spojení tabulek, agregační dotazy, jednoduché a složené

Více

Přehled probírané látky

Přehled probírané látky OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi

Více

UML - Unified Modeling Language

UML - Unified Modeling Language UML - Unified Modeling Language Martin Molhanec Katedra elektrotechnologie, ČVUT - Fakulta elektrotechnická, Technická 2, 166 21 PRAHA 6 e-mail: molhanec@fel.cvut.cz Abstrakt UML Unified Modeling Language

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza Databáze SQL SELECT David Hoksza http://siret.cz/hoksza Osnova Úvod do SQL Základní dotazování v SQL Cvičení základní dotazování v SQL Structured Query Language (SQL) SQL napodobuje jednoduché anglické

Více

Databázové systémy I

Databázové systémy I Databázové systémy I Přednáška č. 8 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky jiri.zechmeister@upce.cz Skupinové a souhrnné dotazy opakování Obsah Pohledy syntaxe použití význam Vnořené

Více

Dotazovací jazyk SQL I

Dotazovací jazyk SQL I Dotazovací jazyk SQL I Historický vývoj I IBM - 70. léta - prototyp relačního DBMS - System R 80. léta - základ 2 komerčních DBMS: SQL/DS, DB2 SQL jako standard Standardizační instituce ANSI: American

Více

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

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz Databáze čajových sáčků Martina Málková Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky Databázové systémy 2 9. června 2007 krovacek@students.zcu.cz 1 1 Datová analýza V původním

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

7.5 Diagram tříd pokročilé techniky

7.5 Diagram tříd pokročilé techniky 7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem

Více

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

Více

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

DPKOM_06 Dědičnost entit a zpětná volání posluchači DPKOM_06 Dědičnost entit a zpětná volání posluchači 1 Obsah přednášky Jedna tabulka pro hierarchii tříd Tabulka pro konkrétní třídu Tabulka pro podtřídu Neentitní základní třídy Události zpětného volání

Více

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá: SII - Informatika Způsob vyhodnocení: Při vyhodnocení budou za nesprávné odpovědi strhnuty body. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá: a) sekundární klíč b)

Více

Principy UML. Clear View Training 2005 v2.2 1

Principy UML. Clear View Training 2005 v2.2 1 Principy UML Clear View Training 2005 v2.2 1 1.2 Co je touml? Unified Modelling Language (UML) je univerzálníjazyk pro vizuální modelování systémů Podporuje všechny životní cykly Mohou jej implementovat

Více

Databázové systémy I

Databázové systémy I 2015 Databázové systémy I PROJEKT 2 ČÁST MIROSLAV POKORNÝ Stránka 0 z 21 Zadání Implementujte datový model vytvořený v první části projektu do relační databáze a vytvořte pohledy a uloženou proceduru dle

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports , Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 9. dubna 2014 Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení

Více

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

Více

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

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years SQL v14 4D Developer konference Obsah části SQL Porovnání 4D a SQL Nové příkazy SQL Upravené příkazy SQL Optimalizace SQL SQL v14 porovnání Definice dat - struktury Manipulace s daty Definice dat Vytvoření

Více

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout.   tel: Skripta ke školení Základy VBA vypracoval: Tomáš Herout e-mail: herout@helpmark.cz tel: 739 719 548 2016 Obsah TROCHA TEORIE VBA...2 ZPŮSOB ZÁPISU VE VBA...2 CO JE TO FUNKCE...2 CO JE TO PROCEDURA...2

Více

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start

Více

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování. Delphi lekce 6 Minimum z Object Pascalu Vrátíme se ještě k základům Object Pascalu. Struktura programu Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově

Více

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

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou MySQL Typy tabulek Storage Engines MyISAM defaultní, neumí transakce, umí fulltext InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) MEMORY (HEAP) v paměti; neumí transakce ARCHIVE velké množství

Více

1. Relační databázový model

1. Relační databázový model 1. Relační databázový model Poprvé představen 1969 (Dr. Edgar F. Codd) IBM Založeno na Teorii množin Predikátové logice prvního řádu Umožňuje vysoký stupeň nezávislosti dat základ pro zvládnutí sémantiky

Více

Operátory ROLLUP a CUBE

Operátory ROLLUP a CUBE Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor

Více

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics 1 Parametrizované třídy Generics generické třídy JDK zavádí mimo jiné tzv. parametrizované třídy - generics Úvod 2 podobnost se šablonami (templates) z C++ nejčastěji použité v oblasti knihoven kontejnerového

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

PostGIS Raster. Správa rastrových dat v geodatabázi PostGIS. Martin Landa. 155UZPD Úvod do zpracování prostorových dat, zimní semestr

PostGIS Raster. Správa rastrových dat v geodatabázi PostGIS. Martin Landa. 155UZPD Úvod do zpracování prostorových dat, zimní semestr Přednáška 6 Správa rastrových v geoabázi PostGIS 155UZPD do zpracování prostorových, zimní semestr 2016-2017 Martin Landa martin.landa@fsv.cvut.cz Fakulta stavební ČVUT v Praze Katedra geomatiky http://geo.fsv.cvut.cz/gwiki/155uzpd

Více

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE Upozornění: Pro práci s RDF Oracle daty je třeba mít nainstalován Oracle Spatial Resource Description Framework (RDF). 1. Vytvoření tabulkového

Více

Kód v databázi. RNDr. Ondřej Zýka

Kód v databázi. RNDr. Ondřej Zýka Kód v databázi RNDr. Ondřej Zýka 1 Obsah Jazyk Skripty Funkce Procedury Triggery Správa chyb Java, CLR, apod.. Dobré a špatné praktiky 2 PL/SQL Jazyk Oracle Inspirovaný jazykem ADA Objektový Samostatné

Více

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName 8 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah MS SQL Server 2005, Jazyk Transact-SQL, syntaxe, proměnné, struktury,

Více

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 4

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 4 UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ FAKULTA APLIKOVANÉ INFORMATIKY GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 4 Praktické zvládnutí software Geomedia Pavel Vařacha a kol. Zlín 2013 Tento studijní materiál vznikl

Více

Integritní omezení (IO)

Integritní omezení (IO) Integritní omezení (IO) IO jsou tvrzení vymezující korektnost DB, stupeň souladu datového obrazu s předlohou (jaká data v databází mohou být a jaká již ne). definují se na konceptuální i databázové úrovni

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče. Primární a cizí klíč Kandidát primárního klíče (KPK) Je taková množina atributů, která splňuje podmínky: Unikátnosti Minimálnosti (neredukovatelnosti) Primární klíč (Primary Key - PK) Je právě jedna množina

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45 KMI / TMA Tvorba mobilních aplikací 6. seminář 2.11.2016 ZS 2016/2017 Středa 13:15-15:45 OBSAH SEMINáře Ukládání dat Ukládání dat Jaké jsou možnosti? SharedPreferences jednoduchá data databáze SQLite relační

Více

Text úlohy. Systémový katalog (DICTIONARY):

Text úlohy. Systémový katalog (DICTIONARY): Úloha 1 Částečně správně Bodů 050 / 100 Systémový katalog (DICTIONARY): a Se skládá z tablek a pohledů uložených v tabulkovém SYSTEM b Všechny tabulky vlastní uživatel SYS c Se skládá z tablek a pohledů

Více

OQL. Jakub Kýpeť, Ondřej Heřmánek

OQL. Jakub Kýpeť, Ondřej Heřmánek OQL Jakub Kýpeť, Ondřej Heřmánek Obsah Historie Objektový model Dotazovací jazyk Příklady Historie 1993 - vzniká standard ODMG-93 nadmnožina obecného modelu od OMG převzat definiční jazyk IDL dotazovací

Více

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

DUM 12 téma: Příkazy pro tvorbu databáze DUM 12 téma: Příkazy pro tvorbu databáze ze sady: 3 tematický okruh sady: III. Databáze ze šablony: 7 Kancelářský software určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie vzdělávací

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

UML: Unified Modeling Language

UML: Unified Modeling Language UML 1 UML: Unified Modeling Language Systém kombinace softwaru, hardwaru, dat a uživatelů, která umožňuje řešení konkrétního problému Vývoj systémů vytváření systémů pro klienta Vývoj probíhá na základě

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

Relační databázová technologie

Relační databázová technologie Relační databázová technologie Klíč: množina (možná jednoprvková) atributů (sloupců), jež jednoznačně idetifikuje danou entitu. Poznámky: 1. Daný entitní typ (tabulka) může mít více klíčů. Například (i)

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více