1

次の 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. ユーザー
  2. 組織
  3. クライアント
  4. 連絡先
  5. 取引

この 1 つのテーブルには、アップロードされたドキュメントが格納され、関連するエンティティにリンクされます。この構造により、Document テーブルに外部キーを追加するだけで、後でドキュメントを他のテーブルにアップロードする機能を追加できます。

スペースを節約するために、すべての外部キー「スパース」列を作成しました。これらの列の 1 つだけが値を持つためです。

重要なルール: 1 つのテーブルに正確にリンクする必要があります。どのテーブルにもリンクできません。複数のテーブルにリンクすることはできません。

データベース レベルでこれを確認するにはどうすればよいですか。チェック制約を使用することを考えていましたが、その構文は複雑になる可能性があります (20 の異なるテーブルのドキュメントをアップロードするとどうなるでしょうか)。

誰かが解決策をお勧めできますか。

4

0 に答える 0