gpt4 book ai didi

sql - "customer"表的数据库结构,每个客户有很多订单,每个订单有很多商品

转载 作者:IT王子 更新时间:2023-10-29 06:17:57 24 4
gpt4 key购买 nike

我正在尝试创建一个数据库,其中每个客户都有多个订单(每天都有新订单)并且每个订单都有多个项目。我曾计划创建一个客户表并为每个订单创建一个表并用一个“项目”表填充该表。我觉得这种方法太复杂和繁琐了,因为订单的数量可以达到几千个,我认为有几千张表是不可维护的。您认为对此合适的结构是什么?非常感谢任何帮助。

抱歉,如果这是一个菜鸟问题,我正在学习编程。这是我第一次尝试数据库设计。

最佳答案

你需要四张表,像这样:

Possible Simplified Database Model

客户

包含客户列表。每个客户一行。将包含所有客户的信息 - 他们的联系方式等...

订单

包含订单列表。每个订单一行。每个订单均由客户下达并具有一个 Customer_ID - 可用于链接回客户记录。如果与记录中的客户地址不同,也可能存储送货地址 - 或者将地址存储在单独的表中。

订单商品

包含订单项目列表。订单上的每个项目一行 - 因此每个订单可以在此表中生成多行。订购的每件商品都是您库存中的一件商品,因此每一行都有一个 product_id,它链接到产品表。

产品

包含产品列表。每个产品一行。类似于客户表,但对于产品 - 包含所有产品详细信息。

这是您可以用来创建此结构的 SQL 代码 - 它将为自己创建一个名为 mydb 的数据库:

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`Customers`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Customers` (
`ID` INT NOT NULL ,
`Name` TEXT NOT NULL ,
`PhoneNo` VARCHAR(45) NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Orders`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Orders` (
`ID` INT NOT NULL ,
`customer_id` INT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `fk_Order_1_idx` (`customer_id` ASC) ,
CONSTRAINT `fk_Order_1`
FOREIGN KEY (`customer_id` )
REFERENCES `mydb`.`Customers` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Products`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Products` (
`ID` INT NOT NULL ,
`Name` VARCHAR(45) NOT NULL ,
`Description` TEXT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`OrderItems`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`OrderItems` (
`ID` INT NOT NULL ,
`Order_ID` INT NOT NULL ,
`Product_ID` INT NOT NULL ,
`Quantity` INT NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `fk_OrderItem_1_idx` (`Order_ID` ASC) ,
INDEX `fk_OrderItem_2_idx` (`Product_ID` ASC) ,
CONSTRAINT `fk_OrderItem_1`
FOREIGN KEY (`Order_ID` )
REFERENCES `mydb`.`Orders` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_OrderItem_2`
FOREIGN KEY (`Product_ID` )
REFERENCES `mydb`.`Products` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

USE `mydb` ;

关于sql - "customer"表的数据库结构,每个客户有很多订单,每个订单有很多商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com