【转】SQL和数据库的规范化(Normalization)

本文介绍了SQL语言的基础概念,包括查询、数据操作、定义及控制等组成部分,并详细阐述了主键、实体完整性和数据库范式等内容。第一范式确保数据表的规范化,避免重复组出现;第二范式在此基础上进一步消除部分依赖;第三范式则进一步消除传递依赖。

SQL(Structured Query Language)是标准的关系数据库(Relational Database Managerment System)操作语言。SQL语言包括:查询语言(Data Retrieval)、数据操作语言(Data Manipulation Language - DML)、数据定义语言(Data Definition Language - DDL)、数据控制语言(Data Control Language - DCL)和事务控制(Transaction Control)。

主键(Primary Key):他是关系数据库表中的某一列或某几列的组合,它能够唯一地标识关系数据库表中的任一行。
实体完整性(Entity Integrity):主键不能包含空值(NULL),并且主键必须能够唯一的标识任一行。

    表的设计者负责定义主键,关系数据库管理系统(如Oracle、MySQL等)负责维护实体完整性。

    第一范式(1NF)
(1)所有的键的属性(列)都已定义;
(2)没有任何重复组(Repeating Groups),换句话说每行和每列的交汇处可以而且只能包含一个值,而不能包含一组值;
(3)所有的属性(列)都依赖于主键。
    任何关系数据库的表都满足第一范式。

    部分依赖(Partial Dependency):只依赖于部分主键的依赖关系。
    控制冗余:数据库中的表通过共享相同的属性(列)把它们链在一起。

外键(Foreign Key):他是关系数据库表中的某一列或某几列的组合;他的值或者与另一个表中(有时也有可能是同一个表中)的某一列(一般为主键)相匹配,或者为空值(NULL)。
引用完整性(Referential Integrity)
    (1)外键必须或者为空值,或者有相匹配的项。
    (2)外键可以没有相对应的键属性(列)但不可以有无效的项。

    表的设计者负责定义外键,关系数据库管理系统负责维护引用完整性。

    第二范式(2NF)
(1)该表是第一范式的表;
(2)该表不包含部分依赖。

    传递依赖(Transitive Dependency):一个或多个属性(列)依赖于非主键的属性(列)。

    第三范式(3NF)
(1)该表为第2范式;
(2)该表不包含传递依赖。

菊子曰 本文用 菊子曰发布
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值