データベースでは、シノニムはテーブル、ビュー、シーケンス、またはその他のスキーマオブジェクトの別名または代替名です。これらは主に、ユーザーが他のユーザーが所有するデータベース オブジェクトに直感的にアクセスできるようにするために使用されます。また、基になるオブジェクトの ID を隠し、悪意のあるプログラムまたはユーザーが基になるオブジェクトを狙うことを困難にします (隠蔽によるセキュリティ)。シノニムはオブジェクトの単なる別名であるため、定義以外のストレージは必要ありません。アプリケーションがシノニムを使用すると、DBMS は要求をシノニムの基になる基本オブジェクトに転送します。データベース オブジェクト名の代わりにシノニムを使用するようにプログラムをコーディングすると、名前、所有権、またはオブジェクトの場所が変更される影響を受けなくなりますが、保守が必要な別のレイヤーが追加されることになります。ユーザーにはさまざまなニーズがある場合もあります。たとえば、頻繁にクエリを実行するデータベース オブジェクトを参照するために短い名前を使用したい場合があります。これは、基になるオブジェクトの名前を変更したり、それを参照するコードを変更したりすることなく、エイリアスを使用して実現できます。
シノニムは、ユーザーが自身のスキーマに存在しないオブジェクトにアクセスできるようにするという点で非常に強力です。すべてのシノニムはCREATE SYNONYMコマンドで明示的に作成する必要があり、基になるオブジェクトは同じデータベース内、またはデータベースリンクで接続された他のデータベース内に配置できます。[明確化]
同義語には主に 2 つの用途があります。
- オブジェクトの非表示: 同義語を作成して、元のオブジェクトをユーザーから非表示にすることができます。
- 場所の不可視性: ローカル データベースの一部ではないテーブルやその他のオブジェクトのエイリアスとしてシノニムを作成できます。
テーブルまたはプロシージャが作成されると、特定のスキーマ内に作成されます。他のユーザーは、そのスキーマ名をオブジェクト名のプレフィックスとして使用することでのみアクセスできます。これを回避するには、スキーマの所有者がテーブル名と同じ名前のシノニムを作成します。
公開同義語
パブリック・シノニムは、 Oracleデータベース内のPUBLICと呼ばれる特別なスキーマによって所有されます。前述のように、パブリック・シノニムはデータベース内のすべてのユーザーが参照できます。パブリック・シノニムは通常、アプリケーション所有者によって表やプロシージャ、パッケージなどのオブジェクトに対して作成され、アプリケーションのユーザーはそれらのオブジェクトを参照できます。
次のコードは、従業員テーブルのパブリック シノニムを作成する方法を示しています。
hr従業員のパブリックシノニム従業員を作成します。
これで、どのユーザーも元のテーブル名を入力するだけでテーブルを参照できます。必要に応じて、CREATE SYNONYM 文でそのテーブルに別のテーブル名を指定することもできます。DBA はパブリックシノニムを作成する必要があることに注意してください。パブリック(またはプライベート)シノニムを通じてテーブルを参照できるからといって、そのテーブルに対して SELECT、INSERT、UPDATE、または DELETE 操作を実行できるわけではありません。これらの操作を実行するには、ユーザーは、直接またはアプリケーション所有者のロールを通じて、基礎となるオブジェクトに対する特定の権限を取得する必要があります。
プライベート同義語
プライベート シノニムは、開発者が通常、アプリケーション スキーマ内のテーブル、ビュー ストアド プロシージャ、またはその他のデータベース オブジェクトの実際の名前を隠すために使用する、データベース スキーマ内のシノニムです。
プライベート・シノニムは、パブリック・シノニムとは異なり、表またはオブジェクトを所有するスキーマからのみ参照できます。同じ表を異なるコンテキストで参照する必要がある場合は、プライベート・シノニムを作成することをお勧めします。プライベート・シノニムはパブリック・シノニムの定義をオーバーライドします。プライベート・シノニムはパブリック・シノニムと同じ方法で作成しますが、CREATE文でPUBLICキーワードを省略します。
次の例は、locations テーブルに「addresses」というプライベートシノニムを作成する方法を示しています。プライベートシノニムを作成すると、元のテーブル名とまったく同じようにシノニムを参照できるようになります。
hr . locationsのシノニムアドレスを作成します。
同義語を削除する
プライベートシノニムとパブリックシノニムはどちらも、DROP SYNONYMコマンドを使用して同じように削除されますが、重要な違いが1つあります。パブリックシノニムを削除する場合は、DROPキーワードの後にPUBLICキーワードを追加する必要があります。
DROP SYNONYMアドレス;
ALL_SYNONYMS (または DBA_SYNONYMS) ビューは、データベース内のすべてのシノニムに関する情報を提供します。
参考文献
- パリンスキー、ジョン・アドルフ(2002年)『Oracle SQLおよびPL/SQLハンドブック:データ管理者、開発者、ビジネスアナリスト向けガイド』Addison–Wesley社、ISBN 978-0-201-75294-6。
- ジェニック、ジョナサン(2004年)『Oracle SQL*Plus:決定版ガイド』O'Reilly Media . ISBN 978-0-596-00746-1。
- Alapati, Sam R (2005). Oracle Database 10g 管理エキスパート. Apress . ISBN 978-1-59059-451-3。
- Bobrowski, Steve. 『ハンズオン Oracle Database 10g Express Edition for Windows』McGraw-Hill . ISBN 978-0-07-226331-2。