第1章 数据库基础

来源:互联网 发布:mac隐藏桌面的文件夹 编辑:程序博客网 时间:2024/05/17 22:54

部分转自http://wenku.baidu.com/view/16079adb50e2524de5187e1f.html

第1章 数据库基础

1.1概述

文件管理系统,以文件方式管理数据

与文件系统相比,数据库系统的特点:

  • 数据结构化:文件系统中,文件之间不存在联系。数据库系统不同。
  • 数据共享:共享是数据库系统最重要的特点
  • 数据独立性:文件系统中,文件和应用程序相互依赖。
  • 可控冗余度:实现共享之后,避免重复。

1.2数据库模型

按实现结构化所采用的不同联系方式,分为三种:网状、层次型和关系型。前两类称为格式化

网状:将每个记录当成一个结点,结点和结点之间可以建立关联

层次型:树状结构

关系型:以二维矩阵来存储数据的,行和列形成一个关联的数据表

1.3数据库系统

一个数据库系统(Database System)可分为数据库(Database)与数据库管理系统(Database Management System,DBMS)两个部分。。简单地说,数据库即是一组经过计算机整理后的数据,存储在一个或者多个文件中,而管理这个数据库的软件就称之为数据库管理系统。

1.3.2数据库管理系统

3个组成部分:
  • 数据描述语言(Data Description Language,DDL) 用来描述数据库的结构,供用户建立数据库。
  • 数据操作语言(Data Manipulation Language,DML)
  • 其他管理和控制程序 包括安全、通信控制和工作日志等。
DDL和DML组成一个一体化的语言。对于关系型数据库,最常用的就是SQL(Structure Query Language)语言
提示:DBMS并不好用,所以出现了数据库应用系统(Database Application System,DBAS)。它是在DBMS支持下运行的一类计算机应用系统,通常由数据库、应用程序和支持它们的DBMS组成。应用程序就是由应用程序设计者使用各种开发工具(例如VB等)开发而成的。

1.3.3数据库管理系统的网络结构

依据数据的多少、使用的人数与硬件设备等条件,将数据库管理系统分为4种网络结构:Main Frame大型数据库、本地小型数据库、分布式数据库和客户机/服务器数据库。

1.4关系型数据库

1.4.3表的主键和外键

键(Key)是一个逻辑结构,不是数据库的物理结构。主键(Primary Key)和外键(Foreign Key)
主键是指表中的某一列,该列的值唯一标识一行。
主键实施实体完整性,即每个表必有而且仅有一个主键,主键必须唯一,而且不允许为NULL或者重复。一般为整数类型的字段。
外键是指表中含有的与另外一个表的主键相对应的字段,它用来与其他表建立关联。(其他表的主键,本表的外键)

1.4.4 数据完整性

数据完整性(Data Integrity)是用来确保数据库中的数据的正确性和可靠性。例如,数据库中某一个表的数据得到了更新,则所有与此相关的数据都要更新
数据的完整性包括以下几类:
  • 实体完整性:是为了保证表中的数据唯一,实体完整性可由主键来实现。
  • 域完整性:可以保证数据的取值在有效的范围内。例如,可以限制某一字段的取值范围为300~500。域完整性是对业务管理或者对数据库数据的限制,它们反映了业务的规则,因此也称之为商业规则(Business Rule)。
  • 参照完整性:用于确保相关联的表间的数据保持一致,避免因一个表的记录修改,造成另一个表的内容变为无效的值。一般来说,参照完整性是通过外键和主键来维护的。
  • 自定义完整性:由用户自行定义的,不同于前面3种的完整性,也可以说是一种强制数据定义。例如,在输入图书表的记录时,应确保图书编号不为空(NOT NULL)。

1.4.5 表的关联种类

  • 一对一关联
  • 一对多关联:A表的一笔记录可以对应到B表的多笔记录,而B表的一笔记录只能对应A表的一笔记录时,称为一对多关联。例如,一本图书只能在一个出版社出版,而一个出版社却可以出版多本图书。即在图书表中的一笔记录只对应出版社表中的一笔记录,而出版社表中的一笔记录却对应图书表中的多笔记录。
  • 多对多关联

1.5 关系数据库的设计

1.5.1 数据库设计过程

  • 需求分析
  • 概念设计:将需求说明书中关于数据的需求,综合为一个统一的概念模型。画出E-R模型图
  • 实现设计:将E-R模型转换为某一特定的DBMS能够接受的逻辑模式。
  • 物理设计:确定数据库的存储结构。主要任务包括:确定数据库文件和索引文件的记录格式和物理结构,选择存取方法,决定访问路径和外存储器的分配策略等。不过这些工作大部分可由DBMS来完成,仅有一小部分工作由设计人员来完成。例如,物理设计应确定字段类型和数据库文件的长度。

1.5.2 关系数据库规范化

为了建立冗余较小、结构合理的数据库,把关系应满足的规范划分为若干等级,每一级称为一个范式。实际上,范式就是施加于关系模式的约束条件。
  • 1NF 如果一个表R的每一个字段都是不可再分的,则称表R为第一范式。
  • 2NF 若表R是1NF,而且它的每一非主键字段完全依赖于主键
  • 3NF 若表R是2NF,而且它的每一非主键字段不传递依赖于主键,传递依赖的含义是指经由其他字段而依赖于主键的字段。3NF的实际含义是要求非主键字段之间不应该有从属关系。

1NF

第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
例如(学生信息表): 
学生编号  姓名  性别  联系方式 
20080901  张三  男   email:zs@126.com,phone:88886666 
20080902  李四  女   email:ls@126.com,phone:66668888  
以上的表就不符合,第一范式:联系方式字段可以再分,所以变更为正确的是:  
学生编号  姓名  性别  电子邮件   电话 
20080901  张三  男   zs@126.com  88886666
20080902  李四  女   ls@126.com  66668888

2NF

首先要满足第一范式,其次每个非主属性要完全函数依赖与候选键,或者是主键。也就是说,每个非主属性是由整个主键函数决定的,而不能由主键的一部分来决定。
例如(学生选课表): 
学生    课程   教师    教师职称  教材         教室  上课时间 
李四    Spring  张老师   java讲师  《Spring深入浅出》  301 08:00 
张三    Struts  杨老师   java讲师  《Struts in Action》 302 13:30  
这里通过(学生,课程)可以确定教师、教师职称,教材,教室和上课时间,所以可以把(学生,课程)作为主键。但是,教材并不完全依赖于(学生,课程),只拿出课程就可以确定教材,因为一个课程,一定指定了某个教材。这就叫不完全依赖,或者部分依赖。出现这种情况,就不满足第二范式。
修改后,选课表: 
学生    课程   教师    教师职称  教室  上课时间 
李四    Spring  张老师   java讲师  301 08:00 
张三    Struts  杨老师   java讲师  302 13:30  
课程表: 
课程   教材         
Spring  《Spring深入浅出》  
Struts  《Struts in Action》
所以,第二范式可以说是消除部分依赖。第二范式可以减少插入异常,删除异常和修改异常。  

3NF

如果关系模式R是2NF,且所有非主属性对任何候选关键字都不存在传递依赖。   
所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y
假定学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名,年龄,所在学院,学院地点,学院电话)
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:
(学号) → (所在学院) → (学院地点,学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。
把学生关系表分为如下两个表:
学生:(学号,姓名,年龄,所在学院);
学院:(学院,地点,电话)。


第一范式就是原子性,字段不可再分割; 第二范式就是完全依赖,没有部分依赖; 第三范式就是没有传递依赖。


原创粉丝点击