🔑 Relační model a klíče

Tabulka v sešitě

O čem to je

Třídní učitelka si vede seznam žáků v tabulce: každý žák jeden řádek, ve sloupcích jméno, příjmení, třída a datum narození. Tabulku umí přečíst každý. Proto je na ní postavená většina databází na světě.

V relačním modelu jsou všechna data v tabulkách. Abys mohl tabulky správně navrhovat a propojovat, potřebuješ znát jejich části a hlavně klíče.

Nové pojmy

Relace (tabulka)Tabulka s pevně danými sloupci a libovolným počtem řádků. Odtud název „relační“ databáze.Tabulka zaci.
Atribut (sloupec)Jedna vlastnost, kterou o každém řádku evidujeme. Má jméno a datový typ.prijmeni, datum_narozeni
Záznam (řádek, n-tice)Jeden řádek tabulky, údaje o jedné věci nebo osobě.1 | Eva | Malá | 2.A
DoménaMnožina povolených hodnot atributu.Známka: celá čísla 1 až 5.
Primární klíč (PK)Atribut (nebo skupina atributů), který jednoznačně určuje každý řádek. Nesmí se opakovat a nesmí být prázdný (NULL).id_zaka: dva žáci nikdy nemají stejné číslo.

Tabulka zaci

id_zaka (PK)jmenoprijmenitrida
1EvaMalá2.A
2PetrNovák2.A
3EvaNovák3.B

Jméno ani příjmení nestačí jako klíč, opakují se. Proto má tabulka uměle přidané číslo id_zaka. Pořadí řádků ani sloupců v relační tabulce nemá význam.

Propojení tabulek: cizí klíč

Cizí klíč (FK)Atribut, jehož hodnota odkazuje na primární klíč v jiné (nebo stejné) tabulce. Tím se tabulky propojí.id_zaka v tabulce znamky odkazuje na zaci.id_zaka.
id_znamky (PK)id_zaka (FK)predmetznamka
1011M2
1021ČJ1
1033M4

Známka 103 patří žákovi s id_zaka 3, tedy Evě Novákové ze 3.B. Jméno se ve známkách neopakuje, stačí číslo.

Proč se v tabulce znamky neukládá přímo jméno žáka?
Jména se opakují (dvě Evy) a mohou se změnit. Číslo id_zaka je jednoznačné a stálé. Navíc jméno je uložené jen jednou v tabulce zaci, takže nevzniká redundance.
Můžeš do tabulky znamky vložit řádek s id_zaka = 7, když žák 7 neexistuje?
Ne. Cizí klíč musí odkazovat na existující primární klíč. SŘBD takový zápis odmítne. Tomuto pravidlu se říká referenční integrita.
✗Primárním klíčem tabulky žáků bude příjmení.
✓Primárním klíčem bude jedinečný identifikátor, třeba id_zaka.

Příjmení se opakuje (dva Novákové) a může se změnit, např. sňatkem. Klíč musí být jedinečný a ideálně neměnný.

Relační databáze ukládá data do tabulek: sloupce jsou atributy, řádky záznamy. Primární klíč jednoznačně určuje řádek, cizí klíč odkazuje na primární klíč jiné tabulky a tím tabulky propojuje.

Druhy klíčů

O čem to je

Každý občan má rodné číslo, číslo občanky a třeba i číslo pasu. Každé z nich ho jednoznačně určuje. Úřad si ale musí vybrat jedno, podle kterého ho bude v evidenci hledat. Stejné rozhodování děláš při návrhu databázové tabulky.

Tady projdeš všechny druhy klíčů, které se u maturity objevují, a pravidla integrity, která SŘBD podle nich hlídá.

Nové pojmy

Tabulka, atribut, záznamRelační databáze ukládá data do tabulek (relací). Sloupec je atribut, řádek je záznam. Každý záznam musí být jednoznačně rozlišitelný.Tabulka ucitele se sloupci id, jmeno, email, telefon.
Kandidátní klíčKaždý atribut nebo nejmenší skupina atributů, která jednoznačně určuje řádek. Tabulka jich může mít víc.U učitele: id, email.
Primární klíč (PK)Ten kandidátní klíč, který vybereš jako hlavní identifikátor. Je jedinečný a nesmí být NULL. Tabulka má právě jeden primární klíč.id
Alternativní klíčKandidátní klíč, který nebyl vybrán jako primární. Obvykle se hlídá, aby byl jedinečný (UNIQUE).email
Složený klíčKlíč tvořený více atributy. Jednoznačná je až jejich kombinace.V rozvrhu: trida + den + hodina.
Přirozený a umělý klíčPřirozený klíč je údaj, který existuje i mimo databázi. Umělý (náhradní) klíč je číslo, které vytvoří databáze, často automaticky zvyšované.Přirozený: ISBN knihy. Umělý: id 1, 2, 3…
Cizí klíč (FK)Atribut, který odkazuje na primární klíč jiné tabulky.id_ucitele v tabulce predmety.
NULLZnačka „hodnota chybí nebo není známá“. Není to nula ani prázdný text.Učitel bez telefonu má telefon = NULL.

Pravidla integrity

PravidloCo hlídáPorušení
entitní integritaprimární klíč je jedinečný a není NULLdva řádky s id 5
referenční integritacizí klíč odkazuje na existující řádek (nebo je NULL)předmět s id_ucitele 99, který neexistuje
doménová integritahodnota patří do povolené doményznámka 7

Zkus si ke každému druhu klíče vymyslet příklad ze školy, teprve pak kartičku otoč.

  • Kandidátní klíč – každý, který jednoznačně určuje řádek
  • Primární klíč – vybraný hlavní identifikátor, ne NULL
  • Alternativní klíč – kandidátní, ale nevybraný
  • Cizí klíč – odkaz na PK jiné tabulky
  • Složený klíč – z více atributů
Tabulka rozvrh(trida, den, hodina, predmet). Co bude primárním klíčem?
Jedna třída má v jednu hodinu jednoho dne jen jeden předmět. Jednoznačná je kombinace (trida, den, hodina), je to složený klíč. Žádný z těch atributů sám nestačí.
Kniha má ISBN a v knihovně dostala číslo 15. Co je přirozený a co umělý klíč?
ISBN existuje i mimo databázi, je to přirozený klíč. Číslo 15 vytvořila databáze knihovny, je to umělý klíč. Pozor: knihovna může mít více výtisků se stejným ISBN, proto se u výtisků hodí umělý klíč.
✗NULL je totéž co 0.
✓NULL znamená „hodnota není známá“. 0 je konkrétní číslo.

Žák s počtem zameškaných hodin 0 nechyběl. Žák s NULL nemá údaj vyplněný a nevíme, kolik zameškal.

Kandidátní klíče jednoznačně určují řádek, jeden z nich je primární, ostatní alternativní. Klíč může být složený, přirozený nebo umělý. Cizí klíč odkazuje na primární klíč jiné tabulky a SŘBD hlídá entitní a referenční integritu.