如何将“附件”表绑定到“PrivateMessage”和“Post”表

时间:2018-02-21 21:36:31

标签: database-design relational-database

我有3个表PrivateMessagePostAttachment。简化结构如下:

PrivateMessage
--------------
 - ID (Primary Key)
 - PMContent

Post (means topic's/thread's post)
--------------
 - ID (Primary Key)
 - PostContent

Attachment
--------------
 - ID (Primary Key)
 - FileName
 - Bytes
 - ContentType

Post必须是不同的表格,因此不允许将PrivateMessagePost合并到一个表格中。 Attachment表应存储有关私人消息和主题帖子中用户附件的信息。如何正确设计Attachment表?

下面这是正确的吗?

Attachment
--------------
- ID (PK)
- PostID (FK and allow nulls)
- PrivateMessageID (FK and allow nulls)
- FileName
- Bytes
- ContentType

1 个答案:

答案 0 :(得分:0)

尽管您的方法可行,但我会选择以下解决方案之一:

  1. 创建链接表PrivateMessageAttachmentPostAttachment,在其中您将使用FK(id | private_message_id | attachment_id)保留对主表的引用。

这样,您将拥有以下实体:PrivateMessagePostAttachmentPrivateMessageAttachmentPostAttachment

  1. 为两个实体创建单独的附件表,只需使用一对多关系来引用它们即可。

这样,您将得到以下实体:PrivateMessagePostPrivateMessageAttachmentPostAttachment