Программирование >>  Sql: полное руководство 

1 ... 111 112 113 [ 114 ] 115 116 117 ... 264


Теперь каждому менеджеру по продажам можно разрешить доступ либо к пред, ставлению eastreps, либо к westreps и одновременно запретить доступ к другому представлению, а также к таблице salesreps. Таким образом, менеджер по продажам получает собственное представление таблицы salesreps, в котором отражены только данные о служащих соответствующего региона.

Такие представления, как eastreps или westreps, называются горизонтальными. Как видно из рис. 14.3, горизонтальное представление разрезает исходную таблицу по горизонтали. В него входят все столбцы исходной таблицы и только часть ее строк. Горизонтальные представления удобно применять, когда исходная таблица содержит данные, которые относятся к различным организациям или пользователям. Они предоставляют каждому пользователю личную таблицу , содержащую только те строки, которые ему необходимы.

Представление EASTREPS


Представление WESTREPS

EMPL NUH

NAHE

Sue Smith

1 arry Fitch

n псу Afigel 11

<7

Таблица SALESREPS

EHPLNUM

NAHE

SALES

Bill Adams

$367,911 00

Mary Jones

$392,725 00

Sue Smith

$474,050,00

Sam Clark

/ /

$299,912 00

Bob Smith

$142,594 00

Oan Roberts

$305,673 00

Tom Snyder

$75,985 00

Larry Fitoh

$361,865 00

Paul Crus

$286,775 00

Nancy Ange11i

J I-

$186,042.00

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

EHPL Nl)H

NAHE

REP.OFFICE

Bill A3ams

Mary Jones

Sue Smith

Sam Clark

8oli Saith

Dan Roberts

Tom Snyder

NULL

Larry Fitch

Paul Cruz

Nancy Angelii

EHPL NUN

NAHE

BEP OfflCE

TITLE

Н1ЯЕ 0ДТЕ

НДИДЗЕР

QUOTA

SALES

Bill Adams

Sales Pep

12-РЕВ-8в

$350,000 00

$367 911 00

Kary Jones

Sales Pep

12-0CT-89

$300 ООО 00

$392,725 00

Sue Smith

Sales Rep

lO-OEC-86

$350,000 00

$474.050 00

Sam Ciark

VP Sales

14-JUN-ee

NULL

$275,000 00

$299,912 00

Bob Smith

Sales Mgr

19-HAY-87

$200,000 00

$142.594 00

Dan Roberts

Sales Rep

2О-0СТ-в6

$300,000 00

$305,673 00

Tom Snyder Larry Fitch

NULL

Sales Rep

13-JAN-90

NULL

$75,085 00

Sales Hgr

12-0CT-89

$350,000 00

$361.865 00

Paul Cruz

Saies Rep

01-HAR-B7

$275,000 00

$286,775 00

Nancy Angel 11

Saies Rep

14-HOV-ee

$300,000 00

$186,042 00

Таблица 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. Представление такого типа называется сгруппированным, поскольку данные в нем являются результатом запроса с фуппировкой. Сфуппированные представления выполняют ту же функцию, что и запросы с фуппировкой. В них родственные сфОКИ данных объединяются в фуппы и для каждой фуппы в таблице результатов запроса создается одна строка, содержащая итоговые данные по этой фуппе. С помощью сфуппированного представления запрос с фуппировкой превращается в виртуальную таблицу, к которой в дальнейщем можно обращаться.



1 ... 111 112 113 [ 114 ] 115 116 117 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика