2016年1月30日土曜日

シノニムってなんや?

「シノニム」っていう単語を知らなかったので、無視してましたが、直訳すると、「同意語」とかいう意味だそうです。

SQLServer 2005 以降ですが、
これ、意外とめっちゃ便利かも。
他のデータベースのオブジェクトをそのまま「別名を付けて」利用することができます。

今までは、ビューを作って接続していましたが、「Synonym」を使うと、元のデータベースと同じ名前で作成することもできるので、ほぼ、元のデータベースと同じオブジェクトような感覚で扱うことができます。

作成する際も、「 CREATE SYNONYM こっち側のテーブル名 FOR あっち側のサーバー名.データベース名.スキーマ.テーブル名 」で簡単に作成できます。

元になるデータベースのテーブル一覧は、「 Select * from sys.Tables 」で全部取ってこれますので、ループでぐるぐる回せば、あっち側のすべてのテーブルをシノニムにすることが簡単にできてしまいます。
(もちろん、あっち側のビューとかもとってこれます。)

同じデータを利用した別のシステムを構築するときに、同じデータベース内にビューなどのオブジェクトをどんどん作っていくと、名前付けに苦労します。

こんな時に、システム別にそれぞれデータベースを作って、それぞれのデータベース側は全部シノニムで接続しておけば、元のデータベース内と同じ感覚で作業できます。