【MyBatis】订单商品数据模型分析

news2025/1/12 21:57:14

1. 数据模型分析思路

  • 每张表记录的数据内容
    分模块对每张表记录的内容进行熟悉,相当于你学习系统需求(功能)的过程。

  • 每张表重要的字段设置
    非空字段、外键字段

  • 数据库级别表与表之间的关系
    外键关系

  • 表与表之间的业务关系
    在分析表与表之间的业务关系时一定要建立在某个业务意义基础上去分析。

2. 数据模型分析

在这里插入图片描述

  • 用户表user:记录了购买商品的用户信息
  • 订单表orders:记录了用户所创建的订单(购买商品的订单)
  • 订单明细表orderdetail:记录了订单的详细信息即购买商品的信息
  • 商品表items:记录了商品信息

2.1 表与表之间的业务关系:

在分析表与表之间的业务关系时需要建立在某个业务意义基础上去分析。先分析数据级别之间有关系的表之间的业务关系:

1. usre和orders:

user—>orders:一个用户可以创建多个订单,一对多
orders—>user:一个订单只由一个用户创建,一对一

2. orders和orderdetail:

orders—>orderdetail:一个订单可以包括多个订单明细,因为一个订单可以购买多个商品,每个商品的购买信息在orderdetail记录,一对多关系

orderdetail—> orders:一个订单明细只能包括在一个订单中,一对一

3. orderdetail和itesm:

orderdetail—>itesms:一个订单明细只对应一个商品信息,一对一

items—> orderdetail:一个商品可以包括在多个订单明细 ,一对多

再分析数据库级别没有关系的表之间是否有业务关系:

4. orders和items:

orders和items之间可以通过orderdetail表建立关系。

3. 订单商品数据模型建表sql


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
/*Table structure for table `items` */

CREATE TABLE `items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL COMMENT '商品名称',
  `price` float(10,1) NOT NULL COMMENT '商品定价',
  `detail` text COMMENT '商品描述',
  `pic` varchar(64) DEFAULT NULL COMMENT '商品图片',
  `createtime` datetime NOT NULL COMMENT '生产日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

/*Table structure for table `orderdetail` */

CREATE TABLE `orderdetail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `orders_id` int(11) NOT NULL COMMENT '订单id',
  `items_id` int(11) NOT NULL COMMENT '商品id',
  `items_num` int(11) DEFAULT NULL COMMENT '商品购买数量',
  PRIMARY KEY (`id`),
  KEY `FK_orderdetail_1` (`orders_id`),
  KEY `FK_orderdetail_2` (`items_id`),
  CONSTRAINT `FK_orderdetail_1` FOREIGN KEY (`orders_id`) REFERENCES `orders` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_orderdetail_2` FOREIGN KEY (`items_id`) REFERENCES `items` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

/*Table structure for table `orders` */

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL COMMENT '下单用户id',
  `number` varchar(32) NOT NULL COMMENT '订单号',
  `createtime` datetime NOT NULL COMMENT '创建订单时间',
  `note` varchar(100) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `FK_orders_1` (`user_id`),
  CONSTRAINT `FK_orders_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

/*Table structure for table `user` */

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL COMMENT '用户名称',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `sex` char(1) DEFAULT NULL COMMENT '性别',
  `address` varchar(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

测试数据


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
/*Data for the table `items` */

insert  into `items`(`id`,`name`,`price`,`detail`,`pic`,`createtime`) values (1,'台式机',3000.0,'该电脑质量非常好!!!!',NULL,'2015-02-03 13:22:53'),(2,'笔记本',6000.0,'笔记本性能好,质量好!!!!!',NULL,'2015-02-09 13:22:57'),(3,'背包',200.0,'名牌背包,容量大质量好!!!!',NULL,'2015-02-06 13:23:02');

/*Data for the table `orderdetail` */

insert  into `orderdetail`(`id`,`orders_id`,`items_id`,`items_num`) values (1,3,1,1),(2,3,2,3),(3,4,3,4),(4,4,2,3);

/*Data for the table `orders` */

insert  into `orders`(`id`,`user_id`,`number`,`createtime`,`note`) values (3,1,'1000010','2015-02-04 13:22:35',NULL),(4,1,'1000011','2015-02-03 13:22:41',NULL),(5,10,'1000012','2015-02-12 16:13:23',NULL);

/*Data for the table `user` */

insert  into `user`(`id`,`username`,`birthday`,`sex`,`address`) values (1,'王五',NULL,'2',NULL),(10,'张三','2014-07-10','1','北京市'),(16,'张小明',NULL,'1','河南郑州'),(22,'陈小明',NULL,'1','河南郑州'),(24,'张三丰',NULL,'1','河南郑州'),(25,'陈小明',NULL,'1','河南郑州'),(26,'王五',NULL,NULL,NULL);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【环境配置】使用Docker搭建LAMP环境

这篇文章不是介绍DOCKER是什么,也不是阐述DOCKER的核心:镜像/容器和仓库之间的关系,它只是一篇让刚刚接触DOCKER的初学者,在没有完全了解DOCKER是什么之前,也能尽快的在Linux系统下面通过DOCKER来搭建一个LAMP环境,这是其一&#…

【代码审计-PHP】基于Thinkphp框架开发的

目录 一、Thinkphp基本结构 1、框架目录 2、判断框架、版本 3、入口文件 4、资源文件 5、调试开关 6、URL路由 二、基本函数 1、请求 2、交互: 3、响应: 三、危险函数 四、已有漏洞 五、漏洞检测工具 六、工具 一、Thinkphp基本结构 1、框…

Django笔记

Cookie中的数据是由键值对构成,每一个cookie就是一个键值对;Cookie拥有有效期: max_age(单位是秒)就用来决定 Cookie 的有效期;path决定Cookie的有效范围(当path为"/"时,即…

跟我学Python图像处理丨带你入门OpenGL

摘要:介绍Python和OpenGL的入门知识,包括安装、语法、基本图形绘制等。本文分享自华为云社区《[Python图像处理] 二十七.OpenGL入门及绘制基本图形(一)》,作者:eastmount。 一.OpenGL入门知识 1.什么是Op…

冬季,该如何对扬尘进行管理?

冬季降水少,大风天气多,如今随着各个城市的全面放开,城区里面车辆来来往往更多,所以非常容易产生道路扬尘污染。扬尘污染不仅会降低空气质量,影响居民的正常出行,而且还会对人们的身体尤其是呼吸系统产生健…

Java 注解(Annotation)(上)

Java 注解(Annotation) Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容&#xff0c…

设计模式,究竟有着怎样的力量?(初读修言老师设计模式)

每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。 —— Christopher Alexander 设计模式是“拿来主义”在软件领域的贯彻实践。和很多人的主观臆断相反,…

HBase的Region Split详解

什么是Region Split region split是hbases水平扩展一个重要因素。随着数据的不断写入,将一个region切分为两个小region,并将切分后的region放在不同的节点上,以达到将负载进行均衡到其他节点。 Region Split的流程 在zookeeper的/hbase/regio…

从股票市场选择配对的股票:共同趋势协整模型

让我们回忆一下共同趋势模型。给定两个时间序列和,我们有 其 中和是随机游走,即非平稳部分,或者说共同趋势部分(common trends)。以及是平稳的部分,即特定部分(specific component)。如果两个时间序列是协整…

归并排序应用——剑指 Offer 51. 数组中的逆序对

文章目录题目1.错误示范2. 分析逆序对的判断统计出某个数后面有多少个数比它小举例(完整过程解析)第一次循环第二次循环第三次循环第四次循环第五次循环循环结束的两种存在情况3. 正确代码4.递归展开图题目 1.在数组中的两个数字,如果前面一个数字大于后面的数字&am…

全球发展,布局城市核心区域,放眼世界看郁锦香酒店有多百变

随着消费需求的不断升级,酒店消费场景也进行着多元化的发展,城市高端度假品牌正积极溯源消费需求,寻得品牌文化延伸的可靠路径。同时,各大酒店品牌也加快在市场布局的脚步,希望通过布局城市核心区域获得可持续发展的更…

鸿蒙所谓的软总线

鸿蒙网上资料 分布式软总线组件 简介 由于设备通信方式多种多样(WIFI、蓝牙等),不同通信方式使用差异大,问题多。同时通信链路的融合共享和冲突无法处理。分布式软总线实现近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现连…

IFR202型红外雨量传感器

IFR202型红外雨量传感器是专用于测量降雨量的仪器,拥有知识产权,采用光学扫描原理,实现雨滴大小及雨滴数量的实时扫描,进而计算出降雨量输出。支持脉冲输出与RS232输出当使用脉冲输出功能时,可以完全替代翻斗式雨量计。…

【电巢】三星核心供应商名单公布,删除京东方新增13家(附103家厂商名录)

前言 11月30日,据韩媒The ELEC报道,三星在最新公布的「供应商名单」中,悄然删除了国内企业京东方、群创,以及日企阿尔卑斯电气、日东电工、罗姆等10家企业,同时,新增了舜宇光学、Simmtech等13家企业。 以下…

Self-Attention 、 Multi-Head Attention 、VIT 学习记录及源码分享

这里写目录标题1 参考资料2 重点记录2.1 Self-Attention2.2 Multi-Head Attention3. Vision Transformer(VIT)3.1 纯VIT3.2 Hybrid VIT4 代码使用前言:想要看懂VIT中的一些内容,需要的基础知识点就是自己跑过一些CV方向的Demo,知道常见CV领域…

ADI Blackfin DSP处理器-BF533的开发详解13:LDF内存分配的详解(含源代码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 ADSP上的LDF(Linker Description Files)连接器描述文件是处理器用来进行资源分配的文件,通过对LDF文…

中国新能源汽车产销量居世界第一,SCM系统实现企业订单可持续高效流转

近年来,中国汽车产业发生了翻天覆地的变化,而新能源汽车正是这一巨变的中坚力量。从不足10万辆,到突破千万辆,新能源汽车在国家政策扶持下,产品供给不断丰富、企业创新活力竞相迸发、使用环境日臻完善以及消费者认可度…

【MOOC】数据结构-2022秋期末考试

判断题 T 解析 第一个地址为2,第二个地址为21,第三个地址为24,第四个为29,即下标为0。 T 解析 在任一有向图中,所有顶点的入度之和等于所有顶点的出度之和。 F 解析 应该是当且仅当该树是满二叉树 F 解析 应该是交换次…

ABAP中的类与对象(Local class )

文章目录1 Definition1.1 What is the object?1.2 Differentiation of classes2 Factor of class2.1 classification2.2 Class Definition3 Access area4 Create local class4.1 Define the project of class (Attributes , Method, Event)4.2 Implement method of …

【C++进阶】哈希(万字详解)—— 学习篇(上)

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…