Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 一个或多个表_Ruby On Rails_Database Design_Polymorphic Associations_Single Table Inheritance - Fatal编程技术网

Ruby on rails 一个或多个表

Ruby on rails 一个或多个表,ruby-on-rails,database-design,polymorphic-associations,single-table-inheritance,Ruby On Rails,Database Design,Polymorphic Associations,Single Table Inheritance,我有不同的测量方法。它们之间没有联系。比如说A,B和C。它们三个都有相同的结构,ID(integer),value(float),实验ID(integer)(与实验表相关) 我不知道存储此信息的最佳方式 A) 使用三个表(A、B和C)是否更好 B) 或者,最好将它们存储在一个名为measurements的表中,并添加一个名为measurement\u type的附加列来存储A、B或C(包括索引)的信息 在我的应用程序中,我希望有三个模型,分别称为A、B、和C 解决方案应该是快速的,因为对于每种测

我有不同的测量方法。它们之间没有联系。比如说
A
B
C
。它们三个都有相同的结构,
ID(integer)
value(float)
实验ID(integer)
(与实验表相关)

我不知道存储此信息的最佳方式

A) 使用三个表(
A
B
C
)是否更好

B) 或者,最好将它们存储在一个名为
measurements
的表中,并添加一个名为
measurement\u type
的附加列来存储
A
B
C
(包括索引)的信息

在我的应用程序中,我希望有三个模型,分别称为
A
B
、和
C

解决方案应该是快速的,因为对于每种测量类型,一天可能有数亿甚至十亿个条目。此外,有一天可能会有测量类型
D
E
Z


顺便说一句,我使用的是Oracle企业数据库。

由于度量类型可以增长,并且不限于A、B和C,因此建议使用选项B),因为它在需要时支持其他度量类型。

根据您的评论,假设您关注的是查询性能(而不是插入性能),看起来您需要一个与此类似的模型:

使用<代码>测量< /COD>表(也考虑使用<代码>压缩< /代码>子句,因为将有许多行共享相同的前导<代码>实验ID ID/代码>) 索引

I1
由以下部分组成:
{FEATURE\u ID,EXPERIMENT\u ID,MEASUREMENT\u TYPE,VALUE}
,顺序如下。考虑使用<代码>压缩< /代码>子句,因为将有许多行共享相同的前导<代码>特征库ID <代码> >

这为我们提供了两个B-树:

  • PK
    下面的B树,即索引组织的表本身
  • 索引
    I1
    下方的B树
  • 通过在
    PK
    B-树中进行单个索引范围扫描和no表堆访问(堆不存在),可以满足对
    EXPERIMENT\u ID
    的查询。
    PK
    B-树自然地将属于相同实验的行存储在一起,因此I/O最小化

    FEATURE_ID
    的查询也可以通过单个范围扫描(在
    I1
    B-树中)来实现。
    I1
    是一个索引,因此不需要在
    PK
    B树中进行双重查找。
    I1
    B树自然地将属于相同功能的行存储在一起,因此I/O最小化


    除非您对具有代表性的数据量进行了测量,并得出结论认为它提供了更适合您需要的性能权衡。

    您打算如何查询数据?另外,
    ID
    是否有任何内在含义?例如,它是否需要在
    A
    B
    C
    之间唯一?它必须符合测量的顺序吗?此外,是否所有测量值都是浮动的?@BrankoDimitrijevic
    ID
    没有什么特别之处。最好是忽略它:-)。顺序并不重要。所有测量值都是
    浮点值
    。如何区分恰好具有相同
    值的两个测量值
    ?请回答我的另一个问题:你打算如何查询数据?我不仅与实验有关。完整的结构包括
    实验id
    特征id
    。实验和特征的结合是独一无二的。在一个实验中,有许多特征,每个特征都有一个值。一个值可以多次出现。我将查询属于一个实验的所有值。或属于一个特征的所有值(多个实验)。