14 - Objektově-relační databáze (charakteristika, porovnání s relačními, podpora v SQL:1999 a SQL:2003) Flashcards
Vlastnosti, nevýhody, model dat a jazyk relačních db
Relační databáze
Od 80.let získaly převahu nad síťovými a hierarchickými.
Vlastnosti:
• standardizovány - SQL (od roku 1986)
• relační model dat, formálně zavedeno od Codda
• představovány tabulkami obsahujícími relace
• podpora výrobců DB produktů
Nevýhody:
• velmi omezená množina datových typů hodnot
• pro vztahy M:M je nutná vazební tabulka
• žádné reference či ukazatele
Model dat: • relační • kolekce tabulek • vztahy tabulek vyjádřeny pomocí cizích a kandidátních klíčů • navigace po tabulkách pomocí kurzoru
Dotazovací jazyk:
• SQL
• neprocedurální, deklarativní
Objektové databáze
- Umožňují modelování a vytváření perzistentních dat jako objektů. Čistě objektové systémy nebyly standardizovány a proto se nerozšířily.
- Na konci 80.let vliv paradigmatu OO programování -> vznik OO DB (tj. perzistentního uložení objektů).
- ADT (abstraktní datový typ) je datový typ zapouzdřující možné hodnoty a operace nad nimi.
Vlastnosti:
• modelování a vytváření perzistentních dat jako objektů
• nenahrazují, nýbrž doplňují relační (kombinace obou se nazývá objektově-relační DB)
Výhody:
• vztahy M:M lze vytvářet přímo
• navigace po objektové struktuře pomocí referencí prostřednictvím OID
• atributy objektů mohou být jiné objekty → složité typy (ADT - abstraktní datové typy)
Model dat:
• objektový
• neexistuje všeobecně přijatý standard obdobný SQL (ODMG-93 byl pokusem)
• jednoznačný OID (objektový identifikátor) pro každý perzistentní objekt
• podpora abstraktních datových typů (ADT), zapouzdření a polymorfismu
• atributy objektů mohou být jiné objekty → složité typy
• vztahy objektů pomocí referencí
Dotazovací jazyk:
• většinou běžné objektové jazyky
• snaha o standardizaci (jazyk OQL od ODMG)
V objektové databázi by SŘBD neměl povolit: pokud výsledek jedné z operací je objekt s parametry, který nelze v daném SŘBD uložit (výsledek operace nelze popsat objekty v DB).
Objektově relační DB
Nejsou plně objektové (nemodelují objekty a vztahy mezi nimi přímo), ale jsou v nejnižší vrstvě relační a objekty nad nimi jsou simulovány pomocí SŘBD.
- Standardizace (SQL 1999) a podpora výrobců relačních systémů
- Uživatelské datové typy (ADT)
- Data reprezentována objekty (které mají OO vlastnosti)
- Jednoznačná identifikace objektu – OID
- OID umožňuje tvorbu trvalých vztahů a zjednodušuje indexaci
- Vztahy (1:1, 1:N, N:N) jsou součástí definice dat a né v algoritmu
- Vnořené struktury (např. adresa) a tabulky
- Kolekce (řetězec, posloupnost, seznam, soubor) a kurzor
Cílem je spojit výhody relačního a objektového modelu.
Model dat:
• Tabulky nemusejí být normalizované (porušují první normální formu)
• obecnější (vnořené) relace(nested relational model)
• data stále v tabulkách, ale hodnoty mohou mít bohatší strukturu (ADT)
• ADT zapouzdřuje data i operace
• zavedeno OID umožňující definovat nové typy vztahů mezi tabulkami
• navigace pomocí kurzoru i pomocí referencí
Dotazovací jazyk:
• ve standardu SQL-1999 (viz dále)
Výhody:
• snaha o obohacení tabulek o objektovou orientaci
• navigace po tabulkách pomocí kurzoru i pomocí referencí
Objektově-relační mapování je technika, kdy se objekty OOP jazyka mapují na čistě relační DB.
Standardy OR databází - SQL-1999
Relační rysy:
• Regulární výrazy – WHERE x SIMILAR TO regexp
• nové datové typy (LOB (Large Objects) – BLOB (Binary LOB), CLOB (Character LOB), ROW)
• rekurzivní dotaz
• SAVEPOINT – pro částečný návrat transakce
• Databázové triggery - podpora aktivních prvků db
• ROW – možnost definování složeného sloupce
CREATE TABLE Osoba (jmeno ROW(krestni VARCHAR(20), prijmeni VARCHAR(30),), …)
SELECT O.jmeno.krestni FROM Osoba O
Objektové rysy:
• uživatelem definované typy (UDT)
○ obdoba třídy
○ atributy, metody
○ jednoduchá dědičnost
• typ sloupce tabulky může být UDT (je to třída a řádky jsou objekty)
○ v tomto případě nemají OID - odkazuje se na atributy tečkovou notací Zam.plat
• odkaz na atributy přes funkce nebo tečkovou notací (.)
○ WHERE zam.plat > 20000
• typové tabulky
○ tabulka s řádky nesoucími hodnoty strukturovaného UDT
○ každý řádek má OID (hodnota typu REF)
○ typ REF
§ odkazy na řádky v typové tabulce
§ mají vždy rozsah (scope)
§ umožňují zpřístupnit atributy hodnoty strukturovaného typu, kterou identifikují
Standard SQL-2003
- Nově podpora multimnožin: typ MultiSet je odvozen od typu Collection
- Podpora pokročilých Multimnožin: pomocí operátoru Porovnávání, SET, UNION,INTERSECTION a pod.
- Definuje 2 nové typy kolekcí: Array a Multiset
- Změna u UDT: Může být FINAL nebo NOT FINAL pro zákaz dědění resp. možnost dědění