链接表与3个表 - 架构设计

时间:2013-01-21 22:44:22

标签: c# sql schema

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

INT - AttachmentId

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

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

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

这是我的第一篇文章,如果它没有达到标准,那么就是这样了!

非常感谢,

克里斯

1 个答案:

答案 0 :(得分: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)