管理数据库中多种类型产品的付款

时间:2014-08-06 18:20:37

标签: php mysql database

我有多种类型的数码商品可以从网站上购买。(通行证和门票)。

我想要了解这些付款的数据库结构应该是什么 。用于存储付款的表是购买历史

选项1

第一个选项可以如下所示,每个产品的项目ID将在单独的列中。 对于每笔付款,仅填充购买该产品的那一列。enter image description here

选项2 在第二个选项中,产品ID将存储在1列中,而产品类型存储在其他列中。enter image description here

请建议哪个选项更好或者是否有其他方法比这些更好更有效?

1 个答案:

答案 0 :(得分:0)

选项2是可扩展的,选项1不是

如果您使用选项1,然后决定添加十几种类型的产品,您需要为每个产品添加一个新表,在purchase_history中为每个产品创建一个新列,并重写您的大多数查询和报告以适应

选项2让您不必担心这一点,即使您永远坚持使用这两种类型的产品 - 至少您在购买历史记录表中只能处理一列。


如果是我,我会将票证和表格合并到一个“产品”表中,并有一个ENUM或类似字段来区分它们。当然,票证表有更多的字段,通行证不需要 - 但是通行证没有任何票证不需要,你可以让附加物可以为空并留在那里。然后只需在购买历史记录中使用product_id,即可完全取消产品类型表和字段。