SQL tříhodnotová logika

Podobné dokumenty
Stromové struktury v relační databázi

Stromové struktury v relační databázi

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

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

Databáze SQL SELECT. David Hoksza

1. Databázové systémy (MP leden 2010)

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

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

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

Složitosti základních operací B + stromu

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

Základní datové struktury III: Stromy, haldy

Stromy, haldy, prioritní fronty

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

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Databázové systémy a SQL

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

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

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

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

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

Algoritmizace prostorových úloh

Stromy. Jan Hnilica Počítačové modelování 14

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

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

Databázové systémy úvod

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

Využití XML v DB aplikacích

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Algoritmy a datové struktury

3 Algoritmy řazení. prvku a 1 je rovněž seřazená.

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Použití databází na Webu

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

Algoritmizace a programování

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Algoritmizace prostorových úloh

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Prioritní fronta, halda

Informační systémy ve zdravotnictví. 6. cvičení

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Fyzické uložení dat a indexy

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

IB111 Úvod do programování skrze Python

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Dynamické programování. Optimální binární vyhledávací strom

PG 9.5 novinky ve vývoji aplikací

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

5. POČÍTAČOVÉ CVIČENÍ

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

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

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

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

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

TimescaleDB. Pavel Stěhule 2018

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

Oracle XML DB. Tomáš Nykodým

6. Fyzická (interní) úroveň databázového systému

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

6. Fyzická (interní) úroveň databázového systému

Databázové a informační systémy Jana Šarmanová

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

AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující

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

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

Kapitola 11: Indexování a hešování. Základní představa

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

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

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Algoritmizace prostorových úloh

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace

Sada 1 - PHP. 14. Úvod do jazyka SQL

Analýza a modelování dat 2. přednáška. Helena Palovská

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

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

Algoritmy výpočetní geometrie

Jazyk SQL databáze SQLite. připravil ing. petr polách

Databázové systémy I

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

Přijímací zkouška - informatika

Databázové systémy a SQL

vyhledávací stromové struktury

Genetické programování

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

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

NPRG030 Programování I, 2018/19 1 / :03:07

Databáze v MS ACCESS

Úvod do databázových systémů 3. cvičení

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

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

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Časová a prostorová složitost algoritmů

Transkript:

SQL tříhodnotová logika Jmeno Prijmeni Student Jaroslav Novák true Josef Novotný false Jiří Brabenec SELECT * FROM OSOBA WHERE Student!= true Jaký bude výsledek?

SQL tříhodnotová logika Jmeno Prijmeni Student Jaroslav Novák true Josef Novotný false Jiří Brabenec SELECT * FROM OSOBA WHERE Student!= true Jaký bude výsledek? Jmeno Prijmeni Student Josef Novotný false

SQL tříhodnotová logika A = true A = false A = null A == true true false null A!= true false true null A == false false true null A!= false true false null is null is true is false A = true A = false A = null A is true true false false A is not true false true true A is false false true false A is not false true false true A is null false false true A is not null true true false

SQL tříhodnotová logika A and B B == true B == false B == null A == true true false null A == false false false false A == null null false null A or B B == true B == false B == null A == true true true true A == false true False null A == null true null null A == true A == false A == null Not A false true null

Stromové struktury v relační databázi

Stromové struktury a relační databáze Zboží Procesory Paměti Intel AMD DDR DIMM Pentium IV Celeron Duron Athlon http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Stromové struktury a relační databáze Konceptuální model

Stromové struktury a relační databáze Logický model

Stromové struktury a relační databáze Hledání všech uzlů z podstromu daného uzlu - rekurze void gettree(int parent) { ResultSet rsdata = statement.executequery( SELECT * FROM TREE WHERE Parent_Id= + parent); while (rsdata.next()) { System.out.println(); System.out.println(rsData.getString( Name )); parent = rsdata.getstring( Parent_Id ); gettree(parent); } }

Stromové struktury a relační databáze 2 Zboží 1 22 Procesory Paměti 15 16 21 Intel AMD 3 8 9 14 DDR DIMM 17 18 19 20 Pentium IV Celeron Duron Athlon 4 5 6 7 10 11 12 13 http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Stromové struktury a relační databáze COMPONENTS ID NAME PARENT_ID LEFT RIGHT 1 Kategorie zboží 0 1 22 2 Procesory 1 2 15 3 Intel 2 3 8 4 Pentium IV 3 4 5 5 Celeron 3 6 7 6 AMD 2 9 14 http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Stromové struktury a relační databáze Zboží 1 22 Procesory Paměti 2 15 16 21 Intel AMD 3 8 9 14 DDR DIMM 17 18 19 20 Pentium IV Celeron Duron Athlon 4 5 6 7 10 11 12 13 SELECT * FROM COMPONETS C1, COMPONENTS C2 WHERE C1.NAME = INTEL AND C2.LEFT > C1.LEFT AND C2.RIGHT < C1.RIGHT

Indexace pomocí B-stromů

Indexace jako prostředek optimalizace výkonu SELECT * FROM PERSON WHERE (GENDER=FEMALE) AND (AGE < 32) Dotaz tohoto typu bude vykonán mnohem rychleji, bude-li k dispozici index, jehož indexačním výrazem bude {GENDER, AGE}. Jednou z hodnot tohoto indexačního výrazu může být například dvojice <FEMALE, 27>. Teorie idexačních technik (vyhledávacích datových struktur) používá pojem klíč namísto pojmu indexační výraz. Nezaměňovat s klíčem tabulky! CREATE INDEX PERSON_GENDER_AGE ON PERSON (GENDER, AGE)

Indexace jako prostředek optimalizace výkonu Opatrně s disjunkcemi v podmínkách. SELECT * FROM PERSON WHERE (GENDER=FEMALE) OR (AGE < 32) DBMS by měl využít dvou klíčů a to {GENDER} a {AGE} Některé DBMS (např. PostgreSQL) nemusejí pro takovéto dotazy využívat efektivně existující indexy.

Princip B-stromu B-strom má definovánu: maximální kapacitu uzlu (max. počet záznamů v uzlu) minimální kapacitu uzlu (min. počet záznamů v uzlu) Záznamy uvnitř uzlu jsou setříděné podle hodnoty klíče.

Princip B-stromu max(min) maximální (minimální) počet záznamů v uzlu n... počet záznamů v databázi log m n K Každý uzel stránka v databázi (typicky stránka = sektor) Smysl minimalizace počtu přístupů do databáze Hloubka B-stromu v nejlepším případě (všechny uzly naplněny na 100%)... log max n v nejhorším případě (všechny uzly naplněny na min)... log min n

Vkládání do B-stromu Každý uzel stránka v databázi (typicky stránka = sektor) Při prvotní konstrukci stromu se uzly naplňují pouze částečně, 25% - 30% kapacity uzly se nechávají volné jako rezerva pro nově vkládané uzly Je-li uzel zcela zaplněn a je třeba do něj přidat další záznam, uzel se rozštěpí na 2 zaplněné z 50%. V takovém případě se musí přidat záznam i do příslušného uzlu o patro výš

Vkládání záznamu do B-stromu Triviální, není-li kapacita daného uzlu naplněna 50 100 10 20 40 30 50 100 Nově vkládaný klíč 10 20 30 40

Vkládání záznamu do B-stromu Je-li kapacita daného uzlu naplněna, musí dojít k rozdělení uzlů: 50 100 Separátor. Hodnota jeho klíče je medián z hodnot 10, 20, 40, 42 a 44 10 20 40 44 40 50 100 42 Nově vkládaný klíč 10 20 42 44

Vkládání záznamu do B-stromu Algoritmus: 1. Pokud uzel, do něhož máme přidat nový záznam, obsahuje méně záznamů, než je jeho kapacita (maximální počet záznamů, který se vejde do jednoho uzlu), vložíme nový záznam do tohoto uzlu při zachování uspořádání záznamů. 2. V opačném případě (uzel je naplněn na svou kapacitu), rozdělíme stávající uzel na dva uzly. a. Nalezneme separační záznam jako medián množiny klíčů, která je tvořena klíči záznamů existujících v děleném uzlu plus klíče vkládaného uzlu. b. Záznamy s klíči menšími než klíč separačního záznamu necháme v původním uzlu, záznamy s klíčem větším než klíč separačního záznamu uložíme do nového uzlu (zařazeného napravo od původního uzlu). c. Separační záznam vložíme do rodičovského uzlu, který se zase může rozlomit, pokud jeho kapacita již byla naplněna. Pokud uzel nemá rodiče (t.j. byl kořenem B-stromu), vytvoříme nový kořen nad tímto uzlem (dojde ke zvětšení hloubky stromu).

Rušení záznamu v listu B-stromu Rušení záznamu v listu B-stromu je jednodušší než rušení záznamu v nelistovém uzlu. Pokud po zrušení záznamu klesne počet záznamů pod minimální kapacitu a sourozenecký uzel má více záznamů, než je minimální kapacita uzlu, přesuneme záznam ze sourozeneckého uzlu. Klesne-li počet záznamů v obou sourozeneckých uzlech pod minimální kapacitu uzlu, uzly spojíme.

Rušení záznamu v listu B-stromu Přesun uzlu 40 50 100 Min... 2 uzly Max... 4 uzly 10 20 30 42 44 30 50 100 Rušený klíč 10 20 40 44

Rušení záznamu v listu B-stromu Spojení uzlů 40 50 100 Min... 2 uzly Max... 4 uzly 10 20 42 44 50 100 Rušený klíč 10 20 40 44

Rušení záznamu v nelistovém uzlu B-stromu Rušený klíč 40 50 100 Min... 2 uzly Max... 4 uzly 10 20 30 42 44 48 42 50 100 Klíč označený? bude nejmenší klíč fialového podstromu. Může následovat: spojení uzlů přesun od sourozence 10 20 30? 44 48

Rušení záznamu v nelistovém uzlu B-stromu Tento přístup znamená, že při rušení uzlu smažeme rušený klíč a poté uvádíme strom znovu do vyváženého stavu. Není to jediný možný algoritmus, existují i jiné.