数据库系统-上

6 minute read

第1讲

  1. 数据库管理系统是软件产品,而数据库系统不仅仅是软件产品
  2. 数据库系统的构成包括数据库、数据库管理系统、术语库应用程序、数据库管理员、计算机与网络基础系统
  3. 数据库管理系统就是通过数据库语言让用户操作进而提供:数据库定义、数据库操纵、数据库控制功能的系统,同时提供了一系列程序能够实现对数据库的各种存储与维护
  4. 从系统角度看数据库管理系统,其功能包括:数据库语言及其编译、查询实现与查询优化、事务处理、数据库存储与索引
  5. 数据库管理系统的功能:完整性控制、并发控制、通讯控制
  6. 数据库系统语言包括:DDL、DML、DCL
  7. DDL是数据库定义语言
  8. DML是数据库控制语言
  9. 从用户角度看数据库管理系统,功能包括:数据库定义、数据库操纵、数据库控制、数据库维护

第2讲

  • 【2-1】结合如“图书管理数据库”谈谈什么是三级模式两层映像?老师参与 视频中介绍了数据库系统的标准结构—三级模式两层映像。那什么是三级模式两层映像呢?你能否结合一个具体的数据库系统,比如图书管理数据库系统、学生管理数据库系统等,来谈谈什么是三级模式两层映像呢?哪些管理内容对应哪些模式?其作用又是怎样的呢?视频中说其实现了两个独立性,那这两个独立性是指什么?有什么作用?请分享你的观点。
  • 【2-2】数据、模式和数据模型是一种什么关系?老师参与 视频中介绍了几个重要的概念:数据、模式和数据模型。请你谈谈数据、模式和数据模型是一种什么关系?什么是模式?什么是数据模型?请分享你的观点。
  • 【2-3】数据库系统是怎样演变的?老师参与 视频中介绍了数据库系统的演变,尤其介绍了数据库系统的几个重要发展,那你能否说说从上世纪60年代提出数据库的概念以来,数据库系统是如何演变的呢?现在各行各业都在聚集数据,都在使用数据库,可以说数据库已经是计算领域一项重要的不可或缺的技术,那你能否谈谈都有哪些类型的数据库呢?它们在管理方面有什么异同呢?请你总结一下并分享给大家。
  1. 数据库系统的三级模式是指:用户模式、概念模式、存储模式
  2. 在三级模式两层映像结构中,模式是指:概念模式
  3. 在三级模式两层映像结构中,物理模式是指:存储模式
  4. 在三级模式两层映像结构中,全局模式是指:概念模式
  5. 在三级模式两层映像结构中,局部模式是指:外模式
  6. 关于三级模式:概念模式又称为全局模式、逻辑模式。内模式又称为存储模式。
  7. 关于数据独立性,概念模式到内模式的映像实现了数据的物理独立性。外模式到概念模式的映像实现了数据的逻辑独立性。
  8. 数据库系统的数据独立性是指:不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序
  9. 。 1. 模式是对数据的抽象,数据的结构性描述称为模式。2. 数据模型是对模式的抽象,模式的结构性描述称为数据模型。 3. 一个数据库是由一系列模式及其数据构成的。
  10. 第一代数据库系统是指:基于网状模型或层次模型的数据库系统
  11. 第二代数据库系统是指:基于关系模型的数据库系统
  12. 数据库系统与文件系统的主要差别在:1. 数据的组织是否依赖于具体的应用程序。2. 数据存取是否可以记录或记录的集合为单位进行操作 3. 不同文件之间以及不同记录之间是否有联系
  13. 关系数据库系统对层次/网状数据库系统的重大改进是:1. 消除了由用户建立指针的弊端 2. 将逐一记录的操作改进为支持记录集合的操作 3. 数据检索操作不依赖于路径信息或过程信息,即非过程化的操作
  14. 面向对象数据库系统对关系数据库系统的重大改进是:1. 允许复杂的数据类型存在 2. 突破了关系模型第一范式的限制 3. 既支持记录集合的操作,又支持面向对象的操作
  • 局部模式是指外模式
  • 内模式 - 存储模式、物理模式
  • 概念模式 - 模式、全局模式、逻辑模式
  • 逻辑独立性 - 外模式到概念模式
  • 物理独立性 - 概念模式到内模式
  • 全局模式是指概念模式
  • 局部模式是指外模式
  • 概念模式到内模式 - 物理独立性
  • 模式是对数据的抽象

第3讲

  • 【3-1】什么是关系模型?关系模型有什么作用? E.F.Codd提出了关系模型,并获得了计算机领域的最高奖图灵奖。那什么是关系模型呢?关系模型有什么价值呢?关系模型对数据库系统的发展究竟有什么贡献呢?请分享你的观点。
  • 【3-2】什么是关系?为什么把表称作关系?老师参与 E.F.Codd用数学的形式严格的定义了什么是“表”,他是怎么定义的?为什么要如此定义呢?通过定义,他把“表”称为了关系,为什么要把“表”称为“关系”? “表”和“关系”真的是完全一样的吗?请分享你的观点。
  • 【3-3】为什么要区分实体完整性和参照完整性?老师参与 视频中讲关系模型的三个部分之一就是完整性,包括实体完整性、参照完整性和用户自定义的完整性?那什么是完整性?为什么要保证实体完整性和参照完整性?他们对数据库正确性有什么作用?其中这里又提出了一个候选键的概念,为什么要重视候选键,它的作用是什么?请分享你的观点。
  1. 某关系R的外键是指其它关系的候选键,可以是R中的主属性或非主属性
  2. 关系模型中,候选键可有其值能唯一标识该关系中任何元组的一个或多个属性组成
  3. 若某属性非该关系的主键,却是另外一个关系的主键,则该属性称为外键
  4. 关系的任何属性都是不可再分的
  5. 关系R(A,B,C), 主码为A,关系S(D, A),主码为D,外码为A。关系S中违反完整性规则的元组是<3, 3>

    R

    A B C
    1 2 3
    2 1 3

    S

    D A
    1 2
    2 NULL
    3 3
    4 1
  6. 关系R(A:int,B:int,C:int),主码为A

    A B C
    1 2 3
    2 1 NULL
  7. 已知三个域:男人={李基,张鹏},女人={王方,刘玉},子女={李健,张睿,张峰}。这一组域(男人,女人,子女)的笛卡尔积的基数为12 。
  8. 现有关系:患者(患者编号,患者姓名,性别,出生日期),医疗(患者编号,患者姓名,医生编号,医生姓名,诊断日期)。其中医疗关系中的外键是患者编号
  9. 关系Member(S#, Name, D#), Team(D#, Dname, Leader), 其中Member的S#为主键,D#为外键,且S#范围为1000000 - 1100000 。Team={<’01’, ‘技术研发’, ‘赵六’>, <’02’, ‘产品运营’, ‘钱琪’>} 。<’1000101’, null, ‘01’>元组可以是Member的元组。
  10. 合同关系和客户关系的主码分别为合同号和客户号,合同的外码为客户号

    合同

    合同号 合同名称 合同签订人 客户号
    HT01 钢材合同 张三 CUST01
    HT02 煤矿合同 李四 CUST02
    HT03 钢材合同 张三 CUST01

    客户

    客户号 客户名称 客户地址 联系人
    CUST01 首钢 北京 李杰
    CUST02 天麟煤矿 北京 李润
    CUST03 首钢 上海 李婷
  11. 关于关系模型完整性:1. 数据库中有了空值会影响许多方面,如影响聚集函数运算的正确性等 2. 用户自定义完整性是指用户针对具体的数据库应用所定义的完整性约束条件 3. 实体完整性和参照完整性一般由DBMS系统自动支持
  12. 关于学生关系,学号适合作为候选码
  13. 关于关系模式与关系:1. 同一关系模式下,可有很多的关系 2. 关系模式是关系的结构,关系是关系模式在某一时刻的数据 3. 关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的
  14. 关于关系的特性:1. 关系是以内容(名字或值)来区分的 2. 区分哪一列是靠列名 3. 区分哪一行是靠某一或某几列的值 4. 关系的任意两个元组不能完全相同 5. 元组相同是指两个元组的每个分量都相同 6. 在同一个关系中如存在相同的远祖,则仅保留其中的一个
  15. 关系模型就是处理Table的,它由关系(或表)、关系运算、完整性约束组成
  16. 关系数据库中,体现”实体能够区分并唯一标识元组“的规则是实体完整性规则
  17. 根据关系模型的完整性规则,一个关系中的主键不允许空值
  18. 关系模型中,实体完整性是指实体的主码中的属性值不能为空值
  19. 若规定工资表中的基本工资不得超过5000元,则这个规则属于用户定义完整性约束
  20. 关系是一个由行与列组成的、能够表达数据及数据之间联系的二维表
  21. 此表符合关系约束

    Students

    S# lname fname Class Telephone
    1 Jones Allan 2 555-1234
    2 Smith John 3 555-4321
    3 Brown Harry 2 555-1122
    5 White Edward 3 555-3344
  22. 关于关系的特性:1. 表中的每一列均需有一个唯一的名字 2. 表中不允许出现完全相同的两列 3. 表中行的顺序、列的顺序均可以任意交换
  23. 关系模型中,实现不同关系之间的联系是通过外键
  24. 参照完整性规则是指表的外键必须是另一个表主键的有效值,或者是空值。
  25. 关系模型中,关于候选码,可由其值能唯一标识该关系中任何元组的一个或多个属性组成

第4讲

  • 【4-1】关系代数有哪些操作? 关系代数最重要的五个操作是什么?利用这五个操作表达各种查询的基本思路是什么?它是怎样体现集合思维的?请分享你的观点。
    • 关系代数最重要的五个操作:并、差、笛卡尔积(广义积)、选择、投影。
  • 【4-3】笛卡儿积究竟是什么?老师参与 关系是用“笛卡儿积的子集”来定义的,本讲我们又介绍了关系的笛卡儿积运算?那笛卡尔积究竟是什么呢?定义关系的笛卡儿积与本讲的关系的笛卡儿积运算是一回事吗?你能讲清楚他们的差别吗?请分享你的观点。
    • 笛卡尔积(Cartesian Product) 一组域 $D_1, D_2,…, D_n$ 的笛卡尔积为: $D_1×D_2×…×D_n={(d_1, d_2, …, d_n) | d_i∈D_i, i=1, …, n}$
      笛卡尔积的每个元素 $(d_1, d_2, …, d_n)$ 称作一个n-元组(n-tuple)
      元组$(d_1, d_2, …, d_n)$的每一个值di叫做一个分量(component)
      元组$(d_1, d_2, …, d_n)$是从每一个域任取一个值所形成的一种集合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合
      若Di的基数为mi,则笛卡尔积的基数,即元组个数为$m_1m_2…*m_n$
    • 广义笛卡尔积(Cartesian Product)
      定义:关系$R(<a_1, a_2, …, a_n>)$与关系$S(<b_1, b_2, …, b_m>)$的广义笛卡尔积(简称广义积,或 积 或笛卡尔积)运算结果也是一个关系,记作:$R × S$,它由关系R中的元组与关系S的元组进行所有可能的拼接(或串接)而构成。
      数学描述:$R × S ={<a_1, a_2, …, a_n, b_1, b_2, …, b_m> | <a_1, a_2, …, a_n> ∈R ∧ <b_1, b_2, …, b_m> ∈S}$
  • 【4-2】连接操作都有哪些类型? 视频中讲了若干类型的连接操作,问都有哪些类型的连接操作?这些连接操作的作用是什么,差别是什么?视频中说“连接”操作不是基本的操作,对一个任何的查询,那如果不让你使用连接操作,你应该怎么做呢?请分享你的观点。
    • 连接类型:theta-连接,等值连接,自然连接 。
      $\theta$连接:它由关系R和关系S的笛卡尔积中, 选取R中属性A与S中属性 B之间满足theta条件的元组构成。
      等值连接:它由关系R和关系S的笛卡尔积中选取R中属性A与S中属性 B上值相等的元组所构成,即theta为等号的情况。
      自然连接:它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元组所构成,且去除重复属性列。
      区别:等值连接是theta连接的特殊情况,自然连接是等值连接的特殊情况。
  1. $R1 \Join R2$运算后可以得到R3

    R1

    A B C
    1 1 x
    C 2 y
    D 3 y

    R2

    B E M
    1 m i
    2 n j
    1 m k

    R3

    A B C E M
    1 1 x m i
    C 2 y n j
    1 1 x m k
  2. 在关系代数运算中,五种基本运算为:并、差、选择、投影、乘积
  3. 自然连接是构成新关系的有效方法。一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共有的属性
  4. 求$R \Join W$的结果

    R

    P Q T Y
    2 b c d
    9 a e f
    2 b e f
    9 a d e
    7 g e f
    7 g c d

    W

    T Y B
    c d m
    c d n
    d f n

    $R \Join W$

    P Q T Y B
    2 b c d m
    2 b c d n
    7 g c d m
    7 g c d n
  5. 查询既学习课程号为001课程又学习课程号为002号课程的学生的学号,正确的是\(\Pi_{S\#}(\sigma_{c\#="001"}(SC))\bigcap\Pi_{S\#}(\sigma_{c\#="002"}(SC))\)
  6. $\Pi_{Sname, Sage}(S)–\Pi_{Sname, Sage}(\sigma_{c#=”002”}(S\Join SC))$的含义为查询没有学习过课程号为002号课程的学生姓名和年龄

    关系 Student

    S# Sname Ssex Sage D# Sclass
    980301 张三 20 03 9803
    980401 李四 18 04 9804
    980402 王五 21 04 9804

    关系 SC

    S# C# Score
    980301 001 92.0
    980301 002 85.0
    980401 003 88.0
    980402 002 84.5
  7. 关系R与关系S只有一个共同属性,T1是R与S做$\theta$链接的结果,T2是R与S自然连接的结果,则T1的属性个数大于T2的属性个数

  8. 用关系代数查询“程军”老师所授课程的课程号C#和课程名Cname,则正确的是如下。

    course-table-chengjun

    l4-8-ans

  9. 学生表如图所示,用关系代数查询所有在3系就读的且年龄小与21的学生的学号和姓名。

    l4-9-table

    l4-9-ans

  10. 用关系代数查询不在(年龄大于20的3系同学)要求之内的所有其他同学的信息。 l4-9-table

    l4-10-ans

  11. 运算结果

    l4-11-opr

    l4-11-ans

  12. 已知关系S(S#,Sage,Sclass),SC(S#,C#,Score)。如下所示关系代数表达式的含义是其他全不对。

    l4-12-ans

  13. 现有关系数据库如下:学生(学号,姓名,性别,专业),课程(课程号,课程名,学分),选课(学号,课程号,分数)。检索“数据库课程不及格学生的学号、姓名、分数”。

    l4-13-ans

  14. 查询年龄未满20岁的学生姓名及年龄的关系代数表达式

    l4-14-ans

  15. 已知关系:学生(学号,姓名,性别,年龄),课程(课程号,课程名,学分),选课(课程号,学号,成绩)。表示“查询没有选修数据库课程的学生姓名”的关系代数操作

    l4-15-ans

  16. 已知关系:学生(学号,姓名,性别,年龄),课程(课程号,课程名,学分),选课(课程号,学号,成绩)。 表达查询“选修了教师01所教全部课程的学生的姓名”的关系代数操作

    l4-16-ans

  17. 表达“从一个关系的所有行中提取出满足某些条件的行” = 选择,“从一个关系的所有列中提取出某些列” = 投影,“提取出属于一个关系但不属于另一关系的所有元组” = 差,“将两个关系必须按照某种条件串接成一个较大的关系” = 链接。这样的操作

  18. 设关系R、S、W各有10个元组,则这三个关系的笛卡尔积的元组个数是1000.

  19. 关系R、S元组个数100、300,关系T是R与S的笛卡尔积,则T的元组个数是30000.

  20. $R \times S$与$S \times R$运算的结果是同一个关系

  21. 设关系R、S具有相同的目数(度数),且相对应属性的值取自同一个域,则\(R-(R-S)\)等于$R\cap S$

  22. S(S#,Sname,Ssex,Sage),C(C#,Cname,Cteacher),SC(S#,C#,Score),要查询“选修‘COMPUTER’课程的女生的姓名”,其关系代数表达式\(\Pi_{Sname}(\sigma_{Cname="COMPUTER" and Ssex="女"}(S\Join SC\Join C))\)

  23. 设关系R和S的属性个数分别n、m,则$R \times S$操作结果的属性个数为$n+m$

  24. 条件表达式 f1,f2,则\(\sigma_{f1}(\sigma_{f2}(R))=\sigma_{f1\wedge f2}(R)\)

  • 错过题目
  1. $R1 \Join R2$运算后可以得到R3

    R1

    A B C
    1 1 x
    C 2 y
    D 3 y

    R2

    B E M
    1 m i
    2 n j
    1 m k

    R3

    A B C E M
    1 1 x m i
    C 2 y n j
    1 1 x m k
  2. 在关系代数运算中,五种基本运算为:并、差、选择、投影、乘积

  3. 在选择操作的条件中只能运用 $\wedge$符号,而且在这题目即使换成$\wedge$符号也不正确
    查询既学习课程号为001课程又学习课程号为002号课程的学生的学号,正确的是\(\Pi_{S\#}(\sigma_{c\#="001"}(SC))\bigcap\Pi_{S\#}(\sigma_{c\#="002"}(SC))\)
    而我选的(错的)是\(\Pi_{S\#}(\sigma_{c\#="001"\bigcap c\#="002"}(SC))\)

  4. 已知关系S(S#,Sage,Sclass),SC(S#,C#,Score)。如下所示关系代数表达式的含义是, $S \times SC$运算之后,所有人都存在$C#=”002”$,所以答案为

    l4-12-ans

  5. S(S#,Sname,Ssex,Sage),C(C#,Cname,Cteacher),SC(S#,C#,Score),要查询“选修‘COMPUTER’课程的女生的姓名”,其关系代数表达式\(\Pi_{Sname}(\sigma_{Cname="COMPUTER" and Ssex="女"}(S\Join SC\Join C))\)
    而我错选为$\Pi_{Sname}(\sigma_{Cname=”COMPUTER” and Ssex=”女”}(S\Join SC))$缺少与关系C的链接,无法获得课程名。

Categories:

Updated: