1

データベースを整理するための最良の方法を見つけるのに苦労しています。手元の問題に関連する3つの表がありますuser, good, and transaction。理想的なシナリオでは、各トランザクションは、単一のユーザーおよび単一の商品との識別関係で構成されます。しかし、複数の商品を処理するための最良の方法は何ですか?(私の場合、ユーザーは1回のトランザクションで何百もの異なる商品を購入する可能性があります。)コンマ区切りのリストを作成してTEXTフィールドに貼り付けるだけでよいですか?これは、データベース設計の従来の知識に反しているようです...

4

1 に答える 1

0

リストしたものに加えて、次のテーブルと列が必要です。TRANSACTION_GOOD_MAPPING:Trnsctn_good_id(pk)、transaction_id(fkからtransaction table)、good_id(fkからgood table)

USER_TRANSACTION_MAPPING:user_trnsctn_id、user_id(fkからユーザーテーブル)、tramsaction_id(fkからトランザクションテーブル)

上記により、多くの取引を行うユーザーと多くの商品を扱う取引を行うことができます。

これは、特定のユーザーの特定のトランザクションの商品のリストを取得するためのサンプルクエリです。

select good_id、good_name、good_desc From user u、good g、transaction t、Transaction_good_mapping tgm、user_tramsaction_mapping utmここで、u.user_id = utm.user_id And utm.transaction_id = tgm.transaction_id And g.good_id = tgm.good_id And u.user_id = 'someuserid'およびtramsaction_id=some_tramsaction_id

注:上記のクエリの最後の2行では、SQLインジェクションを回避するために、クエリで変数置換を使用していることを確認してください。

于 2012-06-09T04:03:42.137 に答える