zoukankan      html  css  js  c++  java
  • 《数据库原理》课程笔记 (Ch02-数据模型)

    * 层次数据模型(了解)

    用树型(层次)结构表示实体类型及实体间联系。只能表示1:N联系。编写应用程序比较复杂。

    除根以外,所有的记录型都应该有唯一的双亲。PCR:双亲子女关系

    现实世界中需多数据不是层次型的。而层次数据模型在表示多对多、多个祖先的关系时会产生数据冗余,浪费存储空间,且会导致数据的不一致。

    * 网状数据模型(了解)

    用有向图(网络结构)表示实体及实体之间联系。编写应用程序比较复杂。

    关系数据模型

    以集合论中的关系概念为基础。用表格结构表达实体集,用外键表示实体间联系。

    基本概念

    • 属性和域

      属性描述事物的特征,域是一个属性的所有合法取值的集合。

    • 关系和元组

      例如:学生的关系模式 STUDENT(学号,姓名),其中某一个学生 <9098138,李彤> 就是关系R的一个元组

      关系对应表,属性对应列,元组对应行。

    • 关系的某一个属性或属性组的值唯一地决定其它所有属性的值,而其任何真子集无此性质。通常从键中选一个作为主键。

    外键是引用其它关系的键或本关系的键

    完整性约束

    • 域完整性约束

      属性值应是域中的值,或在语义合法的前提下可为空。

    • 实体完整性约束

      每一个关系都应有一个值非空的主键,用来唯一识别一个元组。

    • 引用完整性约束

      外键要么是空缺,要么是引用实际存在的主键值。

    • 一般性完整性约束

    关系代数操作

    • 选择操作(sigma _{cond} (R))

      横向挑选,选出符合条件cond的记录。相当于SELECT * FROM R WHERE cond

      性质:

      后者效率更高。

    • 投影操作(Pi _{attrs}(R))

      竖向挑选,选出R中的attrs这些属性。

      与选择操作组合使用即可实现我们常用的SELECT attrs FROM R WHERE cond

    • 集合操作

      交并差。参与集合操作的项目必须有相同的目,且对应属性的域相同才有意义。

    • 连接操作$R ∞_{cond} S=sigma _{cond}(R imes S) $

      即作笛卡尔积后进行选择操作。笛卡尔积是将两个表强行拼在一起,属性数为两个表属性数的和,记录数为两个表记录数的积,如[a,b,c]×[1,2,3]=[[a,1], [a,2], [a,3], ...]

      连接条件

      • 等连接

        条件均为=构成。①做笛卡尔积;②选择出同时满足R.Ai=S.Ai的元组。

      • 自然连接

        在等连接后去除重复属性。

    • 除法

      R÷S就是判断关系R中,属性或属性集X的各种取值的属性或属性集Y构成的集合,是否包含关系S中属性Y的所有取值

    • 外连接

      外连接与连接操作的区别在于保留非匹配元组

      • 左外连接:保留左关系的非匹配元组
      • 右外连接:保留右关系的非匹配元组
      • 全外连接:保留左、右关系的非匹配元组

    关系演算

    关系代数表示关系的操作,用户必须指出运算方法步骤;而关系演算用谓词公式表示查询条件,指出“做什么”,而“怎么做”则由系统去完成。目前,面向用户的关系数据库语言基本上都以关系演算为基础。

    • 元组关系演算

      {t[〈属性表〉]|P(t)}

      t是元组变量,如查询整个t,则可省去属性表。P(t)是t应满足的谓词。

    • 域关系演算

      以域为变量。

      关系GRADE(学号,课程号,成绩),查询须补考的学生的学号和补考的课程号:

    E-R数据模型

    传统数据模型以记录为基础,不能很好地面向用户和应用,记录和实体不一定相对应。

    E-R数据模型是一种有代表性的统一的非传统数据模型。E-R不是面向实现,而是面向现实世界的。

    • 实体:可以相互区别、被人识别的事物
    • 属性:实体的特征
    • 实体键:能够唯一识别实体的属性或属性组
    • 联系:表示实体和实体间的关系,一对一、一对多、多对多
    • 实体参与度:实体参与联系的次数范围,例如学生的选课次数

    范式

    构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。

    • 第一范式(1NF)

      每个属性值都是不可再分的最小数据单位

      例如职工可能有多个电话,则电话应分属性或分记录存储,不能合起来存储

    • 第二范式(2NF)

      非主属性全部依赖于全部主键

    • 第三范式(3NF)

      非主键列必须直接依赖于主键,不能存在传递依赖

      例如:主键是课程编号,列1是教师名,列2是教师地址。教师地址传递依赖于教师名,不满足第三范式。

  • 相关阅读:
    idea_pyspark 环境配置
    Win7 单机Spark和PySpark安装
    Spark在Windows下的环境搭建
    linux 登陆key生成
    nginx 根据参数选择文档根目录
    系统操作日志设计(转)
    smarty、smarty格式化、smarty整数、smarty float、smarty各种转换方式、smarty日期转换等等 (转)
    Mac下面的SecureCRT(附破解方案) 更新到最新的7.3.2(转)
    nginx php-fpm 输出php错误日志
    解决PHP显示Warning和Notice等问题
  • 原文地址:https://www.cnblogs.com/zxuuu/p/12943939.html
Copyright © 2011-2022 走看看