我有以下 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)
此表存储上传的文档。可以为各种实体上传文件:
- 用户
- 组织
- 客户
- 联系人
- 交易
这个表存储那些上传的文档并将其链接到相关实体。它的结构允许我稍后通过向 Document 表添加外键来添加将文档上传到其他表的功能。
我将所有外键设为“稀疏”列以节省空间,因为这些列中只有 1 个具有值。
重要规则:必须准确链接到 1 个表。不能链接到没有表,不能链接到超过 1 个表。
如何在数据库级别确保这一点。我正在考虑使用检查约束——但它的语法可能会变得复杂(如果我们为 20 个不同的表上传文档会怎样)。
有人可以推荐一个解决方案吗?