SQL三大范式

范式含义(Normal From—NF)

​ 在关系数据库中,数据表在设计时遵循的规范准则(这些规则是为指导与推荐的,类似一种约定俗成,用户的数据表在满足这些规则时也就等于满足这些范式,即“规则”=“范式”),范式的英文名称为Normal Form,简称NF。要想设计一个合理的关系型数据库,就需要满足一定的范式。范式一共有6种——1NF 2NF 3NF(常用三大范式),BCNF(巴斯科德范式),4NF(第四范式),5NF(第五范式/完美范式)。

​ 在数据库设计时满足范式的意义:降低数据冗余,范式越高阶,数据冗余度就越低。在满足高阶范式时必须同时满足低阶范式

基本概念

数据库的组成:

数据:

​ 描述事物的符号(数字,文字,图片,图像,声音等等)

​ 数据以记录的方式储存(数据表行为记录,列为字段)

表:

​ 一条或多条不同的记录组成(数据表必须满足完整性,不允许相同的记录,不满足的要求的数据格式存在)

记录(数据):行

字段(属性):列(对于每一列的数据必须满足相同的数据格式)

关键名词:

超键:

​ 在关系中能唯一标识元组的属性集称为关系模式的超键

​ 例:表student(学号,学生姓名,学生性别,学生身份证号,教师编号)
在这里插入图片描述

​ 其中的超键有(Sno),(Sno,Sname),(Sno,Sname,Ssex),(Sid,Sname,Sno),(Sid),(Sid Sname),(Sno,Tno)等等许多,但他们的特点是,依据其中一个键,则可获得其它唯一的键,例如依据学号获得学生的姓名只有一个,不会有多个值与之符合。

候选键:

​ 不含有多余属性的超键称为候选键(候选键属于超键,是最小的超键),例如(Sno),(Sid)等等,但(Sno,Sname)就不满足,因为删除Sname属性后依旧满足成为超键的要求。注意:候选键的组成可以由一个或多个属性组成,比如表XX的最小超键为(属性1,属性2),在删除属性1或属性2后,就不满足超键的要求。

主键:

​ 在关系型数据库中,多个属性组成的记录,可以依据一个属性集识别某一条记录或数据,这个属性及在数据表中式唯一的,例如(Sno)或(Sno,Sname)。注意:属性集由一个属性或多个属性组成,也就是主键可以为一个属性组成,也可以由多个属性组成。

外键:

​ 如果关系模式R1中的某属性集不是R1的主键,而是另一个关系R2的主键则该属性集是关系模式R1的外键

​ 例如:表teacher(教师编号,教师姓名,教师类型,教师身份证号)

在这里插入图片描述

​ 其中,Tno在表student中不作为主键,但在teacher表中Tno可以作为一个主键存在,此时,Tno就为一个外键

主属性:

包含在任一候选键中的属性称为主属性

非主属性:

​ 指不包含在任何一个候选键中的属性

三大范式

第一范式(1NF):

​ 第一范式必须满足每个字段的值满足原子性,表中的每个字段不可在被拆分,例如:

在这里插入图片描述

表teacher中Tclass字段可以继续拆分职别与系别两个字段,这样就不满足第一范式

第二范式(2NF):

​ 第二范式必须,满足所有非主键类属性必须依赖主键,例如表student2
在这里插入图片描述

主键取Sno

但关于老师的内容(Tno,Tname,Tclass)与Sno不相关,所以将此表拆除为三张表

表1:student表(Sno,Sname,Ssex,Sid)

表2:teacher表(Tno,Tname,Tclass)

表3:s_t(关系表)表:(Sno,Tno,Sgrade)

拆分后的三张表满足2NF

第二范式解决的问题:

**数据冗余:**一个老师对应多个学生,创建学生用户数量巨大,但老师用户数量不及学生,这样重复的数据过多造成数据冗余

**插入异常:**如果加入一个新的老师用户,此时又没有学生用户属于此老师,老师用户数据无法插入

**删除异常:**若老师离职,学生用户的成绩信息也会被删除

**更新异常:**若改变教师信息,那么关于这个表的所有关于这个教师的信息也将被修改,否则将出现数据异常

第三范式(3NF):

​ 在第二范式基础上,要求非属性类完全依赖主键,不能存在传递依赖
在这里插入图片描述

student1满足第二范式要求,但(Tno,Tname,Tclass)三个属性,Tname,Tclass可以不依赖主键,直接依赖Tno属性,此时不满足第三范式要求
87364105481)]

student1满足第二范式要求,但(Tno,Tname,Tclass)三个属性,Tname,Tclass可以不依赖主键,直接依赖Tno属性,此时不满足第三范式要求

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库三大范式是指在设计关系型数据库时需要遵循的规范,以确保数据的完整性和一致性。具体而言,第一范式(1NF)要求每个字段只能包含原子性的值,第二范式(2NF)要求每个非主键字段都必须完全依赖于主键,第三范式(3NF)要求每个非主键字段之间不能相互依赖。下面是三大范式的详细介绍和示例: 1. 第一范式(1NF):要求关系中的每个属性都是不可再分的原子值,即每个属性都不可再分成更小的部分。例如,一个人的姓名和姓氏应该作为两个不同的属性存储,而不是将它们合并成一个属性。 2. 第二范式(2NF):在满足第一范式的基础上,要求关系中的非主键属性必须完全依赖于主键,而不能存在部分依赖关系。例如,如果一个订单号确定一个产品和数量,则产品和数量应该作为一个表的属性,而不是将它们作为订单表的属性。 3. 第三范式(3NF):在满足第二范式的基础上,要求关系中的非主键属性之间不能存在传递依赖关系。例如,如果一个订单号确定一个产品类型,则产品类型和产品描述应该作为不同的表的属性,而不是将它们作为订单表的属性。 下面是一些SQL语句的示例: 1. 创建表时指定主键: ``` CREATE TABLE orders ( order_id INT PRIMARY KEY, product_name VARCHAR(50), quantity INT, price DECIMAL(10,2), customer_id INT ); ``` 2. 添加外键: ``` ALTER TABLE orders ADD CONSTRAINT fk_customer FOREIGN KEY (customer_id) REFERENCES customers(customer_id); ``` 3. 查询语句: ``` SELECT order_id, product_name, quantity, price FROM orders WHERE customer_id = 1; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值