数据库设计三大范式及五大约束

一、数据库设计范式

什么是范式?

简单来说,就是对数据库设计进行规范,这些规范可以优化数据存储的方式,提高存储性能,在关系型数据库中这些规范就可以称为范式。

二、理解三大范式

第一范式(1NF)
  1. 每一列属性都是不可再分的属性值,确保每一列的原子性

  • 例如,某些数据库系统会用到“地址”这一属性,本来直接将“地址”属性设计成一个数据库表的字段就行,但是如果系统经常用到其中“城市”这一部分,就要将“地址”这个属性重新拆分为省份,城市,详细地址等多部份进行存储,这样读地址中某一部分操作的时候就会方便很多,这样就满足了数据库设计的第一范式。

  1. 两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。

第二范式(2NF)

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

依赖性:在满足1NF的基础上再满足依赖性的两个约束:一张表必须有一个主键;非主键类必须完全依赖于主键,而不能只依赖主键的一部分。

  • 例如,我们要设计一个订单信息表,因为订单中可能会有多种商品,所以要将订单编号和商品编号作为数据库表的联合主键,如下表所示

但这样的设计是存在问题的,违反了第二范式原则。如果把这个表进行拆分,效果就会更好

这样设计,在很大程度上减小了数据库的冗余。如果要获取订单的商品信息,使用商品编号到商品信息表中查询即可。

第三范式(3NF)

在满足2NF的基础上,另外再满足一个条件:非主键列必须直接依赖于主键,不能存在传递依赖。

例如,性别可以用0和1表示,0对应男生,1对应女生,这个性别与0 1对应关系就要单独设置一张表,不可以和姓名,年龄这些属性同时出现在一个表中。

最后

数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

三、五大约束

1.PRIMARY KEY(primary key):设置主键约束;

2.UNIQUE(unique):设置唯一性约束,不能有重复值;

3.DEFAULT(default):默认值约束,height DOUBLE(3,2) height不输入是默认为(1,2)。

4. NOT NULL(not null):设置非空约束,该字段不能为空;

5. FOREIGN KEY (foreign key):设置外键约束。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值