【しのにむ】

シノニム とは?

最終更新:
💡 DBのテーブルなどを別の名前で参照する仕組み

データベースのテーブルなどに別名を付ける機能。Oracleの作成例、ビューとの違い、PUBLICでも権限が必要な点、SQL Serverとの仕様の違いを解説します。

📌 このページのポイント
シノニム:別名から同じ対象を参照別名officesOracleの例参照先の対象hr.locations同じデータコピーを新しく作るわけではない利用には権限と対象の条件も必要PUBLICでの名前共有と権限付与は別
矢印は別名が参照する対象を示します。作成成功だけで利用成功は保証されません。名前解決や操作の条件は製品により異なり、対象の列・型などが変わればアプリにも影響します。
ひよこ ひよこ
シノニムは、テーブルをコピーするの?
ペンギン先生 ペンギン先生
コピーではなく別名だよ。Oracleの公式例なら、CREATE SYNONYM offices FOR hr.locations; と作る。officesという名前から元の対象を参照する。利用には、その操作に必要な権限も要る。
ひよこ ひよこ
ビューとは何が違う?
ペンギン先生 ペンギン先生
シノニムの定義は別名と参照先の対応だ。ビューは問い合わせの定義を持ち、列を選ぶなどの処理を表せる。シノニム自体が列や行を加工するわけではない。参照先がビューの場合もあるよ。
ひよこ ひよこ
PUBLICなら、誰でもデータを読める?
ペンギン先生 ペンギン先生
Oracleでは、PUBLIC SYNONYMで名前を共有できても、対象を利用する権限の代わりにはならない。名前が見えることと、SELECTなどの操作が許されることは別なんだ。
ひよこ ひよこ
作れたら、参照先も正しいと確認できる?
ペンギン先生 ペンギン先生
Oracleでは対象が存在しなくても、対象への権限がなくても、シノニムを作れる場合がある。作成成功だけで利用成功は保証されない。参照先、必要な権限、実際の操作を確認する。
ひよこ ひよこ
移行先へ向ければ、SQLはずっと動く?
ペンギン先生 ペンギン先生
名前を保つ助けにはなるが、列や型、権限が変われば動かないことがある。同じ名前の既存オブジェクトとの衝突や名前解決にも注意する。アプリが使い続ける別名を移行後に消せば、その参照は壊れるよ。
もっと詳しく知りたい人へ

Oracle以外も、同じ仕様?

SQL Serverにもシノニムがありますが、対象や権限の扱いなどを一律には考えられません。例えばSQL Serverではシノニムを変更するALTER SYNONYMがなく、変更時は削除と再作成を行います。利用製品の公式仕様で確認します。

シノニム経由の更新は、元データに反映される?

対応する対象に対して、権限と操作の条件を満たせば反映されます。シノニム用の別データがあるわけではありません。対象が更新できないビューであるなど、参照先の制限まで消えるわけではないので、本番データを試しに更新して確かめるのは避けます。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「シノニム」って出てきたら「DBのテーブルなどを別の名前で参照する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Synonym」 = 同義語・別名
💬 同じ対象を別の名前で呼ぶ考え方です。このページでは、データベースのオブジェクトへ別名を付ける機能を扱います。

参考資料

← 用語集にもどる