代码之家  ›  专栏  ›  技术社区  ›  Chris K

群和子群关系的最优关系设计

  •  1
  • Chris K  · 技术社区  · 7 年前

    我可能在大量论文中遇到的案例。事实上,文章倾向于报告一组半标准的细节,但一旦进入细节,肯定会有差异。这些东西是为人类写的,不是为机器写的。

    在很大程度上,定义模式是相当简单的,但有一件事我一直在做,那就是如何合理地构建一组表格,以获取有关研究主题组和主题子集的详细信息。

    目前,我已经设置了这个,以便 Study Subject 记录,以及 主题 记录可以有许多 Interval_Subgroup Categorical_Subgroup

    Subject
    -----------------------------------------
    id | groupType  | measure | value | study
    -----------------------------------------
    13 |  treatment |  count  |  578  |  17
    14 |   control  |  count  |  552  |  17
    
    Interval_Subgroup
    ---------------------------------------------------------------
    id | factor | factorMin | factorMax | measure | value | subject
    ---------------------------------------------------------------
    41 |  age   |     18    |     24    |  count  |  125  |   13   
    42 |  age   |     25    |     32    |  count  |  204  |   13   
    
    Categorical_Subgroup
    -----------------------------------------------------
    id | factor | factorValue | measure | value | subject
    -----------------------------------------------------
    74 |  sex   |     male    |  count  |  251  |   13   
    75 |  sex   |    female   |  count  |  327  |   13   
    

    这似乎可行,但感觉很笨拙,因为我有两个表用于捕获相同类型的信息。此外,它是有限的,因为它不允许我捕捉任何子组集的组合,如18-24岁的男性。有些研究报告了这种细节,有些没有,但我希望能够捕捉到论文提供的任何深度的亚组信息。

    有什么比我上面描述的更灵活的方式来构造这些表?我试图勾勒出我认为这应该如何工作,现在,我有主题组有许多子组,子组有许多子组定义。只有一个表捕获关于子组的测量值,另一个表定义每个子组是什么。我不确定这是否是正确的方向。也许有一个更简单的解决方案,你可能知道。

    谢谢你花时间帮忙,非常感谢!


    1 回复  |  直到 7 年前
        1
  •  0
  •   Dan    7 年前

    根据你的描述,这听起来像 factor 是一个 subgroup 有一个或多个 s、 对我来说,这意味着 interval categorical ,这意味着 single table inheritance 可能是正常的。

    subgroups
    ------------------------------
    id | measure | value | subject
    ------------------------------
    41 |  count  |  125  |   13   
    42 |  count  |  204  |   13   
    
    factors
    id | type        | factor | category | interval_min | interval_max | subgroup
    -----------------------------------------------------------------------------
    68 | interval    | age    | NULL     | 18           | 24           | 13
    69 | categorical | sex    | male     | NULL         | NULL         | 13
    

    在这个例子中,41亚组有两个因素,年龄18-24岁和性别男性。

    也可能是STI在这里杀伤力过大,在这种情况下,你会分裂 因素 categorical_factors interval_factors ,一个子组可以有零个或多个。

    就我所知,使用STI的复杂性主要取决于您使用的ORM。Rails/ActiveRecord有很好的支持,其他框架各不相同。

    希望这有帮助!