- - PR -
SQLServerのほかのユーザデータベースへの外部参照
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-12 13:08
はじめまして。
SQLServerでの設計について、ご意見をお聞かせください。 [環境]SQLServer2005 Express, VB.NET 2008 小規模な業務システムなのですが、SQLServerの同一インスタンスに、業務別に ユーザーデータベースを作成しています。 社員情報のデータベース、勤怠管理のデータベース、仕入れ業務のデータベース等、です。 まだ、全体の仕様が決まっておらず、今後随時追加していくようです。 私は、社員情報のデータベースを作成しているのですが、社員IDが勤怠管理のデータ ベースにもあるため、別のデータベースにもリレーションシップができないかと以下を 実行しました。
すると、
と、エラーが戻りました。 やはり、ユーザーデータベースをまたがるリレーションシップはできないのでしょうか。 それとも何か方法があるのでしょうか。 あと、ひとつのインスタンスに、業務別等でユーザーデータベースを分けるというのは 一般的なのでしょうか。 構成は別の人がしたのですが、ファイルの容量や、後から別の業務のものを追加しやすいということでこうしたみたいです。Expressですし。 私としては、一つのインスタンスなので、同じユーザーデータベースにしたほうが、関連付けられるし、管理も簡単になると、最初は思ったのですが、迷っています。 ご意見お願いします。 | ||||||||
|
投稿日時: 2008-04-12 16:50
別データベースのリレーションシップはよくわからないため
マニュアルを参考にしてください。 というかマニュアルを読んでから実行してください。 >あと、ひとつのインスタンスに、業務別等でユーザーデータベースを分けるというのは >一般的なのでしょうか。 ケースバイケースなので回答はありません。 | ||||||||
|
投稿日時: 2008-04-12 18:03
MSのBooks Onlineとか検索で思いつくキーワードで調べました。 私の調べた範囲では、Books Onlineに別データベースのリレーションシップについて、 書かれていたところがなかったので、質問したのです。 いきなりクエリを実行だけして投稿したのではありません。 初心者なので、所有権とかビューを使用するとか、リンクサーバーとか、 私が知らないことで何か実現できるのかと思い質問しました。 どなたか知っている方がいればご教授ください。 | ||||||||
|
投稿日時: 2008-04-13 00:40
SQlSERVERは使ったことがないため一般論で回答します
リレーションシップを定義するSQlで別のデータベースを指す 識別子を設定する項目がなければお望みのことはできません。 ひととおり調べて無かったとのことでしたので「できない」と考えるのが妥当です。 ただ他のデータベースのテーブルにリンクを張った上で、そのテーブルを自分の物のように扱えるように できるのであれば、設定できるかもしれません。 ただこれが正解かどうかはわかりません あしからず | ||||||||
|
投稿日時: 2008-04-13 00:43
Books onlineより
CREATE TABLE (Transact-SQL) 解説 FOREIGN KEY 制約 FOREIGN KEY 制約は、同じサーバー上の同じデータベース内のテーブルのみを参照できます 複数のデータベースにまたがる参照整合性は、トリガを使って実装する必要があります。 詳細については、「CREATE TRIGGER (Transact-SQL)」を参照してください。 | ||||||||
|
投稿日時: 2008-04-14 21:04
七味唐辛子さん、99riさん、ご返信ありがとうございます。
自分では調べたつもりでしたが、見落としていました。 トリガについても、何かイベントがあると実行されるものというくらいしか知りません でしたので勉強になりました。 今回の案件は、別データベースにまたがるものは、トリガで参照整合性を保つということで 解決しそうです。 もう少し勉強してから実装します。助かりました、ありがとうございます。 |
1