Программирование баз данных MS SQL Server (1084479), страница 9
Текст из файла (страница 9)
На рис. 1.2 приведена диаграмма, на которой демонстрируется определенная часть из многочисленных таблиц базы данных АочепспгеьЗогкз. Очевидно, что такая диаграмма не только показывает таблицы, но и описывает многие другие свойства базы данных (хотя для полного понимания смысла диаграмм требуется их более глубокое изучение).
Обратите внимание на крошечные пиктограммы с изображениями ключей и знаков бесконечности. Эти пиктограммы описывают характер связи между таблицами. Более подробные сведения о таких связях приведены в главах 7 и 8, а также даны при описании других диаграмм в настоящей книге.
Представления 17(зедставление — это своего рода виртуальная таблица. Кроме того, представления чаще всего используются полностью аналогично таблицам, хотя сами не содержат каких-либо данных. Представление фактически может рассматриваться как средство получения заранее запланированного отображения и преобразования данных, хранящихся в таблицах.
Соответствующий план хранится в базе данных в форме запроса, а в запросе предусмотрена выборка данных из некоторых (но не обязательно из всех) столбцов, относящихся к одной или нескольким таблицам. При выборке данных могут применяться или не применяться (в зависимости от определения представления) критерии. которым должны соответствовать данные, содержащиеся в представлении. В версиях, предшествующих Я~Е Ьегчег 2000, представления в основном предназначались для использования в качестве средства регламентации того, какие данные может просматривать пользователь. Применяемые при этом ограничения были направлены на достижение двух целей: обеспечение защиты и упрощение использования данных.
Представления позволяют управлять процессом подготовки данных для просмотра пользователем. В частности, если к определенным столбцам таблицы (например, к сведениям о зарплате) должен быть предоставлен доступ только ограниченному кругу пользователей, то может быть создано представление, включающее лишь те столбцы, к которым разрешен доступ всем. Кроме того, представление может быть организовано таким образом, чтобы пользователям не приходилось заниматься поиском среди ненужной информации. Основные сведения о базах данных ЯЩ Бегтег 41 Г~ ~~а~~.,!...~й Г~ффж~ю~фф~~;- ': р:,:Ь ни~ Ряс. 1.2. Диасрамна, соанысесиыующая части базы данных Д<йгапсихаггохка Выше были указаны наиболее важные области применения представлений, но предусмотрена также возможность создания так называемых индексированных представлений. Такие представления в основном не отличаются от всех прочих представлений, если не считать того, что они позволяют создавать индексы на представлениях.
Как описано ниже, создание индекса оказывает определенное влияние на производительность (в основном положительное, а иногда и отрицательное). 0 Представления, которые ссылаются на несколько таблиц, вообще говоря, обеспечивают более высокую производительность по сравнению с индексированными представлениями, поскольку соединения между таблицами формируются заранее. 0 Результаты операций агрегирования, предусмотренных в определении представления, вычисляются заранее и сохраняются в составе индекса; это означает, что операция агрегирования выполняется единожды (при вставке или обновлении строки), а затем полученные результаты могут считываться непосредственно из информации индекса.
42 Глава 1 0 Выполнение операций вставки и удаления связано с более высокими издержками, поскольку индекс на представлении приходится обновлять немедленно; издержки увеличиваются и при выполнении операции обновления, если последняя воздействует на ключевой столбец индекса. Указанные проблемы производительности будут рассматриваться более подробно в главе 10. Хранимые процедуры Хранимые процедуры с самого начала служили основой программной реализации функциональных средств ЗЯЕ Беггег и остаются таковыми даже в эпоху доминирования инфраструктуры .НЕТ.
Вообще говоря, хранимая процедура — это упорядо. ченная последовательность операторов Тгапзасг-БЯ1. (языка запросов М1сгозой БЯ1. Яегчег), оформленных в виде единого логического модуля. В хранимых процедурах допускается использование переменных и параметров, а также операторов управления ходом выполнения и циклических конструкций.
Применение хранимых процедур предоставляет определенные преимущества по сравнению с передачей на сервер отдельных операторов, поскольку хранимые процедуры позволяют обеспечить следующее. (1 Предоставляется возможность вызывать на выполнение непосредственно хранимые процедуры, указывая их короткие имена, а не передавать длинные строки текста, поэтому для выполнения кода хранимой процедуры требуется мень.
ший сетевой трафик. 11 Хранимые процедуры заранее оптимизируются и компилируются, что позволяет экономить значительное время при каждом вызове хранимой процедуры. гз В хранимой процедуре все выполняемые операции осуществляются в виде единого процесса, поэтому пользователь не имеет возможности проанализировать ход выполнения операций.
Это позволяет повысить степень защищенности базы данных или просто скрыть от пользователя всю сложность ее устройства. П Хранимые процедуры могут вызываться из других хранимых процедур, что позволяет обеспечить повторное использование кода, пусть даже в каком-то ограниченном смысле. Кроме того, допускается возможность вводить в хранимые процедуры не только собственные конструкции языка Т-ЯО1., но и программные конструкции любого языка .)чЕТ. Пользовательские функции Пользовательские функции (1)зег Рейпес( гппсг(опз — ()ПЕ) во многом аналогичны хранимым процедурам, но отличаются от них перечисленными ниже особенностями.
С1 Пользовательские функции могут возвращать значения, относящиеся к большинству типов данных ЯЯ. Зегчег. Не допускается использовать в качестве типов возвращаемых значений лишь такие типы, как Сехг, и ехс, 1насЗе, спгзог и 11везсавр. Основные сведения о базах данных БЯЬ Беггег 43 О Пользовательские функции не должны иметь побочных эффектов. По существу, в пользовательских функциях не допускается выполнение каких-либо действий, выходящих за пределы действия самой функции.
Например, в них нельзя модифицировать таблицы, отправлять электронную почту и вносить изменения в значения параметров системы или базы данных. Пользовательские функции во многом аналогичны функциям, используемым в обычном языке программирования, таком как ЧВ.НЕТ или С++. Эти функции принимают несколько параметров и возвращают одно значение.
Различия между пользовательскими функциями ЯЯЬ Яеггег и функциями многих процедурных языков программирования состоят в том, что в них передача параметров осуществляется по значению, поэтому для них не предусмотрен способ передачи параметров, подобный применению ссылки цу Пе1 в языке ЧВ или передачи указателей в языке С++.
Тем не менее пользовательские функции удобны тем, что позволяют возвращать данные в виде специальной таблицы. Дополнительная информация по этой теме приведена в главе 13. Пользователи и роли Такие объекты БОЬ Бегяег, как пользователи и роли, тесно взаимосвязаны. Объекты пользователей в значительной степени эквивалентны учетным записям. Иными словами, объект пользователя представляет собой идентификатор для некоторого лица, желающего войти в систему для работы с СУБД ЯОЬ Яеггег. Любой, кто пожелает зарегистрироваться для работы с СУБД ЯОЬ Яеггег, должен быть представлен с помощью объекта пользователя (прямо или косвенно, в зависимости от применяемой модели защиты).
Пользователи, в свою очередь, могут принадлежать к одной или нескольким ролям. Права на выполнение определенных действий в СУБД БЯЬ Яеггег могут быть предоставлены непосредственно пользователю или роли, к которой принадлежат один или несколько пользователей. Правила Правила и ограничения целостности предоставляют информацию, с помощью которой регламентируются возможности выполнения в таблице определенных действий. Если попытка выполнить операцию обновления или вставки строки приводит к нарушению какого-то правила, то соответствующая попытка вставки или обновления отвергается.
Кроме того, правила могут использоваться для регламентации условий применения типа данных, определяемого пользователем. В отличие от правил, ограничения целостности в действительности не являются объектами, а, скорее, могут рассматриваться как фрагменты метаданных, описывающих конкретную таблицу.
Правила должны рассматриваться только как средство обеспечения обратной совместимости, поэтому их не следует применять при разработке приложений для новой версии ЯОЬ 8еггег. Значения, применяемые по умолчанию Применяемые по умолчанию значения подразделяются на два типа. Во-первых, есть такие применяемые по умолчанию значения, которые представляют собой отдельные объекты, а во-вторых, предусмотрены и такие применяемые по умолчанию 44 Глава 1 значения.