【しのにむ】

シノニム とは?

💡 DBオブジェクトの「別名(エイリアス)」、長い名前を短く呼べる機能
📌 このページのポイント
シノニム(類義語)の概念 同じ意味 同一の概念 PC パソコン コンピュータ 削除 消去 除去 DB活用例: 検索時に「PC」→「パソコン」「コンピュータ」も一致 検索精度の向上・ユーザー体験の改善
シノニム(類義語)の概念イメージ
ひよこ ひよこ

シノニムって何のためにあるの?

ペンギン先生 ペンギン先生

長いスキーマ名.テーブル名を短く呼べるようにするためだよ。「SCHEMA_PRODUCTION.CUSTOMER_MASTER_TABLE」という長い名前に「CUSTOMER」というシノニムを作れば、「SELECT * FROM CUSTOMER」と書けるようになる。

ひよこ ひよこ

ビューと何が違うの?

ペンギン先生 ペンギン先生

ビューSELECT文の定義を保存する仮想テーブル、シノニムはオブジェクトの「別名ポインタ」。ビューにはSQLがあるけどシノニムは名前の付け替えだけ。シノニムを通じてINSERT・UPDATE・DELETEも元テーブルに反映される。

ひよこ ひよこ

Oracle以外でも使う?

ペンギン先生 ペンギン先生

OracleのSYNONYM機能が最も充実している。PostgreSQLにはシノニムはないがビュースキーマ検索パスで代替する。SQL Serverにはシノニムがある。MySQL・MariaDBは公式なシノニム機能はなく、ビューで代替する。

ひよこ ひよこ

シノニムを使うとパフォーマンスに影響あるの?

ペンギン先生 ペンギン先生

基本的にはない。シノニムは名前解決の時点で元のオブジェクト名に変換されるだけだから、実行計画に影響はほぼないよ。ただしパブリックシノニムが大量にある環境だと名前解決に若干のオーバーヘッドが生じることはあるけど、実務上問題になることはまずないね。

ひよこ ひよこ

データベース移行のときにシノニムが役立つって本当?

ペンギン先生 ペンギン先生

本当だよ。旧テーブルから新テーブルにデータを移行するとき、旧テーブル名でシノニムを作って新テーブルを指すようにすれば、アプリケーションSQL文を変更せずに移行できる。移行完了後にシノニムを削除すればOK。大規模システムの段階的な移行戦略でよく使われるテクニックなんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
シノニムって出てきたら「DBオブジェクトテーブルなど)に別名をつける機能、Oracleでよく使う」と思えばOK!
📖 おまけ:英語の意味
「Synonym」 = 同義語・別名
💬 言語学の「同義語(synonym)」から転用。同じオブジェクトを指す別の名前(エイリアス)という意味
← 用語集にもどる