Oracleのシノニム(synonym)
Oracleの「シノニム」(synonym)とはいわゆる別名のことです。
シノニムのSQL
例えば、テーブル「emp1」テーブルに別名をつけたい場合、以下のSQLで別名として定義できます。
-- emp1テーブルに対してシノニムtokyo_empを作成する CREATE SYNONYM tokyo_emp FOR emp1;
テーブル「emp1」テーブルのシノニム「tokyo_emp」を作りました。これで「emp1」にアクセスする場合、「tokyo_emp」と表記しても「emp1」へアクセスできるようになりました。
わかりやすい名前に変換するシノニム
このシノニムをどういったときに使うか?をみていきます。
まず、下記のようなテーブルが4つあったとします。
- empテーブル・・・元の従業員のテーブル
- emp1テーブル・・・東京営業所の人が存在する
- emp2テーブル・・・大阪営業所の人が存在する
- emp3テーブル・・・名古屋営業所の人が存在する
例えば、このようなちょっと変な設計にでくわしたとします。
テーブル名を変更できないときに、シノニムで別名を振ってしまえばわかりやすい名称に変更できるわけです。しかも元のテーブル名は変更されません。
自分が設計したデータベースならempテーブルがこのような意味不明な設計にならないとは思いますが、もともとこのような設計のDBを使用しないといけないケースでは使えます。
例えば、このようにシノニムをつけます。
- 「emp1」テーブル → 「tokyo_emp」シノニム
- 「emp2」テーブル → 「osaka_emp」シノニム
- 「emp3」テーブル → 「nagoya_emp」シノニム
このようにわかりやすい名前に変換しておくと、意味がわかりますよね?数値にしておくよりはましです。
シノニムは例えばこんな使い方があります。
一時的にシノニムで名前を記述しておく
シノニムの他の使い道ですが、例えば、「テーブル名が確定していないケース」で使えます。
なので、プログラム側ではテーブル名を記述する際にテーブル名ではなくシノニムを記述しておきます。そうすれば、後日テーブル名が確定して名前が変わっても、プログラムは変更なしで、シノニムを変更するだけで済みます。
このようにシノニムを使えば手間がかからない。シノニム使い方、わかってきましたか?
PUBLICシノニム
シノニムにはもう一つ、「パブリックシノニム」があります。
シノニムは通常同一ユーザでしか使えませんが、別のユーザーでも使いまわしたい場合にパブリックシノニムを使います。
-- パブリックシノニム allempを作成する CREATE PUBLIC SYNONYM allemp FOR emp;
これで「emp」にアクセスする場合、「allemp 」と表記しても「emp」へアクセスできるようになりました。このシノニムは別のユーザーでも使えます。
SQLは通常のシノニムの前に「PUBLIC」をつけるだけです。
このようにシノニムは通常ではそれほど使用頻度が多いわけではありませんが、いざという時に非常に役に立つ機能です。
Oracleヘルプ:https://docs.oracle.com/cd/E57425_01/121/SQLRF/statements_7001.htm
以上、Oracleのシノニム(synonym)でした。
コメント