形势概述
当前的问题是关于软件用户(客户机)希望对某个材料进行评估的情况。此评估可以使用一个或多个标准来完成,用户可以在软件的管理区域中添加和删除这些标准。请注意,评估必须保存在数据库中,以备将来参考。
附加信息:软件是用java编写的。
目标
假设有三张table。表 Material
,表格 Evaluation
和table Criteria
. 注意pk idMaterial
fk在吗 Evaluation
.
下图显示了这些表格:
这三个表是实际表的简化。criteria表命名条件变量,并为在评估中计算的最终分数设置其权重。
在这种情况下,目标是用户能够添加和删除条件。定义了标准之后,他就可以创建材质的评估。
并使用这些标准在数据库中保存评估。
换句话说,我需要存储每个用户定义标准的得分。
问题
从技术Angular 来看,我们注意到:
软件必须允许用户删除和添加列。这有点棘手,因为如果他删除了2列并添加了1列,代码就必须找到他删除了哪一列并只删除它们,然后只添加一列。这个例子很棘手,因为如果我们删除所有的列,只添加他维护/添加的列,代码会更简单。
弄乱表列对于表的完整性来说似乎是危险的。尤其是在未知的情况下。
我在寻找更好更安全的解决方案。
任何建议都非常感谢。我希望我把问题说得尽可能清楚。
约束条件
一个解决方案没有任何限制,只是我使用java和mysql。如果需要,我可以创建更多的表,并允许用户添加/删除列。
3条答案
按热度按时间yzuktlbb1#
但是我如何在事后创建一个评估呢?因为在你的解决方案中,每个标准都是一行。。。请举例说明好吗?
在我们的一个系统中,用户可以定义0到无限的标准。
因此,需要使用行。
具体来说,用户可以附加一个或多个
filters
(他们是or
'd)每个过滤器可以包含一个或多个criterias
(他们是and
(d)代码方面的评估如下所示(这不是复制/粘贴代码,但可能会给您一个想法)。
environmentVariables
基本上是一个包含我们试图应用过滤器的对象属性的Map:4ktjp1zp2#
然后,根据您的注解,您应该只为条件创建一个表,在该表中,用户添加一行来指定评估标准是什么。添加和删除将更加安全,因为您不会更改实际的表属性,而是操作条目
编辑:
要使用它,只需使用
INSERT INTO
语句,将值插入列中。z4bn682m3#
添加额外的表标准,其中两个外部特性作为主键..存在两个解决方案最后一个如我所说,这是您绘制的