数据库表设置:多个表用于相同的目的?

时间:2014-05-07 08:54:34

标签: mysql sql database

我需要为bugtracker设置一个MySQL数据库,并与更改日志配对。

因此,我基本上有三个表:productversionproblemproblem_solution。我分解问题及其解决方案的原因是我希望能够为我的用户提供一系列可能的解决方案。

现在我想为每个表添加附件,并通过数据库管理它们。应该有每个产品,版本以及可能的每个问题和解决方案的图片,PDF,...。

我愿意

  • 创建4个附件表(product_attachmentsversion_attachments,...)或
  • 创建一个附件表并创建一个列,说明它的用途?

如果是后者,我该怎么做?我想使用外键引用产品,版本,问题或解决方案的特定ID。我应该只创建4个列,每个列都有一个外键,并决定它是否是产品,版本的附件......,这取决于哪些列不是NULL?这不会使我的查询变得不必要地复杂吗?

1 个答案:

答案 0 :(得分:1)

我说创建一个表,使其主键可用,并为附件和其他实体之间的多对多关系创建另一个EAV类型表,其中"值"对应于附件ID,"实体"国外ID和"属性"以您喜欢的任何形式(1,2,3,4?)来定义product, version, problem, solution的固定值。这样,附件将存储在id, blob结构的表中,可能具有相应的count列,用于存储关系表中的链接数量,以便可以轻松地检测和删除孤立的附件。