数据库规范化,数据库范式,和规范化实例

数据库规范化是减少数据冗余、提高数据一致性的设计原则,包括第一、第二和第三范式。本文介绍了这些范式的概念和规则,并通过实例展示了如何优化数据库结构以满足第三范式。在实践中,过度规范化可能导致更高的数据库IO,因此通常优化到第三范式即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是数据库规范化

维基百科的定义如下:

数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性

数据库范式是埃德加·科德设计出来的。在1970年代初,他定义了第一范式(First normal form)第二范式(Second normal form),和**第三范式(Third normal form)**的概念。数据库范式可以理解成一系列的规范或者规则,为了实现数据库规范化的目标,我们需要按照这些范式的规则来优化数据库。

关于这些范式的规则我会在文章后续部分说明。

现在数据库设计最多满足第三范式,普遍认为范式过高,虽然具有对数据关系更好的约束性,但也导致数据关系表增加而令数据库IO更易繁忙,原来交由数据库处理的关系约束现更多在数据库使用程序中完成。

因此,本文数据库的优化实例只做到第三范式。

术语

为了更准确,简洁地定义各个范式的规则,我们需要知道一些术语的含义。对于有些术语来说,我不打算写出它标准化的定义,这是因为标准化定义十分晦涩。对于这样的术语,俺直接给出相应的例子,理解它代表的是什么东西就行。

  • 关系(relation):数据库中的「表」
  • 元组(tuple):数据库表中的「行」
  • 属性(attribute ):数据库表中的「列」
  • 超键(superkey):数据库关系中能够唯一标示元组(即,行)的属性集合。超键例子
  • 候选键(candidate key):不含有多余属性的超键。也就是说,这个超键属性集合的任何一个真子集(proper subset),都不能唯一标示元组。候选键有时也被称为主键(primary key)。一个表中的候选键可能不唯一
  • 主属性(prime attributes):候选键中包含的属性
  • 非主属性(non-prime attribute):任何一个候选键都没有包含的属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值