C# 带3个表的链接表-架构设计
我正在寻找一种实现系统“上传附件”功能的方法。这些附件适用于两个领域:调查答案和员工行动。我想要一个链接表,因为我想要一种实现附件存储库的方法,这样它们就可以应用于答案和操作,而不必再次上传相同的文档。我是否可以简单地创建一个链接表,例如: INT-AttachmentId INT-AppliesTo->系统中的枚举(1如果回答,2如果操作) INT-AppliesToId->操作或答案的Id 这是一个糟糕的设计吗?我觉得我走错了方向 这是我的第一篇帖子,所以如果不是最新的话,那就要道歉了 非常感谢,C# 带3个表的链接表-架构设计,c#,sql,schema,C#,Sql,Schema,我正在寻找一种实现系统“上传附件”功能的方法。这些附件适用于两个领域:调查答案和员工行动。我想要一个链接表,因为我想要一种实现附件存储库的方法,这样它们就可以应用于答案和操作,而不必再次上传相同的文档。我是否可以简单地创建一个链接表,例如: INT-AttachmentId INT-AppliesTo->系统中的枚举(1如果回答,2如果操作) INT-AppliesToId->操作或答案的Id 这是一个糟糕的设计吗?我觉得我走错了方向 这是我的第一篇帖子,所以如果不是最新的话,那就要道歉了 非常
Chris从设计的角度来看,这并不是不合适的,但由于GUID被用作主键,您可能会删除AppliesTo字段,因为GUID保证是唯一的 以下示例将查找指定调查答案的所有附件:
SELECT
AttachmentId
FROM
Attachments
WHERE
AppliesToId = @SurveyAnswerId
这是一个不错的设计,但您可能会发现此设计更有用:
Attachment
AttachmentId (pkey)
Answer
AnswerId (pkey)
AttachmentId (fkey)
Action
ActionId (pkey)
AttachmentId (fkey)
这允许您拥有无操作的附件,而无需将数据值设置为NULL
,siple联接显示同一附件的所有操作和答案,而不是条件联接
(伪代码)
如果操作/答案可以有多个与之关联的附件,则您可以修改此选项以包含交叉联接:
Attachment
AttachmentId (pkey)
Answer
AnswerId (pkey)
Action
ActionId (pkey)
AttachmentAnswer
AttachmentAnswerId (pkey)
AttachmentId (fkey)
AnswerId (fkey)
AttachmentAction
AttachmentActionId (pkey)
AttachmentId (fkey)
ActionId (fkey)
Woops,我知道我会犯错误,我实际上是在用ints作为我的ID。我已经更新了这个问题,道歉。你可能想考虑切换到GUIDs这个应用程序,因为你可以从独特性中得到一些好处。有关更多信息,请参阅。感谢您的回复,但我不理解底部解决方案的必要性。AnserId和AttachmentId是否足以允许多个附件?AttachmentAction交叉表仅在您需要与操作以及答案保持多对多关系时才需要。你可能不会。。。
Attachment
AttachmentId (pkey)
Answer
AnswerId (pkey)
Action
ActionId (pkey)
AttachmentAnswer
AttachmentAnswerId (pkey)
AttachmentId (fkey)
AnswerId (fkey)
AttachmentAction
AttachmentActionId (pkey)
AttachmentId (fkey)
ActionId (fkey)