基本的に、リレーショナル データベースで継承を表現しようとしています。
いくつかの点で似ていて、他の点で異なる 2 つの「クラス」があります。私の提案は、 と の両方の親として機能するテーブルを作成することtbl_expanditures
ですtbl_fixed_expanditures
。
これが私がすることです:
+------------------+
| tbl_expenditures |
+------------------+
| id |
+------------------+
+------------------------+
| tbl_fixed_expenditures |
+------------------------+
| id |
| expenditureId |
| ... |
+------------------------+
+---------------------------+
| tbl_variable_expenditures |
+---------------------------+
| id |
| expenditureId |
| ... |
+---------------------------+
... wheretbl_fixed_expenditures.expenditureId
とtbl_variable_expenditures.expenditureId
both には への参照がありtbl_expenditures.id
ます。
このように、単純に「支出」と呼ぶ必要がある場合 (たとえば、トランザクション テーブルで) を参照できますtbl_expenditures
。また、固定支出または変動支出のいずれかに固有の情報が必要な場合は、「」を参照できます。子」テーブル。
これはリレーショナル データベースで非常に一般的な問題であり、いくつかの処理方法があり、それぞれに長所と短所があります。IBM には、これらのオプションの概要を説明した非常に優れた記事があります。さらに読むために、それを強くお勧めします。
http://www.ibm.com/developerworks/library/ws-mapping-to-rdb/