【数据库复习】第一章 绪论

绪论

数据库系统概述

数据、数据库、数据库管理系统、数据库系统

  1. 数据data:描述实物的符号记录称为数据
  2. 数据库DataBase,DB:长期存储在计算机内、有组织的、可共享的大量数据的集合。
    数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性、和易扩展性,并可为各种用户共享。
  3. 数据库管理系统DataBase Management System DBMS:大型复杂的软件系统,主要功能包括:数据定义功能(提供数据定义语言Data Definition Language,DDL)、数据组织存储与管理、数据操纵功能、数据库的事务管理和运行管理
  4. 数据库系统DataBase System DBS:数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员DataBase Administrator,DBA组成的存储、管理、处理和维护数据的系统。

数据库管理技术的发展历程可以大致分为三个阶段:人工管理阶段、文件系统管理阶段和数据库系统阶段。以下是每个阶段的介绍及其特点和优点对比。

数据库管理技术的产生和发展展

人工管理阶段
介绍

在计算机普及之前,数据管理主要依靠手工记录和管理。这些数据通常存储在纸质档案、卡片或手写账簿中。

特点
  1. 人工操作:所有数据的录入、存储、查找和更新都由人工完成。
  2. 分散存储:数据通常分散存储在不同的纸质文件中,缺乏统一管理。
  3. 低效:数据管理效率低,容易出错,数据冗余和不一致性问题严重。
优点
  1. 简单易懂:数据管理方式简单直观,不需要复杂的技术设备。
  2. 灵活性高:数据的记录和更新可以随时进行,没有技术限制。
文件系统管理阶段
介绍

随着计算机技术的发展,文件系统成为数据存储和管理的主要方式。文件系统通过操作系统提供的一组文件操作命令来管理数据。

特点
  1. 结构化存储:数据存储在计算机文件中,可以按照一定的结构进行组织(如文本文件、二进制文件)。
  2. 文件操作:提供了一些基本的文件操作命令,如创建、读取、写入和删除文件。
  3. 数据独立性低:数据存储与应用程序紧密耦合,修改数据结构需要修改相应的应用程序。
优点
  1. 自动化管理:相对于人工管理,文件系统自动化程度高,减少了人为错误。
  2. 存取速度快:利用计算机进行数据存取,速度大幅提升。
  3. 适合小规模数据:适用于管理小规模数据,操作简单。
数据库系统阶段
介绍

数据库系统是数据管理技术的第三个阶段,是指通过专门的软件系统(数据库管理系统,DBMS)来管理数据。数据库系统不仅提供数据存储和管理功能,还支持复杂的查询和数据分析。

特点
  1. 数据独立性:数据的存储和管理与应用程序分离,数据的逻辑结构独立于物理存储。
  2. 数据共享和集成:支持多用户访问和数据共享,数据在一个统一的平台上进行集成管理。
  3. 数据完整性和安全性:提供数据完整性约束和安全机制,保证数据的正确性和安全性。
  4. 复杂查询:支持复杂的查询和数据操作,能够进行数据的分析和挖掘。
优点
  1. 高效管理:通过数据库管理系统,能够高效地管理和操作大规模数据。
  2. 数据一致性和完整性:通过数据约束和事务管理,保证数据的一致性和完整性。
  3. 数据独立性:数据与应用程序解耦,提高了系统的可维护性和扩展性。
  4. 支持并发和恢复:支持多用户并发访问,并提供数据备份和恢复功能。
对比总结
阶段特点优点
人工管理阶段手工操作,分散存储,低效简单易懂,灵活性高
文件系统管理阶段结构化存储,文件操作,数据独立性低自动化管理,存取速度快,适合小规模数据
数据库系统阶段数据独立性,数据共享和集成,数据完整性和安全性,复杂查询高效管理,数据一致性和完整性,数据独立性,支持并发和恢复

从人工管理阶段到数据库系统阶段,数据管理技术不断发展,逐步提高了数据管理的效率、数据的一致性和完整性,并且支持更复杂的查询和数据分析需求。数据库系统阶段无疑是数据管理技术发展的重要里程碑,为现代信息系统的发展奠定了基础。

数据模型

数据模型data model也是一种模型,他是对现实世界数据特征的抽象。
数据模型是数据库系统的核心与基础。

两类数据模型

两类数据模型是概念模型、逻辑模型&物理模型

概念模型

实体entity

客观存在并可相互区别的事物称为实体

属性attribute

实体所具有的某一特性称为属性

码key

唯一标识实体的属性集称为码

实体集entity set

同一类型实体的集合被称为实体集

联系relationship

实体之间的联系有一对一一对多和多对多等多种类型

在数据库领域,概念模型(Conceptual Model)是用于描述数据结构和数据关系的抽象模型。它是数据库设计过程中的一个重要阶段,旨在独立于任何特定数据库管理系统和物理存储细节,提供对数据需求的全面、高层次的表示。

概念模型的主要特点和目的

  1. 抽象性
    概念模型提供了对现实世界中数据的高层次抽象。它不涉及具体的数据存储方式,而是关注数据实体及其相互关系。

  2. 独立性
    概念模型独立于任何特定的数据库管理系统(DBMS),因此它的设计不受限于具体的技术实现。这使得概念模型具有较好的通用性和可移植性。

  3. 全面性
    概念模型旨在全面、准确地反映用户对数据的需求,包括数据实体、属性、关系及约束条件等。

概念模型的主要组成部分

  1. 实体(Entity)
    实体是指现实世界中可以被区分的对象或事物。每个实体具有一组属性。例如,在一个学生管理系统中,“学生”和“课程”可以被视为实体。

  2. 属性(Attribute)
    属性是实体的特征或性质。例如,“学生”实体可以有属性“学号”、“姓名”、“年龄”等。

  3. 关系(Relationship)
    关系描述了实体之间的关联。例如,“学生”实体和“课程”实体之间可以有“选修”关系,表示学生选修课程的情况。

  4. 键(Key)
    键是用于唯一标识实体实例的属性或属性组合。例如,“学号”可以作为“学生”实体的键。

  5. 约束(Constraint)
    约束是对数据的限制或规则,用于保证数据的一致性和完整性。例如,学生的年龄必须大于0。

数据模型的组成元素

数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。

什么是数据的完整性约束条件
实体完整性(Entity Integrity)
  • 实体完整性约束保证表中的每一行(即记录)都有一个唯一的标识符,即主键(Primary Key)。

主键约束(Primary Key Constraint):
主键是表中的一个或多个列,这些列的值能够唯一标识表中的每一行。主键列不能包含空值(NULL),并且每个值必须唯一。例如,一个学生表中,学号(StudentID)可以作为主键。

域完整性(Domain Integrity)
  • 域完整性约束保证列中的数据必须符合预定义的规则或数据类型。

数据类型约束:
列的数据类型必须是预定义的数据类型,如整数、字符、日期等。

CHECK约束:
使用CHECK约束可以定义列值必须满足的特定条件。例如,学生年龄列的值必须大于0且小于150。

参照完整性(Referential Integrity)
  • 参照完整性约束保证外键(Foreign Key)引用的值在被引用的表中必须存在,确保关系数据库中的数据一致性。

外键约束(Foreign Key Constraint):
外键是一列或多列,其值必须匹配另一个表中主键的值。例如,在一个选课系统中,选课记录表中的学生ID必须在学生表中存在。

用户定义完整性(User-Defined Integrity)
  • 用户定义完整性是根据具体应用需求定义的业务规则,这些规则由数据库设计者自定义,确保数据符合特定的业务逻辑。

业务规则约束:
这些约束通常通过触发器(Triggers)、存储过程(Stored Procedures)等数据库机制实现。例如,一个图书馆系统中,一个读者一次最多只能借五本书。

数据模型是数据库管理系统中用于描述数据结构、数据操作和数据约束的抽象框架。常见的数据模型包括层次模型、网状模型和关系模型。以下是对这些数据模型的介绍:

1. 层次模型(Hierarchical Model)

介绍

层次模型是一种树形结构的数据模型,数据以层次结构组织,每个节点代表一个记录类型,每个记录类型之间存在父子关系。层次模型通常用于描述具有明显层次关系的数据,如组织结构、产品分类等。

特点
  • 树形结构:数据以树形结构组织,每个节点有一个父节点和零个或多个子节点。
  • 单路径访问:从根节点到任意节点有且仅有一条路径。
  • 父子关系:每个节点代表一个实体,父节点和子节点之间表示实体的层次关系。
优点
  • 结构简单:层次模型结构直观,适合描述层次关系明确的数据。
  • 高效查询:在层次结构中,沿着路径查找数据的速度较快。
缺点
  • 灵活性差:层次模型的结构固定,插入和删除操作不灵活。
  • 冗余数据:某些情况下,可能需要重复存储相同的数据。
示例
  公司
   |
   +-- 部门A
   |    +-- 员工1
   |    +-- 员工2
   |
   +-- 部门B
        +-- 员工3
        +-- 员工4

2. 网状模型(Network Model)

介绍

网状模型是扩展层次模型的一种数据模型,数据以图结构组织,允许多对多的关系。节点代表记录类型,边代表记录类型之间的关系。

特点
  • 图结构:数据以图结构组织,节点和边表示记录类型及其关系。
  • 多对多关系:支持多对多关系,节点可以有多个父节点和多个子节点。
  • 复杂关系表示:适合表示复杂的数据关系。
优点
  • 灵活性高:支持多对多关系,能够表示更复杂的数据关系。
  • 减少冗余:通过指针引用方式,减少了数据冗余。
  • 良好性能:良好的性能,存取效率较高
  • 直观描述:更为直观地描述显示世界,如一个节点可以有多个双亲。节点之间有多种联系
缺点
  • 复杂性高:模型结构复杂,数据操作较为繁琐。
  • 导航访问:查询数据需要通过指针导航,效率不如关系模型。
示例
  (部门A) <--> (项目1) <--> (员工1)
          <--> (项目2) <--> (员工2)
          <--> (项目3) <--> (员工3)
          <--> (员工4)

3. 关系模型(Relational Model)

介绍

关系模型是最广泛使用的数据模型,数据以二维表格(关系)形式组织。每个表由行(记录)和列(字段)组成,行表示记录,列表示属性。

特点
  • 二维表结构:数据以行和列的形式组织,每个表代表一个实体类型。
  • 关系操作:支持SQL语言进行数据查询、插入、更新和删除操作。
  • 数据独立性:数据的逻辑结构独立于物理存储结构。
优点
  • 数据独立性:数据与应用程序分离,提高了系统的可维护性和扩展性。
  • 强大的查询能力:SQL语言提供了强大的查询能力,支持复杂的查询操作。
  • 标准化:关系模型有一套严格的规范,易于理解和实现。
缺点
  • 性能瓶颈:对非常大的数据集进行复杂查询时,性能可能成为瓶颈。
  • 关系复杂度:在表示复杂关系时,可能需要多个表和连接操作。
示例
CREATE TABLE Student (
    StudentID INT PRIMARY KEY,
    Name VARCHAR(50),
    Age INT
);

CREATE TABLE Course (
    CourseID INT PRIMARY KEY,
    CourseName VARCHAR(100)
);

CREATE TABLE Enrollment (
    StudentID INT,
    CourseID INT,
    PRIMARY KEY (StudentID, CourseID),
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)
);

通过以上对层次模型、网状模型和关系模型的介绍,可以看到它们在数据组织和管理上的不同特点和优点。层次模型适合描述层次结构明确的数据,网状模型适合表示复杂的多对多关系,而关系模型则以其强大的查询能力和数据独立性成为最广泛使用的数据模型。

数据库系统的结构

数据库系统模式的概念

在数据模型中有型type和值value两个概念。
模式schema是数据库中全体数据的逻辑结构和特征的描述。
模式的一个具体值为模式的一个实例instance。模式是对相对稳定的,实例是相对变动的。
好的,以下是关于“型(Type)”的更详细介绍。

数据库中的型(Type)

在数据库中,“型”(Type)是一个基本的概念,它用于定义数据的种类、属性及其可执行的操作。型在数据库设计、数据操作和数据管理中起着至关重要的作用。型的定义和使用直接影响数据库的效率、可靠性和灵活性。

取值范围。
  • 整数型(Integer)

    • 描述:用于表示整数数值。
    • 示例INTSMALLINTBIGINT
    • 操作:加、减、乘、除、取模。
  • 浮点型(Floating-Point)

    • 描述:用于表示实数或浮点数。
    • 示例FLOATDOUBLEREAL
    • 操作:加、减、乘、除、取模。
  • 字符型(Character)

    • 描述:用于表示一串字符或文本。
    • 示例CHAR(n)VARCHAR(n)
    • 操作:字符串连接、子字符串提取、长度计算。
  • 布尔型(Boolean)

    • 描述:用于表示布尔值,即TRUEFALSE
    • 示例BOOLEAN
    • 操作:逻辑与、逻辑或、逻辑非。
  • 日期和时间型(Date and Time)

    • 描述:用于表示日期和时间。
    • 示例DATETIMETIMESTAMP
    • 操作:日期加减、日期比较、提取日期部分(如年、月、日)。
  1. 复合数据类型(Composite Data Types)

复合数据类型由多个基本数据类型组合而成,用于表示更复杂的数据结构。

  • 数组(Array)

    • 描述:一组相同类型的数据的有序集合。
    • 示例INT ARRAY
    • 操作:访问元素、修改元素、遍历数组。
  • 结构体(Struct)

    • 描述:一组不同类型的数据的集合。
    • 示例CREATE TYPE Address AS (street VARCHAR(50), city VARCHAR(50), zipcode INT)
    • 操作:访问成员、修改成员。
  • 集合(Set)和多集合(Multiset)

    • 描述:无序的元素集合,集合中的元素不重复,多集合允许重复。
    • 示例INT SETINT MULTISET
    • 操作:插入、删除、并集、交集。
  1. 用户自定义数据类型(User-Defined Data Types, UDTs)

用户自定义数据类型允许用户根据需求定义新的数据类型,以满足特定的应用需求。

  • 枚举类型(Enumerated Type)

    • 描述:一组有序的命名值。
    • 示例CREATE TYPE Mood AS ENUM ('happy', 'sad', 'neutral')
    • 操作:比较、赋值。
  • 自定义对象类型(Custom Object Type)

    • 描述:用户定义的复杂数据结构,可以包含属性和方法。
    • 示例CREATE TYPE ComplexNumber AS (real FLOAT, imaginary FLOAT)
    • 操作:对象创建、方法调用。
  1. 特殊数据类型(Special Data Types)

一些数据库系统支持特殊的数据类型,用于特定领域或应用场景。

  • 大对象(Large Object, LOB)

    • 描述:用于存储大数据,如文本、图像、视频等。
    • 示例BLOB(二进制大对象),CLOB(字符大对象)。
    • 操作:读写大对象数据、部分读取。
  • 地理空间类型(Geospatial Type)

    • 描述:用于表示地理空间数据。
    • 示例POINTLINESTRINGPOLYGON
    • 操作:空间查询、距离计算、空间关系判断。

型和值的区别?

型(Type)和值(Value)是数据库中的两个基本概念,它们各自有不同的角色和作用。下面是型和值的区别详细介绍:

  1. 型(Type)
  • 定义:型(Type)是数据的类别或种类,它定义了数据的性质和可以执行的操作。型描述了数据的结构和行为,但不包含具体的数据值。
  • 作用:型用于约束数据的格式和合法范围,确保数据的一致性和完整性。
  • 示例
    • 整数型(Integer)INT
    • 浮点型(Floating-Point)FLOAT
    • 字符型(Character)VARCHAR(50)
    • 布尔型(Boolean)BOOLEAN
  1. 值(Value)
  • 定义:值(Value)是型所表示的数据的具体实例。值是数据的实际内容,符合型的定义和约束。
  • 作用:值是数据库操作的具体对象,是存储在数据库中的实际数据。值在插入、查询、更新和删除操作中直接使用。
  • 示例
    • 对于INT型:42, -7, 0
    • 对于FLOAT型:3.14, -0.001, 2.71828
    • 对于VARCHAR(50)型:‘Database’, ‘Sample Text’
    • 对于BOOLEAN型:TRUE, FALSE
  1. 型和值的具体区别

  2. 概念层次

    • 型是抽象的,定义了数据的结构和性质。
    • 值是具体的,是型的实例。
  3. 定义和约束

    • 型规定了数据的存储格式、取值范围和允许的操作。
    • 值必须符合其型的定义和约束。
  4. 稳定性

    • 型相对稳定,不会频繁变化。
    • 值是动态的,随着数据的插入、更新和删除而变化。
  5. 用途

    • 型用于数据库设计和架构,定义表的结构和列的数据类型。
    • 值用于数据库操作,是存储和处理的具体数据。
  6. 表示方式

    • 型通常以数据类型的形式表示,如INT, FLOAT, VARCHAR(50)
    • 值是实际的数据内容,如42, 3.14, ‘Database’。
  7. 示例

假设我们有一个学生表(Student):

CREATE TABLE Student (
  StudentID INT,
  Name VARCHAR(50),
  Age INT,
  EnrollmentDate DATE
);
    • StudentID的型是INT
    • Name的型是VARCHAR(50)
    • Age的型是INT
    • EnrollmentDate的型是DATE
    • StudentID列中的值可以是1, 2, 3等。
    • Name列中的值可以是’Alice’, ‘Bob’, 'Charlie’等。
    • Age列中的值可以是20, 21, 22等。
    • EnrollmentDate列中的值可以是’2024-06-03’, '2023-09-01’等。

通过上述例子,可以清楚地看到型和值在数据库中的不同作用和表现形式。型定义了数据的结构,而值是数据的具体实例,两者共同构成了数据库系统的数据基础。

模式与实例

模式(Schema)
  • 定义:数据库全体数据的逻辑结构和特征的描述。
实例(Instance)
  • 定义:模式的一个具体值,即某一时刻数据库的实际内容。

数据库的三层模式结构

数据库系统的三层模式结构帮助我们更好地理解和管理数据。这三层结构包括:

1. 内模式(Internal Schema)
  • 是什么:它告诉我们数据在计算机里是怎么存储的。
  • 特点
    • 描述数据存储在磁盘上的方式。
    • 包括文件、索引等技术细节。
    • 主要由数据库管理员和系统负责。
2. 概念模式(Conceptual Schema)/模式schema
  • 是什么:这是整个数据库的整体蓝图,告诉我们数据库里有哪些数据和它们之间的关系。
  • 特点
    • 与具体的存储方式无关,只关心数据本身及其逻辑关系。
    • 描述所有的表、视图、约束等。
    • 面向数据库设计人员。

3. 外模式(External Schema)

  • 是什么:这是用户看到的数据视图,不同用户可能看到的数据不同。
  • 特点
    • 定义用户可以看到和访问的数据。
    • 允许不同用户有不同的视图,确保数据安全。
    • 面向最终用户和应用程序开发人员。
总结
  • 内模式:数据在计算机里的存储方式。
  • 概念模式:数据库的整体蓝图。
  • 外模式:用户看到的数据视图。

这种三层结构确保了数据库的设计、管理和使用都更加灵活和安全。

二级映像和数据独立性

二级映像功能是数据库管理系统中的一个重要概念,它帮助我们实现数据的抽象和独立性,让数据库的使用更加方便和灵活。简单来说,二级映像功能让我们在使用数据库时,不需要关心底层的存储细节,关注点可以放在数据本身和它们之间的关系上。以下是它的几个关键点:

1. 逻辑映像(概念模式)
  • 是什么:这是数据库的整体结构,描述了所有的数据和它们之间的关系。
  • 作用:让我们可以理解数据库的全貌,而不需要关心数据是如何存储的。
  • 举例:比如一个学生管理系统,它包含学生、课程、成绩等表,以及它们之间的关系。
2. 用户映像(外模式)
  • 是什么:这是用户看到的数据库视图,每个用户或应用程序可以有自己的视图。
  • 作用:让不同的用户只看到他们需要的数据,确保数据的安全和隐私。
  • 举例:在同一个学生管理系统中,学生可能只看到自己的成绩,而老师可以看到所有学生的成绩。
二级映像功能的好处
  • 数据独立性:用户和应用程序不需要关心数据的存储细节,只需要关注数据本身。
  • 灵活性:可以根据不同的用户需求定制不同的视图,而不需要改变底层数据结构。
  • 安全性:通过控制用户看到的数据,保护数据的隐私和安全。
总结

二级映像功能就像是数据库的一个智能翻译器,帮助我们在使用数据库时,只需要关心我们需要的数据,而不必去了解数据是如何存储的。它让数据库的管理和使用更加方便、安全和灵活。

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值