Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 Design_Extjs_Data Modeling - Fatal编程技术网

Php 如何设计跟踪订单的数据库并设置最大项

Php 如何设计跟踪订单的数据库并设置最大项,php,mysql,database-design,extjs,data-modeling,Php,Mysql,Database Design,Extjs,Data Modeling,我有以下场景: 在销售代表跟踪其订单的订单跟踪系统中: 每个订单总共可以有4种产品类型(可佣金桶),每个桶可以有1种或没有该产品类型的产品 因此,一份订单最多可以有4种产品(每种可能的类型一种) 我需要跟踪的四种产品类型的信息是相同的:产品销售id(fk)、状态、产品给定id(fk) 向订单表中添加12列有什么好处:每种产品类型3列,如product-type1-Seld-id、product-type1-status、product-type1-given-id。。。。。等等 这将是最简单的,

我有以下场景:

在销售代表跟踪其订单的订单跟踪系统中: 每个订单总共可以有4种产品类型(可佣金桶),每个桶可以有1种或没有该产品类型的产品

因此,一份订单最多可以有4种产品(每种可能的类型一种)

我需要跟踪的四种产品类型的信息是相同的:产品销售id(fk)、状态、产品给定id(fk)

向订单表中添加12列有什么好处:每种产品类型3列,如product-type1-Seld-id、product-type1-status、product-type1-given-id。。。。。等等

这将是最简单的,但我的问题是,大多数订单只销售2或3种产品类型,这将导致每种产品类型3个空字段未销售。如果每天有100次重复@10个订单,这将导致大量空字段

我倾向于使用订单id(fk)的订单项目表来减少所有空字段。 这种方法的问题是,首先,我必须给我的客户机代码添加一定程度的复杂性来处理嵌套数据,或者我的服务器代码必须在请求时展平数据,并且在从客户机发送修改数据时能够解析和保存展平数据。还有100个reps@10每天订单,每个订单有1-4种产品类型这将导致每天向订单项表添加1000-4000行。有没有办法克服这个问题


如有任何建议,将不胜感激。我使用的是extjs客户端,php服务器端,MySQL作为我的数据库。

您应该在自己的表中保存订单、产品和产品类型。然后,在PHP中返回结果时,将使用外键将表左键连接在一起。这将允许您以最小的工作量扩展应用程序。例如,向一个产品添加最多五种类型不需要更改数据库结构。当限制每个订单的产品类型和产品时,所有内容都将在PHP代码中处理

外键只是指向另一个表的指针。例如,表product_types应该有一个名为product_id的列作为相关产品的主键。这同样适用于订单中的产品。这是表示一对多或多对多关系的一种非常常见的方法

作为一个代码示例,这是您返回产品订单的方式

SELECT * FROM products AS p
LEFT OUTER JOIN orders AS o ON o.id=p.order_id
WHERE o.id=1234;
构建一个数据库,并将应用程序逻辑放在它所属的位置,即应用程序层(或者可能是db存储过程)


如果您的订单最多更改4个,该怎么办?

通常最好有两个单独的表格。有了适当的索引,行数就不会有任何问题。