MySQL3-关系和范式

来源:互联网 发布:最强网络神豪80txt下载 编辑:程序博客网 时间:2024/05/21 11:03

1.关系

数据库设计,需同时考虑实体设计(数据表)和实体间的关系设计。

1.一对一

一张表中的一条记录一定只能与另一张表中的一条记录对应。用具有唯一性的字段来关联两张表。
数据可以合并到同一张表中。
例如,人与身份证号。

2.一对多

一张表中的一条记录可以对应另一张表中的多条记录,但第二张表中的一条记录只能对应第一张表中的一条记录。需要在第二张表中增加字段关联第一张表。
例如,人与银行卡。

3.多对多

一张表中的一条记录可以对应另一张表中的多条记录,同时第二张表中的一条记录也能对应第一张表中的多条记录。需要增加一个表,维护两张实体表之间的关系。中间表与两张实体表都是一对多的关系。
例如,朋友关系,老师和学生,订单与商品。

2.范式

范式(Normal Format)用于解决数据的存储与优化,防止冗余,从而节省空间。
范式是分层结构,从1NF,2NF直到6NF。1NF要求最低,每一层都比上一层更严格。要满足下一层范式必须实现上一层范式。数据库通常用前三种范式。

1.第一范式1NF:字段具有原子性

数据不可拆分,取出后可以直接用,不需要再处理,对应字段就具有原子性。

2.第二范式2NF:表中有复合主键时,表中字段不能出现部分依赖

数据表中有复合主键时,如果表中有字段不是由整个主键确定,则出现部分依赖。此时应将部分依赖的字段拆分成单独的数据表,最终保证表中所有字段全部由复合主键确定;或者取消复合主键,增加一个逻辑主键(为数据表增加ID字段)。

3.第三范式3NF:一张表中的所有字段都直接依赖主键(业务主键而非逻辑主键)

传递依赖:表中的某个字段不是直接依赖主键,而是通过某个非主键字段依赖,最终实现依赖主键。
如果有字段存在传递依赖,需要将这些字段取出到单独的表。

4.逆规范化:一张表提供所有的经常同时查询的数据,而不是去多表查询。

优点:查询速度快。
缺点:数据冗余,浪费空间。

0 0
原创粉丝点击