「ビュー」は、ベース・テーブルから選択したローとカラムを含む、計算されたテーブルです。ビューは、ユーザにテーブルの一部分だけに対するアクセス権を与える場合に便利です。その部分はローまたはカラムで定義します。たとえば、ユーザに employee テーブルの Salary カラムが見えないようにしたり、ユーザが自分で作成したローだけを見られるようにしたりできます。
Sales Manager は、自分の部署の営業部員に関するデータベースの情報にアクセスする必要があります他部署の従業員の情報にアクセスしなければならない理由はありません。
例として、Sales Manager のユーザ ID を作成してから必要な情報を得るためのビューを作成し、Sales Manager のユーザ ID に適切なパーミッションを与える手順を次に示します。
GRANT 文を使用して、新しいユーザ ID を作成します。DBA 権限のあるユーザとしてログインして、次の文を実行します。
CONNECT DBA IDENTIFIED by sql; CREATE USER SalesManager IDENTIFIED BY sales; |
営業部の従業員だけを見るビューを次のように定義します。
CREATE VIEW EmployeeSales AS SELECT EmployeeID, GivenName, Surname FROM Employees WHERE DepartmentID = 200; |
テーブル参照を所有者で修飾することによって、同じ名前のテーブルの参照と混同されるおそれがなくなります。
SalesManager にビューを見るパーミッションを与えます。
GRANT SELECT ON EmployeeSales TO SalesManager; |
まったく同じコマンドを使用して、ビューおよびテーブルに対するパーミッションを与えます。
次の例では、Sales Manager が注文のまとめを確認できるようにするビューを作成します。このビューは、複数のテーブルからの情報を必要とします。
ビューを作成します。
CREATE VIEW OrderSummary AS SELECT OrderDate, Region, SalesRepresentative, CompanyName FROM SalesOrders KEY JOIN Customers; |
Sales Manager にこのビューを見るパーミッションを与えます。
GRANT SELECT ON OrderSummary TO SalesManager; |
プロセスが正常に動作したことをチェックするには、ユーザ ID SalesManager に接続し、作成したビューを見ます。
CONNECT SalesManager IDENTIFIED BY sales; SELECT * FROM DBA.EmployeeSales; SELECT * FROM DBA.OrderSummary; |
Sales Manager には基本となるテーブルを見るパーミッションは与えられていません。次のコマンドはパーミッション・エラーを起こします。
SELECT * FROM GROUPO.Employees; SELECT * FROM GROUPO.SalesOrders; |
前述の例では、SELECT パーミッションを調整するためのビューの使用法を説明しました。同じ方法で、INSERT、DELETE、UPDATE の各パーミッションをビューに付与できます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |