Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 管理数据库中多种类型产品的付款_Php_Mysql_Database - Fatal编程技术网

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

Php 管理数据库中多种类型产品的付款,php,mysql,database,Php,Mysql,Database,我有多种类型的数字商品,可以从网站上购买。(通行证和门票) 我想就这些付款的数据库结构提出一些建议 .用于存储付款的表是采购历史记录 选项1 第一个选项如下所示,每个产品的项目id将在单独的列中。 对于每次付款,仅填充购买的该产品的该列 选项2 在第二个选项中,产品Id将存储在1列中,产品类型存储在其他列中 请建议哪个选项更好,或者还有其他方法比这些更好、更有效吗?选项2是可缩放的,选项1不是 如果您选择了选项1,然后决定再添加十几种产品,则每个产品都需要一个新表,每个产品都需要一个新的购买历史

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

我想就这些付款的数据库结构提出一些建议 .用于存储付款的表是采购历史记录

选项1

第一个选项如下所示,每个产品的项目id将在单独的列中。 对于每次付款,仅填充购买的该产品的该列

选项2 在第二个选项中,产品Id将存储在1列中,产品类型存储在其他列中


请建议哪个选项更好,或者还有其他方法比这些更好、更有效吗?

选项2是可缩放的,选项1不是

如果您选择了选项1,然后决定再添加十几种产品,则每个产品都需要一个新表,每个产品都需要一个新的购买历史记录列,并且需要重写大多数查询和报告以适应这些情况

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


如果是我,我会将tickets和passes表组合成一个“products”表,并使用ENUM或类似字段来区分它们。当然,tickets表有更多passs不需要的字段,但是passs没有tickets不需要的字段,您可以将额外字段设置为null,并将它们保留在那里。然后只需在您的购买历史记录中使用product_id,并完全删除product type表和字段