edf*_*rda 21 sql database sqlite
我正在尝试创建一个数据库,其中每个客户有几个订单(每天新订单),每个订单有几个项目.我曾计划创建一个客户表并为每个订单创建一个表,并使用"items"表填充该表.我认为这种方法过于复杂和繁琐,因为订单的数量可以达到数千,我不认为有数千个表是可维护的.您认为适合的结构是什么?任何帮助是极大的赞赏.
对不起,如果这是一个noobish问题,我正在学习编程.这是我第一次尝试数据库设计.
Dun*_*ock 50
你需要四个表,如下所示:

包含客户列表.每位客户一排.将包含所有客户信息 - 他们的联系方式等...
包含订单列表.每个订单一行.每个订单由客户下订单并具有Customer_ID- 可用于链接回客户记录.如果与其记录中的客户地址不同,或者存储地址在不同的表中,也可能存储交货地址.
包含订单商品列表.订单上每个项目占一行 - 因此每个订单可以在此表中生成多个行.订购的每件商品都是库存中的产品,因此每行都有一个product_id,它链接到products表.
包含产品列表.每个产品一排.类似于customers表,但对于产品 - 包含所有产品详细信息.
这是您可以用来创建此结构的SQL代码 - 它将为自己创建一个名为的数据库mydb:
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Customer` (
`ID` INT NOT NULL ,
`Name` TEXT NOT NULL ,
`PhoneNo` VARCHAR(45) NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Order`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Order` (
`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`.`Customer` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Product`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Product` (
`ID` INT NOT NULL ,
`Name` VARCHAR(45) NOT NULL ,
`Description` TEXT NULL ,
PRIMARY KEY (`ID`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`OrderItem`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`OrderItem` (
`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`.`Order` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_OrderItem_2`
FOREIGN KEY (`Product_ID` )
REFERENCES `mydb`.`Product` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE `mydb` ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60857 次 |
| 最近记录: |