4. Выберите таблицу jobsи щелкните на кнопке Add (или дважды щелкните на таблице jobs) для включения таблицы jobs в представление.
5. Выберите таблицу employee и щелкните на кнопке Add (или дважды щелкните на таблице employee) для включения таблицы employee в представление.
6. Щелкните на кнопке Close, чтобы закрыть диалоговое окно Add Table.
7. Выберите поля в каждой таблице, т.е. поле job_desc в таблице jobs и поля fname и lname в таблице employee.
8. Проверьте созданное представление, щелкнув на кнопке Run с изображением восклицательного знака или щелкнув правой кнопкой мыши на пустом поле со схемой представления, а затем выбрав из контекстного меню команду Run. Результат проверки созданного представления показан на рис. 3.17.
РИС. 3.17. Результаты создания и выполнения нового представления в окне конструктора представлений программы SQL Enterprise Manager
9. Сохраните новое представление, щелкнув на кнопке Save или щелкнув правой кнопкой мыши на пустом поле со схемой представления, а затем выбрав из контекстного меню команду Save.
НА ЗАМЕТКУ
Для указания имени представления можно использовать соглашение об именах с суффиксом _view, например SpecialCustomers_view. Это позволяет пользователям сразу же определить, что они имеют дело с представлением , а не с таблицей. Конечно, для этого можно использовать любое соглашение об именах, либо вообще не использовать его.
10. В диалоговом окне Save As (Сохранить как) введите имя представления и щелкните на кнопке OK. Здесь можно указать любое имя, но в данном примере используется EmployeeJobs_view.
После создания представления EmployeeJobs_view в базе данных появится еще один объект, которым можно манипулировать так же, как любой простой таблицей, несмотря на то что это результат объединения двух таблиц. Таким образом, можно получить более короткие и простые команды SQL на основе этого одного объекта, но по отношению к прежней корректно структурированной (нормализованной) базе данных.
Аналогично можно создать представление на основе вычислений или манипуляций с данными таблицы. Предположим, что нужно извлечь имена сотрудников в виде одного поля с именем и фамилией в формате имя, фамилия. Для этого можно создать следующее представление:
CREATE VIEW EmployeeNames_view AS
SELECT lname + ', ' + fname AS Name FROM employee
Использование представлений в приложениях
Представление — это конструкция, которая позволяет управлять процессом извлечения информации из базы данных SQL Server. Это управление может осуществляться несколькими способами. В представлении можно ограничить количество строк или столбцов, что позволяет управлять данными, возвращаемыми пользователю. Для этого необходимо создать критерий отбора, который известен только разработчику базы данных, или предоставить пользователям доступ к данным на основе разрешений системы безопасности. Каждый объект базы данных — таблица, представление, хранимая процедура — может быть ассоциирован с пользователем или группой системы безопасности. В базах данных, которые используют преимущества представлений и хранимых процедур, прямой доступ к таблицам обычно ограничивается администратором базы данных. Клиентские приложения при этом ограничены только доступом к связанным представлениям или хранимым процедурам, которые, в свою очередь, отвечают за извлечение данных из основных таблиц.
Создание скрытого поля — еще один способ ограничения доступа. При этом данные такого поля не возвращаются пользователю, а отфильтровываются с помощью представления. Клиентскому приложению даже не будет известно, что существуют еще какие-либо данные, поскольку оно будет ограничено лишь данными представления.
Практически все профессиональные серверы баз данных SQL ограничивают непосредственный доступ к базе данных. Помимо ограничения доступа к строкам и полям, сокрытие таблиц баз данных с помощью представлений позволяет изменять их незаметно для клиентских приложений.
Кроме этого, с помощью компонентов среднего уровня можно отделить изменения структуры базы данных от изменений бизнес-правил. Эти компоненты аналогичны представлениям и хранимым процедурам тем, что скрывают изменения структуры базы данных от клиентского приложения. Помимо этого, существует еще одно преимущество использования таких компонентов по сравнению с представлениями и хранимыми процедурам SQL Server: они упрощают процесс программирования, возвращают данные в виде объектов, а не строк и столбцов, а также не привязаны к конкретной СУБД или языку программирования. Более подробно компоненты среднего уровня рассматриваются в главе 12, "Web-службы и технологии промежуточного уровня".
Читать дальше