PHP&;MySQL:第二个表中的表条目列表


PHP & MySQL: list of table entries in a second one

我正在开发一个带有MySQL数据库的网站,该数据库包含两个表,一个包含用户信息,另一个包含礼品信息。我想存储谁支付了部分不同礼物的信息,以及用多少金额让他以后有可能更改。

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

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

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

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

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

您可能需要多个表。在我的脑海里,我能想到:

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

我同意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]=外键

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