1

レストラン用の mysql データベースを作成しています。

: というテーブルがあり*tbl_contents*、さまざまなメニュー項目の準備に使用されるすべてのコンテンツが格納されています。
ここで、すべての支出の表を維持する必要があります。これらの支出は、「コンテンツの購入」である場合もあれば、電気代やレストランの家賃などの定期的な支出である場合もあります。

2 種類の支出を同じテーブルに保存するにはどうすればよいですか?

私はテーブルtbl_fixed_expandituresとを持っていますtbl_contents。キッチン用に何かを購入すると、保管するはずでtbl_contents、電気代を支払った場合は、に保存されtbl_fixed_expendituresます。

ここに画像の説明を入力

4

2 に答える 2

1

うーん、適切な答えを出すのはちょっと難しいですが、私がこれまでに理解したことに基づいて、いくつかの漠然とした推測をすることができます.

両方の種類の支出に異なる属性があっても、いくつかの共通点がある場合は、テーブルを正規化する必要があります。expenditures_tranxを中間テーブル (オブジェクト指向の用語では最上位クラス) として使用し、残りのテーブルtbl_fixed_expanditurestbl_contents「特殊化された」テーブル (オブジェクト指向の用語では、親から属性を「継承」するテーブル) にすることができます。テーブル) には、支出に関するより詳細な情報が格納されます。説明するための簡単なモデル エンティティ関係のドラフトを次に示します。

   ____________          ___________________        _______________________    
  |tbl_contents|-1----*-| expenditures_tranx|-*---1-|tbl_fixed_expenditures|
  |exp_id:fk___|        |___________________|       |exp_id:fk_____________|

これらの概念を説明する興味深い記事があります: http://apps.topcoder.com/wiki/display/training/Entity+Relationship+Modeling

どう考えているか教えてください。

于 2012-12-27T18:09:32.433 に答える
1

基本的に、リレーショナル データベースで継承を表現しようとしています。

いくつかの点で似ていて、他の点で異なる 2 つの「クラス」があります。私の提案は、 と の両方の親として機能するテーブルを作成することtbl_expandituresですtbl_fixed_expanditures

これが私がすることです:

+------------------+
| tbl_expenditures |
+------------------+
| id               |
+------------------+

+------------------------+
| tbl_fixed_expenditures |
+------------------------+
| id                     |
| expenditureId          |
| ...                    |
+------------------------+

+---------------------------+
| tbl_variable_expenditures |
+---------------------------+
| id                        |
| expenditureId             |
| ...                       |
+---------------------------+

... wheretbl_fixed_expenditures.expenditureIdtbl_variable_expenditures.expenditureIdboth には への参照がありtbl_expenditures.idます。

このように、単純に「支出」と呼ぶ必要がある場合 (たとえば、トランザクション テーブルで) を参照できますtbl_expenditures。また、固定支出または変動支出のいずれかに固有の情報が必要な場合は、「」を参照できます。子」テーブル。

これはリレーショナル データベースで非常に一般的な問題であり、いくつかの処理方法があり、それぞれに長所と短所があります。IBM には、これらのオプションの概要を説明した非常に優れた記事があります。さらに読むために、それを強くお勧めします。

http://www.ibm.com/developerworks/library/ws-mapping-to-rdb/

于 2012-12-27T18:10:37.220 に答える