Výpis shrnutí
Databáze
Podtémata
Databáze slouží ke strukturovanému ukládání informací a mají dnes široké použití. Nejrozšířenějším typem databází jsou relační databáze, ve kterých se data ukládají v podobě navzájem propojených tabulek.
Pro práci s databázemi se používají dotazovací jazyky (query languages). Tyto jazyky obvykle umožňují nejen databáze vytvářet a modifikovat, ale především v nich vyhledávat informace. Velmi často se používá jazyk SQL.
- Základy SQL – tvorba tabulek, vkládání a aktualizování záznamů, jednoduché vyhledávání
- Select – příkaz pro vyhledání informací v databázi
Použití databází
Databáze slouží ke strukturovanému ukládání informací. Jako uživatelé se s ní běžně nesetkáme, existuje však na pozadí mnoha webových stránek a služeb, které využíváme. Typickou databázi si můžeme představit jako několik popropojovaných tabulek s pojmenovanými sloupci, takzvanými atributy, kde řádky jsou jednotlivé záznamy.
Vlastnosti databází
Databáze umožňují data snadno vyhledávat, přidávat a měnit. Typicky umožňují zabezpečit požadované vlastnosti dat vkládaných do databáze; například jednotlivým sloupcům bývají přiřazeny datové typy, tedy informace, zda se jedná například o číslo nebo řetězec omezené délky.
Práce s databázemi
Pro vytváření a práci s databází se v praxi obvykle používá databázový software, například MySQL nebo Microsoft Access, se kterým se pracuje pomocí speciálního dotazovacího jazyka SQL. Pomocí příkazů SQL lze data vyhledávat, přidávat, měnit i mazat.
Často je potřeba provést více než jednu operaci na databázi, například odečíst peníze z jednoho účtu a přičíst je na jiný. Případu, kdy je nezbytné, aby se buďto provedly všechny změny anebo žádná, říkáme transakce.
NahoruRelační databáze
Pro snadné vyhledávání a rozšiřování dat se používají různé databázové architektury.
Relační databáze
Nejrozšířenějším typem jsou relační databáze. Data se zde ukládají v tabulkách. Jednotlivé záznamy jsou uloženy v řádcích tabulky a každý záznam odpovídá jedné entitě (například konkrétní osobě, věci apod.). Sloupce tabulky odpovídají atributům, tedy jednotlivým vlastnostem záznamů (například věk osob, cena zboží apod.). V hlavičce tabulky najdeme názvy jednotlivých atributů a někdy i jejich datové typy, tedy omezení na hodnoty, které je možné do daného pole ukládat. Příkladem datového typu je int, který značí celé číslo, nebo char[20], který značí textový řetězec z maximálně 20 znaků.
Klíče
Vyhledávání v tabulce nám zjednodušují superklíče a kandidátní klíče — skupiny atributů, které jednoznačně identifikují a odlišují každý záznam v tabulce. Kandidátní klíče jsou superklíče, které by odebráním jednoho atributu ztratily schopnost identifikovat nějaký záznam od ostatních. Z kandidátních klíčů se pro každou tabulku vybírá jeden primární klíč. Jedna relační databáze se obvykle skládá z většího množství tabulek, které mezi sebou můžeme propojovat pomocí primárních klíčů a vyhledávat tak odpovědi na složitější dotazy o našich datech. Primární klíč jedné tabulky použitý v jiné tabulce se v jejím kontextu nazývá cizí klíč.
Příklad klíčů v databázi e‑shopu
V tabulce person jsou superklíče všechny, které obsahují person_ID nebo email, například {person_ID}, {email}, {person_ID, name} či {email, name, surname}. Kandidátní klíče jsou však pouze {person_ID} a {email}.
V tabulce buying je jediný superklíč i kandidátní klíč kombinace všech atributů, tedy {product_code, person_ID, date}. Tabulka vychází z předpokladu, že si každý zákazník může koupit daný produkt jen jednou za den. Kdybychom předpokládali, že může každý zákazník koupit produkt jen jednou za život, získali bychom i superklíč {product_code, person_ID}, který by byl i jediným kandidátním klíčem.
Jako primární klíč můžeme zvolit libovolný z kandidátních klíčů, tedy například {person_ID} pro tabulku person a {product_code, person_ID, date} pro tabulku buying. Kdybychom chtěli, mohli bychom místo toho za primární klíč zvolit pro tabulku person například {email}.
Primární klíč person_ID z tabulky person je použit i v tabulce buying, a proto je v tabulce buying cizím klíčem vedoucím do tabulky person.
Další typy databází
Vedle relačních databází se používají také NoSQL databáze, které mohou ukládat i nestrukturovaná data.
NahoruSQL: základy
Příklady použití příkazů jazyka SQL
CREATE TABLE fish(name varchar(80), age int)Vytvoří tabulku s názvem fish a atributy name typu varchar(80) a age typu int.
DROP TABLE fishOdstraní celou tabulku fish.
INSERT INTO fish VALUES ('Julie', 1, 'neonka červená')Přidá do tabulky fish nový záznam o rybě Julii.
DELETE FROM fish WHERE name = 'Alice'Odstraní záznam o rybě jménem Alice. Pomocí WHERE můžeme definovat různé podmínky výběru záznamů.
UPDATE fish SET age = 0Nastaví věk všech ryb na 0. Přidáním WHERE můžeme omezit záznamy, které upravíme.
SELECT name FROM fish WHERE age = 7Zobrazí jména všech ryb, kterým je 7 let.
Všechny příkazy kromě SELECT nějakým způsobem modifikují
tabulky, SELECT obsah databáze nijak nemění a pouze vrací
informace v podobě tabulky. SQL příkazy se dají nejen řetězit, ale i kombinovat do sebe; například je možné volat SQL příkaz na tabulce
vrácené příkazem SELECT.
SQL: select
SELECT je jeden z nejpoužívanějších příkazů jazyka SQL. Používá se pro čtení informací z databáze bez toho, aby byla změněna. Často jsou potřeba složitější operace než jen výpis všech informací z jedné tabulky.
SELECT * FROM productZobrazí celý obsah tabulky s názvem product.
SELECT name, species_name FROM fishZobrazí jména a druhy všech ryb v tabulce fish.
SELECT name FROM fish WHERE age = 7Zobrazí jména všech ryb, kterým je 7 let. Porovnávat za WHERE se dá například i na nerovnost, menší/větší, nebo na existenci podřetězce.
SELECT name FROM fish WHERE age = 7 AND species_name = 'závojnatka čínská'Zobrazí jména všech závojnatek čínských, kterým je 7 let. Kromě logické spojky AND se dá v rámci omezení použít i například spojka OR.
SELECT * FROM person, buying WHERE person.person_id = buying.person_idPro každého člověka z tabulky person vypíše všechny jeho
objednávky z tabulky buying a k nim do řádku doplní všechny
jeho informace z tabulky person. SQL příkazy se dají nejen
řetězit, ale i kombinovat do sebe; například je možné volat SQL příkaz
(SELECT nebo jiný) na tabulce vrácené příkazem SELECT.
Tento výsledek lze opět řetězit, a tak dále.
Entitně-vztahové modely
Entitně-vztahové modely (diagramy) pomáhají znázorňovat a zpřehledňovat vztahy a vlastnosti mezi objekty. Používají je například databázoví architekti, aby naplánovali, jak bude vypadat jejich databáze. Diagramy jsou ale poměrně jednoduché, takže si s nimi můžeme pohrát i my.
V entitně-vztahovém modelu se vyskytují tři typy prvků:
- Entity představují objekty. Mohou existovat samostatně, nezávisle na ostatních objektech, a mají vlastnosti (atributy). V diagramu se zakreslují do obdélníků.
- Vztahy (relace) propojují entity. Zakreslují se jako diamanty, které jsou spojené čarou s danými entitami.
- Atributy (vlastnosti) patří jednotlivým entitám. Typicky nemají smysl bez entity, které patří – nemohou existovat samostatně. Znázorňují se jako elipsy spojené s danou entitou.
Jednoduchý diagram může vypadat například takto:
Rozebraný příklad: význam diagramu
- Uživatelé sociální sítě mohou zveřejňovat příspěvky a mají určitý počet sledujících.
- Uživatelé a příspěvky jsou entity.
- Jsou propojené vztahem, jehož název říká, jak spolu tyto dvě entity souvisí (uživatel zveřejňuje příspěvek).
- Počet sledujících je atribut uživatele.
Vztahy mohou mít různé četnosti. Četnosti vyjadřují, s kolika entitami může být každá strana v daném vztahu. Uvažme zmíněný příklad sociální sítě. Jeden uživatel může zveřejnit více příspěvků. Ale každý příspěvek je zveřejněn pouze jedním uživatelem. Proto je četnost vztahu „zveřejňuje“ 1 uživatel – více příspěvků. Naproti tomu, pokud bychom mluvili o vztahu „uživateli se líbí příspěvek“, byla by četnost více uživatelů – více příspěvků. To proto, že jednomu uživateli se může líbit více příspěvků, a jeden příspěvek může být „olajkován“ více uživateli.
Kromě entitně-vztahových modelů můžeme vztahy mezi objekty znázorňovat například i pomocí grafů. Pro znázornění postupného běhu programu se naopak používají vývojové diagramy.
Nahoru