我应该在oracle中使用多个单独的表或一个包含多个分区的表

时间:2012-02-28 12:23:55

标签: oracle data-storage database-partitioning

我有一个实体可以将其称为Response,另一个名为ResponseTypeResponse实体的实体包含ResponseType。 因此,当我构建物理模型时,我对如何实现它感到困惑。

我有两个选择:

  1. 我可以为每个Response创建一个ResponseType表。
  2. 我可以使用Response列创建全局ResponseType表,并为每个ResponseType创建一个分区。
  3. 请注意,Response每个ResponseType实体都相同。每个ResponseType都是等价的。

    你的想法是什么?

1 个答案:

答案 0 :(得分:0)

我认为没有理由创建单独的表。

您通常会创建一个Response表,一个ResponseType表,并在两者之间创建一个外键。像

这样的东西
CREATE TABLE ResponseType (
  ResponseTypeId NUMBER PRIMARY KEY,
  <<other columns>>
);

CREATE TABLE Response (
  ResponseId     NUMBER PRIMARY KEY,
  ResponseTypeId NUMBER REFERENCES ResponseType( ResponseTypeId ),
  <<other columns>>
);

如果您拥有企业版,并且您还获得了分区选项的许可,那么在查询ResponseTypeId表时,您的查询将始终指定Response,并且通常希望阅读所有Response对于特定ResponseTypeId而不是使用索引的行,分区Response表可能会带来性能优势。但这是相当多的if陈述。