我正在mysql上为一个小应用程序创建一个数据库。问题是,在不同的表上有太多相同的字段,如
表1:主题: ID,UserID,标题,位置,描述,ImageURL,
表2: Harrasement问题: ID、UserID、标题、位置、描述、ImageURL
表3与上文相同
两张桌子的库仑几乎是一样的。我想问一下,是否最好使用关系并创建一个处理it的表,并将其与其他细节链接起来,还是最好为这些问题创建一个带有额外库仑的表。
一方面,会有太多列相同的表。另一方面,很少会有太多行的表。
更多行或更多表的性能最好的是什么。
我在用Mysql。
发布于 2016-07-14 09:18:48
首先,除非您期望数以百万计的记录不太关心性能,而是更关心数据的结构以及访问它的容易程度。逐字逐句地写下您计划在应用程序中提取的数据列表,例如“今天查找所有问题”、“查找所有6个月前未解决的问题”,然后尝试在您预期的结构上构建真正的SQL查询。如果他们要努力改变结构。
回答你的问题:视情况而定。目前的结构有以下好处:
以下是不利因素:
UNION-s。此外,此UNIONS将要求创建具有问题类型的虚拟字段,否则您将无法判断某些id来自哪个表。传统的db方法建议对公共字段使用一个表,并为不同的字段创建派生表。所以:
issues表应该具有所有公共字段,并由PK issue_id标识。municipal_issues使用issues.issue_id的外键,并且只有特定的字段harassment_issues使用issues.issue_id的外键,并且只有特定的字段issues表有一个issue_type字段,该字段采用值“骚扰”、“市政”等,并帮助查找存储附加数据的表。这种模式称为"类表继承“,您可以查看SQL反模式演示文稿以获得更多信息和其他方法。这解决了灵活性问题,并且仍然允许只使用一个快速的简单连接重新创建每个原始表。
另外,您可以查看像螳螂这样的bug跟踪器的db模式,因为这看起来是相同的域。
https://stackoverflow.com/questions/38368402
复制相似问题