0

我正在寻找一种向系统实施“上传附件”功能的方法。这些附件可以应用于 2 个领域,即调查答案和员工行动。我想要一个链接表,因为我想要一种实现附件存储库的方法,这样它们就可以应用于答案和操作,而不必再次上传相同的文档。我可以简单地创建一个链接表,例如:

INT - 附件 ID

INT - ApplysTo -> 系统中的枚举(如果是答案,则为 2,如果是操作,则为 2)

INT- ApplysToId -> 动作或答案的 ID

这是一个糟糕的设计吗?我有一种感觉,我正在以错误的方式解决这个问题。

这是我的第一篇文章,如果它没有达到标准,请原谅!

非常感谢,

克里斯

4

2 回答 2

0

从设计的角度来看,这并不是不合适的,但由于 GUID 被用作您的主键,您可能可以删除 ApplyTo 字段,因为 GUID 保证是唯一的。

下面是一个示例,它将查找指定调查答案的所有附件:

SELECT
    AttachmentId
FROM
    Attachments
WHERE
    AppliesToId = @SurveyAnswerId
于 2013-01-21T23:10:33.263 回答
0

这不是一个糟糕的设计,但您可能会发现这种设计更有用:

Attachment
AttachmentId (pkey)

Answer
AnswerId (pkey)
AttachmentId (fkey)

Action
ActionId (pkey)
AttachmentId (fkey)

这允许您拥有没有任何操作的附件,而无需设置数据值,NULL并且 siple 连接显示同一附件的所有操作和答案,而不是条件连接

(伪代码)

select * from Attachment
outer join Answer on Answer.AttachmentId = Attachment.AttachmentId
outer join Action on Action.AttachmentId = Attachment.AttachmentId

如果操作/答案可以有多个与之关联的附件,那么您将对其进行修改以包含交叉连接:

Attachment
AttachmentId (pkey)

Answer
AnswerId (pkey)

Action
ActionId (pkey)

AttachmentAnswer
AttachmentAnswerId (pkey)
AttachmentId (fkey)
AnswerId (fkey)

AttachmentAction
AttachmentActionId (pkey)
AttachmentId (fkey)
ActionId (fkey)
于 2013-01-22T00:06:47.880 回答