57 - Objektově-orientované databázové systémy - kolekce a struktura, objekt, dědičnost, vztahy Flashcards
Objektově-orientované databázové systémy - Základní pojmy
Data - hodnota schopná přenosu, uchování, interpretace či zpracování
• z hlediska IT jde o hodnoty různých datových typů
• data sama o sobě nemají sémantiku(význam), jsou to věty nějakého formálního jazyka určující syntaxi
• hodnoty dat obvykle udávají stav nějakého systému
Metadata - data o datech (faktura -> relace -> kolekce struktur -> kartezsky součin dvojic…)
Informace - Interpretovaná data (lidmi nebo strojově), která po interpretaci mají sémantiku(význam), je nezbytné zajistit shodnou interpretaci dat u všech uživatelů informace (vzdělání, školení, zavedení konvencí, ontologie)
Znalosti (big data) - informace zařazená do souvislostí (často s redukovaným množstvím dat) - interpretace je však ještě hůře definovatelná, neboť může jít o agregace informací
• znalosti chápeme často jako sekundární odvozené informace
• některé informační systémy se zabývají pouze informacemi (transakční -OLTP), některé pracují se znalostmi a velkými daty (pro podporu rozhodování a plánování –OLAP)
• znalosti jsou často získávány operacemi nad velkými daty (agregace, data mining, apod.)
Systém - množina prvků a vazeb mezi nimi, účelově definované na nějakém nosiči
Nosič - množina prvků systému ve vzájemných informačních a procesních vztazích (prvky nosiče = zdroje, výsek reálného světa (knihovna, škola, úřad, atd.))
Zdroje - fyzické (osoby, materiál, stroje, finance) X konceptuální (informace)
Objektově-orientované databázové systémy - Základní pojmy - MUST KNOW!
Kartézský součin
• Uspořádaná n-tice je množina hodnot ve tvaru (a1, a2, … an)
• Kartézský součin A1 x A2 x … x An je množina všech uspořádaných n-tic takových, že a1 ∈ A1, a2 ∈ A2, … an ∈ An. Podstatné je, že v uspořádané n-tici každá hodnota je prvkem jediné z množin definice kartézského součinu a to té, která jí indexem odpovídá
- A x B = {(a,b), a náleží A, b náleží B}
Struktura - uspořádaná n-tice, prvek kartézského součinu -> představuje strukturovanou hodnotu vytvořenou pevným počtem pojmenovaných dílčích hodnot obecně různých typů (např. instance třídy)
• Pojmenované hodnoty označujeme jako vlastnosti.
• žádné omezení datových typů vlastností (data, složené typy i algoritmy)
• definice pouze rozhraní - polymorfismus struktur
• komunikace zasíláním zpráv (vysílající struktura nemusí znát příjemce zprávy - polymorfismus - zpráva může být interpretována různým způsobem v závislosti na typu přijímající struktury)
- Prostá struktura - je struktura bez identifikace
- Abstraktní typ - struktury, které slouží jen jako stavební kameny (vzory) pro vytváření následníků (Poznámka: Abstraktní typ může mít extent (budou tam výskyty všech následníků toho datového typu) )
- Konkrétní typ - struktury, které skutečně budou mít své výskyty a budou skutečnými strukturami
Kolekce - uspořádaná multimnožina -> Předem neomezený počet hodnot stejných datových typů (LIST)
• standardní operace: add, item, count, remove
• kurzor (iterátor) - ukazovátko do kolekce, posouvání oběma směry
• uspořádání nad kolekcí (jedno nebo více podle různých klíčů)
• vlastnosti - nejčastěji agregáty: maximum, minimum, suma, průměr
• tabulka v relační databázi je vlastně kolekcí bez vlastních vlastností a s často omezenou funkčností, jejímiž prvky jsou struktury s vlastnostmi jednoduchých typů
• častý požadavek jedinečnost prvku v kolekci
Objekt - struktura s identifikací - OID - jednoznačná identifikace objektu v celém systému; identifikovatelný, odkazovatelný
• perzistentní - dynamická nebo statická perzistence
• porovnávání objektů:
○ identické objekty/struktury - stejné atributy
○ totožné objekty - stejné OID
Extent = kolekce obsahující obor hodnot pro objekty jistého typu
• důležitý navigační prvek v OO databázích
• kolekci udržuje OODBMS
○ v případě dědění může být neefektivní (nová instance - vložení do všech extentů hierarchie dědičnosti)
○ uživatel má možnost omezit, které třídy budou tvořit extenty
• je nejčastějším vstupním bodem do objektové databáze (iterujeme pres objekty určitého typu v extentu a z nich se pomoci vztahu dostáváme k dalším informacím)
Vztahy
= Vztah je vazba mezi výskyty objektů !!!
• dva pohledy na strukturu: ○ definiční - definice metadat (jak má struktura daného typu vypadat z hlediska vlastností a jejich typů) ○ výskytový - vytváříme konkrétní výskyty (instance) struktury (jaké jsou hodnoty vlastností) • Vztah je vazba mezi výskyty objektů • výskyt struktury, v níž se vyskytuje vlastnost typu struktura (je nezajímavé, jde-li o prostou strukturu nebo objekt), nazveme vlastníkem; hodnotu vlastnosti nazveme členem
Typy vztahů
• Členem je prostá struktura - jedná se o hierarchické členění struktur (základní prostředek pro vytváření komplexních hierarchicky strukturovaných hodnot)
• Členem je kolekce prostých struktur - opět pouze hierarchické zanoření
• Členem je jediný objekt - vztah 1:1 realizovaný pomocí OID
• Členem je kolekce objektů - vztah 1:N, kolekce obsahuje reference na objekty
- Objekty ani kolekce objektů nemohou existovat bez vztahů a naopak.
Inverzní vztahy
• se mohou automaticky dotvořit při vzniku vztahu (atribut inverse - udává jméno vztahu),
• velmi usnadňují vývoj IS (automatické udržování integrity apod.).
• Častým modelovaným případem je situace, kdy je požadováno, aby vytvoření vztahu V z objektu A do objektu B vyvolalo rovněž vytvoření vztahu W z objektu B do objektu A. (to samé při mazání vztahu)
Dědičnost
- umožňuje definici typu pomocí typu jiného.
- Pojmy: předek a následník, přímý předek, přímý následník -> dědičnost, přímá dědičnost
- Vlastnosti se mohou přidávat, modifikovat i ubírat.
Generalizace = postup vytváření hierarchie dědičnosti hledáním společných vlastností a VYTVÁŘENÍM PŘEDKŮ
Specializace = opačný postup ke generalizaci, kdy se rozrůzňují typy a vznikají tak NÁSLEDNÍCI.
Abstraktní typy - existují pouze kvůli hierarchii dědičnosti, ale nelze vytvářet jejich instance.
jednoduchá dědičnost = každý následník smí mít pouze jediného předka (zakreslený graf je potom stromem)
vícenásobné dědičnosti - počet předků není omezen (zakreslený graf je obecný acyklický graf)
(v grafu dědičnosti se nesmí vyskytovat cyklus)
• Zavedením hierarchie dědičnosti nad typy jsme stanovili pro každý typ jeho předka (kromě nejvyššího typu v hierarchii). Žádný z typů nemůže být svým vlastním předkem, ani následníkem.
Typová kompatibilita struktur
○ Požadujeme aby každá struktura jistého typu byla zároveň typu všech svých předků.
○ Struktura není tedy jediného typu, ale je současně více typů, a to svého typu a jeho všech přímých i nepřímých předchůdců.
Tedy, pokud máme k dispozici strukturu typu B, která je instancí následníka typu A, pak se může B vyskytovat všude tam, kde může být A. Tj. v deklaracích proměnných, hodnotách vlastností, kolekcích, extentech apod. Říkáme, že typ B je kompatibilní s typem A, nikoliv naopak.
Vícetypovost - ASI NENÍ POTŘEBA VĚDĚT
Vícetypovost a role
* změna role objektu v čase u perzistentních objektů * Vícetypovost je vícenásobná dědičnost pro persistentní objekty prováděná V ČASE BĚHU
Vícetypovost = je nutné umožnit vytváření různých kombinací koncových typů v jediném objektu během jeho existence