2012-09-03 150 views
-2

我想開發一個Java應用程序,用戶應該可以根據對方添加計算項目。考慮這種情況:計算互相依賴的項目

  • 具有值添加的項(A)讓說50
  • 添加另一個項目(B),它是產品A * 5
  • 添加物品(C),其具有的值(A * 50%)+ B
  • 只要在其他項目中使用刪除項目(A)就會失敗。

我可以存儲方程在數據庫中varchar,而當我記得使用公式解析器或類似的東西解析回Java編寫的。但是當我嘗試這個時,問題是如果項目A被刪除?如果我使用varchar,數據庫不知道該項目是否鏈接到另一個項目。我希望使用外鍵將項目鏈接到對方,我該如何實現?

對不起,如果這是一個重複的問題,但我找不到解決我的問題的正確答案。

+2

那麼問題是什麼? – aviad

+0

不要告訴你想做什麼,問一個真正的問題,可以回答。 – Sylar

+0

對不起,我不知道該問題的最後一部分沒有發佈。我已編輯我的問題 – fareed

回答

2

您可以使用tree java structure來表示表達式。每個節點將代表一個操作符和2個操作數。具體的價值將在葉級。 計算將是一個簡單的步驟在樹上。

在數據庫中,您需要表達指向其所有組件(樹節點)的表達式(樹)。

(或者使用可替換表達式樹DB表示)

  EXP1: 
     OPERATOR:+ 
     / \ 
     / \ 
     /  \ 
    OPERAND:1 OPERAND:2 

的DB

表達條目表

| 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 | 
+0

我明白了,我現在需要這樣想。一個很好的答案的簡單問題。我不知道爲什麼我仍然得到低估。 – fareed