MySQL 为许多 table 的公共字段创建公共 table

MySQL creating a common table for common fields of many tables

我的项目中有 100 多个 MYSQL table,大部分项目都有 created_by、last_modified_date、last_modified_by 和很少有其他领域。用这些公共字段创建一个新的 table 并与此 table 添加一对一的关系是个好主意吗?例如

在上面的例子中,我有一个 table 名称 common_table 和所有公共字段,这个 table 是一对一的关系与所有其他 tables。这使我更容易添加或更新公共字段,而无需在所有 table 中进行复制。由于我处于开发阶段,此方法是否存在性能缺陷或将来会导致其他生产问题?

在查询方面,我预计不会有任何问题——假设 common_table_id 有一个主键。如果您有非常大的 table 和小标签,则可能会出现一些问题。公共 table 最终可能会被加载到内存中,即使只使用了小块(因为引用的 table 很小)。

一个更大的问题可能是更新,其中 inserts/updates 在不同的 table 上现在有共同的列,这些列也在被修改。这会引入锁定依赖关系。但是,如果插入相对不频繁(每秒不超过几次),这可能不是问题。

您可能想要调整模型以在公共 table 中也有一个 table id。您可以使用它来对 table 进行分区。这样,只需要将给定 table 的公共元素加载到内存中以进行查询和更新。

  • 1对1是危险信号。

  • 冗余数据是危险信号。

如果 table1table2 是 1:1,很少有正当理由将它们分成两个 table。即使这导致单个 table.

中有 100 列

呈现组数据。一定要包括任何变体——我不知道 balanceprice 是否共享 相同的 create_date,或者每个都有自己的create_date,而且可能不一样。