次の SQL テーブルがあります。
Table: dbo.Document
_________________________________________________
docID bigint (PK: required)
docTypeID bigint (required)
UploadName varchar(500) (required)
FileSize bigint (required)
DateUploaded datetimeoffset(7) (required)
tbl_userID bigint (nullable)
tbl_orgID bigint (nullable)
tbl_clientID bigint (nullable)
tbl_contactID bigint (nullable)
tbl_transactID bigint (nullable)
このテーブルは、アップロードされたドキュメントを格納します。さまざまなエンティティのドキュメントをアップロードできます。
- ユーザー
- 組織
- クライアント
- 連絡先
- 取引
この 1 つのテーブルには、アップロードされたドキュメントが格納され、関連するエンティティにリンクされます。この構造により、Document テーブルに外部キーを追加するだけで、後でドキュメントを他のテーブルにアップロードする機能を追加できます。
スペースを節約するために、すべての外部キー「スパース」列を作成しました。これらの列の 1 つだけが値を持つためです。
重要なルール: 1 つのテーブルに正確にリンクする必要があります。どのテーブルにもリンクできません。複数のテーブルにリンクすることはできません。
データベース レベルでこれを確認するにはどうすればよいですか。チェック制約を使用することを考えていましたが、その構文は複雑になる可能性があります (20 の異なるテーブルのドキュメントをアップロードするとどうなるでしょうか)。
誰かが解決策をお勧めできますか。