首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一列上应用多个外键id是否为好做法

在同一列上应用多个外键id是否为好做法
EN

Stack Overflow用户
提问于 2021-10-07 15:36:39
回答 1查看 42关注 0票数 0

我有一个表,其中存储了不同来源的不同文档,如下所示

代码语言:javascript
复制
CREATE TABLE [dbo].[Document](
    [DocumentId] [int] IDENTITY(1,1) NOT NULL,
    [EntityId] [int] NOT NULL,
    [DocumentGuid] [uniqueidentifier] NOT NULL,
    [DocumentTypeCdId] [int] NOT NULL,
    [DocumentName] [nvarchar](500) NOT NULL,
    [DocumentType] [nvarchar](500) NOT NULL,
    [DocumentData] [nvarchar](max) NOT NULL,
    [IsSuppressed] [bit] NULL,
    [CreatedBy] [nvarchar](200) NULL,
    [CreatedDt] [datetime] NULL,
    [UpdatedBy] [nvarchar](200) NULL,
    [UpdatedDt] [datetime] NULL,
 CONSTRAINT [PK_Document] PRIMARY KEY CLUSTERED 
(
    [DocumentId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

ALTER TABLE [dbo].[Document]  WITH CHECK ADD  CONSTRAINT [FK_Document_DocumentTypeCd] FOREIGN KEY([DocumentTypeCdId])
REFERENCES [dbo].[DocumentTypeCd] ([DocumentTypeCdId])
GO

ALTER TABLE [dbo].[Document] CHECK CONSTRAINT [FK_Document_DocumentTypeCd]
GO

EntityId将来自不同的源表,所以我可以添加此列作为所有这些源表的FK。目前我有近10个源表。如果不是,处理这种情况的更好方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-10-08 08:17:50

您的数据库设计有问题。在这种情况下,您需要有一个包含所有类型文档的键的父祖先表,然后是多个子表,每个子表专门用于一种特定的文档类型。

这称为继承,子项不能共享相同的键值(具有执行ids的子表...)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69483972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档