[Russell Han] 24 | 数据库基础 | 关系模型

知识

名词解释

  1. Data Model:一组描述如何用计算机化的信息表示现实世界中的数据的集合,它同时也描述了访问和更新这些信息的操作类型

CAP数据库

  1. 他的表
    [Russell Han] 24 | 数据库基础 | 关系模型
  2. 他的数据模型
    [Russell Han] 24 | 数据库基础 | 关系模型
  3. CAP数据库表中每一行都是不同的,每张表都有唯一的标识符

数据库各部分的命名

  1. Table/表:又称关系/relation
  2. Column name/列名;又称属性/attribute
  3. Row/行:又称元组/tuple
  4. Table heading/表标题(不是表名):又称属性集合/schema
  5. 两个定义
    CAP = {Customers, Agents, Products, Orders}——数据库的表名集合
    Head(Customers) = {cid, cname, city, discnt}——一张表的属性集合
  6. 程序的数据独立性:当通过查询回答一个问题时,即使所有的数据改变了,查询依然能够回答该问题,查询语句与表内容无关,仅与列名有关
  7. 列的域是枚举类型
    域一般可定义为:可以用作表的属性值的常数集合(一般域在某些编程语言中对应一些特定的枚举类型)
  8. 笛卡尔乘积
    设CID = Domain(cid), CNAME = Domain(cname) , CITY = Domain(city), DISCNT = Domain(discnt)
    这四个域的笛卡尔乘积CID x CNAME x CITY x DISCNT = 包含所有元组(w, x, y, z)(其中w来自CID,x来自CNAME,y来自CITY,z来自DISCNT)的集合;这四个域的关系是笛卡尔乘积的子集(CUSTOMERS表 包含于 CID x CNAME x CITY x DISCNT)

关系规则

  1. 规则一:第一范式:不能有多值域
    多值域的例子
    [Russell Han] 24 | 数据库基础 | 关系模型
    将这个表根据规则一的规则改进
    [Russell Han] 24 | 数据库基础 | 关系模型
    这种改进浪费空间,更有效的做法是再做出一个独立的表,如图
    [Russell Han] 24 | 数据库基础 | 关系模型
  2. 规则二:只能基于内容存取行(Access rows by Content only)
    不能说“取第三行”因为行、列都没有序
    不允许使用指针指向某些行
    注:大部分关系数据库产品破坏了这一规则,它允许用户通过RIDS来取行
  3. 规则三:行唯一规则(The unique row rule)
    任何两个元组在同时刻不能完全相同
    注:但是许多数据库产品允许行不唯一,以便有效加减
            在这一章,假设这三条规则都被遵守

键、超键、空值

  1. 键:表中用于区分行的列的集合(如CUSTOMERS表中的cid)
    键是由DBA定义的,由DBA决定哪些列具有这一属性
    其他表可以通过键来引用这张表中的一行
  2. 超键:具有唯一属性的列的集合,如CUSTOMERS的超键为(cid, cname);能唯一识别元组的属性集
  3. 键是最小的超键,组成键的列的集合再也没有子集是表的超键(即键是没有多余的)
  4. 一个列可作为键的条件:这个列在所有行的值都不同,但凡有两个相同的都不能做键

关系代数

集合运算

自然关系运算

运算依赖

例题