数据库约束-主键约束-唯一约束-非空约束-默认值 约束概述 约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。...约束的类型 约束名 约束关键字 主键 primary key 非空 not null 唯一 unique 外键 foreign key ... references 默认 default 1....通常不用业务字段作为主键,单独给每张表设计一个id的字段,把id作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。...非空约束 NOT NULL 被修饰的这个字段必须设置值,不能是NULL 3.1 非空约束的基本格式 字段名 字段类型 NOT NULL 3.2 实现非空约束 具体操作: 创建表学生表st8, 包含字段(...INTO st8 VALUES (5, NULL, '男'); ERROR 1048 (23000): Column 'NAME' cannot be null mysql> -- 可以看到设置了非空约束后
主键相关的注解 1.5. 与非主键相关的注解 1.6. 实例 1.7. @JoinColumn 1.8. @JoinTabl 1.9....=,generator="") : 主键生成策略 Strategy的值 GenerationType.AUTO - 根据底层数据库自动选择(默认),若数据库支持自动增长类型,则为自动增长。...与非主键相关的注解 @Version - 可以在实体bean中使用@Version注解,通过这种方式可添加对乐观锁定的支持 @Basic - 用于声明属性的存取策略: @Basic(fetch=FetchType.EAGER...@Transient - 可选,表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient。...,但是我们也可以使用这个注解改变这个名称 这个注解是用来设置自动生成的外键的属性,比如外键的名称,非空…… name 指定外键的名称 nullable 指定外键是否为空,默认的是true
聚合 正如前面所讲,一个聚合是一系列对象(实体和值对象)的集合,通过聚合根将所有关联对象绑定在一起。本节将介绍与聚合相关的最佳实践和原则。...如果你仔细想想,当使用非关系型数据库(如MongoDB)时,当Role和User都有关系列表时还有一个问题:在这种情况下,相同的信息会在不同的集合中重复出现,将很难保持数据的一致性,每当你在User.Roles...当传递的值为空时,抛出异常ArgumentException。 初始化子集合,当使用 Labels 集合时,不会获取到空引用异常。...public Guid RepositoryId {get; private set;} //不更改 public string Title { get; private set; } //更改,需要非空验证...IUserIssueService 是一个任意的服务,用于获取分配给用户的问题数量。如果业务规则不满足,则抛出异常。所有规则满足,则设置 AssignedUserId 属性值。
1、自定义特性 配置服务SqlsugarSetup 既然要实现泛型主键,那我们就需要对主键进行处理,因为只有int类型的主键才需要自增,其他类型的是不需要的,当然如果在非int类型的主键上配置自增了也是会报错的...修改实体基类RootEntityTkey 这里我重写了一个基于泛型主键的实体基类RootEntityTkey,因为有了上边的配置,所以就不需要在主键上增加自增了,只需要配置一个属性:是否为主键即可,因为肯定不为空...Guid,就算是一个空的对象实例,存入的时候也会有值,具体的写法我下文会举例说明的。...我参照着实体泛型基类,又单独针对特定的有外键需求的实体,抽离了一个中间父类,请注意我的命名:实体类-->父类(非必须)-->泛型基类,用UserRole来举例。...DateFormatHandling.MicrosoftDateFormat; setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //空值处理
主键索引和唯一索引在MySQL中都是特殊的BTree索引,但两者有以下区别: 主键索引要求主键列不能为空。为了定义一个主键索引,必须先定义一个唯一性索引。...每个表只能有一个主键索引,用于标识唯一行标识符,并且可以自动添加到外键表中。 唯一索引列可以为空,但只容许具有一个空值;而主键索引则不允许任何空值。...在InnoDB存储引擎中,如果未将 PRIMARY KEY 或 UNIQUE 关键字分配给索引声明,则第一个非NULL唯一索引被用作InnoDB的主键索引。...如果将某一列设置为唯一索引,那么这一列相同的值每种只能出现一次(除NULL)。而主键索引除了唯一性属性之外,还应该满足非空属性,即主键列不能有重复的 NULL 值。...在连接查询和聚合计算时,优先使用主键索引提高查询效率。如果没有明确的理由,在对需要添加或修改约束的列进行索引时,最好使用主键索引。
后端 Spring Boot:构建系统核心逻辑的后端框架,本系统采用 2.7.0 版本。 MyBatis / MyBatis Plus:后端连接数据库的框架,本系统采用 3.5.2 版本。...民宿实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 Title Varchar 255 民宿名称 非空 areaSize BigDecimal...民宿新闻实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 newTitle Varchar 255 新闻标题 非空 newDescribe...非空 isTop Varchar 255 是否置顶 非空 nSort Varchar 255 排序值 非空 remark Varchar 255 备注 create_time DateTime 15...民宿预订单实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 dormitoryId Varchar 255 民宿 ID 非空 dormitoryName
后端 Spring Boot:构建系统核心逻辑的后端框架,本系统采用 2.7.3 版本。 MyBatis Plus:后端连接数据库的框架,本系统采用 3.5.2 版本。...资产类型实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 assetName Varchar 255 资产名称 非空 nature Varchar...BigDecimal 15 单价 非空 totalPrice BigDecimal 15 总价 非空 remarks Varchar 255 备注 我将资产分为了固定资产和耗材,用nature字段来区分...资产入库单实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 assetId Varchar 255 资产ID 非空,外键 assetName...资产出库领用单实体类的字段明细如下: 字段名称 数据类型 长度 字段含义 备注 Id Varchar 255 唯一标识 非空,主键 assetId Varchar 255 资产ID 非空,外键 assetName
,从而顾客姓名间接的依赖于订单编号,那么这里产生了依赖传递,所以这个设计是不满足第三范式的 三、主键和外键 主键: 1.能做主键的列必要满足非空唯一的特点 2.只要满足非空唯一的列都可以做主键 3.可以让表中一个有意义的列做主键...,比如说学号,它既表示学生学号又作为表中的主键,因为这个列满足非空唯一的条件 4.也可以找一个没有意义的列做主键,就是用来唯一标识一行记录的 5.我们可以让多个列联合在一起做表中的主键,那么它就是联合主键...,要求这几个列的值联合在一起是非空唯一的 外键: 1.表中的某一个列声明为外键列,一般这个外键列的值都会引用于另外一张表的主键列的值(有唯一约束的列就可以,不一定非要引用主键列) 2.另外一张表的主键列中出现过的值都可以在外键列中使用...3.外键列值也可以为空的,提前是这个外键列在表中不做主键,因为我们也可以把表中的外键列当做主键来使用(只有满足非空唯一的要求就可以) 4.如果把B表中的联合主键的值引用到A表中做外键,因为是俩个列在B...表中做联合主键,那么A表引用过来的时候也要把俩个列的值都引用过来,那么它们在A表中就会作为一个联合外键出现 四、完整性约束 实体完整性: 引用完整性 列级完整性 用户自定义 五、建表 1.映射实体---
B、域完整性:限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则)。...二、实体完整性实现 1、实体完整性的实现简介 实体完整性的实现有两种方式: A、主键约束:一张表只能有一列设置主键,值必须唯一,不允许为空,innoDB存储引擎,主键就是索引。...B、唯一值约束:一张表可以有多个列添加唯一值约束,一直允许一条记录为空值。 实体完整性,由主键和唯一性约束来实现,确保表中记录有一列唯一标识。...主键约束相当于唯一约束与非空约束的组合,主键约束列不允许重复,也不允许出现空值;多列组合的主键约束,列都不允许为空值,并且组合的值不允许重复。...column subject VARCHAR(20) default NULL; 2、创建非空约束 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
建立实体类与数据库表之间的对应关系 默认类名首字母小写 @Column 实体类属性 建立实体类字段与数据库字段的对应关系 实体类:驼峰;数据库:_分隔 @Id 实体类属性 标识主键 未标识主键则认为该实体类为全字段联合主键...@GeneratedValue 实体类属性 获取 insert 自增的主键 属性:strategy = GenerationType.IDENTITY @Transient 实体类属性 标识实体类与数据库不对应的字段...非数据库表中字段 四、CRUD 4.1 select(Entity entity) * 用于根据实体类查询多条数据 * mapper自动生成的SQL entity = {id = null,username...* 补充 ⇨ insertSelective(Entity entity)属性为空的使用默认值 4.3 updateByPrimaryKey(Entity entity) * 根据主键修改 * mapper...* 补充 ⇨ updateByPrimaryKeySelective(Entity entity)属性为空的不更新【推荐】 4.4 delete(Entity entity) * 根据实体类删除 * mapper
@Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。...,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。...pkColumnValue:生成器表中的一行数据的主键值。 initialValue:id值的初始值。 allocationSize:id值的增量。...@Column标注也可置于属性的getter方法之前 @Transient 表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性....如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic @Temporal 在核心的 Java API 中并没有定义 Date 类型的精度(temporal
数据库设计概念模型设计核心实体定义:用户(User):代表使用客户端进行数据库操作的个体。...连接名称(ConnectionName):由用户设定的连接标识名称,方便在多个连接中进行区分与管理,数据类型 VARCHAR,非空约束。...主机地址(HostAddress):存储数据库服务器的网络地址,数据类型 VARCHAR,非空约束,确保连接能够准确找到目标数据库服务器。...对象名称(ObjectName):存储数据库对象的名称,数据类型 VARCHAR,非空约束,便于在数据库中对对象进行引用与操作。...实体关系图
简单来说就是将数据库表与java实体对象做一个映射 2、ORM的优缺点 优点:符合面向对象编程;技术与业务解耦,开发时不需要关注数据库的连接与释放; 缺点:orm会牺牲程序的执行效率和会固定思维模式 3...在javax.persistence的包下面,用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从烦琐的JDBC和SQL代码中解脱出来。...JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。...//标记为新增数据 optionalT = Optional.empty(); } else { //若ID非空...//1.获取最新对象 T target = optionalT.get(); //2.将非空属性覆盖到最新对象
PRIMARY KEY主键约束不能重复,不能为空NOT NULL 非空约束不能为空DEFAULT默认约束插入数据时此列没有值插入,则使用默认值UNIQUE KEY唯一约束此列不能有重复值FROEIGN...alter table 表名 add constraint 约束名 primary key (列名) 一个表有且只有一个主键约束 主键约束意味着唯一且非空 创建主键会自动创建对应的索引,删除主键也会删除对应的索引...(10), primary key(id,name) ); 将多个元素设置为主键。...set null方式:主动权在主表上,如果主表被依赖字段修改了,从表的外键字段会将值设置为Null,这里要求,外键字段不能有非空约束。...七、非空约束(not null) 一个表可以有很多的非空约束 非空约束只能针对某一个字段来说 非空约束意味着该字段不能存入null alter table 数据库名.表名称 modify 字段名 数据类型
一、关系模型与关系类型 关系模型是数据库设计的核心概念,它将现实世界中的事物抽象为实体,并将实体之间的联系抽象为关系,最终以二维表的结构来组织和存储数据。...MySQL提供了五种基本约束,分别是: 主键约束 (PRIMARY KEY): 唯一标识数据表中的每一条记录。 不能为空值 (NOT NULL)。 一个表只能有一个主键。...外键字段的值必须在关联表的主键字段中存在,或者为 NULL。...可以为空值 (NULL),但只能有一个空值。 一个表可以有多个唯一约束。...(NOT NULL): 确保字段值不能为空值 (NULL)。
数据完整性维度大类下可细分为以下维度小类: 非空约束:描述检核对象是否存在数据值为空的情况。如客户开户时,客户名称是必填项,不能出现为空的情况。...非空约束 非空约束比较容易理解,简单的讲就是字段不能为空,检查方式也比较容易,只需要设定需要检查的字段,通过 sql 查询列值不能为空即可。将为空的数据查询出来进行整改。...当然非空约束可以通过设置非空约束的方式限制数据无法写入数据库,如果支持这种方式可以避免事后的数据非空检查。 ?...数据唯一性维度大类下可细分为以下维度小类: 唯一性约束:描述同一客观实体在不同业务数据集中的信息,经整合后是唯一的,针对目标通常是单一主键或联合主键,如证件类型+证件号码+姓名相同,则其客户编号应唯一。...这种情况的如果是单一的业务主键,可以通过对主键分组去重的方式检查,如果是业务联合属性判断唯一实体的情况只能业务人员进行手动检查。 ?
6 逻辑结构设计 1.从E-R图向关系模式转化 数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将E-R图中的实体、实体的属性以及实体之间的联系转化为关系模式。...) 空/非空 约束条件 Number Nvarchar(255) 非空 主键 Points Float 可以为空 无 Ranking...列名 数据类型(精度范围) 空/非空 约束条件 Number Nvarchar(255) 非空 主键 Body Float 可以为空...Number Nvarchar(255) 非空 主键 Course Float 非空 主键 Grade Float 可以为空...Nvarchar(255) 非空 主键 EName Nvarchar(255) 非空 主键 补充说明 记录学生的加分项信息 表Specialty
:就是在候选键中选取的一个 -- 外键:即在其他表中为主键的字段 -- 极端情况下,候选键只有一个属性或者全部属性才能构成一个候选键 6.关系数据库的数据完整性 -- 实体完整性 --即主键值唯一且不能为空值...--联系也可以有属性 -- 一对一的联系 --在两个实体之间任意一个加入另外一个实体的主键即可产生联系 -- 一对多的联系 --在多端实体加入一端实体的主键即可产生联系 -- 多对多的联系...等值连接 --条件运算符是等号的连接 非等值连接 即一般的条件判断连接,符合规则然后连接 --还有一些概念,例如左外连接,右外连接,全外连接,即连接时如果没有匹配到值做的一些处理,将没有值的部分置为空值...作用:使得插入的数据不能为空值 --这里就是创建了一个非空约束 create table student( name varchar(10) primary key, age int not...--首先要确保当前的要添加主键约束的字段非空 --不然就不满足实体完整性 create table student1( name varchar(10) not null, age int
非空约束和检查约束则主要用于保证数据的准确性。非空约束规定字段的值不能为空,在创建表时,如果将某个字段定义为非空约束,那么在插入或更新数据时,必须为该字段提供一个具体的值,否则操作将被拒绝。...2.2.4 非空约束(NOT NULL) 非空约束是一种用于确保列中的值不为空的约束。当为某个列定义了非空约束后,在插入或更新数据时,必须为该列提供一个非空的值,否则操作将触发非空约束错误。...非空性则规定主键字段的值不能为空值,因为空值无法作为有效的唯一标识,无法准确地定位到具体的记录。...非空约束确保了username字段的值不能为空,这是因为用户名是用户登录系统的重要标识,不能为空值。如果username为空,系统将无法准确识别用户身份,导致登录和用户管理功能无法正常进行。...主键约束通过确保表中每一行记录具有唯一且非空的标识符,为数据的唯一性提供了坚实保障,如同为每个数据实体赋予了独一无二的 “身份证”,使得数据在存储和检索过程中能够被准确识别。
要求每张表都有一个唯一标识符,这个唯一标识符常用的就是主键约束(将某个字段设置为主键),主键字段和不能为空并且不能重复。...例如在学生表中学号作为主键,那么我们在插入数据的时候,如果插入的数据的学号和数据表中已存在数据的学号重复的话,将无法插入。...要求关系中不允许引用不存在实体。例如我们有学生表和成绩表,学生表的主键学号字段为成绩表的外键,那么如果我们在成绩表里插入数据的学号在学成表里不存在将无法插入。...域完整性约束 域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现。是针对某一具体关系数据库的约束条件,它保证表中的某些列不能输入无效值。...约束方法包括:限制数据类型、检查约束、默认值和非空约束。