Php 如何创建一个订单中包含多个产品的数据库模型
我正在建立一个SQL数据库模型,用于跟踪具有一定数量的多个产品的订单 该表必须有一个特定于该顺序的键值,并且从不在表中的任何其他位置重复 我正在考虑制作一行,其中orderID作为键值,然后是一个Order选项卡,其中有productID和数量,如“productID quantity”,这样就可以将它放在一个单元格中。棘手的部分是在这一行中使用多个不同的产品。可以将所有产品及其数量插入一个单元格,如下所示:Php 如何创建一个订单中包含多个产品的数据库模型,php,mysql,database-design,Php,Mysql,Database Design,我正在建立一个SQL数据库模型,用于跟踪具有一定数量的多个产品的订单 该表必须有一个特定于该顺序的键值,并且从不在表中的任何其他位置重复 我正在考虑制作一行,其中orderID作为键值,然后是一个Order选项卡,其中有productID和数量,如“productID quantity”,这样就可以将它放在一个单元格中。棘手的部分是在这一行中使用多个不同的产品。可以将所有产品及其数量插入一个单元格,如下所示: "1100-3, 1500-1, 1600-8" 这是一个单元,有三种产品,分别订购
"1100-3, 1500-1, 1600-8"
这是一个单元,有三种产品,分别订购了3次、1次和8次。用PHP阅读,用逗号和破折号分隔
有什么方法能更有效地做到这一点吗?你所描述的听起来像是一种“多对多”的关系。一个订单可以容纳多个产品,但一个产品也可以是多行的一部分 为此,您可以创建一个表
orders
(其中可以存储其他信息,例如它所属的用户ID),并将您的products
表也包含在内
现在你可以通过这样的方式连接它们
CREATE TABLE order_products (
orderid INT NOT NULL,
productid INT NOT NULL,
quantity INT NOT NULL,
PRIMARY KEY (orderid, productid),
FOREIGN KEY (orderid) REFERENCES orders (id),
FOREIGN KEY (productid) REFERENCES products (id)
);
要选择获取其产品的所有行,只需使用。您所描述的听起来像是“多对多”关系。一个订单可以容纳多个产品,但一个产品也可以是多行的一部分 为此,您可以创建一个表
orders
(其中可以存储其他信息,例如它所属的用户ID),并将您的products
表也包含在内
现在你可以通过这样的方式连接它们
CREATE TABLE order_products (
orderid INT NOT NULL,
productid INT NOT NULL,
quantity INT NOT NULL,
PRIMARY KEY (orderid, productid),
FOREIGN KEY (orderid) REFERENCES orders (id),
FOREIGN KEY (productid) REFERENCES products (id)
);
要选择“获取所有行及其产品”,只需使用。将每个数据放在单独的字段中,而不是将它们组合在一起。orderid,productid。因此,如果有一个订单是同一产品的3倍,那么您将有3条记录(数量),但我不再有唯一的键值,然后您将一个产品获得一行productID 1,另一个产品获得另一行productID 1,因此您只是在分解相同的问题。您的唯一键是orderid。它可以是一个增量值。是的,但是一个客户对于同一订单有多个订单id,我必须能够打印一个唯一的订单id(包括所述订单中订购的每个产品)字段=Customerid,orderID,productid,数量数据(第一项)=101001234,2数据(第二项)=101004567,3将每个数据放在单独的字段中,而不是将它们组合在一起。orderid,productid。因此,如果有一个订单是同一产品的3倍,那么您将有3条记录(数量),但我不再有唯一的键值,然后您将一个产品获得一行productID 1,另一个产品获得另一行productID 1,因此您只是在分解相同的问题。您的唯一键是orderid。它可以是一个增量值。是的,但是一个客户对于同一订单有多个订单id,我必须能够打印一个唯一的订单id(包括所述订单中订购的每个产品)字段=Customerid,orderID,productid,数量数据(第一项)=101001234,2数据(第二项)=101004567,3是否有orderID和productID组合的主键?@WoutKooijman是的,这样每个订单只能有一个产品条目(数量可变),因此您有orderID和productID组合的主键?@WoutKooijman是的,这样每个订单只能有一个产品条目(数量可变)