我很难找出组织数据库的最佳方法。有三个表与手头的问题相关:user, good, and transaction。在理想的情况下,每个事务将包括与单个用户和单个商品的标识关系。但是,处理多种商品的最佳方式是什么呢?(在我的例子中,用户可能在一次交易中购买了数百种不同的商品。)我应该简单地创建一个逗号分隔的列表并将其放在TEXT字段中吗?这似乎违背了数据库设计的传统智慧……
发布于 2012-06-09 12:03:42
除了已经列出的表和列之外,您还需要这些表和列: TRANSACTION_GOOD_MAPPING: Trnsctn_good_id (pk),transaction_id (fk到transaction表),good_id (fk到good表)
USER_TRANSACTION_MAPPING: user_trnsctn_id,user_id (fk到用户表),tramsaction_id (fk到transaction表)
以上将允许您拥有具有多个事务的用户和具有多个商品的事务。
下面是一个示例查询,用于获取给定用户的给定交易的商品列表:
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和utm.transaction_id=tgm.transaction_id以及g.good_id=tgm.good_id和u.user_id=‘user_tramsaction_mapping user’和tramsaction_id=some_tramsaction_id
注意:对于上面查询中的最后两行,请确保在查询中使用变量替换,以避免SQL注入。
https://stackoverflow.com/questions/10958018
复制相似问题