Тема 1 Введение в SQL сервер.

Цель: Изучить назначение SQL Server X.0. Познакомится с архитектурой баз данных.

Вопросы лекции:

1.     Назначение SQL Server X.0. 

2.     Архитектура базы данных, физическая, логическая.

3.     Пользовательские типы данных.

 

1. Исторически первым способом организации вычислений стала централизованная обработка информации. Все данные хранились и обрабатывались на центральном компьютере –мейнфрейме. К менфрейму подключались терминалы, функциональные возможности которых ограничивались лишь выводом результатов и передачей кодов нажатых клавич на центральный компьютер.  Чем больше терминалов было подключено, тем более мощный компьютер требовался и тем дороже обходились эти вычисления. 

На смену пришла сетевая архитектура «клиент-сервер». При использовании  этой архитектуры, как и при центарлизованной обработке информации также нобходимо наличие центрального комьютера –сервера.  Но его функциональные задачи иные. Клиентские компьютеры запрашивают у сервера необходимые данные, выполняют обработку и отсылают обратно. Приложения, написанные для архтектуры «Клиент-сервер», обычно состоят из раздельных серверныйх  клиентских компонентов. Рассмотрим термины, употребляемые при работе с архитектурой «клиент-сервер»:

Сервером называется компьютер, предоставляющий доступ к своим ресурсам для других компьютеров, называемых клиентами.

 Клиент может быть  одного из двух типов:  Толстый клиент   Тонкий клиент

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

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

Все права и логика обработки данных хранятся на сервере и лишь вызываются клиентом.

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

Использование системы управления базами данных, построенной по архитектуре «клиент-сервер», дает свои преимущества:

o                       Централизованное хранение данных

o                       Уменьшение сетевого трафика (освобождается сеть)

o                       Более удобное администрирование баз данных

o                       Необходимо ясно представлять, что клиент и сервер термины, означающие не только роль компьютера в сети. Приложения также могут играть роли клиентов и серверов. Клиентское приложение инициирует запрос, а серверное приложение обрабатывает его и возвращает результат  работы клиенту. Для осуществления этого взаимодействия необходим механизм, позволяющий организовать доступ клиента к серверу. Этот механизм реализуется через специальные интерфейсы программирования (Application Programming Interface-API)  доступа к базам данных. Для обращения к базам данных SQL Server X.0

 Можно использовать интерфейсы OLEDB и ODBC.  Если необходимо обратиться к данным из приложения, написанного на языке высокого уровня, можно использовать специализированные  API active XData Objiect (ADO), DNA, RDO.   Интерфейсы OLEDB и ODBC являются встроенными интерфейсами. Это означает. Что запрос отправляется непосредственно серверу? Избегая дополнительных трансформаций. При использовании других интерфейсов и API запрос сначала преобразуется в поддерживаемый фрмат и уже затем отправлется серверу. Все API реализованы в виде,dll файлов, которые взаимодействуют с SQL Server X.0 через специальную сетевую библиотеку клиента.

Назначение SQL Server X.0

Существует несколько основных направлений использования СУБД. Каждое из них имеет свои характерные свойства, диктующие требования к построению специализированных систем. Можно выделить два основных подхода к проектированию систем на основе SQL Server X.0

o                       SQL Server X.0  как система поддержки принятия решения.

o                       SQL Server X.0 как система управления обработки транзакций.

В зависимости от того, какие задачи стоят перед вами при разработке баз данных, необходимо выбрать то или иное направление. Наиболее типичное использование SQL Server X.0

 - система управления обработкой транзакции.

 

2. Хранятся в базах данных. Структуру базы данных можно рассматривать с двух сторон:

логической и физической.

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

Один сервер SQL Server может поддерживать множество баз данных, к которым одновременно могут обращаться тысячи пользователей. Для работы SQL Server используют 4 системных базы данных (master, Msdb, Tempdb, Model). Кроме того, в комплект поставки также включены две пользовательских базы данных (Pubs, Northwind), специально предназначенные для экспериментов. Все баз данных, как пользовательские, так и системные физически организованы одинаково.

Физическая архитектура базы данных

Каждая база данных имеет минимум два файла: один для журнала транзакций и один для базы данных. Рассмотрим структуру файла базы данных.

Основная единица хранения данных на уровне файла базы данных - это страница (page). В виртуальной системе хранения SQL Server страница представляет собой блок фиксированной длины, обрабатываемый при дисковых операциях ввода/вывода как единое целое. Если пользователь обращается к одной строке данных, с диска будет считана вся страница, даже если в ней записаны еще и другие строки. Каждая страница имеет объем 8192 байта. Первые 96 байт, страницы отводятся под заголовок, в котором хранится системная информация о типе страницы, объеме свободного места на странице и идентификационном номере объекта (таблицы или индекса), являющегося владельцем страницы (ID object owner). Имеется шесть следующих типов страниц:

Data - в станицах этого типа хранятся данные, исключая данные типа text, ntext и image.

Index - страницы этого типа используются для хранения информации об индексах

Text/Image - в страницах этого типа хранятся данные типа text, ntext, image

Global Allocation Map - этот тип страниц используется для хранения информации об использовании

экстернов (групп страниц)

Page Free Space - в страницах этого  типа хранится информация о свободном пространстве на

страницах

Index Allocation Map - страницы этого типа хранят информацию об экстернах, используемых

таблицами и индексами

Страницы типа Data содержат информацию о данных, исключая данные типа text, ntext, image. Для каждой строки данных таблицы на странице выделяется фиксированное пространство, куда заносятся данные из колонок строки. Строки располагаются на странице последовательно сразу же после заголовка. В конце каждой страницы имеется таблица смещений строк (row offset table), в которой указывается смещение начала каждой строки относительно начала страницы. Смещения строк располагаются в порядке, обратном порядку размещения строк на странице.

Страница является минимальным блоком, который сервер выделяет для хранения данных. Для более эффективного управления страницами SQL Server использует группы страниц, или экстерны (extern). Экстерн является базовым блоком, используемым для хранения данных таблиц и индексоз, то есть существует только для страниц типа Data, Index, Text/ Image. Каждый экстерн содержит 8 страниц и занимает 64 Кбайт.

Каждая страница имеет своего владельца. В зависимости от того, принадлежат ли зее страницы одному владельцу, используется один из двух типов экстентов:

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

Uniform - когда для хранения данных одного владельца выделено 8 страниц в различных экстентах типа Mixed, они автоматически объединяются в экстент типа Uniform. В результате данные становятся более упорядоченными, что позволяет оптимизировать операции дискозого ввода/вывода, ускоряет операции поиска и массивного обновления. Экстент типа Uniform всегда содержит страницы, являющиеся частью одного объекта.

SQL Server использует страницы типа Global Allocation Map для хранения информации о свободных экстентах. При этом используются два типа битовых полей:

Global Allocation Map (GAM) - поля этого типа хранят информацию о том, используется конкретный экстент для хранения данных или он пуст. Каждый бит в GAM соответствует одному экстенту. Если бит установлен в 1, то экстент свободен и может быть выделен. Одна страница GAM может хранить информацию об использовании 64000 экстентов, что соответствует примерно 4 Гбайт банных. Shared Global Allocation Map (SGAM) - подобно GAM, одна страница типа SGAM может описать 64000 экстентов, или около 4 Гбайт данных. Каждый бит страницы соответствует одному экстенту. Если бит для конкретного экстента установлен в 1, то этот экстент имеет тип Mixed и как минимум одна страница в этом экстенте свободна и может быть использована. Если бит установлен в 0, то либо экстент имеет тип Uniform, либо все страницы экстента типа Mixed заняты.

Использование битовых полей GAM и SGAM позволяет быстро найти свободную страницу в экстенте типа Mixed и упрощает управление информацией об использовании экстентов. Кроме того, использование двух самостоятельных полей позволило уменьшить объем управляющей информации и повысить производительность. Битовые поля GAM и SGAM содержат информацию только о том, используется ли конкретная страница. Для хранения информации о количестве свободного пространства страницах типа Data, Index и Text/Image используется страницы типа Page Free Space (PFS). Каждая такая страница содержит информацию о свободном пространстве на 8000 страниц. Каждый байт страницы PFS соответствует отдельной странице и может описывать состояния заполнения в проценте (0, 1-50, 51-80, 81-95, 96-100). Страницы PFS используются для быстрого поиска страниц, имеющих необходимое количество свободного пространства.

Страницы PFS облегчают поиск свободных страниц, но они не имеют информации о том, какому владельцу принадлежит та или иная страница. Для отслеживания информации о страницах, принадлежащих одному объекту-владельцу, используются страницы типа Index Allocation Map (IAM). Для каждого владельца создается минимум одна страница IAM. Каждая страница IAM имеет заголовок, в котором хранится информация об идентификационном номере объекта-владельца страниц, а также смещении первого экстента, с которого начинается область IAM. Страницы IAM создаются при необходимости и могут располагаться в произвольном месте файла. Структура IAM представлена битовым полем, каждый из битов которого описывает единственный экстент. Если бит установлен в 1, то соответствующий экстент содержит страницы, принадлежащие описанному в IAM владельцу. Если же бит установлен в 0, то данный экстент не имеет страниц, принадлежащих нужному владельцу.

При необходимости вставить несколько строк в таблицу SQL Server просматривает страницы IAM для поиска экстентов, содержащих принадлежащие этой таблице страницы. Когда экстент найден, просматриваются соответствующие страницы PFS для поиска свободных страниц. Если ни одна из страниц не имеет достаточного места для вставки требуемого количества строк, то для объекта (в данном случае - таблицы) выделяется новый экстент. Причем, если база данных имеет несколько файлов, экстенты выделяются в каждом файле в равных пропорциях. Все страницы в файле нумеруются последовательно, начиная с 0 для самой первой страницы. Каждый файл базы данных имеет уникальный идентификационный номер (ID). Комбинация номера страницы и идентификационного номера файла позволяет однозначно идентифицировать страницу в базе данных. В начале файла располагается страница заголовка файла (Page 0), в которой хранятся атрибуты файла. Сразу же за ней располагается страница PFS (Page 1), в которой хранится информация об использовании страниц в экстенте. Затем располагаются страницы битовых полей GAM (Page 2) и SGAM (Page 3) . Страницы IAM создаются в любом месте файла. На каждые 8000 страниц данных создается новая страница PFS. Страницы GAM и SGAM создаются на каждые 64000 экстентов, или на каждые 512000 страниц.

Файлы и группы файлов

Каждая база данных имеет минимум два файла: один для хранения данных и один для журнала транзакций. Более сложные базы данных имеют несколько файлов для данных и журнала транзакций.

Эти файлы могут объединяться в группы для упрощения администрирования базы данных. Каждый файл может располагаться на отдельном диске.

База данных имеет в своем составе файлы следующих типов:

primary - основной файл. Файл этого типа содержит системную информацию о самой базе данных и ее объектах. В этом файле размещаются системные таблицы и описание объектов базы данных. В primary-файле могут также храниться данные. Каждая база данных имеет в своем составе файл типа primary, причем только один файл в базе данных может относиться к этому типу. По умолчанию файлам типа primary присваивается расширение *.mdf.

Secondary - вторичный файл. Файлы этого типа.не содержат системную информацию и используются только для хранения данных. Все данные, которые не разместились в файле primary, располагаются в файлах secondary. База данных может вообще не иметь файла типа secondary или, наоборот, иметь их несколько. Часто в базе данных создается множество файлов secondary, чтобы распределить данные среди нескольких физических дисков. По умолчанию файлам типа secondary присваивается расширение *.ndf.

Transaction log - журнал транзакций. Файлы этого типа используются для хранения информации о транзакциях, выполненных в базе данных. Каждая база данных имеет как минимум один файл журнала транзакций. Можно использовать несколько файлов для ускорения операций дискового ввода/вывода, так как данные о транзакциях записываются параллельно во все файлы. Это напоминает чередующийся набор дисков для файловой системы NTFS. По умолчанию файлам типа transaction log присваивается расширение *.ldf.

Каждый файл, используемый в базе данных, имеет два имени:

Logical File Name - логическое имя файла. Это имя используется в командах Transact-SQL при ссылке на конкретный файл

OS File Name - имя файла в операционной системе. Под этим именем файл хранится на жестком диске

В SQL Server 7.0 введена возможность автоматического роста базы данных. Все файлы самой базы данных (как файлы данных, так и файлы журнала транзакций) могут автоматически увеличиваться (auto grow). Эта возможность определяется при создании файла. Шаг прироста можно установить в процентах от первоначального размере или в мегабайтах. Дополнительно можно указать максимальный размер, до которого файлу разрешено увеличиваться. Если максимальный размер не указывается, файл будет увеличиваться до тех пор, пока не займет все свободное пространство на диске.

Если файлы базы данных часто увеличиваются, то может появиться фрагментация этих файлов. Это случается, если на диске, выбранном для размещения файлов базы данных, имеется множество других часто изменяемых файлов. Все же рекомендуется размещать файлы базы данных на всех доступных физических дисках. "Тяжелые" данные и индексы лучше всего размещать на разных физических дисках.

Файлы могут объединяться в группы для упрощения администрирования и управления физическим размещением объектов базы данных. В некоторых системах правильное использование групп файлов может дать значительное увеличение производительности. Группы файлов бывают следующих типов:

Primary File Group - основная группа файлов. Эта группа файлов содержит primary-файл и все файлы, не включенные в другие группы. Все страницы системных таблиц баз данных располагаются в основной группе файлов. База данных может иметь только одну основную группу файлов User-defined File Group - пользовательская группа файлов. В пользовательские группы файлов включаются все файлы, указанные в параметре FILEGROUP при создании (CREATE DATABASES) или изменении (ALTER DATABASES) базы данных. В базе данных можно создать несколько пользовательских групп файлов с произвольным набором файлов.

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

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

Логическая архитектура базы данных.

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

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

Полное имя объекта базы данных содержит четыре идентификатора: имя сервера, имя базы данных, имя владельца и собственно имя объекта:

[[[server_name.]database_name.]ower_name.]object_name

Для ссылки на колонку таблицы или представления после имени объекта добавляется имя колонки: [[[server_name.]database_name.]ower_name.]object_name.column_name

SQL Server имеет 9 видов объектов, к которым могут обращаться пользователи:

 

Tables – таблицы

View - представления

Index - индексы

Trigger - триггеры

User-defined data type - пользовательские типы данных

Default - умолчания

Rule - правила

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

Stored procedure - хранимые процедуры

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

Таблицы.

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

Для создания таблицы средствами Transact-SQL используется команда CREATE TABLE. Если необходимо изменить какие-то параметры таблицы, используется команда ALTER TABLE. Для удаления применяется команда DROP TABLE.

Представления.

Представления (View) представляют собой виртуальные таблицы, определяемые запросом. Подобно реальным таблицам, представления содержат именованные колонки и строки с данными. Для конечных пользователей представление выглядит как таблица, но при этом оно само не содержит данных, а лишь представляет данные, расположенные в таблице. Физически представление реализовано в виде SQL-запроса, на основе которого проводится выборка данных из одной или нескольких таблиц или представлений.

Индексы.

Индексы (Index) предназначены для ускорения операций поиска данных. Индекс определяется для одной или нескольких колонок, называемых индексированными колонками. Индекс содержит отсортированные значения индексированной колонки со ссылкой на строку в исходной таблице.

Триггеры.

Триггерами (Trigger) называется специальный класс хранимых процедур, автоматически запускаемых при добавлении, изменении и удалении данных из таблицы. В зависимости от выполняемых пользователем действий, приводящих к запуску триггера, они делятся на три категории: триггеры изменения (UPDATE TRIGGER) , триггеры вставки (INSERT TRIGGER) и триггеры удаления (DELETE TRIGGER). В SQL Server 7.0 возможно определять для таблицы несколько триггеров каждого типа. Кроме того, действия, выполняемые в одном триггере, могут привести к вызову других триггеров. В этом случае используются вложенные триггеры (nested triggers).

 

3. Пользовательские типы данных (User-defined data type) - это типы данных, создаваемые пользователями. Они создаются на основе системных типов данных. Пользовательские типы данных часто используются, когда в нескольких таблицах необходимо хранить однотипные значения, причем необходимо гарантировать, что колонки в таблице будут иметь одинаковый размер, тип данных и чувствительность к данным NULL.

Для создания пользовательского типа данных используется системная хранимая процедура sp_addtype:

sp_addtype [@typename=] type, [@phystype=] system_data_type [,[@nulltype=] 'nulltype']

 где

type - имя создаваемого типа

system_data_type - системный тип данных, на основе которого создается пользовательский ткп

'null_type' - значение этого аргумента определяет, будет ли пользовательский тип хранить NULL

и может принимать следующие значения: NULL (может), NOT NULL (не может), NONULL

(используется по умолчанию).

Хранимая процедура sp_addtype добавляет описание типа в системную таблицу systypes текущей базы данных. Если необходимо сделать пользовательский тип данных доступным во всех создаваемых базах данных, добавьте этот тип в базу данных model. Пример:

EXEC sp_addtype telephone, 1varchar(24)1, 'NOT NULL1

EXEC sp_addtype fax, 'varchar(24)', 'NULL'

Умолчания.

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

CREATE DEFAULT default AS constant_expression

Где

default - имя умолчания

consntant_expression - само значение

Созданное умолчание само по себе не выполняет никаких действий. Его необходимо связать с какой-нибудь колонкой таблицы или пользовательским типом. Для связывания умолчания используется хранимая процедура:

spbindefault [@defhame = ] 'default', [@objname = ] 'object_name' [, [@futureonly = ] 'futureonlyjflag']

где:

'default' - имя умолчания

'objectname' - имя объекта, к которому привязывается умолчание. Если это колонка таблицы, то

ее запись будет выглядеть в виде : column.table.

'futureonly' - используется только для связывания с пользовательским типом. При значении

futureonly в колонки, основанные на пользовательском типе, изменения не будут внесены

 Для удаления умолчания используется команда DROP DEFAULT defautl [,...]

Перед удалением умолчания, его следует отсоединить от колонки таблицы или пользовательского типа. Это выполняет хранимая процедура spunbindefault:

spunbindefault [@objname = ] 'object_name' [, [@ futureonly =] 'futureonly_flag']

Правила.

Используются для ограничения целостности значений, хранимых в колонке таблицы или в пользовательском типе данных. Правила оставлены для обеспечения обратной совместимости с предыдущими версиями SQL Server. В SQL Server 7.0 правила встроены в определение таблицы. При создании таблицы в параметре CHECK колонки устанавливается ограничение целостности для значений. Для управления значениями в колонке рекомендуется всегда использовать ограничение целостности CHECK. Тем не менее, иногда бывает необходимо использовать правила как отдельные объекты.

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

Для создания правила используется следующая команда Transact-SQL:

CREATE RULE rule AS condition_expression

Где:

Rule- имя правила

Condition_expression - логическое выражение, определяющее условие, накладываемое на значения. В качестве условия можно использовать любые логические команды, арифметические операции, встроенные функции и предикаты (например: In, BETWEEN, LIKE). В выражении нельзя ссылаться на колонки таблиц или любые другие объекты базы данных. В выражении можно использовать одну локальную переменную, начинающуюся с символа @. В качестве имени переменной можно использовать произвольную строку. При выполнении правила переменная будет содержать значение, которое пользователь пытается ввести в колонку, используя команды INSERT или UPDATE. Переменная может использоваться в любых логических операциях:

CREATE RULRE rule_one AS @val>=100 AND @val<170 CREATE RULE rulejwo AS @list In ('RIAC, 'CIT', 'ITIS'.'MIS')

Само по себе правило не выполняет контроля данных. Созданное правило необходимо связать с колонкой таблицы или пользовательским типом данных. Правило не может быть связано с системным типом данных и колонками, имеющими типы данных text, timetamp, image. Для связывания правила с колонкой таблицы или пользовательским типом используется хранимая процедура spbindrule со следующим синтаксисом:

spbindrule [@objname =] 'objname' [, [@ futureonly = ] 'futureonly flag']

Для отвязывания правила используется хранимая процедура sp_unbindrule.

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

Ограничения целостности (Constraints) - это механизмы SQL Server 7.0, обеспечивающие автоматический контроль соответствия данных установленным условиям (или ограничениям), то есть обеспечивающие целостность данных.

Ограничения целостности имеют приоритет над триггерами, правилами и значениями по умолчанию. Оптимизатор запросов использует ограничения целостности для построения оптимального плана исполнения запроса. Ограничения целостности могут применяться на уровне колонки или на уровне таблицы. Ограничения целостности, применяемые на уровне колонки, влияют только на значения, вводимые в эту колонку. Бели одно ограничение целостности применяется для нескольких колонок, то оно работает на уровне таблицы. Например, если ограничение целостности PRIMARY KEY включает одну колонку, то оно работает на уровне колонки. Если же PRIMARY KEY состоит из нескольких колонок, то это ограничение целостности работает на уровне таблицы. Имеются пять классов ограничений целостности, различающихся по функциональности и области применения:

NULL - действует на уровне колонки и пользовательского типа данных. Устанавливая для них ограничение целостности NULL или NOT NULL, можно, соответственно, разрешать или запрещать хранение значений NULL. CHECK (проверка) - это ограничение целостности действует на уровне колонки и ограничивает диапазон значений, которые могут выть сохранены в колонке. При определении этого ограничения целостности для колонки указывается логическое условие вводимых данных. При вводе или изменении данных вводимое значение подставляется в условие. Если в результате проверки возвращается значение TRUE, то изменение данных принимается, в противном случае генерируется сообщение об ошибке. Для одной колонки можно создать несколько ограничений целостности

CHECK.

CREATE TABLE human_salary

(human_name char (20),

Human_avans int,

CONSTRAINT human_avans CHECK (human_avans BETWEEN 0 and 700))

UNIQUE (уникальность) - действует на уровне колонки и гарантирует уникальность значения в колонке. В таблице не может быть двух строк, имеющих одинаковое значение в колонке с установленным ограничением целостности UNICQUE. В отличие от первичного ключа, ограничение целостности UNIQUE допускает хранение значений NULL.

PRIMARY KEY (первичный ключ) - действует на уровне колонки или таблицы. Первичный ключ состоит из одной или нескольких колонок, уникально идентифицирующих строку в пределах таблицы. Если для генерации первичного ключа используется единственная колонка, то для этой колонки должно быть установлено ограничение целостности UNIQUE для гарантии уникальности значений в колонке. Ни одной из колонок, включенных в первичный ключ, не должно быть установлено свойство NULL. В таблице может быть создан только один первичный ключ: CREATE TABLE human

(human_id int PRIMARY KEY,

human_name char (50),...)

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

CREATE TABLE humanorder

(ordernmbr int,

order_sum money FOREING KEY REFERENCES human_id (human_id), order_date date)

Хранимые процедуры.

Хранимые процедуры (Stored Procedure) - представляют собой группу команд TRANSACT_SQL и вызовов других хранимых процедур. Эта группа компилируется и выполняется как единое целое. Каждая хранимая процедура имеет уникальное в пределах базы данных имя. Администратор базы данных может написать хранимую процедуру для выполнения стандартных действий и раздать пользователям права на ее запуск. Для выполнения описанных в хранимой процедуре действий пользователю достаточно вызвать эту хранимую процедуру по имени.

 

Литература:

1  Е. Мамаев  «Microsoft SQL Server 2000», БХВ-Петербург, 2004г.

 

Контрольные вопросы:

1 Что такое структура баз данных?

2 Опишите архитектуру баз данных, используемая в SQL Server.

3 К какой модели баз данных относится в SQL Server?

4 Сколько видов объектов содержит SQL Server? И перечислите их.

5 Что такое хранимая процедура?

6 Что такое триггеры?