我正在考虑制作一个iou(我欠你)的网络应用程序,我可以跟踪谁欠我和什么。我这样做是一个辅助项目。无论如何,我没有数据库架构设计的经验。应用程序设计如下所示:
现在,我知道我需要一个至少包含以下内容的用户表:
UserTable:
username, usernameId (pk), password, passwordHint, email
然后,我对如何从那里开始感到困惑。我应该为每个人#1,人#2等制作新表吗?或者,我是否应该使用所有“交易”的另一个表IouTable并使用用户名作为fk?
IouTable:
usernameId, personName, amount, description, date
因此,当用户Yko登录时,它将运行此查询:
SELECT * FROM IouTable WHERE usernameId = username
(可能在这里弄错了)
然后,我会将这些行单独分开并将每个人的每笔交易都放在自己的页面上。
提前感谢任何帮助/建议/建议!!!
答案 0 :(得分:3)
绝对是所有欠条的一张桌子。
情景1:作为Yko,我想要一份我所欠的所有人的名单以及总数
SELECT personName, sum(amount) totalOwed FROM IouTable WHERE usernameId = <Yko>
情景2:作为Yko,我想知道我欠鲍勃多少以及为什么。
SELECT amount, description, date FROM IouTable WHERE usernameId = <Yko> and personName = 'Bob'
让我们看一下您的情况。
User表看起来很不错。关键候选人包括用户名,usernameId和电子邮件。代理用户名Id与密钥的任何一个一样好。
IouTable列出了所有的IOU。这个表有几个问题。
Perhaphs a Yko在同一天两次从Bob那里借出了2欧元,并且没有费心填写说明。在这种情况下,您没有正确的方法来区分这两个事务。您可能应该添加transactionId以唯一标识事务
此外,Yko可能有两个叫鲍勃的朋友。 Yko如何将这两者相互分开。是否应该有Yko可以贷款的朋友列表?
最终Yko应该付钱。 Yko可能可以从表中清除债务,但是后来我们怎样才能找出谁借给谁多少钱呢?是否应该有一个专栏来说明部门是否已经支付了?
Yko的一些朋友甚至可能会考虑以增量的方式获得回报。 Yko可能会编辑所欠的原始金额但是我们不会在第一时间知道需要多少。是否应该有一个专栏告诉我们到目前为止已支付了多少部门?如果Yko希望更密切地监控债务,那么所有还款的清单可能都是好主意。然后,您可以通过总结已偿还的金额来计算剩余的债务总额。
答案 1 :(得分:1)
TABLE User:
username, password, passwordHint, email
PK = username
TABLE Iou:
username, pesronName, date+time, amount, description, repaid(true if personName has repaid it yet)
PK = username,personName,date+time (or, make an auto-incrementing id num)
答案 2 :(得分:0)
如果你的意思是跟踪2个用户之间的IOU,那么IOU表将有一个外键返回到Users表,一个用于“ower”,另一个用于“owed”。
答案 3 :(得分:0)
我的公司在几年前以同样的意图开始了我们自己的小方案项目,我们上周终于发布了它。它比原先预期的要长得多,现在可以跟踪任何类型的欠条,并与Facebook和Twitter集成。如果您想查看,请转到IOUmate.com
我当然不是想阻止你构建自己的应用程序。但是,如果您正在寻找此功能(就像我们一样)并且找不到解决方案,请查看我们的应用程序并节省一些时间。
谢谢, 丹
P.S。我建议您添加一个朋友表来规范您的IouTable。然后,每个IOU可以与用户和朋友相关联。如果你想朝着我们的方向前进,朋友们可以成为会员。祝你好运!