如声明一个实体类 Customer,它将映射到数据库中的 customer 表上 @Table 当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用...@Where 在互联网项目中,通常删除都不是物理删除,而是逻辑删除。那么在展示数据的时候需要过滤掉已删除的数据。而@Where 注解可以说就是为此而设计的。...,@ManyToOne,@OneToMany,@ManyToMany 一对一的关联,多对一的关联,一对多的关联,多对多的关联 @JoinTable JoinTable在many-to-many关系的所有者一边定义...entity class的所有id field在id class都要定义,且类型一样。 @MapKey 在一对多,多对多关系中,我们可以用Map来保存集合对象。...默认用主键值做key,如果使用复合主键,则用id class的实例做key,如果指定了name属性,就用指定的field的值做key @OrderBy 在一对多,多对多关系中,有时我们希望从数据库加载出来的集合对象是按一定方式排序的
实体集是一系列具有相同属性实体的集合,比如某所大学的所有教师构成了一个称为instructors的实体集。...假设R为实体A-B之间的联系集,则映射基数有如下几种情况: 一对一(one to one),A的实体至多与一个B实体关联,反之亦然。...一对多(one to many),A的实体可以与任意多个B实体关联(>=0),B实体则只能与至多一个A实体关联。 多对多(many to many)。A和B实体间相互关联的数目不受限制。...比如A-B为一对一映射,A中的实体数多于B,则A部分参与,B全部参与。...关于主键,对于多对多的二元联系,主键为参与联系的实体集的主键的并集;对于一对一的联系,可使用任意一方的主键;对于多对一的联系,选择“多”端的主键。
2.数据模型三要素 数据结构: 数据结构指的是所研究的对象类型的集合,也就是数据库中的实体、实体的属性以及实体之间的关系。 在关系模型中,数据结构由表格(实体)、列(属性)和行(实例)组成。...这些操作定义了用户和应用程序可以对数据库执行的操作,如插入新数据、更新现有数据、删除数据以及查询数据等。...这些约束条件可以包括实体完整性约束(如主键约束、唯一约束)、参照完整性约束(外键约束)、域完整性约束(数据类型、范围约束)等。...弱实体和强实体: 强实体依赖于强实体的存在而存在。弱实体没有足够的属性来构成唯一的主键,通常依赖于强实体的存在。 实体集: 具有相同类型和共享相同属性的实体的集合,如学生、课程。...常见联系类型包括:一对一(1:1)、一对多(1:N)、多对多(M:N)。 4.二维表 在关系模型中,数据的逻辑结构是一张二维表,由行列组成,用表格结构来表达实体集,并通过外键来标识实体间的联系。
CascadeType.MERGE | 级联合并;修改了子实体,保存父实体时也会同时保存子实体(常用)。 CascadeType.REMOVE | 级联删除;删除父实体时,会级联删除关联的子实体。...如何在 Spring Boot 中 读写数据 假设有这样的一组实体关系。...比如用户类会有一个指定密码表的主键 pwd_id,将 @OneToOne 放置在用户类的 pwd 字段上,就可以表示用户类与密码类是一对一的关系,并且主导类是用户类。...“附属类名_附属主键”,如:password_id。...例如,部门表名为 t_department ,部门实体类中关联的用户集合属性名为 user,则默认生成的中间表名为:t_department_user。
1)两个不同实体之间的联系 两个实体之间的联系可分为3类:一对联系记为1:1,一对多联系记为1:*(或1:n),多对多联系记为 *:*(m:n)。 (1) 1:1。...如果对于实体集A中的每一个实体, 实体集B中至多有一个实体与之对应;反之亦然,则称A与B具有一对一联系。 (2) 1:*。...如果对于实体集A中的每一个实体, 实体集B中有n个实体(n≥0)与 之对应;反之, 对于实体集B中的每一个实体,实体集A中至多只有一个实体与之对应,则称A与B具有一对多联系。 (3) *:*。...如果对于实体集A中的每一个实体, 实体集B中有n个实体(n≥0)与 之对应;反之,对于实体集B中的每一个实体,实体集A 中也有m个实体(m≥0)与之对应,则称A与B具有多对多联系。...在同一实体集中,每个实体的属性及其域是相同的,但可能取不同的值。E-R模型中的属性有如下分类。 1)简单属性和复合属性。
4、主键(Primary key):用于唯一确定一个记录的字段 5、域domain:属性的取值范围,如,性别只能取男女两个值 三、关系数据库 RDBMS MySQL:MySQL,MariaDB,Percona...,中间状态不被看到,脏数据) D:持久性 四、联系类型 1、一对一关系(不一定在两个表一样的位置,但1:1) 2、一对多关系(1:n)员工表和部门表 3、多对多关系(m:n)学员表(主键表)课程表,避免信息重复...,再开一张表(外建表),用ID对应关系,这张表和另两张分别构成一对多的关系 主键表,字段的值,必须唯一,不允许为空(学员姓名)只能有一个主键 唯一键,必须为一,允许为空(学员手机号)可以有多个唯一键,×...××,手机号 复合主键,都叫张伟,一个上海,一个北京,那么name+city就是复合主键(pk) 五、数据三要素 1、数据结构 2、数据操作:增删改查 3、约束条件:实体(行)完整、域(列)完整,参考完整性...第三范式:属性不依赖于其他非主属性,满足第三必须先满足第二 上图前面加一个主键员工ID,city和name就不是复合主键,这时候如果还有citycode,就违反了,还是在外面加一个city和code
表的设计原则 1. 从需求中找到类,类对应到数据库中的实体,实体在数据库中表现为一张一张的表,类中的属性对应着表中的字段 2. 确定类与类的对应关系 3....使用SQL去创建具体的表 范式:范式描述的是数据关系的模型(一对一关系,一对多关系,多对多关系) 分类:第一范式(1NF),第二范式(2NF),第三范式(3NF),BC范式(BCNF) 2....2.2 第二范式 在满足第一范式的基础上,不存在非关键字段(非主键字段)对任意候选键(主键,外键,没有主键时的唯一键)的部分函数依赖(存在与复合主键的情况下),就满足第二范式,复合主键在上一篇文章中已经介绍过...,一个表中不能有两个主键,但是一个主键中可以包含多个列,这时的主键就是复合主键 也就是说,如果这个表不含复合主键,那么这个表就满足第二范式 先来看一个表中存在复合主键的情况下,存在非关键字段对候选键的部分函数依赖的不符合第二范式的反例...三种关系 3.1 一对一关系 例如设计一个登录界面,输入用户名和密码登录成功之后,显示欢迎用户,这样的场景一般对应两个实体,用户和账号,并且一个用户只对应一个账号,就是一对一的关系 针对一对一关系设计表时有两种方式
✅ ✅ ✅ 多种 id 生成策略 ✅ ✅ ✅ 支持多主键、复合主键 ✅ ❌ ❌ 字段的 typeHandler 配置 ✅ ✅ ✅ 除了 MyBatis,无其他第三方依赖(更轻量) ✅ ❌ ❌ QueryWrapper...定义实体类,可以使用注解来配置表名、字段关系等: 创建实体类来映射数据库中的表结构,可以使用 Mybatis-Flex 提供的注解来配置实体类与数据库表之间的映射关系,包括表名、字段关系、主键等。...以下是对这些注解的详细解释以及如何在实际代码中使用它们的示例: RelationOneToOne(一对一关系): 用于描述两个实体类之间的一对一关系。通常在两个实体类中,一个类引用另一个类的实例。...): 用于描述一个实体类与多个其他实体类之间的一对多关系。...在主实体类中,使用集合属性引用其他实体类的多个实例。
在多表模型中,每个表格都包含一组相关的数据,并使用外键等关系来与其他表格建立连接。这种模型通常用于处理复杂的数据结构,例如具有多个关系的实体或需要动态添加或删除属性的实体。...例如,如果一个表格引用另一个表格中的数据,那么只有在另一个表格中存在该数据时,才能在当前表格中插入该数据。 数据查询:多表模型可以提高数据查询的效率。...一对多:在多的一方建立外键,关联一的一方的主键。 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键。...column 属性:表中字段名称 property 属性: 实体对象变量名称 :配置被包含集合对象的映射关系标签。...column 属性:表中字段名称 property 属性: 实体对象变量名称 :配置被包含集合对象的映射关系标签。
============================================= 以上是针对实体的注解,接下来时针对实体与实体之间关联的注解: 一对多 一般是在多的一般维护关系,也就是多的一方作为关系维护端...@OneToMany 描述一个一对多的关联,该属性应该为集体类型,在数据库中并没有实际字段。 ...,其关联的实体也应当被更新或删除 例如:实体User和Order是OneToMany的关系,则实体User被删除时,其关联的实体Order也应该被全部删除 @ManyToMany 描述一个多对多的关联....多对多关联上是两个一对多关联,但是在ManyToMany描述中,中间表是由ORM框架自动处理 可选 targetEntity:表示多对多关联的另一个实体类的全名,例如:package.Book.class... mappedBy:表示多对多关联的另一个实体类的对应集合属性名称 两个实体间相互关联的属性必须标记为@ManyToMany,并相互指定targetEntity属性, 需要注意的是,有且只有一个实体的
表设计规则 表名规范:表名应具有描述性,能够反映表中存储的数据内容。同时,表名应遵循一定的命名规范,如使用小写字母、下划线分隔单词等,以确保在不同数据库系统中的一致性和可读性。...单一职责原则:一个表应尽量只存储一个对象或实体的数据,即一个表对应一个业务对象或实体。这样做有助于保持数据的清晰和易于管理。 主键设置:每个表都应有一个主键,用于唯一标识表中的每一条记录。...主键可以是单个字段,也可以是多个字段的组合(复合主键)。主键字段的值必须是唯一的,且不允许为空。 外键约束:在需要表示表之间关联关系时,可以使用外键。...在这种关系中,每个表的主键和外键都可以互相对应。 示例: “人”表与“身份证”表:每个人只有一个唯一的身份证号码,每个身份证号码也只对应一个人。...而在一对多关系中,外键列则不需要唯一性约束,因为多个记录可以具有相同的外键值(即指向同一个主键值)。 索引:为了提高查询效率,通常会为外键列创建索引。
建表的原则是: 唯一外键对应,假设一对一中,任意一方为多,那么在多的一方创建外键指向一的一方的主键,然后将外键设置为唯一的。例如:一个男人可以找很多女人,但是法律上的妻子一次只能有一个。...一对多的表关系是比较常见的,例如在学生表中,一个学生属于一个班级,而在班级表中,一个班级可以有很多学生,这种关系就称之为一对多的关系。...2.一对多映射 ---- 2.1 基本代码 下面通过学生和班级的例子来说明 学生实体类 学生实体类的属性中要加上班级实体类的对象。...---- 3.1 基本代码 下面通过学生和课程的例子来说明 学生实体类 学生实体类的属性中要加上课程实体类的集合对象。...课程实体类的属性中要加上学生实体类的集合对象。
Mybatis 内部对象注入容器 泛型 T 为任意实体对象 参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定,每一张表都有自己的唯一 id 主键 对象...Wrapper 为 条件构造器[2] 看下其基本使用 Insert insert 只有一种用法,直接插入对象的实体 /** * 插入一条记录 * @param entity 实体对象 * @return...); } // 根据 Collection 集合进行删除,也可以是 Collection 的子类 @Test public void deleteBatch(){ List list = new...Update Update 更新方法只有两种形式,一种是直接根据 id 修改实体属性的值,一种是直接更新实体类 /** * 根据 ID 修改 * @param entity 实体对象 * @return...(Serializable id); /** * 查询(根据ID 批量查询) * @param idList 主键ID列表(不能为 null 以及 empty) * @return 实体集合
表间关系的类型有如下三种: 一对多(one-to-many) 多对多(many-to-many) 一对一(one-to-one) 一对多 考虑一个族谱关系的例子,一个母亲可能会有0个或多个小孩,但是任意一个小孩都有且只有一个母亲...这样的关系便称为一对多。 一对多的关系不能只用一个表来保存。为什么?...同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。 如果出现重复的属性, 就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。...对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。 如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。...而在带索引的结构中(如B树),查询的时间就能减少到对数级别。当然在这种情况下, 插入和删除的时间也从常数上升到对数级别,不过在实践中由于查找的频率远远大于插入和删除,因此索引带来的好处也是很明显的。
主键:有时一个关系有多个候选码,可以选择其中一个作为主键。每个关系有且只有一个主键。 外键:如果关系模式 R 中的属性 K 是其他关系模式的主键,那么 K 在关系模式 R 中称为外键。...比较常见的为两实体联系,两个实体之间可能存在以下联系: 一对一联系(1 : 1),例如部门和负责人之间的联系,一个部门有一个负责人,一个负责人负责一个部门; 一对多联系(1 : n),例如部门和员工之间的联系...两实体间的联系 单实体联系也可分为一对一、一对多、多对多联系,如员工和员工之间的“领导”关系就是一对多联系,员工与员工之间的配偶关系是一种一对一联系。 ?...单实体间的联系 一般地,两个以上的实体之间也存在一对一、一对多和多对多的联系。例如学生选课系统中有三个实体:学生、教师、课程,此时它们之间的联系如下: ?...例如,在局部应用A中实体E1和E2是一对多联系,而在局部应用B中却是多对多联系。 解决方法:根据应用语义对实体联系的类型进行综合或调整。
一对多(1:M)联系的映射 这类映射的规则为:在由1:M联系中属于M侧的实体所映射得到的关系中设置一个外码,这个外码对应于由1侧的实体映射得到的关系中的主码。 如下ER模型: ? 将映射为关系: ?...原则上外键设在任何一个实体的关系中都OK,但如果一对一联系中的基数约束是强制单个和可选单个这种类型,则最好将外键设置在可选多的一侧。因为这样可以保证关系中不会出现太多空值。...一对多(1:M)一元联系的映射 这类映射的规则为:实体映射得到的关系中包含一个外码,对应到关系自身的主码。 如下ER模型: ? 将映射为关系: ?...这里同样要注意外键名要避免和主键名重复。 13. 一对一(1:1)一元联系的映射 和上面第11条讲的一对多的一元联系映射规则完全相同,此处不再举例说明。 14....将弱实体映射为关系 弱实体映射和常规一对多联系映射一样需要在弱实体(M侧实体)中建立一个对应到属主实体(1侧实体)的外码。
目录 一、解决多对多 二、增 三、查 四、删 EF Core在处理多对多关系时并不像一对一和一对多关系那样好处理,下面我们利用一个简单的电子商城购物车来讲解一下吧。...一、解决多对多 需求是这样的:用户可以将多个商品放入购物车,每个商品又属于多个购物车。我们先创建ShoppingCart和Commodity实体类。...ShoppingCart没有主键,由于多对多关系因此ShoppingCart应该是复合主键。复合主键由两列组成一个主键,在EF Core中创建复合键唯一办法是在OnModelCreating中创建。...解决了多对多创建表的问题,下面我们就来看一下如何进行增删查。 二、增 我们要把商品添加到购物车中,我们需要创建ShoppingCartCommodity并保存它。...db.Commoditys.Where(commodity=> commodity.shoppingCart.Any(j => j.ShoppingCartId== shoppingCartId)); 四、删 如果要删除购物车中的商品时
MariaDB应运而生。(MySQL 的创造者担心 MySQL 有闭源的风险,因此创建了 MySQL 的分支项目 MariaDB)MySQL6.x 版本之后分为社区版和商业版。...表的关联关系 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。...四种:一对一关联、一对多关联、多对多关联、自我引用 一对一关联(one-to-one) 在实际的开发中应用不多,因为一对一可以创建成一张表。...外键是主键:主表的主键和从表的主键,形成主外键关系。 一对多关系(one-to-many) 常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表。 举例:员工表:编号、姓名、......、所属部门部门表:编号、名称、简介 一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键 多对多(many-to-many) 要表示多对多关系,必须创建第三个表,该表通常称为联接表
主键 在JPA中,主键是用于唯一标识数据库中每个对象的字段。主键可用于引用对象并将对象与其他实体相关联。每当您在表中存储对象时,您还将指定要用作其主键的字段。...调用session.save()将创建或更新指定的类,具体取决于主键字段是否为null或是否适用于现有实体。调用entityManager.remove()将删除指定的类。...在表和对象中都有四种实体关系: 一到多 许多到一 许多一对多 一比一 每种类型的关系描述了实体与其他实体的关系。...例如,Musician实体可以与由诸如List或Set的集合表示的实体具有一对多的关系。...如果Musician包含一个Band字段,这些实体之间的关系可以是多对一的,这意味着在单个Band类上有Musician集合 。(假设每个音乐家只在一个乐队中演奏。)
定义 满足第一范式的基础上,不存在非关键字段(非主键字段)对任意候选键(主键,唯一键,用来标识数据行)部分依赖。存在与表中定义的复合主键(主键中包含多个列)的情况下。...反例 上述表中 学生的信息是根据学号确定的 学分是根据课程名确定的 成绩是通过学号+课程名来共同区分的,一个学生可以选修课程,经过一次考试之后才会生成成绩 也就是说这个表可以通过学号+课程名作为复合主键来确定同学当前选修课的成绩...-第⼆范式强调的是部分函数依赖,当⼀张表中的主键只有⼀列时,天然满⾜第⼆范式 1.3 第三范式 1.3.1 定义 在满足第二范式的基础上,不存在非关键字段,对任意一候选键的传递依赖 1.3.2....5.1 E-R图的基本组成 E-R图包含了以下三种基本成分: • 实体:即数据对象,⽤矩形框表⽰,⽐如⽤⼾、学⽣、班级等。 • 属性:实体的特性,⽤椭圆形或圆⻆矩形表⽰,如学⽣的姓名、年龄等。...可以使⽤中间表进⾏录,⽐如⼀个学⽣参加了某⼀⻔课程的考试得到了相应的成绩,⽤E-R图表⽰如下: 5.练习设计表 5.1 ⽤⼾与账⼾的⼀对⼀关系 实体间⼀对⼀关系只需要在其中⼀个实体中添加对另⼀个实体的关联字段即可
领取专属 10元无门槛券
手把手带您无忧上云