【问题标题】:Should I use multiple tables or one table with more columns when making static copies of rows?在制作行的静态副本时,我应该使用多个表还是一个具有更多列的表?
【发布时间】:2021-09-01 16:38:31
【问题描述】:

因此用户能够创建项目并对其进行编辑。这些项目(正在进行中)的所有必要数据都存储在 projects 表中。当用户对项目感到满意时,他们可以发布项目。这将创建一个静态副本。他们仍然可以编辑项目(正在进行中),但这不会更改副本的任何内容。

我创建了另一个表 published_projects 来存储这些静态副本。此表包含与 projects 表相同的列以及一些额外的列(例如发布日期)。

这会导致大量重复内容,但这似乎是不可避免的,因为项目的更改不应反映在正在进行的项目中。这是最好的方法还是有更好的方法?

我可以将它合并到一个表中,但这仍然会产生相同数量的行,并且我认为一个表中的行越多会导致对该表的查询速度变慢。

【问题讨论】:

    标签: mysql database-design


    【解决方案1】:

    肤浅的答案是一张桌子。但是……

    一个表也可以工作——你有published_date(或其他)列来指示这是否是一个冻结的副本,除非通过复制,否则不应对其进行修改。

    我会根据所有支持代码的复杂性来决定一张桌子还是两张桌子。哪个动作写起来更简单?还是更容易维护?等等。

    如果有足够的索引,性能可能并不重要。

    还请进一步考虑双表方法 - 是否可以从两个表中删除其他列?积极回答问题;事实证明,这两个表并不像您目前想象的那样相似。如果是这样,这将使答案倾向于两张表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2016-11-18
      • 2021-07-19
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      相关资源
      最近更新 更多