přehled
snad žádné jiné téma diskuse v kruzích vývoje, modelování a správy databází přitahuje více pozornosti a často vášnivou debatu než integrita dat. Je úžasné, že navzdory vzdálenosti, kterou jsme dospěli k porozumění, praxi a technologii, tolik databázových guruů (Celko, Codd, Date, Riordan, et al.) se liší tak široce ve svých filozofiích. Výsledkem je, že administrátoři a vývojáři často zpracovávají modelování integrity a tím i programování integrity podle sedadla svých kalhot. Dokonce i SQL Server Books Online definuje integritu dat ve svém glosáři způsobem zmatenějším než netopýr za bílého dne.
tato kniha rozhodně není fórem pro diskusi o integritě dat, a to je asi tak daleko, jak se chci pustit do diskuse o teorii relačních databází. Ale bez zkoumání některých konceptů a přijetí jediné možné definice integrity dat nebudete mít prospěch ze všech nástrojů a nových funkcí, které SQL Server 2005 podporuje s ohledem na modelování a programování integrity dat.
integrita dat rozhodně není praxí, disciplínou, která zajišťuje, že data uložená v databázi jsou správná, pouze to je věrohodné nebo věrohodné. Neexistuje žádný způsob, jak mezi tímto životem a dále, že SQL Server 2005, nebo jakékoliv jiné RDBMS, může zaručit, že data v databázi je správná. Dostat správné ze svého vocab teď. SQL Server 2005 nemá žádný způsob, jak vědět, a tím zajistit, že moje předčíslí není 209, ale spíše 299, nebo že moje příjmení je Shapiro a ne Schapiro. Dokonce jsem slyšel o dívce jménem Jeffrey. Musíte začít přemýšlet, modelování a programování SQL Server, pokud jde o věrohodnost dat, ne pokud jde o data jsou správné nebo špatné.
pouze pokud přijmete tuto definici, budete moci používat nástroje a techniky podporované SQL Server 2005 k zajištění integrity vašich dat a tím i jejich hodnoty jako aktiva pro váš podnik. A poté, co se začnete soustředit na integritu ve skalárních termínech a ne na korektnost v absolutních číslech, budete mít mnohem větší důvěru v data ve vaší databázi a budete si moci dovolit důvěru a respekt, který si zaslouží. Koneckonců, data, která nejsou věrohodná nebo uvěřitelná, jsou odpovědností
jak jsem diskutoval v kapitole 1, lidská chyba způsobila mé ženě extrémní zármutek, když po změně zdravotních pojišťoven jí bylo po určitou dobu odepřeno pokrytí, protože příjmení jejího lékaře místo Shapira bylo zadáno do pole příjmení manžela, mé ženě se problém integrity dat stal život ohrožujícím. Zdravotní pojišťovně, problém téměř explodoval do problému odpovědnosti.
co by nebo mohlo způsobit nesprávné příjmení nebo příjmení?
-
manželka se jmenuje za svobodna.
-
manžel mylně poskytuje pseudonym.
-
pár se právě rozvedl, ale souhlasil s udržením pokrytí.
-
dítě je pokryto nevlastním otcem, ale stále jde o příjmení svého biologického otce.
-
jméno se zadává do pole příjmení.
-
příjmení je zadáno nesprávně (Shapiro se stává Ahaoeuei jen několika kousky prstu).
-
rukopis ve formuláři žádosti je špatný, nebo je vynecháno příjmení a osoba zadávající údaje špatně předpokládá.
tento seznam by mohl pokračovat dál a dál. A jsem si jist, že byste mohli přijít s desítkami scénářů, které by také vytvořily pochybné údaje, a to nejen v hodnotách příjmení, ale také na mnoha dalších místech. Čísla například představují neuvěřitelné příležitosti pro zadávání problematických dat do databáze.
ale je to otázka integrity? Pokud přijmeme, že programujeme DBMS, abychom zajistili, že data jsou co nejvěrohodnější, pak je. Pokud se pokusíme zajistit, aby data byla správná, pak tomu tak není. Jakákoli hodnota může být ve skutečnosti správná, pokud se předpokládá, že je špatná, a ve skutečnosti může být špatná, pokud se předpokládá, že je správná. Jediné, co můžete udělat, abyste zajistili, že data jsou uvěřitelná, je zajistit, aby byla uvěřitelná, když byla zadána do databáze.
to nejlepší, co mě napadá na datové úrovni, abych pomohl zajistit, že hodnota, jako je příjmení manžela, je věrohodná, je donutit klienta, aby se vrátil a zkontroloval data před jejich zadáním, nebo porovnat data se známými hodnotami. Je možné dokonce odkazovat záznam zpět klientovi a požádat o jeho zadání jiným uživatelem, případně nadřízeným, který by kontrolu faktů posunul na další úroveň. Požádat webové surfaře, aby vyplnili přihlášky přes Internet, je dobrý nápad, protože vyřízne prostřední osobu pro zadávání dat, papírovou stopu a zpoždění a klade důraz na zajištění věrohodnosti dat na klienta, který s větší pravděpodobností zajistí, že se na jeho informace lze spolehnout.
nedávno jsem sledoval děsivý příběh na CNN o americkém lékárníkovi, který dal dítěti fatální předávkování lékem v rozporu s tím, co správně předepsal pediatr. Omluvou byla lidská chyba, neschopnost supervizora překontrolovat recepty, vyplňování stovek receptů denně proč, ve jménu nebe, v dnešní době, lékárníci stále používají psací stroje a textové procesory k poskytování pokynů o dávkování a podávání nebezpečných drog? Databáze měla být použita ke kontrole, zda dávka nepřekročila bezpečné úrovně předepsaného léku. Žádný počítačový program nekontroloval dávkování, a tak matka poslala své dítě do postele a on se nikdy neprobudil. Nyní, kdykoli kupujeme drogy, zkontrolujeme štítek a přemýšlíme: „můžeme důvěřovat našim životům těmto údajům?“
je zřejmé, že předmět lidské chyby je nad rámec této knihy, kromě diskuse o tom, jaké možné prostředky bychom mohli mít, abychom zabránili lidem v zadávání pochybných údajů do databáze. Joe Celko se dotkl tohoto tématu ve své úžasné knize Joe Celko ‚ s Data & Databases: Concepts in Practice (New York: Morgan Kaufmann, 1999). V části nazvané „modely Versus realita“ hovoří o chybách v modelech a popisuje úrovně chyb typu I a typu II. Chyba typu I přijímá jako nepravdivé něco, co je pravdivé, a chyba typu II přijímá jako pravdivé něco, co je nepravdivé.
souhlasím bez rovnosti s tím, že předmět chyb v modelech je pro lidi v databázi velmi důležitý. Generace lidí byly kvůli tomuto problému vyhlazeny. Subsaharská Afrika, kde jsem strávil dětství, bude kvůli AIDS zničena. Tomu bylo možné zabránit, ale tamní obyvatelstvo stále věří, z velké části, že AIDS není sexuálně přenosný a že publicita je jen „Západní propaganda.“Podvod je ve skutečnosti sebezáchovný nebo seberealizující, protože miliony Afričanů stále mají nechráněný sex.
Ano, můžeme použít fantastické programovací triky a systémové funkce, jako jsou spouštěče a uložené procedury, abychom snížili pravděpodobnost nepravděpodobných dat; můžeme dokonce vybudovat pokročilejší kontrolu lidské integrity do klientských aplikací. Jak se můžeme vyhnout problémům, jako je právě popsaný, a stále programovat SQL Server 2005 co nejrozumněji? Abychom dospěli k možnému řešení, pojďme nejprve prozkoumat funkce a funkce zabezpečení integrity SQL Server 2005. Po této diskusi, můžeme vyřešit problém integrity příjmení a nabídnout mé zdravotní pojišťovně nějaké nápady, než budou žalovány.