SQL Server2008 学习笔记(二)关系数据库
关系数据库(Relational Database ,RDB)基于关系模型的数据库。是现代最流行的数据管理系统中应用最为普遍的一种,也是最有效率的数据组织方式之一。
理解关系数据库可以从两方面进行理解:
1、关系数据库是有由行与列构成的二维表表之间的关联组成
2、表的关联。表的关联的好处就是无需将相同的数据重复的进行存储,降低了数据的冗余度。
术语
键码(key):在关系中用来标识行的一列或者是多列
主关键字(Primary Key):是表行的唯一标识的候选关键字。这里需要注意的地方是,一个表只有一个关键字;主关键字可以由一个或者是多个字段组成,分别称为单段主键和多段主键
候选关键字(Candidate Key):唯一标识表中的一行而又不包含多余属性的一个属性集
公共关键字(Common Key):两个数据表中具有相同或者是相容的属性或者是属性组,那么这个属性或属性组就称之为关系的公共关键字
外关键字(Foreign Key):外关键字存在于公共关键字的基础之上。在公共关键字中如果这个公共关键字在其中的一个数据表中是主关键字那么这个公共关键字就称之为另一个表的外关键字。
范式理论
目前关系数据库有六种范式,而在实际设计数据库的时候,通常用到的是前三种范式
1NF
a)数组的每个属性只能包含一个值
b)关系中的每个数组必须包含相同数量的值
c)关系中每一个数组一定不能相同
反例
姓名 | 性别 | 年龄 |
张三 | 男 | 18 |
李四 | 男 | 20 |
王五 赵六 | 女 | 19 20 |
如果符合1NF则修改如下
姓名 | 性别 | 年龄 |
张三 | 男 | 18 |
李四 | 男 | 20 |
王五 | 女 | 19 |
赵六 | 女 | 20 |
2NF
满足第一范式的基础上,数据表中的任何一个非主键字段的数据都依赖于该数据表中的主关键字。
项目编号 | 名称 | 负责人 | 负责人部门 | 营销员 | 开始日期 | 结束日期 |
1 | 项目一 | 张三 | 项目部 | 1 | 2012/05/01 | 2012/05/09 |
2 | 项目二 | 李四 | 项目部 | 2 | 2012/05/01 | 2012/05/09 |
3 | 项目三 | 王五 | 财务部 | 1 | 2012/05/01 | 2012/05/09 |
若满足2NF则需要将上面的表分拆为一下两个表:
员工姓名 | 所属部门 |
张三 | 项目部 |
李四 | 项目部 |
王五 | 财务部 |
项目编号 | 名称 | 负责人 | 营销员 | 开始日期 | 结束日期 |
1 | 项目一 | 张三 | 1 | 2012/05/01 | 2012/05/09 |
2 | 项目二 | 李四 | 2 | 2012/05/01 | 2012/05/09 |
3 | 项目三 | 王五 | 1 | 2012/05/01 | 2012/05/09 |
3NF
在满足第二范式的基础上,满足第三范式的条件是数据表中的任何两个非关键字段的数据值之间不存在函数依赖关系。
这个范式比较容易理解就不拿例子来解释了。
这样做有什么好处吗?答案是肯定的哈。没有无缘无故的爱和恨,呵呵。
1、节约存储空间
2、避免的数据变动时发生人为的错误
E-R模型
1、实体模型
怎么样理解这样的一个概念呢。通过一个简单的例子来解释这样的一个概念。
学生信息 |
学号 |
姓名 |
年龄 |
这就是一个实体集
学生 |
20101111 |
张三 |
18 |
这是一个实例
参考资料上的定义是这样的:同一类实体的所有实例构成该对象的实体集。
实例是实体集中某个特例
2、关系模型
1、一对一关联
2、一对多关联
3、多对多关联
疑问:
候选关键字是什么意思?请明白人赐教。小弟在这谢谢喽。