sql – “customer”表的数据库结构,每个客户有很多订单,每个订
发布时间:2020-12-12 06:52:05 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试创建一个数据库,其中每个客户有几个订单(每天新订单),每个订单有几个项目.我曾计划创建一个客户表并为每个订单创建一个表,并使用“items”表填充该表.我认为这种方法太复杂和繁琐,因为订单的数量可以达到数千,我认为没有数千个表是可维护的.您认为
我正在尝试创建一个数据库,其中每个客户有几个订单(每天新订单),每个订单有几个项目.我曾计划创建一个客户表并为每个订单创建一个表,并使用“items”表填充该表.我认为这种方法太复杂和繁琐,因为订单的数量可以达到数千,我认为没有数千个表是可维护的.您认为适合的结构是什么?任何帮助是极大的赞赏.
对不起,如果这是一个noobish问题,我正在学习编程.这是我第一次尝试数据库设计. 解决方法你需要四个表,如下所示:顾客 包含客户列表.每位客户一排.将包含所有客户信息 – 他们的联系方式等… 命令 包含订单列表.每个订单一行.每个订单由客户下订单并具有Customer_ID – 可用于链接回客户记录.如果与其记录中的客户地址不同,也可能存储交货地址,或者在单独的表中存储地址. 的OrderItems 包含订单商品列表.订单上每个项目占一行 – 因此每个订单可以在此表中生成多行.订购的每件商品都是库存中的产品,因此每行都有一个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,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` ; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 为什么在没有它的情况下可以使用BETWEEN运算符?
- SqlServer系列笔记――事务(Transaction)
- sql – insert combine(value and select)
- SQL查询与distinct和sum
- sql-server – SSMS中的SQL Server 2005存储过程在VMS中速度
- DBCC大全集之(适用版本MS SQLServer 2008 R2)---DBCC CHE
- SQL Server select * from sp_who的解决方案
- 数据库 – 是Oracle Total Recall的替代方案吗?
- SQLServer2000 发送邮件详细配置过程
- 是否已弃用SQL Server时间戳以及替换时使用的内容