Целостта на данните
Способността да се гарантира коректността на извлечените данни е първият принцип на информационната архитектура. И в същото време това е основният проблем, който възниква в света на базите данни. При липса на целостта на данните, отговорът на всяко искане може да се окаже неправилен, следователно вече няма много смисъл да се гарантира изпълнение и наличност.
Тъй като данните са обекти и атрибути, тяхната цялост се осигурява от обект, домейн и референтна и дефинирана от потребителя цялост. Целостта на транзакциите, т.е. редът на записване и извличане на данни се определя от принципите на ASU (атомност, устойчивост, изолация и оцеляване), за които ще говорим по-късно в тази глава, неуспехи на транзакции и ниво на изолация.
Целостта на даден обект се занимава с неговата структура (първичен ключ и атрибути). Ако първичният ключ е уникален и всички атрибути са скаларни и зависят изцяло от първичния ключ, тогава е осигурена целостта на обекта. Във физическата схема целостта на обекта се поддържа от първичния ключ на таблицата. Осигуряването на целостта на обекта е пряко свързано с нормализирането.
Допълнителни подробности за нормализирането ще бъдат описани в глава 2.
По отношение на релационната теория, домейн се отнася до набора от възможни стойности за атрибут, независимо дали е цяло число, бит или текст. Целостта на домейна означава, че атрибутът съдържа само валидни данни. Позволяването на атрибут да бъде нулев също е част от концепцията за целостта на домейна. Във физическата схема основата за поддържане на целостта на домейна е типът на данните и заменяемостта.
Концепцията за референтна цялост е свързана преди всичко с целостта на домейна на външния ключ. Целостта на домейна предполага, че ако някой атрибут има стойност, той трябва да бъде включен в домейна. В случай на външни ключове, домейнът е списъкът със стойности на свързания първичен ключ.
В същото време референтната цялост не е въпрос на целостта на първичния ключ, а само на свързания външен ключ.
Валидността на нулевите стойности в колона е отделен проблем, не е свързан с референтна цялост. Външен ключ по принцип може да съдържа празни стойности.
Няколко техники за поддържане на референтна цялост са приложени на ниво физическа схема. Физическата схема може да поддържа декларативна референтна цялост (DRI) и тригер може да бъде прикачен към таблицата.
Дефинирана от потребителя цялост
Освен изискванията за целостта на релационната теория, има и дефинирана от потребителя цялост. Може да се поддържа, както следва:
? прости бизнес правила като ограничение на домейна, т.е. ограничаване на списъка на валидни обекти на данни. Ограниченията често се използват за налагане на тези правила във физическия дизайн;
? сложни бизнес правила, които ограничават списъка с валидни данни въз основа на някакво условие. Например, някои обиколки изискват туристите да имат определени медицински свидетелства. Прилагането на тези правила във физическа схема обикновено изисква писане на съхранени процедури или тригери.
Някои изисквания за целостта на данните не могат да бъдат наложени чрез ограничения или задействания. Непълните, грешни или неточни данни могат успешно да преминат всички проверки и да влязат в базата данни. Например, поръчка без единична продуктова линия се счита за невалидна, но нито един автоматичен метод не може да й попречи да влезе в базата данни. SQL заявките могат да идентифицират неизпълнени поръчки и да помогнат при други не толкова важни проблеми с целостта на данните, включително следното:
? търсене на неверни данни;
? търсене на непълни данни;
? търсене на съмнителни данни;
? търсене на несъвместими данни.
Качеството на данните зависи пряко от хората, които ги въвеждат или променят. Защитата на данните (т.е. контрол върху това кой може да я преглежда или променя) също е един от аспектите на поддържането на нейната цялост.
Транзакцията е единична логическа единица за работа, като вмъкване на 100 реда, актуализиране на 1000 реда или изпълнение на логическа верига от актуализации. Качеството на продукта от базата данни зависи от това колко добре неговите транзакционни възможности са в съответствие с принципите на ASH. Както си спомняте, това съкращение означава четири взаимозависими свойства: атомност, цялост, изолираност и жизненост. Голяма част от архитектурата на SQL Server разчита на тези свойства, така че за да разберете SQL Server, трябва да ги разберете.
? Свойството на атомност предполага, че транзакцията трябва да бъде завършена изцяло, или не като цяло. В края на сделката тя трябва да бъде потвърдена или анулирана. Ако частично завършена транзакция се запише на диск, атомното свойство е нарушено.
? Транзакцията трябва да поддържа целостта на базата данни. Това означава, че транзакцията започва да се изпълнява, когато базата данни е в постоянно състояние и базата данни трябва да остане в постоянно състояние след края на транзакцията. От гледна точка на ASU, целостта означава, че всеки ред и стойност трябва да съответстват на симулираната реална ситуация и всички ограничения трябва да бъдат изпълнени. Например, ако заглавката на поръчката е записана на диск, но редовете стоки, поръчани в нея, не са, тогава референтната цялост е нарушена.
? Всяка транзакция трябва да бъде изолирана, т.е. отделен от ефекта от изпълнението на други транзакции. Независимо от това, което прави другата транзакция, първата трябва да може да продължи да работи със същия набор от данни, с който е започнала. Изолацията е вид ограда между две транзакции. Доказателството за изолация е възможността да се повтаря последователен набор от транзакции през един и същ набор от данни много пъти и да се получава един и същ резултат всеки път.