• ベストアンサー

SynonymとViewについて

お世話になります。 自DBから他DBのテーブルを参照するのですが、 SynonymとViewのどちらで参照するか決めかねています。 Viewといっても列名や型(バイト数)等の変更はありません。こういう場合は何を根拠にどちらにするべきなのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

SYNONYM/VIEWを使う目的は何ですか? オブジェクト指定の簡略化のためと言うことでしたら、 シノニムを使うのが正しい方法かと思います。 (シノニムは”別名付与”のために存在するのですから) 仮にビューを使っても、結果として、ほぼ同じとは思いますが、 複数ユーザでの運用を考えると、PUBLIC指定の出来るシノニムと ビューとの違いが出ます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • viewの性能

    あるテーブルがあって、Viewがそのままテーブルを参照してます。 そのViewをそのまま参照しているViewが階層的にあるとします。 テーブルA ← View1 ← View2 ← View3 [SQL的イメージは] ・creat table テーブルA (・・・) ・create view1 as select * from テーブルA ・create view2 as select * from view1 ・create view3 as select * from view2 質問したい事として、 View1 を参照するのとView3を参照するのは、View1を参照するのが 階層化が無い分、速いのでしょうか? それともそのまま参照している場合、あまり速さは変わらないのでしょうか?

  • 初心者です。

    はじめまして。.Net 2003をで開発をしております。 基本的ではありますが、質問させて下さい。 型指定のデータセットを使用する場合は、 データセットのテーブル名/列名と DBのテーブル名/列名と同じにしておく必要があるのでしょうか? 例) adoAdapter.Fill(DataSet, TableName) 上記を実行した場合にDBの列名とデータテーブルの列名が 異なっても大丈夫か? 宜しくお願いします。

  • オラクル:ビューのCREATE文について

    こんにちわ。 OEMやOBJECTBROWSERで標記のものが確認できますが、 これらはどのデータディクショナリを参照しているのでしょうか? とりあえず、ALL_VIEWSで列名は取得できるのですが、FROM句やWHERE句の部分がどのテーブルから引っ張っているのかが分からない。といったところです。 ご存知の方、どうぞよろしくお願いします。

  • ビューテーブル

    初心者的な質問です。 オラクルデータベースで、検索速度向上の為に ビューテーブルを作る事になりました。 ちょっといまいちわからないのですが、検索条件を 項目として作れば良いのでしょうか?? また、ビューテーブルを作って場合に、そのテーブルに データが入るタイミングとかってどうなっているのでしょうか?? ビューを使わないとしたら 7つのテーブルを参照して、検索をしなければなりません。 環境は、Webです。 ASPからUNIXのオラクル8にアクセスしています。 補足する必要があれば言って下さい。 可能な限り書きます。

  • SQLServerでViewの参照・・・

    SQLServer同士のサーバで、別のサーバーの特定のViewを参照する事ができますか? <例> Aサーバーで、BサーバーのViewを参照 Select * From [B].[aaa].dbo.v_xxxx 上記のようなことがしたいのです。 データの内容上、他のテーブル・ビューは参照させたくありません。 可能な場合、お手数ですがその方法もご教授頂けるととても助かります。 宜しくお願い致します。

  • VIEWしか読み取れないユーザの作成方法について

    SQL Server 2008R2/2012でのVIEWのアクセス権限の付与について パケージのシステムを構築しており、ユーザにVIEWの読み取り権限だけを公開したいと考えています。 ユーザは、SQL Server Management StudioでそのVIEWに対してSELECTだけできるようにしたいのですが、やってみるとVIEWに対しての権限の他に元となるテーブルのアクセス権限も必要となり、見せたくないテーブルとそのテーブルの列が見えてしまいます。 なんとか、DBへの特定のログインユーザだけVIEWに対して読み取り(SELECT)ができようなユーザが作れないでしょうか? アドバイスをお願いします。

  • リアルタイムに他のDBにデータを反映させる方法

    現在、リアルタイムに自DBから他DBへのデータを反映させる仕組みを Oracle10gSE(Oracle10gSEone)で探しております。 OS:RedhatLinux4 ES Oracle:Oracle10.2.0.1.0SE (Oracle10gEEなら、レプリケーション機能を使って実現できそう かなとは思いますがライセンスまた私のスキルが足りないため 無理です。) 今考えていますのは Oracleのマテリアライズド・ビューを使って一定の間隔 (10秒毎、1時間毎、1日毎)でリフレッシュする方法です。 ●自Oracle ->  他Oracle ただ、自Oracle内のテーブルは50テーブル近く存在し、 レコードの件数ももっとも多いテーブルで 200万近くに及びます。(しかもカラム数は200・・・) DBサーバへの負荷も考慮し、高速リフレッシュを使うところは 使いたいと思っておりますが、この自Oracleは 他のシステムのDBもバッチプログラム、マテビュー等々で 使っているため、なるべくシンプルにしたいです。 (更新頻度が多いため、MVログを安易に作成したくありません) 設計を見直す上でも、テーブルのデータを他のDBのテーブルへ リアルタイムに(近く)反映させる方法はありませんでしょうか。 Oracleに限らず、さまざまな意見を聞けると大変ありがたいです。 よろしくお願いいたします。

  • ビューについて、教えてください

    いつもお世話になっております。 ビューについて、教えて下さい。 以下のビュー「ABVW」を作成しましたが、TBLAやTBLBの内容が変更された場合、 ビュー上のデータは自動で置き換わるのでしょうか? CREATE VIEW ABVW  SELECT * FROM TBLA UNION ALL SELECT * FROM TBLB 以上、よろしくお願いします。 ※いろいろなサイトではマテビューはリフレッシュ機能のようなものがあると書かれており、  マテビューを作成しようとしたのですが、TBLA/TBLBは”キーなし”が原因なのかは  わからないのですが、うまく作成できず、普通のビューで行うことにしました。

  • テーブルにはったインデックスは、ビューに対しても効力があるのか

    環境:RedHat Linux AS3.0 / PostgresSQL 7.3.6 Publicスキーマにインデックス付きのテーブルを作成し、 複数のスキーマにビューを作成してそのテーブルをそのまま参照したいと思っています。 (スキーマの数が非常に多いので、実体をひとつにし、  ディスク容量を抑えるのが目的です。) 環境のイメージは以下の通りです。 ◆Publicスキーマにテーブル作成------- create table TEST_TABLE ( id int, data varchar ); ◆test_tableにインデックスを作成------- create unique index TEST_KEY on TEST_TABLE ( id ); ◆test_schemaスキーマを作成------- create schema TEST_SCHEMA; ◆test_schemaスキーマにビューを作成------- create view TEST_SCHEMA.TEST_VIEW as select id, data from TEST_TABLE ; このような環境にて「TEST_VIEW」にSELECTをかけた場合、 「TEST_KEY」は踏襲されるのでしょうか? ビューに対してインデックスは作成できないようなので、 テーブルに対してはられたインデックスはビューでも生きている のではないかと考えたのですが、 上記認識で合っているかどうか ご存知の方がいらっしゃいましたらご教授頂けると助かります。 宜しくお願い申し上げます。

  • Perlで変数内の日本語が文字コードに変換される

    お世話になります。Googleやbingなどで調べて見ましたが検討もつかず困っております。 PerlでDBIを使用し、データベースのテーブルAに対してSelectした場合に、fetchrow_hashrefを使用しSelect結果を取得した場合に、テーブルの列名が文字ではなく文字コードが格納されてしまいます。 テーブルAの列名はUTF-8の日本語文字になります。 以下、列名 ID|登録者|登録日 fetchrow_hashrefを使用した場合、以下のように返ってきます。 $VAR1 = { "\x{767b}\x{9332}\x{8005}" => '106.190.xxx.xxx', "\x{767b}\x{9332}\x{65e5}" => '2012-05-06 00:52:40.39496', 'id' => 38 }; 問題は目的のデータに対して列名('登録日'など)で参照する事が出来ない事ですが、今のままテーブルの列名は日本語のままで回避する方法をご教授いただけないでしょうか? hashrefを使いたい理由はテーブルの列順番が変わった場合でもプログラム上の変更を減らすために、列名にて参照したいためです。ですのでarray系の取得メソッドはなるべく使わないようにしたいです。 出来ればなぜこのようなことが起こるのか原因も含めてご教授いただけると大変助かります。。 ちなみに、データベースはPostgreSQLの8.2で日本語文字に対応していることは、自分でselectなどのコマンドを叩き確認済みです。 ヒントでもかまいませんので、どうかよろしくお願いいたします。

    • ベストアンサー
    • Perl