Design databáze. RNDr. Ondřej Zýka

Podobné dokumenty
Design databáze. RNDr. Ondřej Zýka

Design databáze. RNDr. Ondřej Zýka

Optimalizace. Ing. Marek Sušický, RNDr. Ondřej Zýka

Databázové patterny. RNDr. Ondřej Zýka

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

01. Kdy se začala formovat koncept relačních databází (Vznik relačního modelu, první definice SQL)? a) 1950 b) 1960 c) 1970 d) 1980

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

Databázové patterny. MI-DSP 2013/14 RNDr. Ondřej Zýka,

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

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

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

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

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

Relace x vztah (relationship)

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

RELAČNÍ DATABÁZOVÉ SYSTÉMY

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Použití databází na Webu

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

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

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Konceptuální datové modely používané při analýze

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací

Design databáze. MI-DSP 2013/14 RNDr. Ondřej Zýka,

Databáze I. 5. přednáška. Helena Palovská

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

Konceptuální modelování a SQL

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

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

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

8.2 Používání a tvorba databází

Jiří Mašek BIVŠ V Pra r ha

Databáze SQL SELECT. David Hoksza

SQL - trigger, Databázové modelování

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

Databázové systémy. Ing. Radek Holý

Ing. Bc. Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Návrh schématu DB

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

Operátory ROLLUP a CUBE

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

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

Semestrální práce z DAS2 a WWW

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Databázové systémy. Přednáška 1

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

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

Analýza a modelování dat. Helena Palovská

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Databáze. Logický model DB. David Hoksza

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Databáze II. 1. přednáška. Helena Palovská

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

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Jazyk SQL 3 - DML, DDL, TCL, DCL

DBS Transformace konceptuálního schématu na

Relační databázová technologie

Design databáze. NDBI /14 RNDr. Ondřej Zýka,

Databázové systémy a SQL

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

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

Metadata. RNDr. Ondřej Zýka

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Objektově orientované databáze. Miroslav Beneš

Konceptuální modelování. Pavel Tyl

Databázové systémy úvod

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

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

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

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

1. Relační databázový model

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

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

Migrace CIDUG. Ing. Pavel Krutina

Úvod do databázových systémů. Ing. Jan Šudřich

Okruhy z odborných předmětů

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Databáze v praxi. RNDr. Ondřej Zýka Principal Consultant

Tvorba informačních systémů

Metadata. MI-DSP 2013/14 RNDr. Ondřej Zýka,

12. blok Fyzický návrh databáze

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

Co se stane po jeho vykonání? Vyberte libovolný počet možných odpovědí. Správná nemusí být žádná, ale také mohou být správné všechny.

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

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

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

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

Databázové systémy trocha teorie

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

KIV/ZIS cvičení 6. Tomáš Potužák

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Transkript:

Design databáze RNDr. Ondřej Zýka 1

Návrh databáze Čtyři kroky Shromáždění business požadavků Konceptuální model Logický model Fyzický model Modelování od začátku nebo rozvoj stávajících systémů Nutnost začlenění okolních systémů (prostředí) Vazba na logický model organizace Vazba na existující datové modely 2 2

Shromáždění business požadavků Cíle Pochopit business doménu Porozumět potřebám a požadavkům zadavatelů a uživatelů Ověřit pochopení zadání Prostředky Interview Studium a dokumentace systémů Spolupráce s experty v business oblasti Informace o organizační struktuře a další dokumenty Data assesment Review stávajících systémů a procesů Výstup Prioritizovaný seznam požadavků Dokument popisující doménu (byznys slovník) Data-flow diagram 3 3

Data-flow diagram Data-flow diagram popisuje S jakými daty se pracuje Kdo data vytváří Kdo a jak data zpracovává (modifikuje) Kde jsou data uložena Kdo data používá Interface na úrovni dat Použití Datové toky na různých úrovních granularity Podnikové toky dat (obchodní procesy) Toky dat na technické úrovni Popisy ETL procesů Popisy integračních procesů Ověření Všechna data jsou definována Persistentní data jsou uložena Každá data mají zdroj Pro každá data existuje odběratel 4 4

Data-flow diagram - příklad Decomposition Level 2 1.1.1 databáze/ soubor CUSTOMER 1.1.2 CUSTOMER_ORDER Place Orders + [BOOK_ORDER] Book Supplier Receive Orders + 1.1.3 Book Shipment Invoice [SHIPMENT] Book Supplier datová entita/ business object funkce Process Invoices + [PAYMENT] Book Supplier vstup/výstup 5 5

Seznam požadavků 6 6

Seznam požadavků požadavku Krátký popis Podrobné vysvětlení Oblast / systém Vazba na další požadavky Zadavatel Priorita Funkční / nefunkční požadavky 7 7

Konceptuální model Cíle Určit entity a jejich atributy U atributů určit jejich hodnoty a vlastnosti U entit určit jejich potenciální klíče (identifikátory) Identifikovat vazby mezi entitami Kardinalita relace Jméno relace Popis (role) Výstupy ER diagram Formální ověření E/R diagramu Mezi každými dvěma entitami je maximálně jedna relace. Neexistuje cyklická závislost. Entity s relací typu 1:1 zřejmě budou tvořit pouze jednu entitu. Žádná entita nemá atribut, který je kandidátním klíčem jiné entity. Nepřímé relace jsou asi zbytečné. 8 8

Konceptuální model 9 9

10 10

Notace Mnoho standardů a dodavatelských specifik. UML notace dle standardu UML, použita ve všechny nástroje podporující UML. Information Engineering standard používaný v mnoha nástrojích. Existuje několik verzí. Obecně, entity jsou obdélníka a relace jsou linky s různými zakončeními. EF1X standardní notace pro modelování relací a entit. Symboly označují kombinaci volitelnosti a kardinality entity. Barker Vytvořena Richardem Barkerem. Používaná zejména case nastroji Oracle. Speciální notace pro dědičnost, vlastní notace pro násobnost a speciální značky pro atributy. Filtered IE pouze v Embarcadero. Nezobrazuje cizí klíče. Entity/Relationship Sybase specific, Entity/Relationship je speciální verze IE notace. Merise používá asociace místo relací. Crow's Feed Jedna z verzí IE notace, tuto notaci používá FSLDM. 11 11

Násobnost a volitelnost CAR Nejvíce jedno auto CAR Právě jedno auto CAR Libovolný počet aut CAR Alespoň jedno auto 12 12

Notace entit a atributů 13 13

Notace - příklady Allowed multiplicities N/A substituted by Not Used Used Not Used because not needed 14 14

Pravidla pro čtení relací Assertion 2: "Each LINE ITEM must be part of exactly one ORDER " Reading direction LINE ITEM Line number Quantity Price Delivery date part of 0..* 1 composed of ORDER Order number Order date Assertion 2: "Each ORDER may be composed of one or more LINE ITEMS " 15 15

Pravidla pro čtení 16 16

Vytvoření logického modelu Cíle Vytvořit platformově nezávislý logický datový model Postup Převést entity na tabulky Rozhodnout, jak se bude pracovat se složitými atributy Použít vhodné patterny Rozhodnout, jak se bude pracovat s atributy nabývajícími více hodnot Výběr primárních klíčů Převést binární relace (závislosti) typu 1:n na cizí klíče Vyřešit n-ární relace a relace typu n:n Rozhodnout o způsobu reprezentace subtypů Normalizace modelu Výstup Logický datový model 17 17

Kritéria pro výběr primárního klíče Primární klíč: musí mít vždy definovanou hodnotu (not null), musí mít stálou hodnotu (během celého životního cyklu řádku), musí být co možná nejmenší, nesmí obsahovat žádné zakódované informace, musí být přístupný pro všechny uživatele. Umělý klíč Nevýhody: přidává sloupec do tabulky (s indexem), hodnoty nemají význam pro uživatele Výhody: snadná implementace rozhraní, uniformní řešení 18 18

Vazba na objektové modelování Object-relational impedance mismatch Declarative vs. imperative interfaces RM data jako interface Schema bound RM Sloupec k jedné tabulce, tabulka do schématu, OOM dědičnost objektů Access rules RM relační algebra, OOM volnější a složitější konstrukty Relationship between nouns and actions OOM - úzká vazba mezi objekty a operacemi Uniqueness observation RM identifikace na základě klíče s jasným obsahem Normalization OOM nepoužívá se normalizace Schema inheritance RM nepoužívá se Structure vs. Behaviour OOM údržba, srozumitelnost, upravovatelnost, rozšiřitelnost, reuse, RM logická integrita, efektivita, fault-tolerance Set vs. graph relationships 19 19

Převod binární relace 1:N na cizí klíč 20 20

Převod závislosti na cizí klíč A U T H O R A U T H O R I D L A S T N A M E F I R S T N A M E P H O N E N U M B E R A D D R E S S A U T H O R A U T H O R I D L A S T N A M E F I R S T N A M E P H O N E N U M B E R A D D R E S S P I C T U R E P I C T U R E I D F O R M A T B Y T E S I Z E P I X E L W I D T H P I X E L H E I G H T P I C T U R E A U T H O R I D P I C T U R E I D F O R M A T B Y T E S I Z E P I X E L W I D T H P I X E L H E I G H T 21 21

Relace typu n:n AUTHOR AUTHOR LAST FIRST PHONE NUMBER ADDRESS BOOK BOOK TITLE CATEGORY QUANTITY SOLD AUTHOR AUTHOR LAST FIRST PHONE NUMBER ADDRESS AUTHOR-BOOK Associative entity BOOK BOOK TITLE CATEGORY QUANTITY SOLD 22 22

Rozhodnutí o reprezentaci dědičnosti Několik používaných možností V jedné tabulce: L-schéma Ve více tabulkách Parent pouze Společné atributy Child Všechny atributy Jenom specifické atributy 23 23

První normální forma Tabulka je v první normální formě, když každý sloupec obsahuje právě jeden atomický datový typ, který již nemá vnitřní strukturu z pohledu businessu. Business pohled je podstatný pro rozhodnutí o první normální formě. 24 24

Vytvoření fyzického modelu Cíle Vytvořit fyzický model s ohledem na specifika aplikace a použitý typ databáze, použitý hardware Postup Tabulky (jmenné konvence) Datové typy Vytvoření procesní matice Rozhodnutí o struktuře tabulek Rozhodnutí o primárním klíči (indexu) Implementace business pravidel - constraints Indexy, partitioning, Denormalizace, uložení redundantních dat, spojení tabulek Fyzické uložení tabulek Výstup Fyzický datový model Implementační skripty 25 25

Tabulky (jmenné konvence) Case sensitive/case insensitive servery Omezení délky jména tabulek (Oracle 30 znaků) Omezení délky jmen sloupců Omezení na jmenné prostory (tabulky, view, indexy, procedury, ) Porozumění modelu Datové tabulky Číselníky Logy Uživatelské tabulky Natural join 26 26

Datové typy Domain uživatelské datové typy + lepší porozumění + zajištění konzistence - nároky na údržbu Char, varchar, nvarchar, Numerické datové typy int, tinyint, bigint, numeric(p,s), Datum rozsah, přesnost, způsob práce Timestamp je to čas nebo není Binary, image, text, memo, Boolean - raději "column_name" CHAR(1) default 'A' not null constraint CKC_check_name check ("column_name" in ('A','Y')) Identity, Autoincrement NULL, Not null, Default value Speciální datové typy 27 27

Procesní matice 28 28

Rozhodnutí o struktuře tabulek Cíle: Minimalizovat velikost Použít optimální přístupové metody Standardní tabulka Insert, Delete, Update, Scan, Index Index-organized tables (Clustered index) + menší + rychlejší přístup po indexu - náročnější insert, delete (update) Oracle novější implementace, podpora 7x24 29 29

B-tree index příklad kořen vnitřní blok indexu listová úroveň indexu data klíč řádek blok Blok 1001 Bennet Chet 1421,1 1007 Karsen Kit 1876,4 1306 Smith Ade 1242,3 1062 Blok 1007 Bennet Chet 1421,1 1132 Fox John 1317,3 1133 Hunter Leon 1213,1 1127 Blok 1306 Karsen Kit 1876,4 1198 Larn Pard 1451,2 1199 Peters Mary 1856,4 1200 Blok 1132 Bennet Chet 1421,1 Burns Saly 1409,4 Claim Dave 1129,3 Dull Rob 1409,1 Blok 1133 Fox John 1317,3 Greane David 1876,4 Green Mitch 1213,2 Greene Joe 1409,2 Blok 1212 Larry John 254 A3 Jetkins Paul 244 C3 White Susan 156 A1 Blok 1213 Hunter Leon 124 A3 Green Mitch 125 B1 Smith Ade 156 A3 Blok 1421 Blok 1127 Bennet Chet 101 B2 Hunter Leon 1213,1 Jetkins Paul 1212,2 Ringer John 144 C1 INSERT INTO user VALUES ( Burns, Saly,128, A1 ) Blok 1409 Dull Rob 128 B1 Greene Joe 142 A2 Port Joe 156 C3 Burns Saly 128 A1 30 30

Clustered index příklad kořen vnitřní blok indexu listová úroveň indexu Blok 1132 klíč blok Blok 1007 Bennet Chet 101 B2 Burns Saly 128 A1 Blok 1001 Bennet Chet 1007 Karsen Kit 1306 Smith Ade 1062 Bennet Chet 1132 Fox John 1133 Hunter Leon 1127 Blok 1306 Karsen Kit 1198 Larn Pard 1199 Peters Mary 1200 Claim Dave 123 A1 Blok 1133 Fox John 100 A0 Greane David 111 E3 Green Mitch 125 B1 Greene Joe 156 C3 Blok 1127 Hunter Leon 122 A3 Jetkins Paul 124 A5 INSERT INTO user VALUES ( Burns, Saly,128, A1 ) 31 31

Implementace business pravidel Domain integrity - Check Na úrovni sloupce Null/Not null Default Check (format) Na úrovni řádku Entity integrity - primary key implementováno unikátním indexem na not null sloupcích záznam v katalogu Unikátnost hodnot implementováno unikátním indexem 32 32

Referenční integrita Implementace foreign key Deklarativní definice Použití triggerů Použití uložených procedur Kód aplikace Co se stane když Primární klíč se přidá/změní/zruší Cizí klíč se přidá/změní/zruší 33 33

Typy referenčních integrit Constraint Cascade update / delete Cascade Null Cascade Default Automatic insert Bez omezení Restriktivní Insert PK Zachování PK Zachování PK Zachování PK Zachování PK Zachování PK Zachování PK Zachování PK Insert FK Update PK Update FK Delete PK Pouze existující hodnoty PK Pouze pokud nemá vazbu Jen na existující hodnoty Pouze pokud nemá vazbu Pouze existující hodnoty PK Změní i odpovídající FK Jen na existující hodnoty Delete všech řádků s odpovídajícím FK Existující hodnoty PK nebo Null Odpovídající FK změní na Null Jen na existující hodnoty PK nebo Null Odpovídající FK změní na Null Existující hodnoty PK nebo Default Odpovídající FK změní na Default Jen na existující hodnoty PK nebo Default Odpovídající FK změní na Default Existující hodnoty nebo přidá řádek s PK Pouze pokud nemá vazbu Existující hodnoty nebo přidá řádek s PK Pouze pokud nemá vazbu Bez omezení (sirotci) Bez omezení (sirotci) Bez omezení (sirotci) Bez omezení (sirotci) Pouze existující hodnoty PK Není povoleno Jen na existující hodnoty Není povoleno Delete FK Bez omezení Bez omezení Bez omezení Bez omezení Bez omezení Bez omezení Bez omezení 34 34

Důsledky použití integritních omezení + zaručují konzistentní model - zvyšují výpočetní složitost i v případě, kdy nedochází ke změnám (Oracle not null) - komplikují údržbu povolení/zakázání ověřování integritních omezení 35 35

Denormalizace Partitioning Horizontální Vertikální Uložení vypočtených hodnot Eliminace nákladných joinů 36 36

Horizontální rozdělení tabulek Přístupy pouze na část tabulky Příklady: Aktivní a neaktivní položky Historické záznamy Možnosti Rozdělení tabulek Přidání tabulky (duplicitní záznamy) Partitioning Synchronizace Table partitioning Triggery Aplikační logika 37 37

Rozdělení tabulky Rozdělení tabulky Part 1 Part 1 Table Part 2 View Table Part 3 Výhody práce s menším množstvím dat méně problémů se zamykáním lepší řízení indexů možnost detailní optimalizace Nevýhody nutnost synchronizace triggery, aplikační logika Náročnější údržba 38 38

Partitioning Transparentní z pohledu aplikace Rozdělení dle daného rozsahu nebo hodnot Dynamicky podle hodnot Dynamicky vytvářeno pro každý měsíc Nejčastější použití Podle hash klíče (určuje se pouze počet partitions) Part 1 Part 2 Part 3 Part 4 Více úrovňový partitioning Podle času, podle pobočky Možnost individuálního řízení partition Omezený počet partition podle implementace 39 39

Vertikální rozdělení tabulek Přístupy pouze na některé sloupce tabulky Příklady: Bloby, obrázky, popisy Možnosti Rozdělení tabulek Přidání tabulky (duplicitní záznamy) Vytvoření indexu Synchronizace Triggery Aplikační logika 40 40

Rozdělení tabulky Rozdělení tabulky Table P a r t P a r t P a r t View Table P a r t 1 2 3 1 Výhody práce s menším množstvím dat méně problémů se zamykáním možnost optimalizace Nevýhody nutnost synchronizace triggery, aplikační logika náročnější údržba 41 41

Přidání indexů Transparentní z pohledu aplikace Jeden clustrovaný index Libovolný počet dalších indexů Automatická údržba Pokrývající dotazy I n d e x 1 I n d e x 2 Nároky na diskový prostor Snížení výkonu pro OLTP aplikace 42 42

Uložení vypočtených dat Přidání sloupce Přidání tabulky Synchronizace Trigerry Uložené procedury Aplikační logika Nutno zavést procedury pro údržbu a resynchronizaci 43 43

Materializovaná view Transparentní z pohledu aplikace Automatické řízení výpočtu view Nákladné výpočty, nutnost možnosti řízení výpočtů asynchronně Duplicitní uložení dat nároky na diskový prostor 44 44

Eliminace nákladných joinů Neustálé dotahování hodnot z číselníků Omezení datových serverů (Sybase třicet tabulek v jednom joinu) Suptype/supertype vazba Možnosti Redundantní data Spojení tabulek 45 45

Fyzické uložení tabulek Cíl Distribuce zátěže na co nejvíce fyzických disků Rozložení tabulek/indexů na disky Možnosti datových serverů (tablespace, segment) Možnosti hardware (SAN, NAS, diskové pole) Pouze RA 1+0 Vazba na počet procesorů Možnosti paralelního zpracování datového serveru 46 46

Indexy přístupové metody Typy indexů B-tree Clustered/nonclustered Bitmapové indexy Standardní index Hledání podle indexu Scan nejnižší úrovně Dotaz pokrytý indexem Ignorování indexu scan dat Clustered index Hledání podle indexu Scan dat od nalezeného řádku Scan nejnižší úrovně (scan dat) 47 47

Použití indexů Select Pokrývající query Group by Order by Join Nepoužívat indexy pro malé tabulky Selektivita indexů 48 48

Data uložená po sloupcích Vertica SAP Sybase IQ Oracle bitmapové indexy 49 49

Tabulka relační uložení dat DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH NUMBER VARCHAR2(50 BYTE) VARCHAR2(500 BYTE) NUMBER VARCHAR2(20 BYTE) NUMBER VARCHAR2(40 BYTE) NUMBER NUMBER NUMBER Struktura tabulky DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR PRICE PRICE PROVER PROVER WTH WTH HEIGHT HEIGHT DEPTH DEPTH DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR PRICE PRICE PROVER PROVER WTH WTH HEIGHT HEIGHT DEPTH DEPTH DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR PRICE PRICE PROVER PROVER WTH WTH HEIGHT HEIGHT DEPTH DEPTH DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR PRICE PRICE PROVER PROVER WTH WTH HEIGHT HEIGHT DEPTH DEPTH DESCRIPTION DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR QTY COLOUR PRICE PRICE PROVER PROVER PRICE PROVER WTH WTH WTH HEIGHT HEIGHT HEIGHT DEPTH DEPTH DEPTH DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR PRICE PROVER PRICE PROVER WTH WTH HEIGHT HEIGHT DEPTH DEPTH DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR PRICE PROVER PRICE PROVER WTH WTH HEIGHT HEIGHT DEPTH DEPTH DESCRIPTION DESCRIPTION QTY COLOUR QTY COLOUR PRICE PROVER PRICE PROVER WTH WTH HEIGHT HEIGHT DEPTH DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH Datové bloky 50 50

Tabulka data uložená po sloupcích DESCRIPTION QTY COLOUR PRICE PROVER WTH HEIGHT DEPTH NUMBER VARCHAR2(50 BYTE) VARCHAR2(500 BYTE) NUMBER VARCHAR2(20 BYTE) NUMBER VARCHAR2(40 BYTE) NUMBER NUMBER NUMBER Struktura tabulky COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR COLOUR QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY QTY Datové bloky 51 51

Data uložená po sloupcích SELECT Count(*) FROM sale where color = Green SELECT Count(*) FROM sale where color in ( Green, Red ) 52 52

Data uložená po sloupcích SELECT SUM(qty) FROM sale (2 * 64) + (3 * 32) + (2 * 16) + (1 * 8) + (3 * 4) + (2 * 2) + (3 * 1) = 283 53 53

Bitmapové indexy Rychlé pro sloupce s malou kardinalitou Rychlé pro operace na málo sloupcích Složitý update Zamykání a rebuild velkých bloků Pomalé pro dotaz na jeden konkrétní řádek 54 54

Metody ukládání bitmapových indexů Samé nuly nebo jedničky Bloky se neukládají pouze indikátor jejich existence Do 20% nul nebo jedniček Data se kódují jako souvislé množiny hodnot Mezi 20% a 80% jedniček Ukládá se skutečná mapa hodnot 55 55

Typy sloupcových indexů Mnoho různých typů Více indexů na jednom sloupci Bitový index pro sloupce s malou kardinalitou Bitový index pro sloupce s velkou kardinalitou a malou selektivností Indexy pro sloupce s velkou kardinalitou G-Array (příbuzný B-tree) Prosté komprimované uložení dat (pro textové řetězce) Speciální indexy pro čas a datum Indexy pro joiny, porovnání a další operace 56 56

Velikost databáze (GB) Sybase IQ uložení dat a indexů 500 450 400 350 300 250 200 150 100 50 0 Čistá data Indexy Sumace Čistá data CBRD Tradiční RDBMS Indexy jsou už data Nízké náklady na uložení dat Rychlé zpracování malého množství dat 57 57

Co si zapamatovat Jaké jsou hlavní kroky při návrhu datového modelu Co to je konceptuální model a co obsahuje Co je cílem sběru byznys požadavků při vytváření konceptuálního modelu Co je logický model a co obsahuje Jaké aktivity je nutné provést při převodu konceptuálního datového modelu na logický datový model Jaké požadavky je potřeba brát v úvahu při výběru primárních klíčů Jaké jsou hlavní rozdíly mezi relačním a objektově orientovaném modelování Kdy a proč se vytváří fyzický datový model Které aktivity je nutné provést při převodu logického datového modelu na fyzický datový model Co to je denormalizace Jaké typy denormalizace znáte Jaký je rozdíl mezi strukturou tabulky s klastrovaným a neklastrovaným indexem K čemu slouží indexy a pro jaké přístupové metody k datům se používají Jak vypadají bitmapové indexy Co to je sloupcové uložení dat (sloupcové indexy) 58 58

Diskuse Otázky Poznámky Komentáře Připomínky 59