Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带3个表的链接表-架构设计_C#_Sql_Schema - Fatal编程技术网

C# 带3个表的链接表-架构设计

C# 带3个表的链接表-架构设计,c#,sql,schema,C#,Sql,Schema,我正在寻找一种实现系统“上传附件”功能的方法。这些附件适用于两个领域:调查答案和员工行动。我想要一个链接表,因为我想要一种实现附件存储库的方法,这样它们就可以应用于答案和操作,而不必再次上传相同的文档。我是否可以简单地创建一个链接表,例如: INT-AttachmentId INT-AppliesTo->系统中的枚举(1如果回答,2如果操作) INT-AppliesToId->操作或答案的Id 这是一个糟糕的设计吗?我觉得我走错了方向 这是我的第一篇帖子,所以如果不是最新的话,那就要道歉了 非常

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

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)