0

2つのテーブルを含むMySQLデータベースを使用してWebサイトを開発しています。1つはユーザー情報を含み、もう1つはギフト情報を含みます。誰が別のギフトの一部を支払ったか、そして後でそれを変更する可能性を彼に与えるためにどの金額を支払ったかについての情報を保存したいと思います。

寄付したユーザーの配列と金額を含むエントリをギフトテーブルに追加します。後で変更したい場合は、金額を変更するか、エントリを削除して、表示されているギフトの残りの金額を更新します。

しかし、可変長配列から始めるのは最適ではないと思います。寄付するユーザーと各ギフトの金額を使用してデータベースに新しいテーブルを作成する方が良いかもしれませんが、コーディングと管理もより複雑になります(テーブルは2つだけにすることをお勧めします)。

誰かが私のジレンマに関して何か提案がありますか?

編集:@Lighthartの提案に基づいて、私は解決策を見つけました。各ギフトのフィールドを含むテーブルを作成します。ユーザーがギフトに寄付する場合は、ユーザーの新しいエントリを作成し、関連するギフトフィールドの金額を設定します。ユーザーが金額を変更した場合は、エントリを更新します。1つのギフトのすべてのエントリを追加することで、残りの金額を簡単に計算できます。それでも私のソリューションを改善するアイデアがある場合は、躊躇しないでください!

4

3 に答える 3

1

可変長配列に反対する場合は、多対多のテーブルを使用してこれを解決する必要があります。これは、外部キーだけでなくデータもある多対多(アソシエーションクラスと呼ばれる)の特殊なケースです。

于 2013-02-21T21:20:50.793 に答える
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 に答える
0

私はLighthartに同意します-これは実際には3つのテーブルソリューションです:ユーザー用のテーブル、ギフト用のテーブル、寄付用のテーブル:

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レコードに対してSQLUPDATEを実行します。

于 2013-02-21T21:27:39.710 に答える