我想设计一个Web应用程序,以跟踪组织成员的财务状况。某些功能与Splittr非常相似。我使用MWE数据库图定义需求:
(请注意每个用户如何定义他们的份额金额以及共享费用的自己的类别。UserShare表使用复合主键。)
问题:我必须将用户与他们的3个个人“财务”表和3N
“ SharedExpense”表(其中N
是'用户所属的共享费用组)。
尝试的解决方案:
多个数据库。每个用户的“财务”表都有一个唯一的数据库。每个“共享费用组”在服务器上都有一个唯一的数据库。然后,我可以将一个主数据库中的用户与以下四个紫色表相关联:
缺点:外键来自不同的数据库,需要备份大量数据库。
多个表。我可以在同一数据库中创建所有表,并将它们与四个 green 主表相关联:
在这里,表的数量是一个潜在的问题。如果有M
个用户和N
个“共享费用组”,那么将有3M + 3N
个表!
问题:是否为此目的设计了更优雅,更简单的数据库?如果不是,那么以上两种解决方案中哪一种更好,为什么?
链接到相关的先前StackOverflow问答:
答案 0 :(得分:2)
在总结中要描述的所有挑战很多,但我将挑选其中一些。
很抱歉,不过我会重新开始。考虑一下您的运行状况如何,然后再使用其他信息重新开始。
请阅读3NF以及一些更高的归一化水平。尽管3NF几乎是最小标准化,但更高的水平变得越来越专业化,可能不适用于您的设计。
您对数据和业务的了解越多,您的设计就会越好,最终产品就会越好。