首页 > 解决方案 > 重塑数据框的正式 UML 表示

问题描述

为了记录数据表的重组,从“宽”使用每个分数的标准列到使用score列和criterion列,我的第一反应是使用 UML 类图。

同类/数据表的宽版和长版

我知道通过改变数据表的结构,类属性并没有改变。

我的第一个问题是宽版本还是长版本是数据表的更正确表示?

我的第二个问题是,将这两种表示联系起来是否有意义——如果是这样,通过哪种关系?

我的第三个问题是,除了 UML 类图之外,是否更适合记录重塑(在将分布显示为 R 中的盒子之前的数据预处理)。

标签: umlstructureclass-diagram

解决方案


你从表跳到 UML 有点快。这使您的问题非常混乱,因为表的宽度表示为一个类,反之亦然。

重新制定您的问题,看来您正在重构一些表。宽表在同一行中显示同一学生的多个值。这意味着最大练习数由表结构固定:

ID    Ex1  Ex2  Ex3 .... Ex N 
-----------------------------
111    A    A   A   ...   A
119    A    C   -   ...   D
127    B    F   B   ...   F

长表的列较少,每行仅显示 1 个特定学生的 1 个特定分数:

ID   #    Score 
---------------
111  1     A 
111  2     A
111  3     A   
          ...
111  N     A
119  1     A
119  2     C
          ...

您可以在 UML 类图中对该结构建模。但是在 UML 中,表格布局无关紧要:这是 ORM 映射的问题,您可以完美地拥有一个1..N可以使用宽版本或长版本实现的类模型(具有属性或具有多重性的关联) . 如果多重性1..* 只是长选项会起作用。

现在回答你的问题:

  1. 两种表述都是正确的;他们只是有不同的特点。宽是不灵活的,因为最大分数数由表结构固定。此外,添加新分数实际上需要更新记录(因此两种模型可能的并发性并不相同)。如果您想连续显示学生分数的历史记录,使用 long 会稍微复杂一些。
  2. 是的,将两者联系起来是有意义的,特别是如果您正在编写将第一个转换为第二个的转换。
  3. UML 在这里不一定会增加价值。如果你真的很关心表和值,你也可以使用实体/关系图。但是 UML 还具有允许数据库建模的优点,它允许您添加行为方面。如果不是现在,那么以后。您可以考虑使用 non-standard «table»stereotype来阐明您正在为表格建模的内容(因此是您设计的低级视图)。

推荐阅读