私の会社が取引しているすべての会社を保持する会社テーブルがあり、会社データベースにあります。
そのテーブルと、まったく別のデータベース(人事データベース)にある別のテーブル(人事テーブル)との関係を作りたいと思います。
両方のデータベースは同じサーバー上にあります。
どうすればこれを達成できますか?
私の会社が取引しているすべての会社を保持する会社テーブルがあり、会社データベースにあります。
そのテーブルと、まったく別のデータベース(人事データベース)にある別のテーブル(人事テーブル)との関係を作りたいと思います。
両方のデータベースは同じサーバー上にあります。
どうすればこれを達成できますか?
「この状況では外部キーを使用できませんが、回避策があります。チェック制約でラップされたトリガーまたはUDFのいずれかを使用できます。いずれにしても、データの整合性は完全に完全ではありません。親テーブルを持つデータベースがクラッシュして復元した場合バックアップからそれを取得すると、簡単に孤児になってしまう可能性があります。」
共通キーを使用してデータを選択するには、3つの部分からなる修飾子database-schema-tableを含むビューを作成できます。以下では、各人事エントリに、それらを結び付けるCompanyIDフィールドがあり、dboがスキーマであると想定しています。そのようなフィールドが存在しない場合は、次のフィールドを作成して入力する必要があります。
CREATE VIEW vCompanyPersonnel
AS
SELECT * FROM tblCompany t1
JOIN dbPersonnel.dbo.tblPersonnel
t2 ON t1.ID = t2.CompanyID
同様に、いずれかのテーブルを更新して参照整合性を維持するには、ストアドプロシージャを作成し、アプリケーションがそれらのプロシージャを使用してデータを更新できるようにする必要があります(とにかくベストプラクティスです)。また、personalテーブルのCompanyIDフィールドでnull値が許可されていないことを確認する必要があります。考慮すべきいくつかの手順: