-2

ユーザーが相互に依存して計算項目を追加できる Java アプリケーションを開発したいと考えています。次のシナリオを検討してください。

  • 値が 50 の項目 (A) を追加します。
  • アイテムAである別のアイテム(B)を追加* 5
  • (A*50%)+Bの値を持つ項目(C)を追加
  • アイテムの削除 (A) は、他のアイテムで使用されている限り失敗します。

方程式を varchar としてデータベースに保存し、方程式パーサーなどを使用したことを思い出すと、それを Java で解析できます。しかし、これを試したときの問題は、アイテム A が削除されたらどうなるかということでした。varchar を使用すると、アイテムが別のアイテムにリンクされているかどうかがデータベースにわかりません。外部キーを使用してアイテムを相互にリンクしたいのですが、どうすればそれを達成できますか?

これが重複した質問である場合は申し訳ありませんが、問題を解決する適切な回答が見つかりませんでした.

4

1 に答える 1

2

ツリー Java 構造を使用して式を表すことができます。各ノードは、演算子と 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    |
于 2012-09-03T08:06:42.533 に答える