我想开发一个java应用程序,用户应该可以根据彼此添加计算项。请考虑以下情况:
我可以将方程式存储为数据库中的varchar,并在我回忆起使用方程式解析器或类似的东西时将其解析回java。但是当我尝试这个时,问题是如果项目A被删除了?如果我使用varchar,数据库不会知道该项是否链接到另一个项目。我希望使用外键将项目相互链接,我该如何实现?
很抱歉,如果这是一个重复的问题,但我找不到能够解决问题的正确答案。
答案 0 :(得分:2)
您可以使用tree java structure来表示表达式。每个节点将代表一个运算符和2个操作数。具体值将在叶级别。 在树上行走的计算很简单。
在DB中,您需要表达(树)指向其所有组件(树节点)的表示。
(或使用替代表达式树DB表示)
EXP1:
OPERATOR:+
/ \
/ \
/ \
OPERAND:1 OPERAND:2
数据库
表达式条目表:
| ID | NAME | DEPENDS_ON_NODE_ID |
| 1 | EXP1 | 1 |
| 2 | EXP1 | 2 |
| 2 | EXP1 | 3 |
节点表:
| ID | NAME | TYPE | VALUE |
| 1 | NODE1 | OPERATOR | + |
| 2 | NODE1 | OPERAND | 1 |
| 3 | NODE1 | OPERAND | 2 |