Программирование >>  Программирование баз данных 

1 ... 53 54 55 [ 56 ] 57 58 59 ... 346


Для большинства начинающих разработчиков бывает чрезвычайно трудно понять, чем отличаются друг от друга заданные по умолчанию значения и ограничения DEFAULT. Особую путаницу вызывает то, что и те и другие конструкции имеют почти одинаковое название. А когда речь идет о заданном по умолчанию значении , непонятно, подразумеваются ли под этим объекты базы данных, применяемые в качестве заданных по умолчанию значений (которым посвящен настоящий раздел), или кратко обозначается значение, которое действительно используется по умолчанию (в том случае, если явно не задано какое-либо действительное значение). Понятие ограничение DEFAULT относится к той конструкции, которая не основана на использовании отдельного объекта базы данных, поскольку эта конструкция является неотъемлемой частью определения таблицы.

Синтаксис определения заданного по умолчанию значения во многом напоминает синтаксис правила:

CREATE DEFAULT <default name> AS <default value>

Рассмотрим пример определения заданного по умолчанию значения, равного нулю, для столбца Salary:

CREATE DEFAULT SalaryDefault AS 0

И в этом случае заданное по умолчанию значение, не привязанное к какому-либо объекту, не выполняет реальных функций. Для привязки заданных по умолчанию значений используется процедура sp bindefault, имеющая синтаксис, идентичный синтаксису процедуры sp bindrule (в определениях синтаксиса различаются только имена этих процедур):

EXEC sp bindefault SalaryDefault, Employees.Salary

A для отмены привязки заданного по умолчанию значения к столбцу применяется процедура sp unbindefault: EXEC sp unbindefault Employees.Salary

Следует учитывать, что параметр f utureonly f lag допускается применять также в вызове хранимых процедур sp bindef ault и sp unbinde fault, но этот параметр не используется применительно к столбцам.

Удаление заданных по умолчанию значений

Если из базы данных необходимо полностью удалить как объект заданное по умолчанию значение, то можно воспользоваться оператором DROP, применение которого уже было показано на примере таблиц и правил:

DROP DEFAULT <default name>

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

Если в процессе эксплуатации базы данных возникает необходимость удалить или модифицировать правила или заданные по умолчанию значения, целесообразно вначале ознакомиться с тем, в каких таблицах и типах данных они используются. И для



этого можно воспользоваться соответствующей системной хранимой процедурой, предусмотренной в СУБД SQL Server. Эта процедура носит имя sp depends. Для вызова этой процедуры применяется следующий синтаксис: EXEC sp depends <object nanie>

Процедура sp depends предоставляет список всех объектов, зависящих от того объекта, в отношении которого запрашивается информация.

К сожалению, нельзя полностью рассчитывать на получение с помощью процедуры sp depends информации обо всех объектах, зависящих от указанного родительского объекта. SQL Server поддерживает отложенное разрешение имен. По существу, под понятием отложенного разрешения имен подразумевается возможность создавать объекты (прежде всего, хранимые процедуры), которые зависят от другого объекта, причем еще до создания второго объекта (целевого объекта зависимости). Например, современные версии SQL Server допускают создание хранимой процедуры, которая ссылается на некоторую таблицу, еще до того, как будет создана сама указанная в ней таблица, В подобных случаях СУБД SQL Server не имеет возможности указать в списке, формируемом с помощью процедуры sp depends, рассматриваемую таблицу как участвующую в интересующей нас зависимости. Поэтому в списке зависимостей, формируемом с помощью процедуры sp depends, не будут приведены сведения о зависимости даже после создания соответствующей таблицы.

Применение триггеров для обеспечения целостности данных

Описанию триггеров посвящена отдельная глава настоящей книги (глава 13), но любое описание ограничений, правил и заданных по умолчанию значений не будет полным, если в нем хотя бы не упоминаются триггеры.

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



Выбор используемых средств обеспечения целостности данных

Количество применимых средств обеспечения целостности данных весьма велико. В связи с этим возникает проблема выбора наиболее подходящего варианта. Для этого необходимо прежде всего провести классификацию ограничений. Некоторые из oi раничений имеют довольно четко обозначенную область применения (к hpim относятся ограничения первичного и внешнего ключа, а также ограничения уникальности). Поэтому речь может идти лишь о том, должны ли они использоваться в конкретной таблице или нет. С другой стороны, функции ограничений других типов и прочих средств обеспечения целостности данных в определенной степени перекрываются, поэтому задача выбора средств, наиболее подходящих в конкретной ситуации, может оказаться довольно сложной. Вообще говоря, в настоящей главе были приведены основные сведения о преимуществах и недостатках каждой из рассматриваемых конструкций, а в табл. 5.3 эти сведения кратко представлены вместе для удобства пользования.

Таблица 5.3. Преимущества и недостатки средств обеспечения целостности данных

Средство поддержки целостности данных

Преимущества

Недостатки

Ограничения целостности

Правила и заданные по умолчанию значения

Триггеры.

Обеспечивают высокое

быстродействие.

Позволяют ссылаться на другие

столбцы.

Вызываются до начала выполнения основной обрабатывающей части оператора.

Совместимы со стандартом ansi

Являются независимыми

объектами.

Допускают повторное

использование.

Могут быть привязаны к типам

данных.

Вызываются до начала выполнения основной обрабатывающей части оператора

Допускают исключительно широкое применение.

Позволяют ссылаться на другие столбцы и другие таблицы. Обеспечивают даже возможность использовать инфраструктуру .NET для доступа к информации, внешней по отношению к СУБД SQL Server

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

Отличаются немного менее низким быстродействием, чем ограничения.

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

Вызываются после начала выполнения основной обрабатывающей части оператора.

Характеризуются высокими издержками



1 ... 53 54 55 [ 56 ] 57 58 59 ... 346

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