Php 如何设计跟踪订单的数据库并设置最大项
我有以下场景: 在销售代表跟踪其订单的订单跟踪系统中: 每个订单总共可以有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行。有没有办法克服这个问题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。。。。。等等 这将是最简单的,
如有任何建议,将不胜感激。我使用的是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个,该怎么办?通常最好有两个单独的表格。有了适当的索引,行数就不会有任何问题。