- •Введение
- •1. Основные понятия архитектуры клиент-сервер
- •1.1. Преимущества архитектуры клиент-сервер
- •1.2. Основные понятия и компоненты архитектуры
- •1.3. Звенья
- •1.4. Серверы баз данных
- •2. Основные понятия, объекты и язык т-sql субд ms sql Server 2005
- •2.1. Состав и назначение баз данных в ms sql Server
- •2.2. Основные этапы работы с sql Server
- •2.3. Используемые типы данных в sql Server
- •2.4. Введение в Transact-sql (t-sql)
- •2.4.1. Выражения
- •2.4.2. Переменные
- •2.4.3. Преобразование типов
- •2.4.4. Управляющие конструкции т-sql
- •2.4.5. Описание примера базы данных
- •2.4.6. Управление данными (язык sql)
- •2.4.6.1. Типы команд sql
- •2.4.6.2. Извлечение данных
- •2.5. Представления
- •2.5.1. Создание и удаление представлений
- •2.5.2. Обновление данных в представлениях
- •2.5.3. Преимущества и недостатки представлений.
- •Независимость от данных
- •2.6. Хранимые процедуры
- •2.6.1. Понятие хранимой процедуры
- •2.6.2. Типы хранимых процедур
- •2.6.3. Создание, изменение и удаление хранимых процедур
- •2.6.4. Выполнение хранимой процедуры
- •3. Использование ms sql Server Management Studio для работы с объектами базы данных
- •3.1. Описание учебной базы данных «Realizations of goods» (Реализация товаров)
- •3.2. Создание и сохранение базы данных
- •3.3. Создание и работа с представлениями (запросы)
- •3.4. Создание и работа с хранимыми процедурами
- •4. Создание клиент-серверного приложения в Visual Basic
- •4.1. Элемент управления ms ado data Control
- •4.2. Элемент управления ms dataGrid Control
- •4.3. Клиент-серверное приложение «Реализация товаров»
- •4.3.1. Постановка задачи
- •4.3.2. Состав пользовательского интерфейса и программная реализация
- •4.3.3. Графическое формирование значений свойств элементов Adodc и DataGrid
- •5. Практические задания для самостоятельной работы
- •Вариант 1. «Жильё»
- •Вариант 2. «Жители»
- •Вариант 3. «Население»
- •Вариант 4. «Вакансии»
- •Вариант 5. «Поставщики-детали»
- •Литература
2.5. Представления
2.5.1. Создание и удаление представлений
Представления, или просмотры (VIEW), представляют собой временные, производные (иначе - виртуальные) таблицы и являются объектами базы данных, информация в которых не хранится постоянно, как в базовых таблицах, а формируется динамически при обращении к ним [6,7,13]. Обычные таблицы относятся к базовым, т.е. содержащим данные и постоянно находящимся на устройстве хранения информации. Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц. Применение представлений позволяет разработчику базы данных обеспечить каждому пользователю или группе пользователей наиболее подходящие способы работы с данными, что решает проблему простоты их использования и безопасности. Содержимое представлений выбирается из других таблиц с помощью выполнения запроса, причем при изменении значений в таблицах данные в представлении автоматически меняются. Представление - это фактически тот же запрос, который выполняется всякий раз при участии в какой-либо команде. Результат выполнения этого запроса в каждый момент времени становится содержанием представления. У пользователя создается впечатление, что он работает с настоящей, реально существующей таблицей.
Представление - это предопределенный запрос, хранящийся в базе данных, который выглядит подобно обычной таблице и не требует для своего хранения дисковой памяти. Для хранения представления используется только оперативная память. В отличие от других объектов базы данных представление не занимает дисковой памяти за исключением памяти, необходимой для хранения определения самого представления.
Создание и изменение представлений в стандарте языка и реализации в MS SQL Server совпадают и представлены следующей командой:
<определение_представления> ::=
{CREATE | ALTER} VIEW имя_представления
[(имя_столбца [,...n])]
[WITH ENCRYPTION]
AS SELECT_оператор
[WITH CHECK OPTION]
Рассмотрим назначение основных параметров.
Служебное слово CREATE применяется для создания, а ALTER - для изменения представления.
По умолчанию имена столбцов в представлении соответствуют именам столбцов в исходных таблицах. Явное указание имени столбца требуется для вычисляемых столбцов или при объединении нескольких таблиц, имеющих столбцы с одинаковыми именами. Имена столбцов перечисляются через запятую, в соответствии с порядком их следования в представлении.
Параметр WITH ENCRYPTION предписывает серверу шифровать SQL-код запроса, что гарантирует невозможность его несанкционированного просмотра и использования. Если при определении представления необходимо скрыть имена исходных таблиц и столбцов, а также алгоритм объединения данных, необходимо применить этот аргумент.
Параметр WITH CHECK OPTION предписывает серверу исполнять проверку изменений, производимых через представление, на соответствие критериям, определенным в операторе SELECT. Это означает, что не допускается выполнение изменений, которые приведут к исчезновению строки из представления. Такое случается, если для представления установлен горизонтальный фильтр и изменение данных приводит к несоответствию строки установленным фильтрам. Использование аргумента WITH CHECK OPTION гарантирует, что сделанные изменения будут отображены в представлении. Если пользователь пытается выполнить изменения, приводящие к исключению строки из представления, при заданном аргументе WITH CHECK OPTION сервер выдаст сообщение об ошибке и все изменения будут отклонены.
Все приведенные ниже примеры используют учебную базу данных, описанную в разделе 2.4.5.
Пример 2.13. Показать в представлении клиентов из Москвы.
Создание представления:
CREATE VIEW view1 AS
SELECT КодКлиента, Фамилия, ГородКлиента
FROM Клиент
WHERE ГородКлиента='Москва'
Выборка данных из представления:
SELECT * FROM view1
Обращение к представлению осуществляется с помощью оператора SELECT как к обычной таблице.
Представление можно использовать в команде так же, как и любую другую таблицу. К представлению можно строить запрос, модифицировать его (если оно отвечает определенным требованиям), соединять с другими таблицами. Содержание представления не фиксировано и обновляется каждый раз, когда на него ссылаются в команде. Представления значительно расширяют возможности управления данными. В частности, это прекрасный способ разрешить доступ к информации в таблице, скрыв часть данных.
Так, в примере 2.13 представление просто ограничивает доступ пользователя к данным таблицы Клиент, позволяя видеть только часть значений.
Допустима следующая команда:
INSERT INTO view1 VALUES (12,'Петров', 'Самара')
В этом случае, строка будет добавлена с помощью представления view1 в таблицу Клиент. Однако, когда информация будет добавлена, строка исчезнет из представления, поскольку название города отлично от Москвы. Иногда такой подход может стать проблемой, т.к. данные уже находятся в таблице, но пользователь их не видит и не в состоянии выполнить их удаление или модификацию. Для исключения подобных моментов служит WITH CHECK OPTION в определении представления. Фраза размещается в определении представления, и все команды модификации будут подвергаться проверке.
Пример 2.14. Создание представления с проверкой команд модификации.
ALTER VIEW view1
SELECT КодКлиента, Фамилия, ГородКлиента
FROM Клиент
WHERE ГородКлиента='Москва'
WITH CHECK OPTION
Для такого представления вышеупомянутая вставка значений будет отклонена системой.
Таким образом, представление может изменяться командами модификации, но фактически модификация воздействует не на само представление, а на базовую таблицу.
Представление удаляется командой:
DROP VIEW имя_представления [,...n]
