|
Программирование >> Sql: полное руководство
Теперь каждому менеджеру по продажам можно разрешить доступ либо к пред, ставлению eastreps, либо к westreps и одновременно запретить доступ к другому представлению, а также к таблице salesreps. Таким образом, менеджер по продажам получает собственное представление таблицы salesreps, в котором отражены только данные о служащих соответствующего региона. Такие представления, как eastreps или westreps, называются горизонтальными. Как видно из рис. 14.3, горизонтальное представление разрезает исходную таблицу по горизонтали. В него входят все столбцы исходной таблицы и только часть ее строк. Горизонтальные представления удобно применять, когда исходная таблица содержит данные, которые относятся к различным организациям или пользователям. Они предоставляют каждому пользователю личную таблицу , содержащую только те строки, которые ему необходимы. Представление EASTREPS Представление WESTREPS
Таблица SALESREPS
iPnc. J4.3. fl 0ризоитстьны}сЩтставлвиияга6шшзЛ]ЬЕЗВЕР8 Вот еще несколько примеров горизонтальных представлений: Создать представление, показывающее офисы только восточного региона. CREATE VIEW EASTOFFICES AS SELECT * FROM OFFICES WHERE REGION = Eastern Создать представление для Сью Смит (идентификатор служащего 102), показывающее заказы, сделанные только ее клиентами. CREATE VIEW SDEORDERS AS SELECT * FROM ORDERS WHERE CUST IN (SELECT CUST NUM FROM CUSTOMERS WHERE CUST REP = 102) Создать представление, показывающее только тех клиентов, которые в настоящий момент сделали заказы на сумму более $30000. CREATE VIEW BIGCUSTOMERS AS SELECT * FROM CUSTOMERS WHERE 30000.00 < (SELECT SUM(AMOUNT) FROM ORDERS WHERE CUST = CUST NUM) В каждом из приведенных примеров источником данных для представления является одна исходная таблица. Представление задается с помощью инструкции select * и потому содержит те же столбцы, что и исходная таблица. Предложение where выбирает, какие строки исходной таблицы войдут в представление. Вертикальные представления Другим распространенным применением представлений является офаничение доступа к столбцам таблицы. Например в учебной базе данных, отделу, обрабатывающему заказы, для выполнения своих функций может пофебоваться следующая информация: имя, идентификатор служащего и офис, в котором он работает. Но отделу вовсе не обязательно знать плановый и фактический объемы продаж того или иного служащего. Такой избирательный образ таблицы salesreps можно получить с помощью следующего представления: Создать представление, показывающее избранную информацию о служащих. CREATE VIEW REPINFO AS SELECT EMPL NUM, NAME, REP OFFICE FROM SALESREPS Разрещив отделу обработки заказов доступ к этому представлению и одновременно запретив доступ к самой таблице salesreps, можно офаничить доступ к конфиденциальной информации, каковой являются фактический и плановый объемы продаж. Такие представления, как repined, называются вертикальньили. Как видно из рис. 14.4, вертикальное представление разрезает исходную таблицу по вертикали. Вертикальные представления часто применяются там, где данные используются различными пользователями или фуппами пользователей. Они предоставляют каждому пользователю личную таблицу , содержащую только те столбцы, которые ему необходимы. Представление flEPlNFO
Таблица SALESREPS Рис. 14.4. Вертикальное представление таблицы SALESREPS Вот еще несколько примеров вертикальных представлений: Для отдела обработки заказов создать представление таблицы offices, которое включает в себя идентификатор офиса, название города и название региона. CREATE VIEW OFFICEINFO AS SELECT OFFICE, CITY, REGION FROM OFFICES Создать представление таблицы customers, включающее только имена клиентов и имена закрепленных за ними служащих. CREATE VIEW CDSTINFO AS SELECT COMPANY, CDST REP FROM CUSTOMERS В каждом из приведенных примеров источником данных для представления является одна исходная таблица. Список имен избранных столбцов в инструкции create view определяет, какие столбцы исходной таблицы войдут в представление Поскольку это вертикальные представления, в них входят все строки исходных таблиц, и предложение where в определении представления не указывается Смешанные представления При создании представлений обычно требуется разделять таблицу и по вертикали, и по горизонтали. На самом деле в SQL отсутствуют понятия горизонтального и вертикального представлений. Они просто помогают вам понять, каким образом из исходной таблицы формируется представление. Обычным делом является использование представлений, разделяющих исходную таблицу как в горизонтальном, так и вертикальном направлении. Например: Создать представление, включающее идентификатор клиента, имя компании и лимит кредита для всех клиентов Билла Адамса (идентификатор служащего 105) CREATE VIEW BILLCUST AS SELECT CDST NUM, COMPANY, CREDIT LIMIT FROM CUSTOMERS WHERE CUST REP = 105 Данные полученного представления являются подмножеством строк и столбцов таблицы customers. В этом представлении будут видны только те столбцы, которые явно указаны в предложении select, и только те строки, которые удовлетворяют условию отбора в предложении where. Сгруппированные представления Запрос, определяющий представление, может содержать предложение group by. Представление такого типа называется сгруппированным, поскольку данные в нем являются результатом запроса с фуппировкой. Сфуппированные представления выполняют ту же функцию, что и запросы с фуппировкой. В них родственные сфОКИ данных объединяются в фуппы и для каждой фуппы в таблице результатов запроса создается одна строка, содержащая итоговые данные по этой фуппе. С помощью сфуппированного представления запрос с фуппировкой превращается в виртуальную таблицу, к которой в дальнейщем можно обращаться.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |