一、为什么需要设计数据库
数据库设计:数据库设计就是将数据库中的数据对象以及这些数据对象之间关系进行规划和结构化的过程,当数据库比较复杂时我们需要设计数据库。
良好的数据库设计
·节省数据的存储空间
·能够保证数据的完整性
·方便进行数据库应用系统的开发
糟糕的数据库设计
·数据冗余、存储空间浪费
·内存空间浪费
·数据更新和插入的异常
注意:
1.为减少数据查找的麻烦,允许数据有一定的冗余
2.若存在不正确、不准确的数据,数据库将“失去了完整性”
1.1设计数据库关系模型
概念模型:把现实世界转换为信息世界的模型,E-R模型
实施模型:把信息世界转化为数据世界使用的模型,关系模型
关系模型中基本数据结构是二维数据表,且必须满足相应的要求:
(1)表说明的是关系模型中某一特定的方面或部分的对象及其属性
(2)表中的行通常叫做记录或元组,代表具有相同属性的对象中的一个
(3)表中的列通常叫做字段或属性,代表存储对象的共有的属性
(4)数据表之间的关联通过“键”来实现的,键分为主键和外键两种。
(5)表必须符合某些特定条件
①信息原则:每个单元只能存贮一条数据;
②列有唯一性的名称,贮存在列下的数据必须具有相同数据类型;列没有顺序;;
③每行数据是唯一的;行没有顺序;
④实体完整性原则,即主键不能为空;
⑤引用完整性原则,即外键不能为空;
1.2概念模型
建模:把现实世界转换为信息世界的模型,E-R模型
建模步骤:
收集信息:
与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务
标识对象(实体-Entity)
标识数据库要管理的关键对象或实体
标识每个实体的属性(Attribute)
标识对象之间的关系(Relationship)
概念结构设计- E-R图方法
实体关系图:简记E-R图,是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。
实体型(Entity):具有相同的特征和性质的集合体,用实体名及其属性名来抽象和刻画同类实体;在E-R图中用矩形表示,矩形框内写明实体名;比如学生张三、学生李四都是实体
属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。
联系(Relationship): 数据对象彼此之间相互连接的方式称为联系,也称为关系。
实体间不同联系情况的E-R图表示法
一对一(1:1)联系:
例:某学院有若干个系,每个系只有一个主任。则主任和系之间是一对一的关系。
主任和系的属性分别如下:
主任——编号,姓名,年龄,学历;
系——系编号,系名
主任和系之间是一个管理关系
一对多(1:m)的联系
例: 在某仓库管理系统中,有两个实体集:仓库和商品。仓库用来存放商品,且规定一类商品只能存放在一个仓库中,一个仓库可以存放多件商品。
仓库和商品的属性分别如下:
仓库——仓库号,地点,面积
商品——商品号,商品名,价格
在存放联系中要反映出存放商品的数量。
多对多(m:n)联系:
假设在某教务管理系统中,一个教师可以上多门课,一门课也可以由多个老师去上。
教师和课程可用以下属性来描述:
教师——教师号,教师名,职称
课程——课程号,课程名,班级
在“讲授”联系中应能反映出教师的授课质量。
- R模型到关系模型的转换:
假设A实体集与B实体集是1:1的联系,联系的转换有三种方法:
①把A实体集的主关键字加入到B实体集对应的关系中,如果联系有属性也一并加入;
②把B实体集的主关键字加入到A实体集对应的关系中,如果联系有属性也一并加入;
③建立第三个关系,关系中包含两个实体集的主关键字,如果联系有属性也一并加入。
两实体集间1:n联系
两实体集间1:n联系,可将“一方”实体的主关键字纳入“n方”实体集对应的关系中作为“外部关键字”,同时把联系的属性也一并纳入“n方”对应的关系中。
两实体集间m:n联系
对于两实体集间m:n联系,必须对“联系”单独建立一个关系,用来联系双方实体集。该关系的属性中至少要包括被它所联系的双方实体集的“主关键字”,并且如果联系有属性,也要归入这个关系中。
1.3数据库设计规范
仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构
Dr E.F.codd 最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:
第一范式(1st NF -First Normal Fromate)
第二范式(2nd NF-Second Normal Fromate)
第三范式(3rd NF- Third Normal Fromate)
关系数据库范式理论是在数据库设计过程中将要依据的准则,数据库结构必须要满足这些准则,才能确保数据的准确性和可靠性。这些准则则被称为规范化形式,即范式。
1.第一范式的目标是确保每列的原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
2.如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF)
第二范式要求每个表只描述一件事情
3.如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)
二、为何需要数据库
存储数据的方法
第一种方法:用大脑来记住数据
第二种方法:写在纸上
第三种方法:写在计算机的内存中
第四种方法:写成磁盘文件
数据库系统:管理大量的、持久的、可靠的、共享的数据的工具
数据库特点
·存储大量数据,方便检索和访问
·保持数据信息的一致、完整
·共享和安全
·通过组合分析,产生新的有用信息
数据库的发展史
萌芽阶段——文件系统
使用磁盘文件来存储数据
初级阶段——第一代数据库
出现了层次模型、网状模型的数据库
中级阶段——第二代数据库
关系型数据库和结构化查询语言
高级阶段——新一代数据库
“关系-对象”型数据库
所谓数据库(Database, DB),是将数据按一定的数据模型组织、描述和存储,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享的数据集合。
1.关系型数据库
关系模型使用的存储结构是多个二维表格,表中每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性。数据表于数据库之间存在相应的关联,这些关联将用来查询相关的数据。
数据库管理系统(DBMS-DataBase Management System )对收集到的大量数据进行整理、加工、归并、分类、计算、存储等处理,产生新的数据,以便反映事物或现象的本质和特征及其内在联系。
RDBMS种类:
大型:
db2 IBM、Sybase 、Oracle
中型:
Sqlserver
小型:
Mysql、Access、Sqllite
结构化查询语言SQL(Structured Query Language)
SQL语言是用于关系数据库查询的结构化语言,最早由Boyce和Chambedin在1974年提出,称为SEQUEL语言。1976年,IBM公司的San Jose研究所在研制关系数据库管理系统System R时修改为SEQUEL2,即目前的SQL语言。
SQL语言集数据查询(data query)、数据操纵(data manipulation)、数据定义(data definition)和数据控制(data control)功能于一体,充分体现了关系数据语言的特点和优点。
主要特点包括:
(1)综合统一
(2)高度非过程化
(3)面向集合的操作方式
(4)以同一种语法结构提供两种使用方式
(5)语言简洁,易学易用
MySQL数据库
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracal收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL有如下优势。
1、速度快。MySQL数据库可能是目前能得到的最快的数据库。
2、连接性和安全性。MySQL是完全网络化的,其数据库可在因特网上访问,因此,可以和任何地方的任何人共享数据库,而且MySQL还能进行访问控制,能够控制特定用户不允许其访问数据。
3、可移植性。MySQL可运行在各种版本的UNIX系统及其他非UNIX(如Windows和OS/2)系统上,从家用PC到高级服务器都可运行MySQL。
4、支持SQL语言。MySQL支持这种现代数据库系统都选用的语言。
5、成本优势。MySQL对多数个人用户来说是免费的。