【发布时间】:2018-10-29 22:00:12
【问题描述】:
我目前正在为我正在构建的产品设计数据库架构。在开始在 MySQL 中创建所有内容之前,我只是在 Excel 文件中绘制所有内容。
目前,我有两张几乎完全相同的不同表格。
TABLE A 包含每个用户的每个数据点的最新值。
TABLE B 包含每个用户的每个数据点的每日记录。
我创建TABLE A 的原因是,TABLE B 中的行数每天都会随着我拥有的客户数量而增长。例如,假设我有 20,000 个客户,TABLE B 每天将增长 20,000 行。因此,通过创建TABLE A,我只需搜索 20,000 条记录即可找到每个用户的每个数据点的最新值,因为我每天都会更新这些值;而对于TABLE B,我必须搜索越来越多的行,以查找每个用户的最新插入。
这是可以接受的还是好的做法?
或者我应该忘记 TABLE A 以减少数据库中的“膨胀”吗?
【问题讨论】:
-
您是在谈论制作一组针对您的阅读要求进行优化的衍生数据。这很正常。这里的关键是以一种可以验证表 A 准确反映 B 中的内容并且两者不会不同步的方式来执行此操作。一种方法是使表 A 成为
VIEW并定期实现它,或使用触发器进行更新。 -
@tadman 我对 MySQL 很陌生,所以我无法理解这个
VIEW东西,并将其具体化,并触发。每次我将每日记录插入TABLE B时,我都会更新TABLE A。 -
您可以使用触发器自动执行更新,
VIEW部分是您最初填充表格的方式。如果您不完全熟悉这些概念,则值得一读,这样您就知道自己拥有哪些工具。 -
@tadman 我今天会详细阅读它们!问题是这一切无论如何都将是自动化的。从抓取到上传,再到数据的处理/处理(即插入和更新)。但我仍然会阅读其他内容
-
@tadman 刚刚发现不幸的是我的托管计划不允许我在共享主机上使用分区:( 希望我在花这么多时间阅读它之前检查过它哈哈
标签: mysql sql database select database-design