数据库设计笔记——概述(一)

数据库

  • 数据库(DataBase,DB)是长期存储在计算机内,有组织的,可共享的数据集合。是存放数据的仓库,并且有组织,有管理。

数据库管理系统

  • 数据库管理系统(Database Management System,DBMS)位于用户与操作系统之间的一个计算机系统软件,基本功能如下:

    • 数据定义功能(语言:DDL)
    • 数据操作功能(语言:DML)
    • 数据库的运行管理功能(语言:DCL)
    • 数据库的建立和维护功能
  • 目前流行的有Oracle、Sybase、SQL Server、Access、MySQL等。

数据库系统

  • 数据库系统(Database System,DBS)包括和数据有关的整个系统,如计算机硬件,操作系统、DBMS以及在他支持下建立起来的数据库、应用程序、用户和维护人员等。

    有时也将人以外的与数据库有关的硬件和软件系统成为DBS。

数据的发展

  • 人工管理阶段:程序与数据一一对应。数据不可共享。
  • 文件系统阶段:应用程序通过存取调用数据文件、可共享。
  • 数据库系统阶段:应用程序通过DBMS调用管理DB中的数据。
  • 分布式数据可以管理阶段 :逻辑上统一,地域上分布的数据集合。

数据库的体系结构

1)站在最终用户的角度

  • 集中式体系结构

    将DBMS软件、所有用户数据和应用程序放在一台计算机(服务器)上,其余计算机作为终端通过通信线路向服务器发出数据应用请求,这种网络数据库应用系统称为集中式数据库体系结构。

  • 分布式体系结构

    将分散存储在计算机网络中的多个节点上的数据库在逻辑上统一管理。

  • CLS体系结构

    在CLS计算机网络上运行的数据库系统,这个计算机网络中,一部分计算机为Client,一部分为服务器,其关键在于功能分布,一些放在Client机上(前端)上运行,另一些在Server(后端)运行。

  • 并行体系结构

    要求尽可能并行执行所有的数据操作从而在整体上提高数据库系统的性能,是多个物理上连接在一起的CPU通过划分的任务以及通过每秒兆位级的告诉网络通信共同完成事务查询。

2) 站在DBMS的角度

  • 一般采用三级模式结构:外模式模式内模式

    • 外模式:又称子模式,是用户与数据库的接口,是应用程序可见的数据描述。
    • 模式:分为概念模式和逻辑模式,是由数据可以设计者综合所有用户数据,按照统一的观点构造的全局逻辑结构。
    • 内模式:物理模式或存储模式,它描述数据在存储介质上的安排与存储方式。

      三级模式是用指针来表示数据之间的关系,数据定义语言和数据操作语言相互独立。

  • 三级模式之间的关系是二级映射,映射用来指定映射双方进行数据转换的规则,实际上转换工作有DBMS来完成,三级模型之间的关系如下图:

DB三级模式关系

数据模型

  • 数据模型通常有数据结构数据操作完整性约束三要素组成,分别表示系统的静态特性、动态特性和数据库的正确性、相容性和有效性。

  • 数据模型就是对客观事物抽象化的表现形式,具有有三大特点:

    • 必须真实反映现实世界中的具体应用,否则就是去了意义
    • 要便于理解,使用者与设计者要去的一致看法
    • 便于使用计算机来实现处理。
  • 数据模型的分类

    • 层次模型(传统,较少使用),支持三级模式结构
    • 网状模型(传统,较少使用),支持三级模式结构
    • 关系模型(占主导地位,具有严格的数学理论)
    • 对象模型(近年来得到了一些应用)

      MySQL中,对象模型是后关系数据库技术阶段,包络面向对象数据库技术(ORDBMS)和结构化数据库技术(NOSQL)

数据库的类型

平面文件

  • 定义:只包含文本的文件,没有粗体,斜体、花体或其他特殊的字体样式,而仅仅是普通文本。可添加结构,如逗号、分隔数值或缩排。

  • 优点:非常简单并且容易理解,可以任意文本编辑器中打开平面文件并作出更改而不需要编写复杂的用户界面。

  • 缺点:对搜索数据没有帮助,并不提供聚集功能,不能按照常规的方式修改平面稳健,在文件某位添加数据或更改文件内的特殊字符,不能再中间插入或删除数据。

  • 适用场合

    • 数值较小且简单
    • 数值不经常变化
    • 希望能够使用
    • 简单的文本编辑器来更改数值
    • 希望保存以前数值的简单历史清单
    • 希望使用工具快速比较两个文件
  • 不适用场合

    • 需要通过数值执行复杂的搜索
    • 数值经常变化
    • 不希望其他人能够轻易阅读和修改数值
    • 数值是分级的

常用的存储配置信息的地方是INI文件Windows系统注册表(一种分级数据库)

关系型数据库

  • 定义:包含保存行和列的表

  • 适用情况

    • 需要在不同的表之间执行复杂的查询和连接
    • 需要执行数据有效性验证,如在其他表中检验相关行的存在
    • 需要为特定的数据段考虑任意数量的值(如比赛最后的名次)
    • 希望能够灵活地构建在开始设计项目时本没计划的新查询

电子数据表

  • 定义:以行和列的形式显示数据(Excel表)

  • 优势:允许用户创建与电子数据表中其他数据相关的公式,生成形象显示数据的图表,大隐书局,以及以文本和其他格式导入和导出数据,此外还支持相对复杂的分析工具。

    注意:在大多数作者曾开发的大型项目中,都会设法内建特别的查询工具以便用户能够定义他们自己的报表。

  • 缺点:电子数据表不支持复杂的查询,而且不能自动检查数据的完整性,因此可以轻易地录入不正确或不一致的数值。

许多应用程序都采用电子表数据作为输出形式,衙门将数据存储在一种关系或其他类型的数据库中,然后将结果转存成电子数据表格式以便用户使用。

分级数据库

  • 包括按照书性结构很自然地安排的数值,类似于文件夹(分层和分级)

XML(扩展标记语言)

  • 定义:一种用于存储分级数据的语言。

  • 优点

    • 对于存储、传输、检索分级数据而言,XML是一个很有用的工具。
    • XML文件相对简单,他使用特殊的标记为其包含的数据定义结构。
  • 缺点: XML自身并不提供任何用于构建、检索、更新、验证或以其他方式操纵数据的工具。

  • 适用场合

    • 数据自然分级的
    • 可用XML工具提供需要的特性
    • 希望获得模式文件能够提供各种有效性验证
    • 希望能够在支持XML产品中导入和导出数据
  • 不适用场合

    • 非分级
    • 需要的数据有效性验证要比模式文件能够提供的更复杂
    • 需要执行关系查询而非分级查询
    • 数据库很庞大,因此重写整个文件来更新其中的少量数据非常麻烦
    • 需要允许多个用户频繁更新数据库而互不干扰

网络数据库

  • 当使用网络文件来存储数据时,程序将完成所有的工作。文件本身不提供特殊的特性。

  • 适用场合

    • 数据本身就是一种网络形式(或近似为层次结构)
    • 需对数据执行网络运算,如查找最短路径或计算网络流
    • 不需要对数据执行复杂的查询
  • 不适用的场合

    • 数据不能表示网络
    • 需要验证数据
    • 需对数据执行查询
    • 需允许多个用户频繁地更新数据而互不干扰

对象数据库

  • 用来管理对象。他提供某种查询语法用于从数据库中检索对象,还提供一些工具来将对象的改动保存到数据库中。

  • 适用场合

    • 编程环境和体系结构支持使用对象
    • 不需要对数据执行复杂的查询
  • 不适用的场合

    • 程序需要与外部工具交互,再次采用相关数据库此类格式存储数据更为有利。
    • 需要执行复杂的查询
    • 没有使用面向对象的语言
    • 需要执行对象数据库不能提供的数据有效性验证

对象关系数据库(ORD)

  • 是一种关系数据库,他提供了用于将对象类型集成到数据中的格外特性。

  • 与关系数据库类似,她能够相对快速地执行复杂的查询。

  • 另一方面又类似于对象数据库,使用某种特殊的语法来简化对象的创建。

特殊类型的数据库

  • 面向文档的数据库
  • 演绎数据库
  • 维度(或空间)数据库
  • 时态数据库

数据库设计总结

  • 数据库设计分为:概念模型设计逻辑模型设计物理模型设计

  • 关系数据库适用的情况:

    • 需要在不同表直接执行复杂的查询
    • 需要执行数据有效性验证,如在其他表中验证相关行的存在
    • 需要为特定的数据段考虑任意数量的值
    • 希望能够灵活的构建在开始设计项目时本设计划的新查询
  • 关系数据库设计总结

    • 合三大范式(3NF)
    • DB不能处理多对多关系时,应再建关联表,来表示两表间的关系。若多对多的关系包含额外的关联数据,将字段放于关联表中。
    • 命名约定:若表中两字段包含相同的数据,则赋予两个字段相同的名称。
    • 对于同类型的表,若有相同类型的字段,应使其对应的字段名相同,这样对于编写,调用函数,非常方便
  • php操作数据库总结:
    • 关于数据的重复问题,需在代码中验证该数据在DB中是否存在,若已存在,则不能插入
    • 查询数据时,当访问细分的几个表时,需使用联合查询。