Mysql 数据库表设置:多个表具有相同的用途?
我需要为bugtracker设置一个MySQL数据库,它与一个changelog配对 因此,我基本上有三个表:Mysql 数据库表设置:多个表具有相同的用途?,mysql,sql,database,Mysql,Sql,Database,我需要为bugtracker设置一个MySQL数据库,它与一个changelog配对 因此,我基本上有三个表:产品,版本,问题,问题解决方案。我之所以拆分问题及其解决方案,是因为我希望能够为用户提供一组可能的解决方案 现在,我想向每个表添加附件,并通过数据库管理它们。应该有图片,PDF文件。。。针对每个产品、版本,可能针对每个问题和解决方案 我宁愿 创建4个附件表(产品附件,版本附件,…),或 创建一个附件表并创建一列,说明其用途 如果是后者,我应该怎么做?我想使用外键引用产品、版本、问题或
产品
,版本
,问题
,问题解决方案
。我之所以拆分问题及其解决方案,是因为我希望能够为用户提供一组可能的解决方案
现在,我想向每个表添加附件,并通过数据库管理它们。应该有图片,PDF文件。。。针对每个产品、版本,可能针对每个问题和解决方案
我宁愿
- 创建4个附件表(
,产品附件
,…),或版本附件
- 创建一个附件表并创建一列,说明其用途
如果是后者,我应该怎么做?我想使用外键引用产品、版本、问题或解决方案的特定ID。然后我是否应该创建4列,每个列都有一个外键,并决定它是否是产品的附件、版本。。。取决于这些列中的哪一列不为空?这不会使我的查询变得不必要的复杂吗?我说创建一个表,使其主键可用,并为附件和其他实体之间的多对多关系创建另一个EAV类型的表,其中“值”对应于附件ID,“实体”对应于外部ID和“属性”以您喜欢的任何形式(1,2,3,4?)从一组固定的
产品、版本、问题、解决方案中提取一个值。通过这种方式,附件将存储在一个具有id,blob
结构的表中,可能具有相应的count
列来存储关系表中的链接量,以便可以轻松地检测和删除孤立的附件。使用EAV模型真的是比“经典”更好的解决方案吗这个场景中的关系模型?