VI. Návrh databáze, databázové systém a databázové jazyky. Flashcards
Návrh databáze
Návrh databáze vždy vychází z modelu, resp. datového modelu, který říká, jaká data budeme uchovávat, jaké mají vlastnosti a vzájemné vazby.
Modelování
ER (Entity Relationship) modelování se používá pro abstraktní a konceptuální znázornění dat. Spočívá ve využití základních konstruktů jazyka pro tvorbu diagramů a v metodice tvorby těchto diagramů – základní myšlenkou je, že databáze uchovává fakta o entitách a o vztazích mezi entitami. Výsledkem je ERD (Entity Relationship Diagram, ER diagram).
Zásady modelování
Zásady
- Minimalizace redundance (normalizace)
- Maximalizovat znovupoužitelnost (dědičnost)
- Maximalizovat výkonnost (de-normalizace, metody, database tuning)
- Minimalizovat nároky na uložení dat (compression)
Využívá se přitom princpy tří architektur. Smyslem P3A je postupně upřesňovat datový model tak, aby zcela odpovídal požadavkům využívané databázové technologie. Stejně tak je naopak žádoucí, aby model v první vrstvě byl, pokud možno, abstraktní a tech. nezávislý.
Modely (3)
Konceptuální – model reality
Logický – Popis způsobu realizace systému v termínech jisté třídy technologického prostředí (lineární, relační, hierarchické, síťové datové struktury) Např. u RDM – doplnění cizích klíčů.
Fyzický – Popis vlastní realizace systému v konkrétním implementačním prostředí (doplnění i typu indexu, velikosti, rozmístění pracovního prostoru apod.).
Konceptuální schéma
Konceptuální schéma
(„nezávislý“) model obsahu datové základny na konceptuální úrovni (tj. nezatížený jakýmikoliv
implementačními a technologickými implementacemi)
- konceptuální schéma reality – hrubý model vytvořený za účelem poznání reality
- konceptuální schéma dat (datový model) – za účelem přesné specifikace obsahu datové základny. Předběžný návrh databázové základny
- Funkce konceptuálního schématu:
- Zadání pro implementační fázi
- Nástroj (záruka) pro zachování konsistence
- Lze z něj odvozovat dílčí pohledy na obsah databáze
- Východisko pro nové požadavky na data
- Východisko pro zásahy do existující datové základny
- Nástroj dokumentace
Logický model
Logický model
Popis způsobu realizace systému v termínech jisté třídy technologického prostředí (lineární, relační,
hierarchické, síťové datové struktury) Např. u RDM – doplnění cizích klíčů
Fyzický model
Fyzický model
Popis vlastní realizace systému v konkrétním implementačním prostředí (doplnění i typu indexu,
velikosti, rozmístění pracovního prostoru apod.)
Návrh databáze
Návrh databáze
Spočívá v určení entit (tabulek), klíčů (referenční integrita), vztahů (relace), dodržení normálních forem, indexů.
Datové modelování – činnosti
- Rozlišení množin objektů (entitních množin)
- Pojmenování entitních množin a identifikace entit
- Rozlišení entitních podmnožin (zaměstnanec – učitel, vědec, administrátor, zaměstnanec)
- Určení vztahů mezi entitními množinami, určení kardinality (počet) a parciality (volitelnost) vztahů
- Určení atributů entitních množin a vztahů
- Vyřešení problémů synonym a homonym
Data v tabulce jsou uložena v polích uspořádaných do řádků (= záznamy) a sloupců (= atributy)
Entita
Entita
- tabulka (ale až v DB), která vykazuje stejné společné znaky
- něco, co je natolik důležité, že nám stojí zato to pojmenovat ⇒ v ER modelech modelujeme entitní typy, příklad:
- entitní typ: STUDENT, entita: Ondřej Horák
- výskyty entit musí být identifikovatelné na základě jejich atributů nebo vztahů s jinými entitami
Vztahy
Vztahy = Pojmenované spojitosti mezi entitami
Sloupec
Sloupec = množina dat jednoho typu (jeden atribut)
- atribut je modelovaná vlastnost entit nebo vztahů zahrnutých do modelu
- každá vlastnost zjistitelná pro nějakou entitu (atribut) je v modelu zakreslena nejvýše jedenkrát
- existují také odvozené atributy, které se dají odvodit z vlastností jiných entit
- je několik typů atributu / sloupce
- povinný
- Volitelný – může nemít hodnotu
- Vícehodnotový – má hodnoty definované v dané doméně (např. JménoOsoby― u SmluvníPartner)
- Skupinový / složený– vnitřní struktura např. u adresy (ulice, město, psč) – obvykle se normalizuje
- Atomický – není vícehodnotový ani skupiný
Vztahy
Vztahy
- mezi entitami lze popsat vztah větou, ve které vztah vyjádříme přísudkovou částí. Např. „Zákazník vytváří Objednávku“
- mohou být binární (vztahy dvou entit), ternární (vztah tří entit) i více-ární
- u vztahu zjišťujeme a do diagramu zakreslujeme tzv. kardinalitu vztahu
- kardinalita vztahu říká, kolik výskytů entit jednoho typu může být v daném vztahu s jedinou entitou druhého typu – říkáme, že vztah je buď 1:1, nebo 1:N nebo N:1 nebo M:N
- dále zjišťujeme tzv. povinnost členství ve vztahu
- říká, zda všechny výskyty entitního typu, jenž je určen pro danou roli v tomto vztahu, musí do tohoto vztahu skutečně vstupovat – například ne všichni učitelé musí v konkrétním semestru učit nějaký předmět
- někdy do konceptuálního modelu zahrnujeme i informaci o tom, zda je vztah přenositelný
- například „Učitel učí Předmět“ může být přenositelný vztah, kdy se učitelé ve výuce daného předmětu střídají semestr po semestru.
- Zpracování vztahů
- 1:1 – záznam obsahuje sloupec pro zapsání právě jednoho primárního klíče jiného záznamu
- 1:M – záznam obsahuje sloupec pro zapsání právě jednoho primárního klíče jiného záznamu – na onen jiný záznam se může odkazovat více různých záznamů
- M:N – může existovat více vzájemných odkazů – realizovano pomocí samostatné vazební tabulky (=dekompozice, neboli rozdělení na dvojici vztahů 1:M)
INTEGRITA
Integrita = pravidla pro zajištění správnosti a konzistence
- Entitní = nutnost existence primárního klíče pro každý záznam
- Referenční = odkazování pouze na exitující záznamy v povolené kardinalitě
- Doménová = stanovení povolených hodnot ve sloupci
Konzistence databáze
Konzistence databáze – data v databázi zachycují stavy, které jsou v popisovaném světě MOŽNÉ
Integrita databáze
Integrita databáze – databáze je v konzistentním stavu.
Relační integrita
Relační integrita – Určení primárního klíče (PK) a cizích klíčů (FK)
Primární klíč (PK)
Primární klíč (PK) – Je klíč, který splňuje následující vlastnosti:
- jednoznačnost – jednoznačně identifikuje prvek relační množiny (jeden řádek v relační tabulce)
- minimálnost – PK se skládá minimálního počtu atributů, tj. žádný z atributů tvořících PK nelze vynechat, aniž by byla porušena jednoznačnost PK.
- hodnota PK nesmí být prázdná = nesmí být NULL
Cizí klíč (FK)
Cizí klíč (FK) – PK použitý v dalším výskytu k vyjádření vazeb mezi objekty zachycenými v relační databázi.
Transformace do relačního modelu dat
Transformace do relačního modelu dat
- Entity → tabulky
- Atributy → sloupce
- 1:N vztahy → FK
- M:N vztahy → asociativní tabulky
- identifikátory → PK
- volitelnost → (povolené hodnoty null FK)
- povinnost → (not null FK)
Pravidla transformace konceptuálního schématu do relačního modelu dat
Pravidla transformace konceptuálního schématu do relačního modelu dat
- Entitní množina → 1 tabulka, identifikátory => atributy tvořící PK tabulky
- Vztah je vyjádřen cizím klíčem
- Jaká varianta je vhodnější pro transformaci vztahu 1:1?
- Vztah M:N je vyjádřen vazební relační tabulkou s dvěma FK
- Generalizace / specializace – více variant
- 1 relační tabulka
- Relačními tabulkami na úrovni specializovaných entitních množin
- Relačními tabulkami na úrovni generalizující entitní množiny i na úrovní specializovaných entitních množin
Constrainty
Constrainty = omezení, kterými lze vynutit nějaké podmínky
- PK (jedinečná, unikátní hodnota – not null)
- FK (odkaz na hodnotu PK jiné tabulky – může být null)
- not null („hodnota musí být vložena“)
- check (kontrola hodnoty)
- unique (jedinečná hodnota – může být null)
Proces normalizace
Proces normalizace
- Proces zjednodušování a optimalizace databázových struktur
- správně navržené (normalizované) tabulky by měly splňovat podmínky pro zařazení do tzv. normálních forem
- čím je tabulka ve vyšší normální formě, tím lépe by se s ní mělo pracovat
Cíle databáze
Cíle
- Vytvořit co nejvěrnější obraz v modelovaném světě existujících entitních množin
- Zajistit interní konzistenci datového modelu resp. databáze
- Minimalizovat redundance
- Maximalizovat stabilitu databázových struktur
Normální formy
Normální formy
- pravidla, která se dodržují při návrhu DB
- Nejčastěji uváděné jen normální formy 1-3
- Normální formy 1-4 zkoumají neklíčové položky na PK
- Poslední 2 pak vztahy uvnitř složených PK
Normalizace dat
Normalizace dat?
- 1NF
- 2NF
- 3NF
- Boyce-Coddova NF.
- 4NF
- 5NF
- Indexy
- Použití indexu
1NF
1NF
Tabulka je v 1NF, pokud neobsahuje opakující se položku nebo skupinu položek. Např. v tabulce Zaměstnanec nesmí být info o tom, na jakém projektu pracuje – pro projekt se musí vytvořit zvlášť tabulka a tyto 2 tabulky se navzájem propojí cizím klíčem.