首页 > 编程知识 正文

数据库设计原则之三大范式,数据库三大范式解析

时间:2023-05-03 08:45:46 阅读:168142 作者:2590

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com.Sina.com/http://ww.Sina.com

2 .尽量合并两列属性相近或相似或相同且属性相同的列,以避免生成冗馀数据

例如:

有一个学生代表。 假设两个字段分别为name、address,地址的内容写为江苏省南京市浦口区xxx街xxx小区。 此时,如果来了一个需求,需要按省市区分类,显然不符合需求。 这样的表结构也并不符合第一范式。

应该像name、province、city、area、address那样设计

2 .第二范式(2NF )属性完全依赖于主键

第二范式(2NF )基于第一范式) 1NF )构建,即要满足第二范式(2NF )必须首先满足第一范式) 1NF )。

第二正则表达式(2NF )必须能够唯一区分数据库表中的每个实例或行。 为了实现区分,通常需要向表中添加列以存储每个实例的唯一标识符。 这个唯一的属性列被称为主键

每行的数据只能与其中一列相关联。 也就是说,一行数据只做一件事。 只要数据列中存在重复的数据,就必须拆分表。

例如:

订单表如下。

订单(订单号)、roomId、name、phone )、idn ) id

此时,如果一个人同时预约多个房间,则一个订单号对应多个数据。 如果联系人像这样重复的话,数据就会变得冗长。 这个时候,我们应该分割。

例如:

订单列表:

订单id (订单号、订单id、人员id ) (联系号码) )。

联系表:

peoId (联系人号码)、name、phone )、idn ) id

3 .第三范式(3NF )属性不依赖于其他非主属性属性,而是直接依赖于主键的第二范式(3NF )基于第一范式(2NF )来构建。 即,要满足第三范式) 3NF )就必须先满足第二范式) 2NF )。

简单的意思是对字段冗馀的约束。 这意味着任何字段都不能从其他字段派生。 字段必须没有冗馀。

例如:

假设您有一个员工(1.第一范式)表,其中包含9个属性: id (员工编号)、name (名称)、mobile (移动)、zip (权限)、province (city )和城市)

员工表中的province、city和district依赖于zip,而zip依赖于id。 换句话说,province、city和district的分发依赖于id,违反了3NF规则。 为了满足第三范式的条件,可以将此表分为employee和zip两个表,如下所示

idnamezip101枚三100001102李四200001103王五510001 1NF

zipprovincecitydistrict100001北京北京海淀区200001上海静安区51000广东省广州白云区

数据库范式为数据库的设计和开发提供了可借鉴的范例,成为众多教材中重要的课程内容。

那么范式的提出是为了解决什么问题?

第一模式要求将列尽可能地分割为最小,希望消除在某列中容纳多个值的冗长行为

例如,用户表中的地址信息被分割成省、市这一明确的字段,可以按独立的字段来检索、查询第2正规形式,要求唯一的主键,并且对主键没有部分依存,表中的冗馀(多余)

例如,订货表的商品分类、详细信息在商品信息表中只保存一份即可。 第三范式的要求是间接不依赖主键的列,也就是希望消除表中冗馀的列

例如,用户表不需要额外存储该城市的人口、城市特征等信息。 很明显,这些范式大多是为了消除冗馀而提出的,可以最大限度地降低存储成本。

:列

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。