0

我正在开发一个带有 MySQL 数据库的网站,其中包含 2 个表,一个包含用户信息,另一个包含礼物信息。我想存储谁支付了部分不同礼物的信息,以及给他以后更改礼物的可能性。

我会在礼物表中添加一个条目,其中包含捐赠的用户数组和金额。如果以后有人想更改,我更改金额或删除条目并更新显示的礼物剩余金额。

但我认为从可变长度数组开始并不是最佳选择。也许在数据库中创建一个带有捐赠用户和每个礼物金额的新表会更好,但编码和管理也会更复杂(我希望只有两个表)。

有人对我的困境有什么建议吗?

编辑:根据@Lighthart 的建议,我找到了解决方案。我将为每个礼物创建一个包含一个字段的表格。如果用户捐赠礼物,我会为用户创建一个新条目并为相关礼物字段设置金额。如果用户更改金额,我会更新条目。我可以通过添加一份礼物的所有条目来轻松计算剩余金额。如果您还有改进我的解决方案的想法,请不要犹豫!

4

3 回答 3

1

如果您反对可变长度数组,则需要使用多对多表来解决此问题。这将是多对多(称为关联类)的特殊情况,除了外键之外,您还有数据。

于 2013-02-21T21:20:50.793 回答
0

我同意 Lighthart 的观点——这确实是一个三桌解决方案:用户桌、礼物桌和捐赠桌:

USER(userID [PK], firstName, lastName, email, passwordHash)
GIFT(giftID [PK], title, description, totalCost, dateAdded, owner [FK])
DONATION(donationID [PK], donatingUser [FK], giftDonatedTo [FK], amount, date)

[PK] = 主键,[FK] = 外键

这样,如果有人想稍后更改他们的捐赠金额,您将对特定的donationID 记录执行 SQL UPDATE。

于 2013-02-21T21:27:39.710 回答
0

为此,您可能需要许多表。在我的脑海中,我能想到:

users -> people in system (gist donors and recipients)
gifts -> list of gifts that can be given.
users_gifts -> table relating gifts that have been (or are being) given to the user who will be receiving them
users_gifts_donors -> table relating items in users_gifts to donors (users) and also storing information about the amount of donation towards to gift
于 2013-02-21T21:24:17.500 回答