• 数据库理论基本概念


    基础概念       

    要理解范式,首先必须对知道什么是关系数据库,如果你不知道,我可以简单的不能再简单的说一下:关系数据库就是用二维表来保存数据。表和表之间可以……(省略10W字)。
    然后你应该理解以下概念:

    • 实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”。
    • 属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
    • 元组:表中的一行就是一个元组。
    • 分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
    • 码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
    • 全码:如果一个码包含了所有的属性,这个码就是全码。
    • 主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
    • 非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
    • 外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。

    函数依赖

    设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
      若对于R(U)的任意两个可能的关系r1、r2,若r1[x]=r2[x],则r1[y]=r2[y],或者若r1[y]不等于r2[y],则r1[x]不等于r2[x],称X决定Y,或者Y依赖X。
      或者说设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
     
    上面一段话是某些教材上的话,比较不好理解。比如在设计学生表时,一个学生的学号能决定学生的姓名,也可称姓名属性依赖于学号,对于现实来说,就是如果知道一个学生的学号,就一定能知道学生的姓名,这种情况就是姓名依赖于学号,这就是函数依赖,函数依赖又分为非平凡依赖,平凡依赖;从性质上还可以分为完全函数依赖、部分函数依赖和传递函数依赖。
     
    平凡函数依赖
    当关系中属性集合Y是属性集合X的子集时(Y⊆X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
    举例:比如(学号、姓名)可以推出姓名,这肯定是废话,哈哈哈
    所以对于任一关系模式,平凡依赖,总是成立的,若不特别声明,一般都是讨论非平凡依赖。
    非平凡函数依赖
    当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
     
     
    函数依赖跟关系里面具体的数据没有关系,它是由场景所决定的,是一种语义上的东西,说白了就是生活中这些属性之间的关系。
     
    完全函数依赖
    设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
    举例:(学号,课程号)→ 成绩,学号不能推出成绩,课程号也不能推出成绩,所以(学号,课程号)→ 成绩是完全函数依赖
     
    部分函数依赖
    设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
    举例:(学号,姓名)→ 性别,学号可以不需要姓名这个属性,就直接推出性别,所以(学号,姓名)→ 性别 是部分函数依赖
     
    传递函数依赖
    设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
    举例:学号 → 系名,系名 → 系主任,并且 系名 !→ 学号,所以 学号 → 系主任 为传递函数依赖
     
     
    范式
    第一范式
      6个性质
      1、列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
      2、不现的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
      3、列的顺序无所谓,即列的次序可以任意交换。
     
     
  • 相关阅读:
    SVN服务器搭建和使用(一)
    TortoiseSVN客户端重新设置用户名和密码
    UML类图
    String_Helper
    windows常用命令集锦
    JavaScript性能优化小知识总结(转)
    Uploadify 3.2 参数属性、事件、方法函数详解
    记一次 Hibernate 插入数据中文乱码报错解决
    Spring——ClassPathXmlApplicationContext(配置文件路径解析 1)
    Mybatis错误——Could not find parameter map java.util.Map
  • 原文地址:https://www.cnblogs.com/cto6608/p/5497454.html
Copyright © 2020-2023  润新知