複数のDB(請求書発行_DB、経費管理_DB、仕入管理_DB、顧客管理_DB、銀行_DB、支店_db・・・)で共用するテーブルを別のDB(マスター管理_DB)に集めました。
内容はT_部門、T_勘定科目、T_補助科目、T_取引先・・・等です。
リレーションシップを設定しようとしたのですが、リレーションシップは同じDB内でしか設定が出来ないのでしょうか?
また、複数のDBで共用する場合は各DBに必要なテーブルを用意し同期を取った方がいいのでしょうか?
共用するマスターを一元管理するのが目的です。
(当初は最初に作ったDBのテーブルを他のDBからも参照する方法でシステムを作ってきたのですが、数が増えて来るとどのマスターのメンテナンスがどのシステム(DB)でやっているのか分からなくなって来たので、一元管理をしようと集約したら、リレーションシップが張れなくなってしまいました。)
No.1ベストアンサー
- 回答日時:
リレーションは同じデータベース内でしか張ることはできません。
普通はそこまでDBを細分化しないものですけどね(1システム1DB)。
従来ならばサフィックスで、2005以降ならばスキーマを分けて管理するのが通常かと思います。
DBを分けてしまっている以上はリレーションをあきらめるか、各DBがマスタのコピーを持つしかないですが、
後者の場合はマスタのリアルタイム反映をあきらめることになるでしょう。
(バッチ更新かレプリケーションか。。しかしそこまで大きなシステムですか?)
この回答への補足
いつもありがとうございます。
> リレーションは同じデータベース内でしか張ることはできません。
リレーションシップ自体は張ってなくても問題は無いんですよね?
> しかしそこまで大きなシステムですか?
単体のアクセスをアップサイジングしたので、アクセスで開発した単位毎にDBとADPができてしまいました、アクセスの時はリンクテーブルを使えば他のアクセスにテーブルの実体があろうが考えることなく使えてたのでその延長で移行してました。
要はDBは一つにして、サブシステム毎にADPを作って行けばいいんですよね? 先々を考えると置き直した方が良いような気がしますので、検討してみます。
ただ、一つのDBでテーブルやストアド等のオブジェクトが100も200もあると管理しずらいかなとも思います。 この辺は名前の付け方等で考慮するしかないのでしょうか? (T_○○ → T_請求_○○、T_仕入_○○とか)
No.2
- 回答日時:
SQL Server 2005ならば、スキーマを分ける手はありますね。
スキーマは無意識にdboを使っていると思いますが、SQL Serverのセキュリティタブの中で作れます)
スキーマが別でも同じDB内ならリレーションは張れますし、スキーマ単位にアクセス権限を指定することもできます。
また、スキーマが別なら同じテーブル名でも登録可能です。
今回の例だと、請求スキーマや仕入スキーマを作って、請求.T_○○、仕入.T_○○という風になるでしょう。
dbo以外のスキーマは省略できないので、検索はSELECT * FROM 請求.T_○○という風になります。
それはそれで使いづらい点もなくはないですが、管理上はすっきりします。
ありがとうございます、スキーマを分けるのが一番良さそうですが、
名前の付け方に悩んでいます。 大元のDBを経理システムにすると営業の
顧客管理が入るとおかしいし・・・もう少し悩んでみます。
もう一つは、直すのが大変なのでDBは現状(一元管理)のままにして
トリガを使ってDB間の同期が取れないかなと今日一日考えて試して
いましたが、トリガがうまく作れません、もう少し頑張ってみますが
また質問するかもしれませんので、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- Excel(エクセル) アウトラインの小計のやり方 1 2023/03/20 11:51
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- WordPress(ワードプレス) ワードプレスの管理画面でユーザー名が違うと出るのですがどこで設定したユーザー名を打てばいいのでしょう 1 2022/03/31 19:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
認知心理学で言うスクリプトとは?
-
データベースからFOREIGN KEYの...
-
SQL ServerのXMLスキーマがうま...
-
DB2でテーブルのサイズを見たい
-
PostgreSqlのシステムスキーマ...
-
ACCESSにおいてスキーマとは
-
dumpでインデックスだけ抜きたい
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
ADO+ODBCでテーブルに接続する...
-
集計でテストの各教科の最高得...
-
CSVファイルを読み込んでテーブ...
-
エラーを起こす方法
-
UPDATEで既存のレコードに文字...
-
PRIMARY KEYのコピー
-
timestampのデータはどのように...
-
結合したテーブルをSUMしたい
-
truncate tableを使って複数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベース ユーザの「このユ...
-
dumpでインデックスだけ抜きたい
-
全テーブルの列数を調査したい
-
認知心理学で言うスクリプトとは?
-
ACCESSにおいてスキーマとは
-
PostgreSqlのシステムスキーマ...
-
2つのDBにある値の差分値で並び...
-
EBCDICとCCSIDの違いとは
-
テーブルのどの項目が主キーか...
-
スキーマ定義とは一体どう言っ...
-
スキーマ拡張後のExchangeサー...
-
リレーションシップの設定
-
アクセスのレポートの表示順
-
FROM句のスキーマ名、テーブル...
-
DB2でテーブルのサイズを見たい
-
SQL ServerのXMLスキーマがうま...
-
DBをまたいで更新
-
SQL Server2008のクエリの書式...
-
MySQL の show tables をするコ...
-
テーブルにはったインデックス...
おすすめ情報