Программирование >>  Реализация целостности данных 

1 ... 26 27 28 [ 29 ] 30 31 32 ... 124


Правила, которые определяют задания, выполняемые с использованием баз bix, являются ограничениями рабочие ссов, а не ограничениями базы данных. Рабочие адессы оказывают огромное влияние на структуру модели ых, но не могут быть ее частью (см, главу 8)

Не всегда ясно, является ли данное бизнес-правило ограничением

целостности, рабочим процессом или чем-нибудь еще. Разница может быть несущественной. Реализуйте правило наиболее удобным способом: если существует возможность непосредственно превратить его в ограничение базы данных, поступите именно так. Но иногда такой подход делает модель запутанной - это может произойти, даже когда правило очевидно является ограничением целостности. Вынесите такое правило в клиентскую часть приложения, где его можно будет реализовать, используя процедурный подход.

С другой стороны, если в предметной области часто меняются правила игры. и это приводит к частым изменениям бизнес-пра- вероятно, удобнее систему, в которой правила являют-

ся частью схемы базы данных. Тогда изменение отдельного элемента повлечет за собой изменения (но не крах) во всех связанных с этим элементом системах.

Целостность на уровне транзакций

Последняя разновидность целостности базы данных - целостность транзакции. Ограничения целостности на уровне транзакций управ способами манипулирования данными в базе. В отличие от других, это процедурные ограничения и они, таким образом, не являются частью модели данных.

Транзакции тесно связаны с рабочими процессами. Фактически,

эта концепция предполагает, что данный рабочий процесс может

включать в себя одну или несколько транзакций, и наоборот. Не со-

все но удобно представлять себе рабочий процесс как некую

абстракциго ( добавить заказ ), а транзакцию - как физическое действие ( обновить таблицу OrderDetails}.

Транзакцию обычно определяют как логическую единицу работы , что я всегда бесполезным и риторическим. го, что транзакция является группой действий, которые должны быть либо совместно завершены, либо совместно отменены. База Данныя. обязана соответствовать всем определенным в ней ограничениям лостности до начала и после ее завершения, но может нарушать одно или несколько ограничений во время транзакции.



ЧАСТЬ 1 Теории баз

Классический пример транзакции - перевод денег с одного банковского счета на Если система снимет деньги со счета А, но не сможет зачислить их на счет В, деньги будут потеряны. Очевидно, зачислить деньги не удалось, то и снятие денег со счета нужно отменить. На языке баз данных это называется откатом (rolling hack).

Транзакция может включать в себя множество записей, множество отношений, и даже множество баз данных. Точнее, все виды операций в базе данных являются транзакциями, даже обновление единственной записи. К счастью, такие транзакции низкого уровня выполняются дсч иепно сервером баз данных незаметно для пользователя.

Как механизм баз данных Microsoft Jet, так и SQL Server обеспечивают средства для поддержания целостности транзакций путем использования команд BEGIN TRANSACTION, COMMIT TRANSACTION и ROLLBACK TRANSACTION. Как и можно было ожидать, реализация целостности транзакций в SQL Server более 1>аботоспо-собна и лучше обрабатывает ошибки, возникающие из-за сбоев оборудования и программного обеспечения. Впрочем, это уже вопрос реализации, а они не являются предметом нашего рассмотрения. Что действительно важно с точки зрения проектирования - это умение сформулировать и создать цнонные зависимости, наполнив неконкретное выражение логическая единица работы практическим содержанием,

Реализация целостности данных

Вплоть до этого момента мы концентрировали внимание на концептуальном, абстрактном моделировании предметной области. А сейчас рассмотрим несколько вопросов, возникающих при создании физической модели предметной области, конкретно - при создании схем fe.u.! - Переход от одного этапа к другому сопровождается в первую очередь изменением терминологии - отношения становятся таблицами, а атрибуты - полями осы, касающиеся целостности данных, однако, возникаюа каждом из этапов.

Неопределенные и несуществующие величины

Ранее в этой же главе я заметила, что необходимо определить, могут ли домены и атрибуты быть пустыми или содержать неопределенные значения, не вдаваясь в подробности того, каким образом такие ограничения будут реализованы. Между тем, реализация - это действительно серьезный вопрос, и его никак нельзя обойти, если мы говорим о схеме базы данных.



Проблема отсутствующей информации возникла тогда же, когда была предложена первая ионная модель. Как показать, что какая-то часть информации либо неизвестна (заказчик в действительности имеет фамилию, мы только не знаем, какую), либо отсутствует (у заказчика нет второго имени)? Большинство реляционных баз данных, включая как Microsoft Jet, так и и SQL Server, поддерживают возможность использовать пустое значение - так называемый Null - как способ работы с неопределенными и несуществующими значениями.

Будет, вероятно, преувеличением назвать значение Null решением проблемы, так как с ним связан ряд дополнительных трудностей. Некоторые эксперты в области баз данных полностью отвергают концепцию Null. К. Дж. Дейт заявляет, что Null разрушает и я уже не помню, сколько раз я слышала в адрес слово вредная . Любые замечания о сложности обработки Null1ени и всегда сводятся в конечном итоге к выводу: О Боже! Вам не следует их использовать. Их нужно выкинуть .

В качестве альтернативы те, кто считают, что значения Null вредны, рекомендуют использовать специфические величины, описанные для домена, чтобы показать, что величина не оп-

ределена или не существует (или все вместе). Я называю это подходом договорных значений (conventional value approach).

На мой взгляд, этот подход имеет ряд недостатков. Во-первых, во многих случаях договорное значение условно. Дата 9/9/1900 на самом деле не означает, что значение даты неизвестно, мы просто согласились, что будем интерпретировать эту дату как неопределенное значение.

Я не вижу здесь никаких преимуществ по сравнению с ниями. Разумеется, является значением , но

его ни с чем нельзя перепутать, оно поддерживается реляционной моделью и большинством серверов баз данных.

Второй проблемой, делающей с моей точки зрения подход договорных значений непригодным, является нарушение ссылочной целостности.

Возьмем, например, необязательную связь между заказчиком и

представителями отдела обслуживания клиентов (CSR): каждый CSR, однажды обслужив клиента, должен быть занесен в таблицу CSR. Подход договорн1х значений требует, чтобы запись, которая добавляется в таблицу CSR, соответствовала договорному значению , выбранному, чтобы показать, что CSR не связан ни с одним клиентом (рис. 4-2).



1 ... 26 27 28 [ 29 ] 30 31 32 ... 124

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика