Проектирование схемы приложения. Эффективное использование синонимов в схеме приложения, страница 10

SELECT * FROM inventory

 ID            UNITPRICE      ONHAND       REORDER      DESCRIPTION

-----------     -----------------     -----------------     ----------------      ------------------------

1                 8.97              178                                       200              Yellow Widget

2                 21.4              223                                       150              Blue Widget

3                       87.12                  48                                    50                     Red Widget

4                 6.03              638                        450              Green Widget

.

.

.

SELECT * FROM stock

ID            UNITPRIC       ONHAND       REORDEI       DESCRIPTION

-----------     -----------------     -----------------     ----------------      ------------------------

1                        8.97                   178                            200                    Yellow Widget

2                21.4             223                    150               Blue Widget

3                      87.12                48                                50                     Red Widget

4                6.03             638                    450               Green Widget

.

.

.

INSERT INTO inventory VALUES (5, 7.93, 600, 250, 'Orange Widget’)

INSERT INTO stock VALUES (6, 23.52,300, 150,'Black Widget')

Более ограниченный запрос представления создает представление, соответст­вующее только выбранным столбцам и/или строкам таблицы:

CREATE VIEW reorder AS

SELECT id, onhand, reorder FROM stock

 WHERE onhand < reorder

REORDER — это пример представления, соответствующего отдельным табличным данным таб­личным данным, выбираемым на основе конкретных значений столбцов и строк таблицы STOCK:

SELECT * FROM reorder

 ID      ONHAND        REORDER

------    ---------------      -------------------

 1           178               200

 3           48                 50

.

.

.

Другим примером представления, работающего с конкретными данными, является запрос объединения:

CREATE VIEW orderreport AS

SELECT orders.id "ORDER ID", оrders.orderdate,

item.id "LINE ID", stockid

          FROM orders, item

WHERE item.orderid=orders.id

Когда пользователи работают с представлением ORDERREPORT, Oracle7 объединяет соответствующие строки данных из таблиц ORDERS и ITEM:

SELECT • FROM orderreport

ORDER ID      ORDERDATE           LINE ID               STOCKID

---------------     -------------------        ----------------        ------------------

1               23-MAY-95               1                      4

1               23-MAY-95               2                      2

1                    23-MAY-95                      3                             3

2               23-MAY-95               1                      1

2               23-MAY-95               2                      2

Используемый для представления запрос непосредственно влияет на функцио­нальность полученного в результате представления. Например, пользователи для всех операций DML, включая SELECT, INSERT, UPDATE и DELETE, могут применять простые представления, такие как INVENTORY (в определяющем его запросе имеется ссылка только на одну таблицу базы данных). Однако со сложны­ми представлениями (скажем. REORDER) в операторах SELECT INSERT, UPDATE и DELETE они работать не могут, так как Oracle7 не сможет отобразить их в базовые таблицы. Сложными представлениями можно считать такие представ­ления, которые включают в себя операцию объединения, набор операторов DISTINCT, функции групп и ключевые слова GROUP BY, CONNECT BY или START WITH.

Функциональность представления

Если вы создаете в одной схеме представление, которое использует таблицы или представления другой схемы, то понять его функции может оказаться непросто. В этом случае функциональные возможности представления определяют полномо­чия его владельца. Таким образом, Oracle7 предотвращает определение простого представления в обход внутренней защиты доступа к объекту.