第1章 SQL Server 2008简介
1.1数据库基础知识
一、DBMS
二、数据库模型
1、层次模型:
结构模型,树型结构,由节点连线组成,节点表示实体,连线表示实体之间的关系。
优点:数据结构类似金字塔,不同层次之间的关联性直接而且简单;
缺点:由于数据纵向发展,横向关系难以建立,数据可能会重复出现,造成管理维护的不便。
2、网状模型:
数据记录组成网中的节点,记录之间的关联组成节点之间的连线,从而构成复杂的网状结构。
优点:容易反映实体之间的关联,避免数据的重复性。
缺点:关系错综复杂,数据逐渐增多时,难以维护。
3、关系模型:(目前使用最广泛,SQL Server、Oracle、Sybase、DB2等)
基于关系模型的数据库,其存储结构是多个二维表格,每一行称为一条记录,描述一个对象的信息,每一列称为一个字段,描述对象的一个属性。数据表之间存在相应的关联,这些关联将被用来查询相关的数据。
优点:结构简单,格式唯一,理论基础严格,数据表之间相对独立,查询时,可以根据数据表之间的关联性从多个数据表中抽取相关的信息。
1.2关系数据库
一、关系是一种规范化的二维表格,具有如下性质:
l 属性值具有原子性,不可分解
l 没有重复的元组
l 理论上没有行序,但是有时在使用时可以有行序
二、关系数据库中的一些基本术语:
主键(Primary Key):作为表行的唯一标识,一个表中只有一个主键。
候选关键字(Candidate Key):唯一标识表中的一行又不含多余属性的一个属性集。
外关键字(Foreign Key):如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字。
公共关键字(Common Key):如果两个关系中具有相容或相同的属性或属性组,那么这个属性或属性组被称为这两个关系的公共关键字。
三、关系数据库对象:表(table)、索引(index)、视图(view)、图表(diagram)、默认值(default)、规则(rule)、触发器(trigger)、存储过程(stored process)和用户(user)等。
四、完整性规则:
SQL的使用主要通过数据操纵、数据定义和数据管理三种操作实现。
关系模型的完整性规则是对数据的约束。
三类完整性规则:实体完整性、参照完整性和用户自定义完整性。
1、 实体完整性(主码):关系的主属性不能是空值。
2、 空值:不知道或不能使用的值,与数值0和空字符串的意义不一样。
3、 参照完整性(外部码):如果关系的外键R1与关系R2中的主键相符,那么外键的每个值必须在关系R2中主键的值中找到,或者它是空值。例如职工表Employee中的部门号Dno必须是部门表Department中实际存在的部门号,这样才有意义。
4、 用户自定义完整性:非空约束、对属性的CHECK约束、对元组的CHECK约束、触发器等
1.3范式理论和E-R模型
一、范式理论:
为了建立冗余较小、结构合理的数据库,构造数据库时必须遵循一定的规则,在关系数据库中这种规则就是范式。范式是符合某一种级别的关系模式的集合。
六种范式:1NF、2NF、3NF、BCNF、4NF、5NF
一般数据库只需满足第三范式就行了。
1、第一范式1NF
指导原则:
l 数据组的每个属性只能包含一个值。
l 关系中的每个数组必须包含相同数量的值。
l 关系中的每个数组一定不能相同。
2、第二范式2NF
如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式。
3、第三范式3NF
如果一个数据表已经满足第二范式,而且该数据表中的任何两个非主键字段的数据之间不存在函数依赖关系,那么该数据表满足3NF。例如,图书的“借出数量”等于“进货数量”和“剩余数量”字段之差,应该将“借出数量”去掉以满足第三范式。也就是说,第三范式要求不要在数据库中存储可以通过简单计算得出的数据。
数据表规范化程度越高,数据冗余就越少,同时造成人为错误的可能性就越小;同时,查询检索需要做的关联等工作就越多。所以要根据实际需求选择一个折中的规范化程序。
二、E-R模型
实体-关系(Entity-Relationship)数据模型用简单的图形反映了现实世界中存在的事物或数据及它们之间的关系。
1、 实体模型
2、 关系模型:1:1、1:N、N:M
1.4 SQL Server 2008概述
一、发展历程:Sybase SQL Server(1988)àMicrosoft SQL Server 7.0àMicrosoft SQL Server 2000àMicrosoft SQL Server 2005àMicrosoft SQL Server2008
1.5 SQL Server 2008新增功能与特性
1.报表服务
2.集成服务
3.LINQ语言
4.增强XML功能
5.增强Transact-SQL语言
6.新增日期数据类型
7.新增Hierarchyld类型