我正在尝试建立一个数据库来管理人与人之间的支出。我想要一张桌子,我在这里可以节省每个人花了多少欧元。
我有一个名为people的表,该表只有两列,_id和name。
然后,我试图用_id创建表,总计金额并节省每个人花了多少欧元。我当时在想为每个人的_id列一栏,并注明已经花费了多少欧元,但我不知道该怎么做。
例如:
或者,也许我可以使用一些列来存储ID和金额,如下所示:(这是相同的示例)
先感谢您!
您在那里提出了两个单独的SQL反模式。一方是由另一台命名的列,另一个是有一个blah_1
,blah_2
......一系列列。在每种情况下,它们都表明您正在考虑此错误;数据库不是电子表格。
最好有一个表来记录事务ID,人员ID及其花费之间的唯一映射(_id
为清楚起见,省略):
txID | personID | spend
-----+----------+-------
1 | 1 | 10
2 | 1 | 5
2 | 2 | 10
3 | 2 | 10
3 | 3 | 10
4 | 1 | 4
你要指定该组合的txID
和personID
是唯一的,但不是说任何列是唯一本身。
现在,这并不是说您已经丢失了任何人花费的金额或其他类似的基本汇总信息。然后,您可以使用类似以下的查询来得出在交易中花费的总金额:
SELECT SUM(spend) AS "Total amount" FROM spendTable WHERE txID = 2
但是,您也可以执行以下操作,例如找出某人的总花费:
SELECT SUM(spend) FROM spendTable WHERE personID = 1
这样的查询是完全明智的,并且对于您建议的第二个表设计将更加困难。(第一个设计会更好,除非您实际上PEOPLE
不能通过外键关系显式链接到表,否则一旦开始做任何更复杂的事情,这将使事情变得更加棘手。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句