你基本上试图在关系数据库中表示继承。
你有两个“类”在某些方面是相似的,而在其他方面是不同的。我的建议是创建一个表,充当tbl_expanditures
和tbl_fixed_expanditures
的父级。
这里是我会做:
+------------------+
| tbl_expenditures |
+------------------+
| id |
+------------------+
+------------------------+
| tbl_fixed_expenditures |
+------------------------+
| id |
| expenditureId |
| ... |
+------------------------+
+---------------------------+
| tbl_variable_expenditures |
+---------------------------+
| id |
| expenditureId |
| ... |
+---------------------------+
...其中tbl_fixed_expenditures.expenditureId
和tbl_variable_expenditures.expenditureId
都必须tbl_expenditures.id
参考。
这样,当您需要将它们简称为“支出”(例如,在您的交易表中)时,您可以参考tbl_expenditures
,并且当您需要固定或可变支出独有的信息时,您可以参考“孩子”表。
这是关系数据库的一个非常普遍的问题,并且有几种处理方法,每种方法都有其优点和缺点。IBM有一个非常好的文章,概述这些选项,我强烈建议进一步阅读:
http://www.ibm.com/developerworks/library/ws-mapping-to-rdb/
有什么实际问题?您是否担心规范化,因为这两类项目(固定资产和可变资产)具有不同的属性/列? – theMarceloR
是的,这是关于正常化(不要问我哪一个:P),但我不知道如何去做。我有这张表需要节省这两种支出的表expenditures_tranx。 –
我不确定我是否理解这个问题。如果你想把所有的支出都放在一张桌子上,但需要区分它们,那么标志(内容= y或n)就是要走的路。 – mikeY