我正试图为这个用例想出一个好的数据库设计
我有一个名为expenses
的表,如下所示
id
category_id
item_id
问题
item_id
列将没有意义,如果费用类别是即。“租金”- 只有当类别是i时,它才有意义。"食物"
我想到了两种不同的方法
- 第一种方法:**
将item_id
列设置为nullable
- 第二种方法:**
创建一个名为expense_item
的单独表,包含以下列
expense_id
item_id
并从expenses
表中删除item_id
列。
我不知道我应该采取什么方法,或者是否有更好的方法。我不知道该怎么处理这个案子
2条答案
按热度按时间eoigrqb61#
下面的技巧只是你第一种方法的扩展。允许
item_id
为NULL,但根据类别验证其null值或非null值。我假设你有一个categories
表,如果没有,你创建它无论如何你都需要它。现在创建或添加列item_required boolean
。创建一个触发器,用于检查指定类别的item_id
是否存在item_required
。结果如下:(参见demo here
)这里的假设是,一个类别要么必须有一个项目,要么不能有一个项目。当然,您需要根据您的确切要求调整触发器。
如果它还不存在,下面是
categories table
的示例设置。uemypmqf2#
你可以像www.example.com一样对Rent进行分类mint.com。
对于像租金这样的支出,这将是
item_id
,category_id
可以是Home
或Home Expenses
。这一类别还可以包括家居装修、家具等项目。