用于编辑具有多对多关系的数据的GUI模式

Wou*_*ick 27 language-agnostic user-interface many-to-many

我经常遇到一种情况,我需要提出一个GUI来编辑具有:m关系的数据.我正在寻找用户友好的GUI想法.

[table1]
   |
  /|\
[table2]
  \|/
   |
[table3]
Run Code Online (Sandbox Code Playgroud)

通常,GUI类似于以下内容:


Grid that shows all items from table1

Add table3 item... (显示带有table3项的模态窗口)


Grid that shows all items from table3


在用户选择了table3项之后,我向table2添加了一个新行并刷新了网格.

缺点:

  • 你只能将table3项添加到table1,而不是相反;
  • 您只能浏览table1项目并查看相关的table3项目;
  • 我需要有一个table3项的过滤网格,以及一个类似的选择新项目;

我的问题:

有没有人知道一种更好的方式来直观地浏览和编辑具有:m关系的数据?或者我可以从现有软件包"窃取"的任何好模式?

DVK*_*DVK 5

解决方案1

如果数据集不是太大,请使用表并允许用户在单元格中放置检查(表1是X轴,表3是Y轴).

只要您允许用户过滤或以其他方式限制在x和y轴上显示哪些值,您就可以对较大的table1/3数据集执行此操作.

解决方案2

引用此页面,"多对多关系实际上是两个与结点/链接表的一对多关系".

因此,作为一个解决方案,您可以简单地采用自己的解决方案并通过屏幕/对话框来解决前2个不利因素:表1 => 3以及3 => 1.

不是一个完美的解决方案,但至少提供所有需要的功能

解决方案3

与您自己的解决方案有些相似:

  1. 显示基于table1的表格,其中:

    B. col1包含table1元素

    C. col2包含table3中已与table1中此元素关联的所有元素的列表.

    如果通常很少有元素关联,则列表可以是水平的,如果水平到太宽,则列表可以是垂直(可滚动).

    重要的是,table3中的每个显示元素旁边都有一个"删除"图标(x),以便快速删除.

  2. 允许选择要为其添加映射的table1中的哪个元素.

    有两种方法可以做到这一点 - 为表格中的每一行添加一个复选框,并有一个标记为"添加与所选行的关系"的按钮(措辞需要改进),或者只是在表格中有一个第3列,包含按钮/链接,用于向该单个行添加关系.

    如果用户可能经常将table3中的完全相同的元素集添加到table1中的多行,那么前者是个好主意.

  3. 单击"添加"按钮/链接时,将显示表3中可过滤的多选元素列表,并带有"添加选定"按钮.

  4. 在您的解决方案中(请参阅我的#2),这是一个对称的,因此您应该实现镜像UI,以便在需要时从table3映射到table1.