Kontrola integrity tabulek

Co je integrita tabulek

Mezi tabulkami, v nichž jsou uložena veškerá data s nimiž Kaskáda pracuje, existuje velké množství vztahů, které lze popsat prostřednictvím tzv. referenčních integrit (RI).

Referenční integrita je obecný pojem používaný v prostředí SQL databází k vyjádření skutečnosti, že údaj v určitém sloupci, může mít pouze hodnotu, uvedenou v nějakém seznamu (jiné tabulce). Toto vysvětlení je zjednodušené, ale pro účel této kapitoly snad dostačující.

Výše uvedený mechanismum si lze snadno představit např. u faktury a jejího odběratele:
Údaj "odběratel", to je identifikátor kontaktu, je to jeden sloupec v tabulce faktur. Hodnota tohoto identifikátoru nemůže být libovolná, může to být pouze hodnota vyskytující se v seznamu kontaktů. V praxi je celkem pochopitelný požadavek, aby faktura byla vytvářena pouze na existujícího odběratele a na druhou stranu, aby nebylo možno smazat odběratele, ke kterému existuje faktura, neboť u ní by informace o odběrateli chyběly.

V deklaracích tabulek Kaskády nastavili vývojáři tohoto systému množství referenčních integrit, vyjadřujících požadavky aplikační logiky.

Referenční integrity během práce SQL serveru

Deklarace referenčních integrit v tabulkách by sama o sobě ničemu nepomohla, kdyby se těmito pravidly neřídil SQL server.

SQL server se ale samozřejmě těmito pravidly řídí, to je jejich hlavní smysl. SQL server sám o sobě neví nic o aplikační logice, neví jaké údaje z reálného života data v tabulkách představují, ale zná deklarace referenčních integrit a bdí nad jejich dodržováním.

Pokud se tedy např. uživatel pokusí smazat kontakt, který figuruje v nějaké faktuře, vykonává tím činnost, která je v rozporu s výše uvedeným příkladem referenční integrity, SQL server tuto skutečnost zjistí, odmítne operaci provést a vrátí data do stavu před započetím operace. Uživatel Kaskády přitom dostává na monitoru informaci o problému prostřednictvím běžného chybového dialogu Kaskády.

Kdy může dojít k porušení referenčních integrit

Ideální stav je samozřejmě takový, kdy k porušení integrit nedojde nikdy. Absolutně dokonalé ale bohužel není na světě vůbec nic a ve velmi vyjímečných situacích problém nastat může. Zdrojem problémů mohou být především problémy hardwaru (např. chyby v práci operační paměti), výpadky proudu a jiná násilná ukončení práce počítače, případně chyby v samotném SQL serveru. Více v kapitole Nestandardní ukončení chodu databázového serveru.

Respektování referenčních integrit souvisí velmi těsně s korektními indexy nad tabulkami, jichž se integrity týkají. Kvůli rychlosti jsou totiž veškeré referenční integrity závislé na indexech. Každý údaj, který se kontroluje, musí být součástí indexovaného sloupce. Z toho logicky vyplývá, že pokud dojde k porušení indexu, může sekundárně dojít k nesprávné interpretaci údajů v referenčních integritách.

Co dělá kontrolní režim

Režim Kontrola integrity tabulek prochází veškeré tabulky v databázi, v jejichž deklaraci jsou popsané referenční integrity a kontroluje, zda data v těchto tabulkách splňují příslušné podmínky. V závěru tohoto režimu se zobrazí seznam tabulek v nichž jsou nalezeny případné problémy, je zde uveden počet problematických záznamů a lze zobrazit tyto problematické záznamy.

Co dělat v případě zjištěných problémů

Kontaktovat pracoviště technické podpory Kaskády a řešit tuto situaci se servisními pracovníky.

Kdy provádět kontrolu integrity tabulek

Kontrolu integrity tabulek by měl technický správce Kaskády provést vždy po nestandardním ukončení chodu SQL serveru, ať již k tomu došlo z jakéhokoliv důvodu. Před tím by však měl vždycky provést kontrolu a případnou opravu indexů.

Odkud se kontrola integrity spouští

V dialogu Výběr datové větve prostřednictvím funkce Kontrola integrity tabulek, která je součástí rozbalovacího tlačítka Servis.

Tato volba je dostupná pouze v případě, že nedošlo k porušení indexů po nestandardnímm ukončení chodu databázového serveru. Pokud ano, je nutné nejdříve spustit revizi indexů a teprve pak kontrolu integrity.

POZNÁMKA:
Po ukončení revize indexů program automaticky nabídne i spuštění kontroly integrity tabulek. V případě, že tuto kontrolu spustíte v rámci revize indexů, není nutné kontrolu integrity spouštět samostatně ještě jednou.

POZOR:

Kontrolu integrity tabulek nezaměňujte s funkcí "Kontrola integrity objektu", kterou lze provést v menu Objekt / Kontrola integrity objektu. Jedná se o naprosto odlišné funkce, které jsou pouze podobné svým názvem.

Příbuzná témata: