【问题标题】:Database Design - when to split data into multiple tables?数据库设计 - 何时将数据拆分为多个表?
【发布时间】:2010-04-21 12:23:07
【问题描述】:

我有一张动物桌:

动物
身份证号
1 条狗
2 猫
3 兔子

每只动物都有一个投资组合,因此我有两种定义数据库表的方法。

方法 1:

投资组合
Id AnimalId 日期
1 1 01/01/2001
2 2 20/03/2009
3 3 05/03/2009
4 1 01/04/2005

方法 2:

狗组合
身份证日期
1 01/01/2001
2 2005 年 1 月 4 日

猫组合
身份证日期
1 2009 年 3 月 20 日

RabbitPortfolio
身份证日期
1 2009 年 5 月 3 日

哪种方法更可取?请记住,这是一个人为的示例,实际上我将为每个投资组合存储约 10k 行数据。

【问题讨论】:

  • 每个投资组合 10K 行 od 数据是微不足道的数据量,当然不是对表进行分区的理由。

标签: database-design database-partitioning


【解决方案1】:

我当然会选择方法 1。

因为每种动物的作品集都相同,所以它们应该放在一张桌子上。如果 Dog 投资组合与 rabbit 投资组合不同,那么您可能需要考虑类似于方法 2 的方法。

方法1也可以扩展,这样就可以增加1行了

4 条鱼

结构的其余部分继续工作。使用方法 2,每次将一行添加到您的动物表时,您都必须创建一个表(例如 FishPortfolio)。

几乎每次您想出一个涉及在运行时创建永久存储表的解决方案时,这都是一个糟糕的主意。

确保在索引中同时包含 PortfolioID 和 AnimalID。

【讨论】:

  • 如果只有这 3 种动物(一句话!),你的看法会不会一样? IE。我不认为我的数据库中有更多动物。
  • 是的,应该是一样的。创建单独的表充其量是愚蠢的,最坏的情况是查询噩梦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
  • 2012-11-30
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多