【数据库设计】关系型数据库的范式(normalization)、键(Key)、约束(Constraints)

一、范式

范式的正确设计,有利于减少数据的冗余与数据的不一致性。

第一范式

定义: table中每一行每一列对应的data都是unique的。

本部分使用的bookshop table来做示范。
在这里插入图片描述
上面这个表中的数据,每一行是独立的,我们可以根据id提取出对应的row
但是,each cell of the table don’t have single value, 其中有两列对应着两个value;不符合第一范式的要求;所以我们应该添加额外的一行,将AUTHOR_NAME和对应的AUTHOR_ID拎出来,将其他元素复制,这样新生成的table就满足了第一范式。

第二范式

定义:

  1. 满足第一范式
  2. 不包含任何的部分依赖(partial dependencies)

本部分使用如下表格进行说明。
在这里插入图片描述

上表格中,我们很容易得知,其满足第一范式。
但是入下图中红框框出来的部分所示:

在这里插入图片描述

随着表中行数的增加,我们将不必要地存储越来越多的相同信息。如果作者更新了他们的简历,我们必须更新所有这些事件。

为了消除部分依赖,使其满足第二范式,我们可以将重复的部分单独拎出来建一个表。比如这个例子,我们再单独建立一个名字为BookShop_AuthorDetails的表。通过Author_ID将两个表链接起来,然后将原表格中冗余的部分删除掉。

如下所示:

在这里插入图片描述
那么现在,我们的tables就满足了第二范式。

二、key

key有助于唯一的确定对应地record in a table.
key可以建立与识别不同tables之间的关联

primary key

定义:a column or group of columnns that uniquely identify every row in a table.

一个表只能有一个primary key

具体引申:

  • 不存在两行有相同的主键值
  • 每行必须有一个主键值
  • 主键值不可为null

foreign key

定义: a column that establishes a relationship between two tables.

有点像table之间的交叉引用。

规则:

  • 结构和数据类型必须和被引用的table primary key保持一致
  • foreign key 中的value必须是primary key中出现的
  • foreign key对应的column可以出现重复value
  • foreign key 可以是Null

三、constraints

不同的关系模型约束有助于保证数据完整性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值