临考提示:数据库系统是软件架构设计师考试的核心模块,每年考查分值占比约15%-20%,覆盖综合知识(选择题)、案例分析(应用题)、论文(设计题)三个科目,是临考冲刺的重点突破内容。本总结全面覆盖考试所有核心考点,按“高频必考→中频重点→低频了解”分层排版,标注考点频次、考法的同时,补充真题常考陷阱和答题技巧,内容详实(超1万字),排版清晰,可直接背诵、结合真题强化,助力临考快速提分,避免基础分丢失。

一、数据库系统基础理论(高频必考,占比30%)

本模块是数据库系统的核心根基,每年必考,重点考查数据库系统的组成、三级模式两级映射、数据模型、关系代数、SQL基础,题型以选择题为主,案例分析题中会结合数据库设计考查基础概念,需精准记忆、灵活运用。

(一)数据库系统的组成(必考)

数据库系统(DBS)是由硬件、软件、数据和人员组成的完整系统,核心是数据库(DB)和数据库管理系统(DBMS),考试重点考查各组成部分的功能、DBMS的核心作用,以及各组件之间的关系。

1. 核心组成部分及功能(必背)
  • 硬件平台:支撑数据库系统运行的物理设备,包括服务器(数据库服务器、应用服务器)、存储设备(磁盘、磁盘阵列等,用于存储数据库文件)、网络设备(交换机、路由器,用于分布式数据库的节点通信)。核心要求:高可靠性、高吞吐量、大容量,尤其是企业级数据库,需满足7×24小时不间断运行,存储设备需支持数据持久化和快速读写。

  • 数据库(DB):长期存储在计算机内、有组织、可共享的相关数据的集合,是数据库系统的核心数据载体。数据具有结构化、共享性、独立性、最小冗余性的特点,按一定的数据模型组织、描述和存储,可供多个用户同时访问,避免数据重复存储,确保数据一致性。

  • 数据库管理系统(DBMS):位于用户和操作系统之间的一层数据管理软件,是数据库系统的核心软件,负责数据库的建立、运行和维护,核心功能如下(必背,每年必考1题):

    • 数据定义功能:通过数据定义语言(DDL),定义数据库、表、视图、索引等数据库对象,如CREATE、ALTER、DROP语句。

    • 数据操纵功能:通过数据操纵语言(DML),实现对数据的增删改查操作,如INSERT、DELETE、UPDATE、SELECT语句。

    • 数据控制功能:通过数据控制语言(DCL),实现对数据的安全控制、权限管理和事务控制,如GRANT(授权)、REVOKE(回收权限)、COMMIT(提交事务)、ROLLBACK(回滚事务)。

    • 数据库的运行管理:负责数据库的日常运行维护,包括并发控制、故障恢复、数据备份、性能监控等,确保数据库的安全性、完整性和可用性。

    • 数据存储和管理:负责数据的物理存储、索引管理、数据缓存等,优化数据存储结构,提高数据读写效率。

  • 软件系统:除DBMS外,还包括操作系统(OS,为DBMS提供运行环境)、应用开发工具(如SQL Server Management Studio、Navicat、PowerDesigner)、应用程序(基于数据库开发的业务系统,如电商系统、OA系统)。

  • 人员:参与数据库系统设计、开发、维护和使用的人员,不同角色的职责是考试常考考点:

    • 数据库管理员(DBA):核心职责是数据库的规划、设计、维护和优化,包括数据库安装配置、权限管理、故障排查、性能调优、数据备份与恢复,是数据库系统的核心维护人员。

    • 数据库设计人员:负责数据库的概念设计、逻辑设计和物理设计,设计数据库的结构、表结构、索引、关系等,确保数据库满足业务需求。

    • 应用程序员:负责编写基于数据库的应用程序,通过SQL语句或ORM框架(如MyBatis、Hibernate)操作数据库,实现业务功能。

    • 终端用户:使用数据库应用程序,完成日常的数据查询、录入、修改等操作,无需掌握SQL语句,仅通过图形界面交互。

2. 数据库系统的特点(必背,易考选择题)
  • 数据结构化:数据按统一的数据模型组织,不再是分散的文件,各数据之间存在关联关系,便于数据查询和共享。

  • 数据共享性高:多个用户、多个应用程序可同时访问数据库中的数据,避免数据冗余,提高数据利用率。

  • 数据独立性高:分为物理独立性和逻辑独立性(核心考点,每年必考),是数据库系统与文件系统的核心区别:

    • 物理独立性:数据库的物理存储结构(如存储位置、存储方式、索引类型)发生变化时,只要逻辑结构不变,应用程序无需修改,由DBMS负责屏蔽物理变化。例如:将数据库从机械硬盘迁移到固态硬盘,或修改索引类型,应用程序无需调整。

    • 逻辑独立性:数据库的逻辑结构(如表结构、字段类型、关系模式)发生变化时,只要应用程序访问的接口(如视图)不变,应用程序无需修改,由DBMS负责屏蔽逻辑变化。例如:在表中增加一个非必填字段,应用程序若不涉及该字段,无需修改代码。

  • 数据由DBMS统一管理和控制:DBMS负责数据的安全、完整、并发、恢复等管理,避免数据丢失、篡改和不一致。

  • 数据冗余度低:数据集中存储,避免重复存储(如多个应用程序共享同一套用户数据,无需各自存储),但并非完全无冗余,必要的冗余可提高查询效率(反规范化设计)。

3. 考试考点与陷阱

考点1:DBMS的核心功能,选择题常考查“以下不属于DBMS核心功能的是?”,常见干扰项:操作系统的文件管理功能、应用程序的业务逻辑处理功能。

考点2:数据独立性的区分,选择题常考查“修改数据库存储结构,应用程序无需修改,体现了哪种独立性?”,注意区分物理独立性(物理结构变化)和逻辑独立性(逻辑结构变化),陷阱:将两者混淆,如“修改表结构体现物理独立性”(错误,应为逻辑独立性)。

考点3:DBA的职责,选择题常考查“以下属于DBA职责的是?”,常见干扰项:应用程序的编写、终端用户的数据录入。

(二)数据库的三级模式两级映射(必考,核心难点)

数据库的三级模式两级映射是实现数据独立性的核心机制,每年必考,重点考查三级模式的定义、功能,两级映射的作用,题型以选择题为主,偶尔在案例分析题中考查映射机制的应用。

1. 三级模式(必背,按层次从高到低)
  • 外模式(External Schema)——用户模式/子模式

    • 定义:数据库用户(应用程序员、终端用户)所能看到和使用的局部数据的逻辑结构和特征,是数据库用户的数据视图,是对逻辑模式的局部抽取。

    • 特点:一个数据库可以有多个外模式(不同用户看到的数据不同,如管理员能看到所有用户数据,普通用户只能看到自己的数据);外模式是面向用户的,与用户的应用程序紧密相关,用户通过外模式访问数据库,无需了解数据库的整体结构。

    • 作用:屏蔽数据库的整体逻辑结构,只向用户展示所需的数据,提高数据的安全性(用户只能访问自己权限范围内的数据),同时简化用户的操作(无需关注无关数据)。例如:电商系统中,普通用户的外模式只包含自己的订单、购物车数据,无法看到其他用户的信息和后台管理数据。

  • 模式(Schema)——逻辑模式/概念模式

    • 定义:数据库中全体数据的逻辑结构和特征的描述,是数据库的核心模式,是所有用户的公共数据视图,不涉及数据的物理存储,只描述数据的逻辑关系(如表结构、字段类型、主键、外键、关系约束等)。

    • 特点:一个数据库只有一个模式,是数据库的“骨架”,决定了数据库的逻辑结构;模式独立于外模式和内模式,是连接外模式和内模式的桥梁。

    • 作用:统一管理数据库的逻辑结构,确保数据的一致性和完整性,为外模式提供基础,同时屏蔽内模式的物理细节。

  • 内模式(Internal Schema)——存储模式

    • 定义:数据库中数据的物理存储结构和存储方式的描述,是数据库的物理实现细节,包括数据的存储位置、存储格式(如行存储、列存储)、索引结构、压缩方式、存储分配策略等。

    • 特点:一个数据库只有一个内模式,是面向物理存储的,由DBMS负责管理,用户和应用程序无需了解内模式的细节。

    • 作用:描述数据的物理存储细节,优化数据存储效率,为模式提供物理支撑,实现数据的物理独立性。

2. 两级映射(必背,核心作用是实现数据独立性)
  • 外模式-模式映射

    • 定义:建立外模式与模式之间的对应关系,描述外模式与模式之间的映射规则(如外模式中的字段对应模式中的哪些字段,如何筛选、转换数据)。

    • 作用:实现数据的逻辑独立性。当模式发生变化(如修改表结构、增加字段)时,只需修改外模式-模式映射,无需修改外模式和应用程序,确保应用程序不受逻辑结构变化的影响。例如:在模式中为用户表增加“邮箱”字段,若普通用户的外模式不涉及该字段,只需修改映射规则,无需修改普通用户的应用程序。

    • 特点:一个模式可以对应多个外模式,每个外模式都有一个对应的外模式-模式映射。

  • 模式-内模式映射

    • 定义:建立模式与内模式之间的对应关系,描述模式中的逻辑数据如何转换为内模式中的物理数据(如逻辑表如何映射到物理磁盘文件,字段如何存储)。

    • 作用:实现数据的物理独立性。当内模式发生变化(如修改存储位置、存储格式、索引类型)时,只需修改模式-内模式映射,无需修改模式、外模式和应用程序,确保应用程序不受物理存储变化的影响。例如:将数据库的存储引擎从InnoDB改为MyISAM,只需修改映射规则,应用程序无需调整。

    • 特点:一个模式对应一个内模式,只有一个模式-内模式映射。

3. 三级模式两级映射的核心意义(必背)

通过三级模式两级映射,将数据库的逻辑结构与物理结构分离,将用户视图与数据库的整体逻辑结构分离,实现了数据的物理独立性和逻辑独立性,降低了应用程序与数据库之间的耦合度,便于数据库的维护和扩展,同时提高了数据的安全性和可用性。

4. 考试考点与陷阱

考点1:三级模式的层次关系和定义,选择题常考查“以下属于数据库三级模式的是?”“外模式的定义是什么?”,陷阱:将外模式、模式、内模式的定义混淆,如“内模式是用户看到的数据视图”(错误,应为外模式)。

考点2:两级映射的作用,选择题常考查“实现数据逻辑独立性的映射是?”“修改物理存储结构,应用程序无需修改,依赖于哪种映射?”,陷阱:将外模式-模式映射(逻辑独立性)与模式-内模式映射(物理独立性)混淆。

考点3:三级模式的数量,选择题常考查“一个数据库有几个模式?”“一个数据库可以有几个外模式?”,记住:一个数据库只有1个模式、1个内模式,可有多个外模式。

(三)数据模型(必考,核心基础)

数据模型是数据库系统的核心,用于描述数据的结构、关系和约束,考试重点考查数据模型的分类、各模型的特点,以及关系模型的核心概念,题型以选择题为主,案例分析题中会结合数据库设计考查模型选择。

1. 数据模型的分类(必背,按发展阶段)

数据模型分为三个层次:概念数据模型、逻辑数据模型、物理数据模型,考试重点考查前两种。

  • 概念数据模型(Conceptual Data Model)

    • 定义:面向现实世界,描述现实世界中的实体、实体之间的关系,不涉及具体的数据库实现,是数据库设计的第一步(概念设计阶段)的核心输出。

    • 核心目的:准确反映现实世界的业务需求,为逻辑数据模型的设计提供基础,便于设计人员、业务人员和用户沟通。

    • 常用模型:实体-联系模型(E-R模型,必考),是软件架构设计师考试中概念设计阶段的核心模型,后续详细讲解。

    • 特点:直观、易懂,与具体的DBMS无关,独立于数据库的物理实现和逻辑结构。

  • 逻辑数据模型(Logical Data Model)

    • 定义:面向数据库系统,将概念数据模型转换为具体的数据库逻辑结构,描述数据的逻辑关系、约束条件,是数据库设计(逻辑设计阶段)的核心输出,可直接用于数据库的创建。

    • 核心目的:将现实世界的业务需求转换为数据库可识别的逻辑结构,为物理数据模型的设计提供基础。

    • 常用模型(必背,考试重点):

      • 关系模型(Relational Model):目前最主流、最常用的数据模型,适用于绝大多数数据库(如MySQL、Oracle、SQL Server),核心是“关系”(即表),数据以表的形式存储,表之间通过主键、外键建立关联,考试重点考查关系模型的核心概念和约束。

      • 层次模型(Hierarchical Model):以树形结构组织数据,节点之间是“一对多”的关系,适用于层次分明的场景(如组织结构、家谱),目前已很少使用,简单了解即可。

      • 网状模型(Network Model):以网状结构组织数据,节点之间是“多对多”的关系,比层次模型灵活,但结构复杂,目前已很少使用,简单了解即可。

      • 面向对象模型(Object-Oriented Model):将数据和操作封装为对象,支持继承、多态等面向对象特性,适用于复杂数据场景(如多媒体数据、图形数据),目前部分数据库(如Oracle)支持面向对象模型,简单了解即可。

    • 特点:与具体的DBMS相关,不同的DBMS支持不同的逻辑数据模型(如MySQL仅支持关系模型),描述数据的逻辑结构和约束。

  • 物理数据模型(Physical Data Model)

    • 定义:面向物理存储,描述数据在物理设备上的存储结构和存储方式,是数据库设计(物理设计阶段)的核心输出,由DBMS负责实现和管理。

    • 核心目的:优化数据存储效率,提高数据读写性能,适配具体的硬件环境和存储设备。

    • 内容:包括数据的存储位置、存储格式、索引结构、分区策略、压缩方式等,例如:MySQL中,InnoDB引擎的表存储为.frm(表结构文件)和.ibd(数据文件),MyISAM引擎的表存储为.frm、.MYD(数据文件)和.MYI(索引文件)。

    • 特点:与具体的硬件环境、存储设备和DBMS相关,由DBA和DBMS共同管理。

2. 关系模型的核心概念(必考,重中之重)

关系模型是考试的核心,所有数据库相关的考点都围绕关系模型展开,重点考查关系、属性、主键、外键、域、元组等核心概念,以及关系的完整性约束。

  • 关系(Relation):对应数据库中的“表”,是关系模型的核心,是由行和列组成的二维表。例如:用户表(user)、订单表(order)都是关系。

    • 特点:关系中的行和列无顺序(行的顺序不影响数据含义,列的顺序不影响数据含义);关系中的每一列都是不可再分的(原子性,即1NF的要求);关系中不允许有重复的行(元组唯一)。

  • 属性(Attribute):对应数据库表中的“列”,用于描述关系(表)的特征,每个属性有一个名称(列名)和一个域(数据类型和取值范围)。例如:用户表中的“id”“name”“age”都是属性,“age”的域是正整数(1-120)。

  • 元组(Tuple):对应数据库表中的“行”,是关系中的一条记录,由多个属性值组成,每个元组对应一个具体的实体。例如:用户表中“id=1,name=张三,age=25”就是一个元组。

  • 域(Domain):属性的取值范围,即属性可以取的值的集合。例如:性别属性的域是{男,女},日期属性的域是符合日期格式的字符串(如YYYY-MM-DD)。

  • 主键(Primary Key,PK)——必考:用于唯一标识关系(表)中的每一个元组(记录)的属性或属性组合,是关系模型的核心约束,必背特点:

    • 唯一性:主键的值在关系中必须唯一,不能重复。

    • 非空性:主键的值不能为NULL,否则无法唯一标识元组。

    • 不可修改性:主键的值一旦确定,不能随意修改,否则会破坏元组的唯一性。

    • 一个关系(表)只能有一个主键,可以是单个属性(单主键,如用户表的id),也可以是多个属性的组合(复合主键,如学生选课表的“学生id+课程id”)。

  • 外键(Foreign Key,FK)——必考:用于建立两个关系(表)之间的关联关系,是实现数据完整性(参照完整性)的核心,必背定义和特点:

    • 定义:设表A中有一个属性组F,表B中有一个主键P,若F的取值必须与P的取值完全匹配(或为NULL),则F是表A的外键,表B是主表(被参照表),表A是从表(参照表)。

    • 特点:外键的值要么是主表主键的某个值,要么是NULL(若外键允许为空);外键用于维护两个表之间的关联关系,确保数据的一致性(如删除主表中的一条记录时,从表中关联的记录需按规则处理,如级联删除、级联更新)。

    • 示例:订单表(order)中的“user_id”属性是外键,参照用户表(user)的主键“id”,表示每个订单都属于一个用户,user_id的值必须是user表中存在的id值,或为NULL(若允许无用户的订单)。

  • 候选键(Candidate Key):能够唯一标识关系中每一个元组的属性或属性组合,主键是候选键中被选中作为唯一标识的那个,一个关系可以有多个候选键,只能有一个主键。例如:用户表中,“id”和“手机号”都能唯一标识用户,两者都是候选键,选中“id”作为主键,“手机号”就是候选键(非主键)。

  • 非主属性(Non-key Attribute):关系中除主键和候选键以外的其他属性,例如:用户表中,“name”“age”“address”都是非主属性。

3. 关系的完整性约束(必考,每年1题)

关系的完整性约束是确保数据库中数据正确、一致、有效的规则,分为实体完整性、参照完整性、用户定义完整性三类,每类都是考试重点,需精准记忆。

  • 实体完整性(Entity Integrity)——必考

    • 定义:关系(表)中的主键必须唯一且非空,用于确保每个实体(元组)都是唯一的,不重复、不缺失。

    • 实现方式:在创建表时,通过PRIMARY KEY约束定义主键,DBMS会自动检查主键的唯一性和非空性,若违反约束,会拒绝执行操作(如插入重复主键的记录、插入主键为NULL的记录)。

    • 示例:用户表中,若插入“id=1”的记录后,再插入“id=1”的记录,DBMS会报错,拒绝插入;若插入“id=NULL”的记录,也会报错。

  • 参照完整性(Referential Integrity)——必考

    • 定义:外键的值必须要么是主表主键的某个值,要么是NULL(若外键允许为空),用于确保两个表之间的关联关系正确,避免出现“孤儿记录”(从表中存在的外键值,在主表中不存在)。

    • 实现方式:在创建表时,通过FOREIGN KEY约束定义外键,并指定参照的主表和主键,DBMS会自动检查外键的取值是否符合要求,若违反约束,会拒绝执行操作。

    • 外键约束的处理规则(必考,案例分析题常考):当主表中的主键值发生变化(修改、删除)时,从表中的外键值需按以下规则处理,可在创建外键时指定:

      • RESTRICT(限制):默认规则,若主表中的主键值被从表引用,则不允许修改或删除主表中的该记录(最严格,确保数据一致性)。例如:订单表中存在“user_id=1”的记录,若要删除用户表中“id=1”的记录,DBMS会报错,拒绝删除。

      • CASCADE(级联):当主表中的主键值被修改或删除时,从表中对应的外键值也会自动修改或删除(最常用,适用于主从表紧密关联的场景)。例如:删除用户表中“id=1”的记录,订单表中所有“user_id=1”的记录也会被自动删除;修改用户表中“id=1”为“id=100”,订单表中所有“user_id=1”的记录会自动改为“user_id=100”。

      • SET NULL(设为NULL):当主表中的主键值被删除或修改时,从表中对应的外键值会自动设为NULL(需确保外键允许为空)。例如:删除用户表中“id=1”的记录,订单表中所有“user_id=1”的记录会自动设为NULL,适用于从表记录可以独立存在的场景。

      • SET DEFAULT(设为默认值):当主表中的主键值被删除或修改时,从表中对应的外键值会自动设为默认值(需为外键设置默认值),使用较少。

  • 用户定义完整性(User-Defined Integrity)——必考

    • 定义:根据业务需求自定义的约束规则,用于确保数据符合具体的业务要求,弥补实体完整性和参照完整性的不足。

    • 常见的用户定义完整性约束(必背):

      • 非空约束(NOT NULL):指定某个属性的值不能为NULL,例如:用户表中的“name”属性不能为NULL,确保每个用户都有姓名。

      • 唯一约束(UNIQUE):指定某个属性的值必须唯一(可以为NULL,但NULL只能出现一次),例如:用户表中的“手机号”属性必须唯一,避免重复注册。

      • 检查约束(CHECK):指定某个属性的取值必须满足特定的条件,例如:用户表中的“age”属性必须大于0且小于120,订单表中的“order_date”属性必须小于等于当前日期。

      • 默认值约束(DEFAULT):指定某个属性的默认值,当插入记录时未指定该属性的值,会自动填入默认值,例如:用户表中的“gender”属性默认值为“男”。

    • 实现方式:在创建表时,通过NOT NULL、UNIQUE、CHECK、DEFAULT等关键字定义约束,DBMS会自动检查数据是否符合约束,若违反约束,会拒绝执行操作。

4. 考试考点与陷阱

考点1:关系模型的核心概念,选择题常考查“以下属于关系模型核心概念的是?”“主键的特点是什么?”,陷阱:将主键和候选键混淆,如“一个关系可以有多个主键”(错误,只能有一个主键,可多个候选键)。

考点2:关系的完整性约束,选择题常考查“以下属于参照完整性约束的是?”“外键约束的级联规则有哪些?”,案例分析题常考查“如何设计外键约束,确保主从表数据一致性”,需掌握级联删除、级联更新的应用场景。

考点3:数据模型的分类,选择题常考查“以下属于逻辑数据模型的是?”“目前最主流的数据模型是?”,陷阱:将概念数据模型(E-R模型)与逻辑数据模型(关系模型)混淆。

(四)E-R模型(实体-联系模型,必考)

E-R模型是概念数据模型的核心,是数据库概念设计阶段的主要工具,考试重点考查E-R模型的组成(实体、属性、联系)、E-R图的绘制规则,以及E-R模型向关系模型的转换(每年必考,案例分析题重点)。

1. E-R模型的核心组成(必背)
  • 实体(Entity)

    • 定义:现实世界中具有共同属性和行为的一类事物的集合,是E-R模型的基本组成单位,用矩形表示(E-R图中)。

    • 分类:

      • 实体集:具有相同属性的实体的集合,例如:“学生”是一个实体集,包含所有学生;“课程”是一个实体集,包含所有课程。

      • 实体实例:实体集中的具体个体,例如:“张三”是“学生”实体集的一个实例,“高等数学”是“课程”实体集的一个实例。

    • 特点:每个实体都有唯一的标识(对应关系模型中的主键),实体的属性描述实体的特征。

  • 属性(Attribute)

    • 定义:描述实体或联系的特征,用椭圆形表示(E-R图中),椭圆与对应的实体或联系用线段连接。

    • 分类(必背,考试重点):

      • 简单属性:不可再分的属性,例如:学生的“年龄”“性别”,是最基本的属性。

      • 复合属性:可再分为多个子属性的属性,例如:学生的“地址”可分为“省”“市”“区”“详细地址”,复合属性的子属性也是属性。

      • 单值属性:一个实体的该属性只有一个值,例如:学生的“身份证号”,每个学生只有一个身份证号。

      • 多值属性:一个实体的该属性可以有多个值,例如:学生的“兴趣爱好”,一个学生可以有多个兴趣爱好(如篮球、音乐、读书),多值属性在E-R图中用双椭圆形表示。

      • 派生属性:由其他属性推导得出的属性,无需直接存储,例如:学生的“年龄”可以由“出生日期”推导得出(当前年份-出生年份),派生属性在E-R图中用虚线椭圆形表示。

      • 关键字属性(主键属性):用于唯一标识实体的属性,对应关系模型中的主键,在E-R图中用下划线标注,例如:学生的“学号”是关键字属性。

  • 联系(Relationship)——必考

    • 定义:实体之间的关联关系,用菱形表示(E-R图中),菱形与对应的实体用线段连接,线段上标注联系的类型。

    • 联系的类型(按实体数量划分,必背,每年必考):

      • 一对一联系(1:1):两个实体集之间,一个实体集中的一个实例只能与另一个实体集中的一个实例建立联系,反之亦然。例如:“学生”与“学生证”,一个学生只能有一个学生证,一个学生证只能属于一个学生;“部门”与“部门经理”,一个部门只能有一个经理,一个经理只能管理一个部门。

      • 一对多联系(1:N):两个实体集之间,一个实体集中的一个实例可以与另一个实体集中的多个实例建立联系,而另一个实体集中的一个实例只能与该实体集中的一个实例建立联系。例如:“班级”与“学生”,一个班级可以有多个学生,一个学生只能属于一个班级;“老师”与“课程”,一个老师可以教多门课程,一门课程只能由一个老师教。

      • 多对多联系(M:N):两个实体集之间,一个实体集中的一个实例可以与另一个实体集中的多个实例建立联系,反之亦然。例如:“学生”与“课程”,一个学生可以选多门课程,一门课程可以被多个学生选;“订单”与“商品”,一个订单可以包含多个商品,一个商品可以出现在多个订单中。

    • 联系的属性:联系也可以有属性,用于描述联系的特征,例如:“学生”与“课程”的“选课”联系,有“成绩”属性,描述学生选某门课程的成绩,联系的属性用椭圆形表示,与菱形(联系)用线段连接。

2. E-R图的绘制规则(必背,案例分析题常考)
  • 实体:用矩形表示,矩形内填写实体名称(如“学生”“课程”)。

  • 属性:用椭圆形表示,椭圆形内填写属性名称(如“学号”“姓名”“成绩”),简单属性直接连接实体,复合属性的子属性连接到父属性,多值属性用双椭圆形,派生属性用虚线椭圆形。

  • 联系:用菱形表示,菱形内填写联系名称(如“选课”“属于”“教”),菱形与实体之间用线段连接,线段上标注联系类型(1:1、1:N、M:N)。

  • 关键字属性:在实体的属性名称下方画下划线(如“学号”),表示该属性是实体的主键。

  • 注意事项:E-R图中,实体之间的联系必须明确,避免模糊;多值属性和派生属性需标注清楚;联系的类型需准确判断,尤其是1:N和M:N的区分。

3. E-R模型向关系模型的转换(必考,核心难点,案例分析题重点)

E-R模型是概念设计的输出,需要转换为逻辑数据模型(关系模型),才能用于数据库的创建,转换的核心是将实体、属性、联系转换为关系(表),转换规则需精准记忆,灵活应用。

(1)实体的转换规则(简单,必背)

每个实体集转换为一个独立的关系(表),实体的属性转换为表的列,实体的关键字属性(主键)转换为表的主键。

示例:“学生”实体集,属性为“学号(主键)、姓名、年龄、性别、出生日期”,转换为学生表(student),列名分别为student_id(主键)、name、age、gender、birth_date,数据类型根据属性特点定义(如student_id为INT,name为VARCHAR)。

特殊情况:多值属性的转换,若实体有多个多值属性,可将每个多值属性单独转换为一个关系(表),该表包含两个列:实体的主键和多值属性的值,主键为两者的组合(复合主键)。

示例:“学生”实体有“兴趣爱好”多值属性,转换为学生兴趣表(student_hobby),列名为student_id(外键,参照学生表的主键)、hobby,主键为(student_id,hobby),确保一个学生的多个兴趣爱好不重复。

(2)联系的转换规则(必考,重点,分三种联系类型)
  • ① 一对一联系(1:1)的转换(两种方法,可任选)

    • 方法一:将两个实体转换为两个独立的表,在其中一个表中增加一个外键,引用另一个表的主键,外键设置为唯一(UNIQUE),确保一对一关系。

    • 示例:“学生”与“学生证”是1:1联系,学生表(student,主键student_id),学生证表(student_card,主键card_id),在学生证表中增加外键student_id,引用学生表的student_id,且student_id设置为UNIQUE,确保一个学生证对应一个学生,一个学生对应一个学生证。

    • 方法二:将两个实体合并为一个表,将两个实体的属性合并,主键为其中一个实体的主键(或两者的组合)。

    • 示例:“学生”与“学生证”合并为学生表,属性为student_id(主键)、name、age、card_id(唯一),card_id对应学生证的编号,确保一对一关系。

    • 注意:推荐使用方法一,灵活性更高,便于后续维护和扩展。

  • ② 一对多联系(1:N)的转换(必背,最常用)

    • 规则:将两个实体转换为两个独立的表,在“多”的一方(从表)中增加一个外键,引用“一”的一方(主表)的主键,无需单独创建联系表。

    • 示例:“班级”与“学生”是1:N联系(一个班级有多个学生,一个学生属于一个班级),班级表(class,主键class_id),学生表(student,主键student_id),在学生表中增加外键class_id,引用班级表的class_id,实现一对多关系。

    • 注意:外键在“多”的一方,确保从表中的每条记录都能对应到主表中的一条记录。

  • ③ 多对多联系(M:N)的转换(必考,核心难点)

    • 规则:需要单独创建一个联系表(中间表),用于存储两个实体之间的联系,联系表的属性包括两个实体的主键(作为外键),以及联系的属性(若有),联系表的主键为两个外键的组合(复合主键)。

    • 示例:“学生”与“课程”是M:N联系(一个学生选多门课程,一门课程被多个学生选),联系为“选课”,有“成绩”属性。转换步骤:

      • 学生表(student,主键student_id):属性为student_id、name、age等。

      • 课程表(course,主键course_id):属性为course_id、course_name、credit等。

      • 选课表(student_course,复合主键student_id+course_id):属性为student_id(外键,参照student表)、course_id(外键,参照course表)、score(联系的属性,成绩),实现多对多关系。

    • 注意:M:N联系必须单独创建联系表,不能像1:1、1:N那样直接在某一个表中增加外键,这是考试的常见陷阱。

(3)转换的注意事项(必背,避免踩坑)
  • 所有实体都必须转换为表,不能遗漏。

  • 联系的转换需根据联系类型选择对应的方法,尤其是M:N联系必须创建中间表。

  • 外键的引用必须正确,外键必须引用主表的主键,且数据类型必须一致(如主表主键为INT,外键也必须为INT)。

  • 多值属性需单独转换为表,或在主表中用特殊方式存储(如用逗号分隔多个值,但不推荐,优先单独建表)。

  • 派生属性无需转换为表的列,因为可以通过其他列推导得出,避免数据冗余。

4. 考试考点与陷阱

考点1:E-R模型的组成,选择题常考查“以下属于E-R模型组成部分的是?”“多值属性在E-R图中如何表示?”,陷阱:将联系的属性与实体的属性混淆。

考点2:联系的类型,选择题常考查“学生与课程的联系属于哪种类型?”“部门与部门经理的联系属于哪种类型?”,陷阱:将1:N和M:N混淆,如“老师与学生的联系是1:N”(错误,若一个老师教多个学生,一个学生被多个老师教,则是M:N)。

考点3:E-R模型向关系模型的转换,案例分析题常考查“根据给定的E-R图,转换为关系模型,写出各表的结构(主键、外键、属性)”,陷阱:M:N联系不创建中间表,或外键引用错误(引用非主键)。

(五)关系代数(必考,核心难点)

关系代数是关系数据库的理论基础,用于描述关系的操作(如查询、筛选、连接),考试重点考查关系代数的基本运算和扩展运算,题型以选择题为主,常考查运算的结果或运算的含义,需熟练掌握每种运算的定义和用法。

1. 关系代数的基本概念

关系代数的运算对象是关系(表),运算结果也是关系(表),所有运算都基于关系的结构和约束,分为基本运算和扩展运算,基本运算可以组合成扩展运算。

2. 基本运算(必背,核心,每年必考)

基本运算包括:选择、投影、并、差、笛卡尔积,是所有扩展运算的基础,需精准掌握每种运算的定义、符号和示例。

(1)选择运算(Selection)——σ( sigma )
  • 定义:从一个关系中筛选出满足指定条件的元组(行),保留原关系的所有属性(列),只过滤行,不改变列。

  • 符号:σ(关系名),其中“条件”是一个逻辑表达式(如属性=值、属性>值等),筛选出满足条件的元组。

  • 示例:有学生表student(student_id, name, age, gender),筛选出年龄大于20的学生,表达式为σ(student),结果是所有age>20的元组,属性仍为student_id, name, age, gender。

  • 注意:选择运算的结果是原关系的子集,属性个数不变,元组个数减少(或不变)。

(2)投影运算(Projection)——π( pi )
  • 定义:从一个关系中选取指定的属性(列),保留这些属性对应的元组(行),只筛选列,不改变行(但可能删除重复元组)。

  • 符号:π(关系名),其中“属性1,属性2,...,属性n”是要选取的属性名称,顺序可以任意。

  • 示例:有学生表student(student_id, name, age, gender),选取学生的学号和姓名,表达式为π(student),结果是只包含student_id和name两列的关系,元组个数与原关系一致(若有重复的学号和姓名组合,会自动删除重复元组)。

  • 注意:投影运算的结果属性个数减少(或不变),元组个数可能减少(若有重复元组)。

(3)并运算(Union)——∪
  • 定义:将两个结构相同(属性个数相同、对应属性的数据类型相同)的关系合并,去除重复元组,得到一个新的关系。

  • 符号:关系1 ∪ 关系2,要求两个关系的结构完全一致(同构关系),否则无法进行并运算。

  • 示例:有学生表A(student_id, name)和学生表B(student_id, name),A的元组为{(1,张三), (2,李四)},B的元组为{(2,李四), (3,王五)},则A∪B的结果为{(1,张三), (2,李四), (3,王五)},删除重复的(2,李四)。

  • 注意:并运算的结果属性个数与原关系一致,元组个数为两个关系元组个数之和减去重复元组个数。

(4)差运算(Difference)——−
  • 定义:从第一个关系中减去第二个关系中存在的元组,得到一个新的关系,结果只包含第一个关系中有、第二个关系中没有的元组。

  • 符号:关系1 − 关系2,要求两个关系结构完全一致(同构关系)。

  • 示例:承接上面

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐