表结构不允许所需的功能

时间:2013-12-21 18:41:09

标签: php mysql database-normalization

当前功能: 在我的财务/预算应用中,当前功能允许用户添加将在每个月的预算中显示的定期预算类别。它通过允许用户从下拉列表中选择“周期性”选项来实现此目的,这使得出现2个额外的下拉列表,一个具有开始月份,一个具有结束月份。当类别重复出现时,它会将开始月份和结束月份写入数据库(下图)。

渴望的功能: 当前设计的问题在于我希望用户能够从经常性月份中删除一个(或更多)月份。因此,我想说,我在一月份的一年中设置了一个经常性的类别。然后我到了五月,我希望这个类别不会出现在那个月。如果我删除该类别,它目前会删除所有月份,过去和现在。我需要它可以选择只删除所需的月份。

我不知道如何做到这一点,我想也许有人有个好主意。也许我的数据库结构已关闭?为了规范化,我不想只为每个月或类似的事情添加一列。

enter image description here

1 个答案:

答案 0 :(得分:1)

不是存储递归公式,恕我直言,最好将实际月份存储在多对多关系中:

categories
----------
id
name

months
------
id

category_months
---------------
cat_id
month_id

当用户输入递归公式时,它将创建关系。然后,如有必要,他们可以自由地一次删除一个月。