替代MySQL中逗号分隔的列表

时间:2012-06-09 02:58:29

标签: mysql csv

我很难找到组织数据库的最佳方法。有三个表与手头的问题相关:user, good, and transaction。在理想情况下,每个交易将包括与单个用户和单个商品的识别关系。但处理多种商品的最佳方式是什么? (就我而言,用户可能会在一次交易中购买数百种不同的商品。)我应该只创建一个以逗号分隔的列表并将其粘贴到TEXT字段中吗?这似乎违背了传统的数据库设计智慧......

1 个答案:

答案 0 :(得分:0)

除了您列出的表格和列之外,还需要这些表格和列: TRANSACTION_GOOD_MAPPING: Trnsctn_good_id(pk),transaction_id(fk到事务表),good_id(fk到好表)

USER_TRANSACTION_MAPPING: user_trnsctn_id,user_id(fk到用户表),tramsaction_id(fk到事务表)

以上将允许您拥有许多交易和许多商品交易的用户。

以下是获取给定用户的给定交易的商品清单的示例查询:

选择good_id,good_name,good_desc 来自用户u,好g,交易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 ='someuserid' 并且tramsaction_id = some_tramsaction_id

注意:对于上面查询中的最后两行,请确保在查询中使用变量替换以避免SQL注入。