【问题标题】:Storing tables within a record in a database在数据库的记录中存储表
【发布时间】:2012-01-01 20:22:21
【问题描述】:
我正在考虑创建一些东西来帮助财务或类似的东西,就像一个小项目来帮助我的 Web 开发技能,但是在规划阶段我无法解决一件事。
假设我有多个用户,每个用户都会看到一个表格,其中包含每周/每月以及他们的支出、税收等。我将如何将其存储在数据库中?我能否在记录中嵌入某种表格,还是必须使用多对多关系?
如果有人知道一个好的解决方案,我很想听听!
【问题讨论】:
标签:
database
database-design
relational-database
database-schema
【解决方案1】:
从您描述的少量内容来看,您的 Expenditure 表与您的 Person 表是多对一的关系。支出表中的每一行都可以包含一个日期字段以及有关支出的其他信息。您需要多对多关系的唯一原因是,如果许多人与单一支出相关联。您可能想阅读一本关于数据建模的好书。
【解决方案2】:
我将有一个用户表(id、用户名、密码、电子邮件...)和一个财务表(id、用户 ID、日期、交易、金额、详细信息...),单个财务表将负责收入和支出都只需 +/- 金额。这是一对多的关系(一个用户有很多财务记录),然后你会大致查询
SELECT * FROM tblFinance WHERE user_id = foo AND date BETWEEN NOW()-7 AND NOW()
您当然可以在查询中汇总等,希望这会有所帮助
【解决方案3】:
您不会嵌入表格。您对数据的存储方式和显示方式感到困惑。
假设您使用的是关系数据库,您会将数据存储在多个数据库表中。例如,您可以有一个包含以下列的数据库表(为了解释而过于简化)
userid, expense_type, expense_description, amount, date_of_expenditure
此表将存储所有用户的费用。
现在为了在网页上显示,您的应用程序将从您的数据库表中获取数据并将其呈现在网页上。如何显示它取决于您的要求。您的应用程序将负责整理、聚合、过滤从数据库中获取的数据,然后再将其显示给用户。