第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
学生编号 姓名 性别 联系方式
20080901 张三 男 email:zs@126.com,phone:88886666
20080902 李四 女 email:ls@126.com,phone:66668888
以上的表就不符合,第一范式:联系方式字段可以再分,所以变更为正确的是:
学生编号 姓名 性别 电子邮件 电话
20080901 张三 男 zs@126.com 88886666
学生编号 姓名 性别 电子邮件 电话
20080901 张三 男 zs@126.com 88886666
20080902 李四 女 ls@126.com 66668888
2NF
首先要满足第一范式,其次每个非主属性要完全函数依赖与候选键,或者是主键。也就是说,每个非主属性是由整个主键函数决定的,而不能由主键的一部分来决定。
例如(学生选课表):
学生 课程 教师 教师职称 教材 教室 上课时间
李四 Spring 张老师 java讲师 《Spring深入浅出》 301 08:00
学生 课程 教师 教师职称 教材 教室 上课时间
李四 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》
所以,第二范式可以说是消除部分依赖。第二范式可以减少插入异常,删除异常和修改异常。
所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y
3NF
如果关系模式R是2NF,且所有非主属性对任何候选关键字都不存在传递依赖。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y
假定学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名,年龄,所在学院,学院地点,学院电话)
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:
(学号) → (所在学院) → (学院地点,学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。
(学号) → (姓名,年龄,所在学院,学院地点,学院电话)
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:
(学号) → (所在学院) → (学院地点,学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。
把学生关系表分为如下两个表:
学生:(学号,姓名,年龄,所在学院);
学院:(学院,地点,电话)。
学生:(学号,姓名,年龄,所在学院);
学院:(学院,地点,电话)。
第一范式就是原子性,字段不可再分割; 第二范式就是完全依赖,没有部分依赖; 第三范式就是没有传递依赖。
- 第1章 数据库基础
- 第1章 数据库系统基础
- 数据库学习之---第1章 数据库基础
- Android基础-初识SQLite第2章SQLite数据库的操作 2-1数据库的创建
- 【Oracle入门系列】第01章_数据库基础
- 【Oracle入门系列】第03章_数据库查询基础
- 第1章 计算机网络基础
- 第1章 程序设计基础
- 第1章 Spring基础
- 第1章 LeTex基础
- 第1章 python基础
- 数据库编程第1章
- 第1章 数据库简介
- 数据库基础——第一天
- 自学--数据库笔记--第一篇--基础
- 数据库orcale (sql基础) 第一天
- 笔记:ORACLE数据库基础学习 第一天
- 笔记:ORACLE数据库基础学习 第三天
- 对设计模式的理解
- MongoDB深究之ObjectId
- tomcat配置
- Jdk环境配置图文版
- JavaScript专题(二):深入理解iframe
- 第1章 数据库基础
- ios xmpp openfire实现聊天功能
- innodb 引擎数据恢复
- Linux Socket编程实例(一个Hello World程序)
- tomcat缓存设置
- HTML <td> 标签的 colspan 属性
- 用Js的eval解析JSON中的注意点
- Java调用COM组件 JACOB
- Hibernate框架核心组件