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.

  1. Vytvořit dvě tabulky (tabulku A a tabulku B) s definovaným primárním klíčem (PRIMARY KEY) v obou tabulkách.
  2. Vytvořit cizí klíč (FOREIGN KEY) v tabulce B na atributu, který odkazuje (REFERENCES) na primární klíč tabulky A.
  3. 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.

  1. Vytvořit dvě tabulky (tabulku A a tabulku B) s definovaným primárním klíčem (PRIMARY KEY) v obou tabulkách.
  2. 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.

  1. Vytvořit dvě tabulky (tabulku A a tabulku B) s definovaným primárním klíčem (PRIMARY KEY) v obou tabulkách.
  2. 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.