1、数据库的相关概念
数据(Data)
数据就是客观信息的一种描述
数据库(DataBase)
指长期存储在计算机内有组织、可共享的数据集合。
数据库管理系统(DataBase Management System)
为数据库建立、使用和维护而配置的软件。
数据库系统(DataBase System)
在计算机系统中引入数据库后的系统构成。
数据的冗余
同一数据反复存放
问题:浪费存储空间、更新数据容易出错。
数据库不一致性
同一数据在不同地方有不同的值
2、数据库的系统模型
数据库系统根据数据存储的数据模型可以分为:
- 层次性数据库
- 网状型数据库
- 关系型数据库
- 面向对象型数据库
层次型数据库
倒置的树,实体就是树的节点
优点:数据结构类似于金字塔,层次分明、结构清晰、不同层次间的数据关联直接简单
缺点:数据将不得不以纵向向外扩展,节点间不能建立横向关联
网状型数据库
处理以记录类型为节点的网状数据模型的数据库
特点:
允许存在一个以上的节点没有父节点
节点可以有多于一个的父节点
关系型数据库(SQL SERVER)
采用了关系模型来组织数据的数据库。
面向对象型数据库
按照人类认识世界的方法和思维方式来分析和解决问题。
3、数据库概念模型
基本概念:
- 实体:客观存在并可以相互区分的事物就叫实体
- 属性:实体的特性,通过属性来对实体进行描述
- 键、主键、外键:一个属性或者多个属性构成的子集合能够唯一标识整个属性子集为属性集合的键。描述两个实体间的的联系。
- 实体型: 具有相同属性的实体必然具有共同特征和性质。用实体名及其抽象和刻画同类实体就是指实体类型。
- 实体集: 同类型实体的集合称为实体集。
- 联系:实体之间的关系
4、为什么需要设计数据库
良好的数据库设计
- 节省数据的存储空间
- 能够保证数据的完整性
- 方便进行数据库应用系统的开发
糟糕的数据库设计
- 数据冗余、存储空间浪费
- 内存空间浪费
- 数据更新和插入的异常
结论:当数据库比较复杂时我们需要设计数据库
5、软件项目开发周期
- 需求分析阶段:分析客户的业务和数据处理需求;
- 概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整;
- 详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核;
- 代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用;
- 软件测试阶段:……
- 安装部署:……
6、实体之间的关系
实体之间的关系
- 一对一
- 一对多
- 多对多
表示实体间的关系
- E-R图
7、数据规范化
仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构
Dr E.F.codd 最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:
- 第一范式(1st NF -First Normal Fromate)
- 第二范式(2nd NF-Second Normal Fromate)
- 第三范式(3rd NF- Third Normal Fromate)
第一范式 (1st NF)
第一范式的目标是确保每列的原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
第二范式 (2nd NF)
如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF)
第二范式要求每个表只描述一件事情
第三范式 (3rd NF)
如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)
8、设计数据库的步骤
- 需求分析阶段(实地调查)
- 实体模型(E-R书上1.5) 只考虑实体的属性及其实体关系
- 逻辑模型(数据规范书上1.6) 考虑实体的属性及关系是否符合现实逻辑
- 物理模型(书上2.1 转换为实体的物理文件 如mdf,ldf)
- 实施阶段(配合编程语言对数据库进行操作(增删查改))
- 数据库的运行与调试