2

我正在创建一个涉及上传的系统。现在这些上传需要附加到其中一种方式,例如。一条信息,一份合同,一个项目

是否可以有一个附件表然后将它们链接到这些类型 - 需要注意的是它需要链接到这些类型中的每一个的单个 id

例如。在附件表
类型中 - 链接到带有消息合同等
id 列表的表。- 一个 id # 类型的任何 id 所以如果类型是 message 那么它会引用 message.id 如果它是一个合约它会引用 contract.id

但是没有外键检查?但是必须做外键似乎很奇怪,例如。

type
message_id (FK)
contract_id (FK)
project_id (FK)

编辑:还有比 3 个多一些的表,比如 5-6 个,将来可能还会更多..

4

2 回答 2

0

我会推荐:

  1. 附件表(attachment_id + 附件所需的其他列)
  2. 对于每种可能的类型(消息、合同、项目),您将拥有一个关系表。

例子:

  • MessageAttachmentTable:message_id (FK)、attachment_id (FK)
  • ContractAttachmentTable:contract_id (FK), attachment_id (FK)

这样,您可以拥有所有数据库完整性约束而没有未使用的列。

于 2012-08-02T05:23:35.457 回答
0

在我看来,三个具有相应表的外键的 NULLable 字段是最明智的方法。

此外,如果您有三个外键字段,您甚至不必存储“类型”,因为它是由不为 NULL 的外键字段确定的。

于 2012-08-02T05:23:37.427 回答