Atributy a integrita
Stránky: | E-learning VŠCHT Praha |
Kurz: | Využití databází a jazyka SQL |
Kniha: | Atributy a integrita |
Vytiskl(a): | Nepřihlášený host |
Datum: | neděle, 3. srpna 2025, 00.08 |
1. Atributy
Již z definice vyplývá, že každá databázová tabulka je nejdůležitější a nejpoužívanější strukturou v relační databázi. Z tohoto důvodu je potřeba při vytváření tabulek věnovat dostatečnou pozornost definicím jejich atributů.
Návrh atributů tabulky
V
první fázi návrhu se definují jednotlivé atributy a jim odpovídající
datové typy. Dále se určuje, který z atributů bude primárním klíčem,
popřípadě lze definovat i cizí klíč, je-li potřeba svázat některý z
atributů s primárním klíčem jiné tabulky. Pro jednotlivé atributy lze
definovat i některá integritní omezení, je-li to potřeba.
1.1. Datové typy
Znalost základních datových typů je pro práci s daty v databázích zcela zásadní záležitost. Nejen že poskytuje přehled o datech v databázích, ale umožňuje s daty provádět relevantní operace. Různé databázové systémy pracují s mnoha různými datovými typy. Datové typy mají v různých databázových systémech různá označení přestože se svým významem mohou shodovat. Vždy hraje roli definice typu a rozsahu povolených hodnot.
Obecně lze datové typy rozdělit do několika málo kategorií
- znakové
- číselné
- pro objemná data
V SQLite je definováno 5 datových typů: NULL, INTEGER, REAL, TEXT a BLOB.
NULL
Hodnota typu NULL znamená, že hodnota chybí nebo není známa.
INTEGER
Hodnota typu INTEGER vyjadřuje celé číslo, ať už kladné nebo záporné.
REAL
Hodnota typu REAL vyjadřuje čísla s desetinnou částí.
TEXT
Hodnota typu TEXT umožňuje ukládat libovolná znaková data.
BLOB
Zkratka BLOB je ze slov Binary Large Object. Hodnota tohoto typu je určena pro objemná data libovolného druhu, např. obrázky.
SQLite disponuje funkcí typeof(), která vrací datový typ zadané hodnoty. Lze ji tedy použít pro ověření datového typu, pokud si uživatel není jistý hodnotou uloženou v tabulce.
1.2. Identifikace
Každý záznam v každé databázové tabulce by měl být jednoznačně identifikovatelný. Za tímto účelem se používá definice klíčů pro každou relaci. Jako klíč se vždy definuje jeden nebo několik sloupců z dané tabulky. Neexistuje-li vhodný atribut, který by bylo možné označit jako klíč, zpravidla se přidává do tabulky další atribut datového typu INTEGER s omezením UNIQUE, který zajistí jedinečnost každého záznamu. Podle vztahů s jinými relacemi lze pak definovat
několik typů klíčů.
Primární klíč je sloupec nebo skupina sloupců, která slouží pro jednoznačnou identifikaci každého řádku v tabulce. Hodnota primárního klíče musí být v rámci tabulky jedinečná. Pole primárního klíče nesmí obsahovat hodnoty NULL. Bez primárního klíče není možné definovat vztahy mezi jednotlivými tabulkami.
Kandidátní klíč
se definuje při konceptuálním modelování a je to sloupec nebo skupina sloupců, které jednoznačně identifikují záznam v tabulce. Kandidátní klíč se může stát primárním klíčem. Sloupce, které se primárním klíčem nestanou, jsou označovány jako alternativní klíč.
Cizí klíč je sloupec nebo skupina sloupců, které jsou propojeny na primární klíč v jiné tabulce.
2. Integrita
Integrita databáze znamená, že data v ní uložená jsou konzistentní vůči definovaným
pravidlům. Do databáze lze zadávat pouze data, která vyhovují předem definovaným
kritériím, např. musí respektovat datový typ nastavený pro daný sloupec
tabulky. K
zajištění integrity slouží tzv. integritní omezení.
2.1. Integritní omezení
Integritní omezení je nástrojem, který brání ukládání nesprávných dat či ztrátě nebo poškození stávajících záznamů při práci s databází. Integritní omezení většinou vyplývají z matematické teorie nebo aplikační logiky. Obecně se rozlišuje několik typů integritních omezení.
- NOT NULL
- PRIMARY KEY
- UNIQUE
- FOREIGN KEY
CHECK
NOT NULL
Integritní omezení NOT NULL znamená, že sloupec nesmí obsahovat hodnotu NULL.
PRIMARY KEY
Primární klíč jednoznačně identifikuje každý záznam v tabulce.
Každá tabulka může mít maximálně jeden primární klíč, kterým může být
jeden sloupec nebo kombinace více sloupců. Primární klíč nesmí nabývat hodnoty NULL, z tohoto důvodu je mu implicitně přiřazeno omezení NOT NULL. Z důvodu jednoznačné identifikace má implicitně nastaveno také omezení UNIQUE.
UNIQUE
Toto
integritní omezení, stejně jako primární klíč, zajišťuje jedinečnost hodnoty ve
sloupci a může být samostatně použito na více sloupců tabulky.
FOREIGN KEY
Integritní omezení FOREIGN KEY představuje tzv. cizí klíč. Jedná se o atribut nebo skupinu atributů jedné relace, které jsou primárním klíčem v jiné relaci. Aplikuje se tedy na atributy nebo skupinu atributů relací, které jsou ve vzájemném vztahu. Pokud dojde k manipulaci se záznamy relací, které jsou v nějakém vztahu, toto integritní omezení kontroluje existenci záznamů, kterých se operace týká.
Podle způsobu aplikace integritního omezení FOREIGN KEY lze při vytváření tabulek definovat jeden ze tří možných vztahů 1:1, 1:N nebo N:M.
1:1
Vytvoření vztahu 1:1 mezi tabulkami vyžaduje následující kroky.
- Vytvořit dvě tabulky (tabulku A a tabulku B) s definovaným primárním klíčem (PRIMARY KEY) v obou tabulkách.
- Vytvořit cizí klíč (FOREIGN KEY) v tabulce B na atributu, který odkazuje (REFERENCES) na primární klíč tabulky A.
- Přiřadit cizímu klíči v tabulce B integritní omezení UNIQUE.
1:N
Vytvoření vztahu 1:N mezi tabulkami vyžaduje následující kroky.
- Vytvořit dvě tabulky (tabulku A a tabulku B) s definovaným primárním klíčem (PRIMARY KEY) v obou tabulkách.
- Vytvořit cizí klíč (FOREIGN KEY) v tabulce B na atributu, který odkazuje (REFERENCES) na primární klíč tabulky A.
N:M
Vytvoření vztahu N:M mezi tabulkami vyžaduje následující kroky.
- Vytvořit dvě tabulky (tabulku A a tabulku B) s definovaným primárním klíčem (PRIMARY KEY) v obou tabulkách.
- Vytvořit třetí tabulku C s dvěma cizími klíči, kde každý z nich odkazuje (REFERENCES) na primární klíč jedné z tabulek A a B.
CHECK
Pomocí integritního omezení CHECK lze definovat podmínku, kterou musí splňovat ukládaná hodnota, např. musí být v určitém rozsahu.