数据库复习重点

第一章通常涵盖数据库系统的基础概念,这里将概述数据库、数据库系统、数据库管理系统的基本概念,数据库系统的三级模式结构,以及数据模型的三要素。

基本概念

  1. 数据(Data)

    • 数据是描述事物的符号记录,它可以是数字、文字、图像、音频或视频等形式。
    • 数据本身没有意义,其含义由数据的语义决定,数据与语义不可分割。
  2. 数据库(Database, DB)

    • 数据库是长期存储在计算机内的、有组织的、可共享的数据集合。
    • 它能够被多个用户、多个应用以多种不同的方式同时访问。
  3. 数据库管理系统(Database Management System, DBMS)

    • DBMS是一种位于用户和操作系统之间的软件系统,用于建立、使用和维护数据库。
    • 它提供数据定义、数据操纵、数据控制和数据管理等功能。
  4. 数据库系统(Database System, DBS)

    • 数据库系统不仅包含数据库本身,还包括DBMS、硬件、软件、数据库管理员(DBA)以及用户等组成部分。

三级模式结构

数据库系统的三级模式结构由外模式、模式和内模式组成:

  • 外模式(子模式或用户模式)

    • 是用户看到的数据视图,每个用户可能有不同的视图。
    • 它是对数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图。
  • 模式(逻辑模式)

    • 是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图。
    • 它是数据库的全局逻辑结构的描述。
  • 内模式(存储模式)

    • 描述数据在存储介质上的物理结构和存储方式,如数据存储的文件结构、索引、簇集等。
    • 它是最接近物理存储设备的模式,涉及数据实际存储的方式。

二级映像

为了保证数据的独立性,数据库系统提供了两层映像:

  • 外模式/模式映像

    • 保证了数据的逻辑独立性,当模式发生变化时,通过调整外模式/模式映像,可以使外模式保持不变。
  • 模式/内模式映像

    • 保证了数据的物理独立性,当内模式变化时,通过调整模式/内模式映像,可以使模式保持不变。

数据模型的三要素

数据模型是用来描述数据、数据联系、数据操作及数据约束的抽象表示,它由三个要素组成:

  • 数据结构

    • 描述所研究的对象类型的集合,包括实体、属性和实体间的联系。
  • 数据操作

    • 描述在相应的数据结构上执行的各种操作的集合,包括操作的含义、操作符、操作规则等。
  • 数据的约束条件

    • 描述数据结构内数据间完整性规则的集合,用以限定符合数据模型的数据库状态以及状态的变化,确保数据的正确性和一致性。

这些概念构成了数据库系统的基础,对于理解数据库如何工作至关重要。

候选码、主码、外码、主属性、非主属性

在关系数据库中,这些术语描述了不同类型的属性和它们在数据完整性方面扮演的角色:

  1. 候选码(Candidate Key)

    • 如果一个属性组的值能够唯一地标识一个关系中的元组(行),并且没有属性的子集也能做到这一点,那么这个属性组就是候选码。
    • 例如,在一个员工表中,“员工编号”可能是一个候选码,因为每个员工都有一个唯一的编号。
  2. 主码(Primary Key)

    • 主码是被选择作为关系主标识符的候选码之一。
    • 主码确保每一行都是唯一的,并且不允许为空(NULL)。
    • 在上述例子中,如果“员工编号”被选作唯一标识每个员工的字段,那么它就是主码。
  3. 外码(Foreign Key)

    • 外码是一个关系中的属性或属性组,它指向另一个关系的主码。
    • 它用于建立两个关系之间的关联,支持参照完整性。
    • 比如,在部门表中有“部门编号”,而在员工表中,有一个“部门编号”的外码字段,它引用了部门表中的主码。
  4. 主属性(Prime Attribute)

    • 主属性是包含在任何一个候选码中的属性。
    • 这些属性对确保关系中的唯一性至关重要。
  5. 非主属性(Non-prime Attribute)

    • 非主属性是那些不包含在任何候选码中的属性。
    • 这些属性对关系的唯一性不直接贡献,但仍然可以携带重要信息。

实体完整性、参照完整性和用户自定义完整性

  1. 实体完整性(Entity Integrity)

    • 要求主码的值必须唯一,且不能包含空值(NULL)。
  2. 参照完整性(Referential Integrity)

    • 规定外码要么是NULL,要么是参照关系中主码的有效值。
    • 这意味着如果一个关系的外码引用了另一个关系的主码,那么那个主码必须存在。
  3. 用户自定义完整性(User-defined Integrity)

    • 这是由数据库设计者根据具体的应用环境制定的限制条件。
    • 可以包括字段级的限制,比如年龄必须大于零,或者数据范围的限制。

关系代数

关系代数是一种理论框架,用于描述如何通过一系列运算来处理关系数据。常见的运算包括:

  1. 查询(Selection)

    • 从一个关系中选取满足给定条件的元组(行)。
  2. 投影(Projection)

    • 从一个关系中选取某些列(属性)形成新的关系。
  3. 并集(Union)

    • 将两个关系合并为一个新的关系,其中包含两个原始关系的所有元组,但重复的元组只出现一次。
  4. 交集(Intersection)

    • 返回两个关系中都存在的元组。
  5. 差集(Difference)

    • 返回在一个关系中存在但在另一个关系中不存在的元组。
  6. 连接(Join)

    • 结合两个关系,基于一个或多个共有的属性,创建一个新的关系。
  7. 笛卡尔积(Cartesian Product)

    • 生成两个关系的所有可能的元组对,通常在进行连接之前使用。

这些操作可以帮助数据分析师和数据库管理员构建复杂的查询,从而提取、组合和分析数据。

SQL与关系代数的对应关系

SQL(Structured Query Language)是关系型数据库的标准语言,用于管理数据。下面将展示关系代数中的选择、投影以及查询操作如何映射到SQL语句中:

  1. 选择(Selection)

    • 关系代数:从一个关系中选择满足特定条件的行。
    • SQL
      SELECT * FROM <table_name>
      WHERE <condition>;
      
    • 例如,选择所有年龄大于30的员工:
      SELECT * FROM Employees
      WHERE Age > 30;
      
  2. 投影(Projection)

    • 关系代数:从关系中选择特定的列。
    • SQL
      SELECT <column_name>, <column_name>, ...
      FROM <table_name>;
      
    • 例如,选择所有员工的名字和地址:
      SELECT Name, Address
      FROM Employees;
      
  3. 查询(Query)

    • 关系代数:结合选择和投影,可以执行更复杂的查询。
    • SQL:使用SELECT, FROM, WHERE等关键字实现。
    • 例如,查询所有位于纽约的员工的名字和年龄:
      SELECT Name, Age
      FROM Employees
      WHERE Address LIKE '%New York%';
      

SQL语句

更新(Update)
  • 修改现有记录的数据:
    UPDATE <table_name>
    SET <column_name> = <value>,
        <column_name> = <value>
    WHERE <condition>;
    
插入(Insert)
  • 向表中添加新记录:
    INSERT INTO <table_name>
    (<column_list>)
    VALUES
    (<value_list>);
    
删除(Delete)
  • 删除表中的记录:
    DELETE FROM <table_name>
    WHERE <condition>;
    
修改(Alter)
  • 修改数据库结构,如添加或删除列:
    ALTER TABLE <table_name>
    ADD <column_name> <data_type>;
    
创建视图(Create View)
  • 创建视图以简化复杂查询:
    CREATE VIEW <view_name>
    AS
    SELECT <query>;
    
多表查询(Join)
  • 查询来自多个表的信息:
    SELECT *
    FROM <table_name_1>
    JOIN <table_name_2>
    ON <table_name_1>.<column_name> = <table_name_2>.<column_name>;
    
嵌套查询(Subquery)
  • 在查询中使用另一个查询的结果:
    SELECT *
    FROM <table_name>
    WHERE <column_name> IN (SELECT <column_name> FROM <another_table>);
    
分组查询(Group By)
  • 对数据进行分组并聚合计算:
    SELECT <column_name>, COUNT(*)
    FROM <table_name>
    GROUP BY <column_name>;
    
排序(Order By)
  • 对查询结果排序:
    SELECT *
    FROM <table_name>
    ORDER BY <column_name> ASC|DESC;
    

SQL提供了丰富的功能,可以灵活地管理数据,执行各种复杂的操作。掌握这些基本SQL语句对于有效地与关系型数据库交互至关重要。

  1. 创建模式(CREATE SCHEMA):此命令在数据库中创建一个新的模式。模式可以理解为数据库中 的一个命名空间,用于组织和控制对数据库对象的访问。

    CREATE SCHEMA [模式名] AUTHORIZATION [用户名];
    

    这里的[模式名]是你想创建的模式的名字,[用户名]是将拥有这个模式的用户。

  2. 删除模式(DROP SCHEMA):此命令从数据库中删除现有的模式。

    DROP SCHEMA [模式名] CASCADE;
    

    这个命令会连同模式中的所有对象一起删除。如果你不想删除模式中的对象,你可以使用:

    DROP SCHEMA [模式名] RESTRICT;
    

    这个命令只有在模式为空时才会成功执行。

  3. 更改模式(ALTER SCHEMA):此命令更改模式的所有者或名称。

    ALTER SCHEMA [旧模式名] RENAME TO [新模式名];
    

    这个命令会改变模式的名字。

    ALTER SCHEMA [模式名] OWNER TO [新所有者];
    

    这个命令会改变模式的所有者。

请将[模式名]、[用户名]、[旧模式名]、[新模式名]和[新所有者]替换为你实际要使用的值。

函数依赖的概念及其求解和计算

函数依赖(Functional Dependency, FD)

在关系数据库中,函数依赖是指一个属性(或属性集)的值唯一确定了另一个属性(或属性集)的值。如果属性集X的值决定了属性Y的值,那么我们说Y函数依赖于X,记作X → Y。

求解和计算
  1. 最小化函数依赖集:去除冗余的函数依赖,使得每个函数依赖都是不可再简化的。
  2. 闭包计算:给定一组函数依赖,计算某个属性集的闭包,即该属性集可以唯一确定的所有属性的集合。

函数分解依赖的算法

无损连接分解

无损连接分解的目标是在分解后的关系模式中,能够通过自然连接重构出原始关系模式。这通常通过验证分解是否满足以下条件来实现:

  1. 分解后的模式集:设R是原始关系模式,{R1, R2, …, Rn}是分解后的模式集。
  2. 分解算法:检查对于任意两个模式Ri和Rj,它们的交集是否在Ri或Rj的键中,如果是,则分解是无损的。

关系模式的范式

范式是衡量关系模式规范化程度的标准,目的是消除数据冗余,减少数据异常。

第一范式(1NF)
  • 定义:如果关系模式R的每一个属性都是不可再分的基本数据项,则称R属于第一范式。
  • 判断:检查是否存在复合属性或集合属性。
第二范式(2NF)
  • 定义:若关系模式R属于1NF,且每一个非主属性完全函数依赖于候选键,则称R属于第二范式。
  • 判断:检查是否有部分依赖,即非主属性是否仅依赖于候选键的一部分。
第三范式(3NF)
  • 定义:若关系模式R属于2NF,且每一个非主属性既不传递依赖于候选键,也不部分依赖于候选键,则称R属于第三范式。
  • 判断:检查是否有传递依赖,即非主属性是否依赖于其他非主属性。
BC范式(Boyce-Codd Normal Form, BCNF)
  • 定义:若关系模式R属于1NF,且对于R中的每一个非平凡的函数依赖X → Y,都有X包含候选键,则称R属于BCNF。
  • 判断:检查是否有非候选键决定其他属性的情况。

模式分解的算法

从1NF到2NF
  • 步骤:识别出所有部分依赖的非主属性,为每个部分依赖创建一个新的关系模式,将原关系模式分解为多个关系模式。
从2NF到3NF
  • 步骤:识别出所有传递依赖的非主属性,为每个传递依赖创建一个新的关系模式,将原关系模式分解为多个关系模式。
从3NF到BCNF
  • 步骤:识别出所有非候选键决定其他属性的情况,为每个这样的依赖创建一个新的关系模式,将原关系模式分解为多个关系模式。

通过模式分解,可以逐步消除数据冗余和异常,使关系模式更加规范化,从而提高数据一致性和查询效率。

数据库安全性

数据库安全性是指保护数据库免受未授权的访问和破坏,确保数据的机密性、完整性和可用性。主要通过身份验证、访问控制、审计和加密等机制实现。

用户账号和角色管理

  • 用户账号:每个数据库用户都有一个账号,账号具有用户名和密码,用于登录数据库系统。
  • 角色管理:角色是一组权限的集合,可以分配给用户。通过角色管理,可以简化权限分配,实现细粒度的访问控制。

数据库完整性

数据库完整性指的是数据的准确性和可靠性,主要包括实体完整性、参照完整性和用户定义的完整性。完整性规则和默认值有助于确保数据的一致性和有效性。

事务的概念及特征

事务是数据库中一组操作的集合,这些操作被视为一个不可分割的工作单元。事务具有四个关键特性,称为ACID特性:

  • 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败。
  • 一致性(Consistency):事务开始前和结束后,数据库必须处于一致性状态。
  • 隔离性(Isolation):并发执行的事务之间不会相互干扰。
  • 持久性(Durability):一旦事务完成,其效果将永久保存在数据库中。

并发操作带来的不一致性

当多个事务并发执行时,可能会出现丢失更新、脏读、不可重复读和幻读等问题,导致数据不一致。

封锁的概念

封锁是并发控制的主要技术,用于确保事务的隔离性和一致性。主要有三种封锁协议:

  • 一级封锁协议:事务在修改数据前必须先对其加X锁,在事务结束前释放锁。
  • 二级封锁协议:在一级封锁协议的基础上,事务在读取数据前加S锁,读完即释放。
  • 三级封锁协议:在二级封锁协议的基础上,要求事务直到提交或回滚才释放读锁,以防止不可重复读和幻读。

故障类型

数据库运行期间可能出现的故障包括:

  • 事务故障:事务未能正常完成,可能是由于程序错误、用户干预或系统资源不足等原因。
  • 系统故障:指硬件或软件错误,如电源故障、磁盘损坏或操作系统崩溃,导致整个系统停止运行。
  • 介质故障:指存储介质(如磁盘)的永久性损坏,可能导致数据丢失。

针对这些故障,数据库系统通常采用日志记录、检查点和恢复算法等机制来确保数据的完整性和一致性。

第六章 数据库设计

ER图的绘制和转换成关系模式
  • ER图(实体-关系图) 是一种用于描述现实世界中的实体、它们的属性以及实体之间的关系的图形表示方法。
  • 实体 在ER图中通常由矩形表示,属性 由椭圆表示,关系 则由菱形表示。
  • 主码(Primary Key)是唯一标识实体实例的一个或一组属性。
  • 外码(Foreign Key)是引用另一个表主码的属性,用于表示两个表之间的关系。

转换成关系模式 的基本规则如下:

  • 每个实体转换成一个关系模式,实体的属性成为关系的列,实体的主码成为关系的主键。
  • 每个一对一或一对多的关系也可以直接通过主码和外码的关联来表示。
  • 多对多关系需要转换成一个新的关系模式,这个关系的主键是由两个相关实体的主码组成的复合键。

合并一对多二元联系 后,可能不需要创建新的关系模式,而是将从实体的主码添加到多实体中作为外码。

数据库设计的主要步骤和任务

  • 需求分析:理解并定义用户的需求。
  • 概念结构设计:使用ER图创建概念模型。
  • 逻辑结构设计:将概念模型转换为具体的数据库模型,如关系模型。
  • 物理设计:决定数据存储的具体细节,包括存储结构和存取方法。
  • 实施:创建数据库,输入数据,编写应用程序代码。
  • 测试和维护:确保数据库正确运行,并进行持续的维护和优化。

第七章 SQL Server2012 高级应用

触发器的概念
  • 触发器 是一种特殊类型的存储过程,它会在特定事件(如INSERT、UPDATE、DELETE操作)发生时自动执行。
  • 设计触发器是为了维护数据的完整性和一致性,例如,可以使用触发器来强制业务规则或数据验证。
编写存储过程
  • 存储过程 是预编译的SQL代码块,它可以接受输入参数,执行复杂的操作,然后返回结果。
  • 存储过程可以提高应用程序的性能和安全性。
插入表和删除表
  • 插入表 是指使用INSERT语句向表中添加数据。
  • 删除表 是指使用DROP TABLE语句移除整个表,或者使用DELETE语句移除表中的某些行。
SQL Server2012中的三种数据库还原模式
  • 简单还原模式:不支持事务日志备份,只允许完全数据库备份和差异备份。
  • 完整还原模式:支持所有的备份和还原策略,包括事务日志备份。
  • 大容量日志记录还原模式:类似于完整模式,但在大容量操作期间日志记录较少。
四种备份方式
  • 完整备份:备份整个数据库的所有数据和日志。
  • 差异备份:备份上次完整备份以来更改的数据。
  • 事务日志备份:备份自上次事务日志备份以来的日志记录。
  • 文件和文件组备份:允许备份数据库中的单个文件或文件组。

以上是关于数据库设计和SQL Server 2012高级应用的基本概念和操作。如果你需要更详细的解释或示例,请告知。

看起来你尝试在多种语言或者特殊字符中输入SQL语句,这可能会造成混淆。下面我将用标准的SQL语句来解释你的请求:

  1. 创建模式(Create Schema):

    SQL语句 CREATE SCHEMA 用于在数据库中创建新的模式。模式可以视为数据库内的一个组织单位,用来包含表、视图和其他数据库对象。例如:

    CREATE SCHEMA testSchema;
    

    这将在数据库中创建一个名为 testSchema 的新模式。

  2. 删除模式(Drop Schema):

    SQL语句 DROP SCHEMA 用于删除已存在的模式。例如:

    DROP SCHEMA testSchema CASCADE;
    

    这将删除 testSchema 模式以及该模式下的所有对象。如果模式下有对象,使用 CASCADE 关键字可以强制删除。如果不希望删除模式下的任何对象,则不能使用 CASCADE,并且只有在模式为空时才能执行 DROP SCHEMA 命令。

  3. 修改模式(Alter Schema):

    SQL语句 ALTER SCHEMA 用于修改已存在模式的属性,例如重命名模式或更改模式的所有者。例如:

    ALTER SCHEMA testSchema RENAME TO newTestSchema;
    

    这将把 testSchema 的名字更改为 newTestSchema

    或者

    ALTER SCHEMA testSchema OWNER TO newOwner;
    

    这将把 testSchema 的所有者更改为 newOwner

请注意,在上述示例中,testSchemanewTestSchemanewOwner 都需要被替换成你实际要使用的模式名和所有者名。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时雨h

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值