数据库重点内容

1. 数据库的三级模式结构(主要考模式的概念)

对用户而言,外模式、模式和内模式分别对应一般用户模式、概念模式和物理模式,它们分别反映了看待数据库的三个角度。

模式也称为概念模式,是数据库中全体数据的逻辑结构和特征的描述,处于三级模式结构的中间层

不涉及数据的物理存储细节和硬件环境,与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。一个数据库只有一个模式。

(就是描述外模式和内模式的映射关系的部分,如你定义一张存了学生选课的信息表)

外模式又称为子模式或用户模式,是三级模式结构的最外层,是与某一应用有关的数据的逻辑结构,即用户视图。外模式一般是模式的子集,一个数据库可以有多个外模式。

(就是数据库用户(包括应用程序员和最终用户)最终可以看到的内容,如你给老师和学生分别定义了他们能看选课表的哪些内容)

内模式又称存储模式或物理模式,是三级模式结构中的最内层,也是靠近物理存储的一层,即与实际存储数据方式有关的一层。它是对数据库存储结构的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。

(数据在数据库上存储的内容,是数据在数据库内部的表示方式,如你定义学生选课信息表的数据按照学生id的B+树索引存储)(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。

2. 三个世界指什么?它们之间有什么联系?

三个世界是指现实世界、信息世界和计算机世界。

  • 现实世界,即客观存在的世界。其中存在着各种事物及它们之间的联系,每个事物都有自己的特征或性质。

  • 信息世界是现实世界在人们头脑中的反映,经过人脑的分析、归纳和抽象,形成信息,人们把这些信息进行记录、整理、归类和格式化后,就构成了信息世界。

  • 计算机世界是信息世界中信息的数据化,就是将信息用字符和数值等数据表示,便于存储在计算机中并由计算机进行识别和处理。

对上面废话的总结:现实世界的客观事物→信息世界(大脑)的抽象实体属性→机器世界的数据记录

对应下面数据库设计的基本步骤的三步:②概念模型设计③逻辑模型设计④物理模型设计

3. 举例说明什么是实体完整性和参照完整性(主要考参照完整性)。

实体完整性是指主码的值不能为空或部分为空。

例如,教材中表1-3的课程关系中的主码“课程号”(cno)可以唯一标识一门课程实体。如果主码中的值为空或部分为空,即主属性为空,则不符合关系键的定义条件,不能唯一标识元组及与其相对应的实体。例如,课程关系中的主码“课程号”不能为空,授课关系中的主码“教师号+课程号”不能部分为空,即“教师号”和“课程号”两个字段的取值都不能为空。

  • (文档里的原话,看不懂思密达~)参照完整性是指如果关系R2的外码X与关系R1的主码相符,则X的每个值或者等于R1中主码的某一个值或者取空值。

    • 解释这句话:

      • 关系R1:这是一个具有主码(Primary Key)的关系(表)(主表)。主码(主键)是关系中唯一标识每一行的属性或属性组合。例如,学生表中的学号可以作为主码。

      • 关系R2:这是另一个关系(表),其中包含一个外码(Foreign Key)(从表)。外码(外键)是关系中的一个属性,它与其他关系的主码相关联。例如,选修课表中的课程编号可以作为外码,与学生表中的学号关联。

      • 如果关系R2的外码X与关系R1的主码相符,意味着X的每个值都必须满足以下条件:

        NaN. 要么等于R1中某一行的主码值。

        NaN. 要么为空值(即没有对应的主码值)。

  • 用人话解释上面的内容:如果在学生表和选修课之间用学号建立关联,学生表是主表,选修课是从表,那么,在向选修课表(从表)中输入一条新记录时,系统要检查新记录的学号是否在学生表(主表)中已存在,如果存在,则允许执行输入操作,否则拒绝输入,这就是参照完整性。

4. 相关子查询的执行过程。

相关子查询的执行顺序是:

首先,选取父查询表中的第一行记录,子查询利用此行中相关的属性值在子查询设计的基本表中进行查询,然后,父查询根据子查询返回的结果判断父查询表中的此行是否满足查询条件。如果满足条件,则把该行放入父查询的查询结果集合中。重复执行这一过程,直到处理完父查询表中的每一行数据。

(这句废话太长,直接看下面的例子理解)

举个例子, 假设我们有一个名为 employees 的表,其中包含员工的信息(例如员工 ID、姓名、薪水等)。我们想要找出薪水高于所有员工平均薪水的员工。以下是查询语句:

SELECT employee_id, first_name, last_name, salary#
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
#左边是主查询,右边是子查询,语句从左到右依次执行,将主查询的内容一行一行比对

这将返回薪水高于平均薪水的员工列表。

5. 视图的作用

提升数据操作的便捷性、提升数据的逻辑独立性、提升数据的安全性、数据集成。

6. 函数依赖

是关系模式中属性之间的一种逻辑依赖关系。

设有关系模式R(U),U是属性全集,X和Y是U的子集,如果X→Y,并且对于X的任何一个真子集X′,都有X'Y,则称Y对X完全函数依赖(Full Functional Dependency),记作XY。

如果对X的某个真子集X',有X'→Y,则称Y对X部分函数依赖(Partial Functional Dependency),记作XY。

设有关系模式R(U),U是属性全集,X,Y,Z是U的子集,若X→Y,但YX,而Y→Z(YX,ZY),则称Z对X传递函数依赖(Transitive Functional Dependency),记作:XZ。;

7. E-R图转换成关系模型的转换规则

答:E-R图向关系模型的转换一般应遵循如下原则:

(1)实体的转换。一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。

(2)联系的转换。一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性,该关系的码则有几种情况:

  • 若联系为1:1,则每个实体的码均是该关系的候选码。

  • 若联系为1:n,则关系的码为n端实体的码。

  • 若联系为m:n,则关系的码为诸实体码的组合。

三个或三个以上实体间的多元联系、同一实体集内的自反联系的转换规则与二元联系相同。

(3)具有相同码的关系模式可合并。

下面为了方便理解,举一些例子:

首先了解E-R图中常用图形及代表的意思

1.1 长方形:表示实体。

实体是客观存在的事物。

例如用户、商品、订单、供应商等。说直白了,就是数据库的表名就可以做一个实体对象。一个系统是由很多个实体对象构成的,然后它们之间存在一定的关系和属性。

1.2 椭圆形:表示属性。

属性分为唯一属性( unique attribute)和非唯一属性,唯一属性指的是唯一可用来标识该实体实例或者成员的属性,用下划线表示,一般来讲实体都至少有一个唯一属性。

举个栗子:用户实体拥有属性【id(唯一属性)、姓名、年龄、电话、身份证号(唯一属性)】、商品实体拥有属性【id、商品名称、商品类型、商品价格、商品图片、商品描述、供应商名称】、订单实体拥有属性【id、订单编号、用户名称、商品名称、下单日期】、供应商实体拥有属性【id、名称、地址、联系电话】。

1.3 菱形:表示关系。

例如用户和商品应该购买关系(一个用户购买多件商品)、订单与商品应该是包含关系(一个订单中包含多件商品)。

ER图中关联关系有三种

一对一(1:1) :1对1关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。

例如:一个用户只能拥有一张身份证,而一张身份证只属于一个用户。所以这就是一对一的关系。

一对多(1:n) :1对多关系是指实体集A与实体集B中至少有n(n>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。

例如:一对多和多对一是一样的。一个用户拥有多张银行卡,但是一张银行卡只属于一个用户。所以这就是一对多的关系。反过来说法就是多对一。

多对多(m:n) :多对多关系是指实体集A中的每一个实体与实体集B中至少有m(m>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少n(n>0)个实体有关系。

例如:用户与商品的关系,一个用户可拥有多件商品。同样一件商品可被多个用户所拥有。所以这就是多对多的关系。

实体的转换

例如,我们有一个学生实体(Student)和一个课程实体(Course)。

每个实体型转换为一个关系模式。

转换后的关系模式(如上图):

  • 学生(学号, 姓名, 年龄)

  • 课程(课程号, 课程名称, 学分)

具有相同码的关系模式可合并

如果两个关系模式具有相同的码,它们可以合并。例如,一个人有基本信息和联系信息,且码都是身份证号(如上图)。

转换后的关系模式可以合并为一个:

  • 人(身份证号, 姓名, 年龄, 邮箱, 电话)

8. 数据库设计的基本步骤

主要步骤:①需求分析②概念模型设计③逻辑模型设计④物理模型设计⑤数据库的实施⑥数据库的维护

以下是一个关于人事管理系统数据库实施的例子,这个例子展示了从需求分析到数据库设计和实施的过程:

NaN. 需求分析:首先,确定系统需要支持的业务流程和数据。例如,人事管理系统可能需要处理员工的入职、离职、晋升、薪资变动等。

NaN. 概念模型设计:基于需求分析,设计实体-关系模型(ER模型),定义实体如员工、部门和职位,以及它们之间的关系。

NaN. 逻辑模型设计:将概念模型转换为逻辑模型,通常使用关系模型,定义数据表结构,如员工表、部门表和薪资表。

NaN. 物理模型设计:根据逻辑模型设计数据库的物理结构,包括数据表的创建、索引的建立和存储过程的编写。

NaN. 数据库实施:

-   **创建数据库和数据表。**
    
-   **实现数据表之间的关系,如外键约束。**
    
-   **编写存储过程和触发器以自动化常见任务。**
    
-   **填充数据表以测试数据库的功能。**
    

NaN. 数据库维护:定期检查数据库性能,优化查询,确保数据安全和备份。

9. 游标

是一种能够从包括多条数据记录的结果集中进行逐条访问这些记录的机制。

可以将游标看作一种特殊的指针,它与某个查询结果集相关联,可以指向结果集的任意位置,可以将数据放在数组、应用程序中或其他的地方,允许数据库用户对指定位置的数据进行处理。

10. 触发器(TRIGGER)

是在满足一定条件下自动触发执行的数据库对象,如向表中插入记录、更新记录或者删除记录时被系统自动地触发并执行的特殊类型的存储过程。触发器的作用是可以对表执行复杂的完整性约束。

(就是程序员自己设置的,在数据库执行某种存储操作的时候自动运行的程序。)