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.
zaci.prijmeni, datum_narozeniid_zaka: dva žáci nikdy nemají stejné číslo.| id_zaka (PK) | jmeno | prijmeni | trida |
|---|---|---|---|
| 1 | Eva | Malá | 2.A |
| 2 | Petr | Novák | 2.A |
| 3 | Eva | Novák | 3.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.
id_zaka v tabulce znamky odkazuje na zaci.id_zaka.| id_znamky (PK) | id_zaka (FK) | predmet | znamka |
|---|---|---|---|
| 101 | 1 | M | 2 |
| 102 | 1 | ČJ | 1 |
| 103 | 3 | M | 4 |
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.
znamky neukládá přímo jméno žáka?id_zaka je jednoznačné a stálé. Navíc jméno je uložené jen jednou v tabulce zaci, takže nevzniká redundance.znamky vložit řádek s id_zaka = 7, když žák 7 neexistuje?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ý.
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á.
ucitele se sloupci id, jmeno, email, telefon.id, email.idUNIQUE).emailtrida + den + hodina.id 1, 2, 3…id_ucitele v tabulce predmety.telefon = NULL.| Pravidlo | Co hlídá | Porušení |
|---|---|---|
| entitní integrita | primární klíč je jedinečný a není NULL | dva řádky s id 5 |
| referenční integrita | cizí klíč odkazuje na existující řádek (nebo je NULL) | předmět s id_ucitele 99, který neexistuje |
| doménová integrita | hodnota patří do povolené domény | známka 7 |
Zkus si ke každému druhu klíče vymyslet příklad ze školy, teprve pak kartičku otoč.
rozvrh(trida, den, hodina, predmet). Co bude primárním klíčem?Žák s počtem zameškaných hodin 0 nechyběl. Žák s NULL nemá údaj vyplněný a nevíme, kolik zameškal.