【发布时间】:2012-10-17 14:31:01
【问题描述】:
我正在设计一个包含几个表的数据库;常见问题解答、公告和附件。公告和常见问题解答可能有一个与之关联的附件,所以我最初的想法是创建一个连接表,其中两个主键作为复合键:
Bulletin
--------
BulletinID
Subject
Description
Notes
Attachment
-----------
AttachmentID
FileName
FilePath
etc.
加入表:
BulletinAttachments
-------------------
BulletinID
AttachmentID
当我设计这个时,我还想,如果稍后引入其他需要附件的实体(例如 Newsletter、Email 等)怎么办。我必须为这些实体中的每一个创建一个连接表。不是很糟糕,但它让我想到,如果我摆脱连接表并将 AttachmentType 放入 Attachment 表中,然后相应地分配类型:
AttachmentType
--------------
AttachmentTypeID
AttachmentType
Description
该表中的数据将是:
1-公告
2-常见问题
3-时事通讯
4-电子邮件
那么 Attachment 表会保存 AttachmentTypeID 来识别它:
Attachments
-----------
AttachmentID
AttachmentTypeID
FileName
FilePath
etc.
所以我的问题是,出于性能方面的考虑(使用 SQL 2008 R2),两者之间有更好的选择吗?有没有更好的方法来设计这个?我对使用单个连接表的担忧是,我们可能会有更多的实体出现并容纳附件,我们必须创建一个连接表,在我们的前端软件上,我们必须为其编写逻辑,而 AttachmentTypeID 将允许前端插入新的 AttachmentType,不需要 db 交互。
【问题讨论】:
标签: sql-server sql-server-2008 database-design