数据库设计 - 何时将数据拆分为多个表?

时间:2010-04-21 12:23:08

标签: database-design database-partitioning

我有一张动物表:

  

动物
  身份证号码   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:

DogPortfolio
Id日期
1 01/01/2001
2 01/04/2005

CatPortfolio
Id日期
1 20/03/2009

RabbitPortfolio
Id日期
1 05/03/2009

  

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

1 个答案:

答案 0 :(得分:1)

我肯定会选择方法1。

因为每种动物的投资组合都是相同的,所以它们应该一起放在一张桌子里。如果Dog组合与兔子组合不同,那么你可能想要考虑更像方法2的东西。

方法1 也可以扩展,因此您可以添加1行

4鱼

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

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

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