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 nimi běžně nesetkáme, existují 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í
Data v databázi musí být snadno vyhledatelná. Také je žádoucí, aby bylo možné nová data snadno přidávat a měnit. Protože se v databázích často ukládají i citlivá data, pro zajištění bezpečnosti uložených informací se databáze obvykle šifrují. Pro zvýšení bezpečnosti je často možné vynutit 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.
Č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
Aby se v databázích dalo snadno vyhledávat a rozšiřovat je, používají se různé databázové architektury, které nám toto umožní.
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í kandidátní klíče — skupiny atributů, které jednoznačně identifikují a odliší každý záznam v tabulce. 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žítý v jiné tabulce se v jejím kontextu nazývá cizí klíč.
Příklad klíčů v databázi e‑shopu
V tabulce person jsou kandidátní klíče všechny, které obsahují person_ID nebo email, tedy {person_ID}, {email}, {person_ID, email}, {person_ID, name}, {person_ID, surname}, {person_ID, name, surname}, {email, name}, {email, surname}, {email, name, surname}, {person_ID, email, name}, {person_ID, email, surname}, {person_ID, email, name, surname}.
V tabulce buying je jediný 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, byl by kandidátní klíč i {product_code, person_ID}.
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, je proto v tabulce buying cizím klíčem vedoucím do tabulky person.
Další typy databází
Existují i další hojně používané typy databází. V posledních letech se rozšiřují možnosti ukládat nestrukturovaná data, například NoSQL databáze.
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