VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > T-SQL >
  • 第二章-关系数据库

2.1关系数据结构形式化定义:

  • 2.1.1关系:

    • 单一的数据结构 - 关系:
      • 现实世界的实体以及实体间的各种联系均用关系来表示
    • 逻辑结构 - 二维表:
      • 从用户的角度,关系模型中的数据的逻辑结构是一张二维表
    • 关系模型是建立在集合代数的基础上
    • 域:域是一组具有相同数据类型的值的集合
      • 例:整数、实数、介于默某个取值范围的整数、指定长度的字符串集合、{“男”,“女”},大于100、小于100这些都是
    • 笛卡尔积:给定一组域D1,D2....Dn,这些域可以是相同的(也可以是不同),D1,D2....Dn的笛卡尔积如下:
      • D1 X D2 X .... X Dn = {(d1,d2,....dn) | diEDi, i=1,2,...,n}    
      • 例:笛卡尔积就是所取的域(属性)的取值,进行一个大组合,某一个组合都要组合到 
        • 问题:笛卡尔积:得出的乘积很多是没有意义的,一个导师去教了两个专业,研究生也去了两个专业
      •  
      • 元组:笛卡尔积中每一个元素(d1,d2,...,dn)称为一个元组
        • 例:就是求出笛卡尔积后符号要求的每一行数据就是元组(张清玫,计算机专业,王敏)就是,在二维表中就是一行
      • 分量:笛卡尔积元素(d1,d2,...,dn)中的每一个值di称作一个分量
        • 例:张清玫,计算机专业,王敏,他们就都是每一个分量
      • 基数:一个域允许的不同取值个数称为这个域的基数,若Di(i=1,2,...,n)为有限集,基数为mi(i=1,2,...,n),则D1XD2X...XDn的基数M
        • 例:
      • 笛卡尔积的表示方法:笛卡尔积可表示为一个二维表,表中的每行对应一个元组,表中的每列对应一个域

        • 例:

    • 关系:

      • 关系:D1XD2X...XDn的子集称做在域D1,D2,...,Dn上的关系,表示为R(D1,D2,...,Dn)

        • 例:学生学习(年龄,姓名,学号)

      • 元组:关系中的每一个元素是关系中的元组,通常用t表示

      •   当n=1时,称该关系为单元关系

      • 单n=2时,称该关系为二元关系

        • R(D1,D2,...,Dn) 就是这里的n 

      • 关系的表示:关系也就是一个二维表,表的每一行对应一个元组,表单每列对应一个域,一个属性

        • 例: 

      • 属性:关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性 

        • n个关系必有n给属性      

      • 码:

        • 候选码:若关系中的某一属性组的值唯一地标识一个元组,则称该属性组为候选码

          • 例:身份证、学号、id号,他们都可以唯一标识一个学生,那么它们就都是候选码                  

        • 全码:关系模型的所有属性是这个关系模型的候选码

          • 例:我要找一个人,就需要眼睛、鼻子、耳朵都要符合,那这些要求都是属性,要就是候选码

        • 主码:一个关系又多个候选码,则选低一个为主码

        • 主属性:是候选码的属性为主属性

        • 非主属性:不是候选码的属性

      • 三类关系:

        • 基本关系:实际存在的表

          • 例:实际存在数据库的表

        • 查询表:查询结果对应的表

          • 例:通过id表去用户表,通过id得到用户信息的表  
        • 视图表:由基本表或其它视图表导出的表,是虚表,不是实际存储的数据 

      • 基本关系的性质:

        • 列是同质的(就是这一列是男女就只能是男女) 

        • 不同的列可出自同一个域,其中的每一列称为一个属性,不同的属性要给于不同的属名  

          • 例:性别、名字,都是字符串它们的域就可以是字符串

        • 列的顺序无所谓,列的次序可以任意交换

        • 任意两个元组的候选码不能相同(如:两个人的身份证号是不可能相同的)

        • 行的顺序无所谓,行的次序可以任意交换

        • 分量必须去原子值,只是规范条件中最基本的一条(就是要保证二维码的完整,不能去合并或拆分单元格)

        • 例:

  • 2.1.2关系模式:

    • 关系模式是对关系的描述,关系模式是型,关系是值
      • 例:核心模式是一个模型,关系是不同的颜色,不同的颜色生成出不同的模型
      • 元组集合的结构:属性构成、属性来1自的域、属性域域之间的映像关系
      • 一个关系通常由赋值它的元组语义确定(31班是一个关系,32班是一个关系)
      • 现实的世界中还存在着完整性约束
        • 例:成绩 0 - 100 退休年龄 65
    • 定义关系模式关系模式可以形式化地表示为:R(U,D,DOM,F)
      • R:关系名(如:学生信息)
      • U:组成该关系的属性名集合(如:学号,姓名,年龄。前面有说到的R(D1,D2,D3...)就是里面的值)
      • D:属性组U中属性所来自的域(如:表示取值范围,男或女,u和D的域)                                                 
      • DOM:属性向域的映像集合(如:表示取值范围的对应映像,如张三就是男的,张三在域中就是男)
      • F:属性间的数据依赖关系集合(如:给一个学号就可以知道该学号的是张三还是李四) 
    • 关系模式与关系:
      • 关系模式是静态的、稳定的(如:定义一个,学生信息(学号,姓名,专业),定义完了是这样就是这样了就不会动了 - 静态的)         
      • 关系是动态的、随时间不断变化(如:一个班里有30个人,现在加进来一个就31个,那关系就是发生了变化,注意模式是不发生变化的)
      • 关系是关系模式在某一时刻的状态或内容(如:一个班的30个同学8岁,到时候可能就是31个同学9岁),在实际工作中关系模式和关系往往统称为关系需要上下文加以区分
  • 2.1.3关系数据库:

    • 关系数据库:在一个给定应用领域中,所有关系的集合构成一个关系数据库
      • 例:学生表,选课表,成绩表多个关系构成了一个关系数据库
    • 关系数据库的型与值
      • 关系数据库的型:关系数据库模式,对关系数据库的描述
      • 关系数据库模型:若干域的定义,在这些域上定义若干个关系模型
      • 关系数据库的值:关系模式在某一时刻对应的关系集合,简称为关系数据库

2.2关系数据结构:

  • 2.2.1基本关系操作:

    • 常用的关系操作
      • 查询:选择、投影、连接、除、并、交、差等,其中:选择、投影、并、差、笛卡尔积是5种基本操作
        • 选择:例:在二维表中找到满足要求的记录
        • 投影:例:要找张三的成绩,但张三的列可能有学号、年龄等,这些我不需要,只要张三的成绩(就是选择列)
        • 并:例:两个表并在一起
        • 差:例:一个数据在一个表中,但不在另一个表中
      • 数据更新:插入、删除、修改
      • 查询的表达能力是取值最重要的部分
    • 关系操作的特点
      • 集合操作方式:操作的对象和结果都是集合,一次一集合的方式 
  • 2.2.2关系数据库语言的分类:

    • 关系代数语言
      • 用对关系的运算来表达查询的要求
    • 关系演算语言 :用谓词(例:结果的真和假)来表达查询要求 
      • 元组关系演算语言:谓词变元的基本对象是元组变量,代表:APLHA,QUEL
      • 域关系演算语言:谓词变元的基本对象的域变量,达标:QBE
    • 具有关系代数和关系演算双重特点的语言:
      • 达标:SQL - 结构化查询语言    

2.3关系的完整性:

  • 关系模型中有三类完整性约束:实体完整性、参照完整性、和用户定义完整性
  • 实体完整性和参照完整性:必须满足的完整性约束条件,称为两不变性(数据库定义的) 
  • 用户定义完整性:语言领域需要遵循的约束条件,体现了具体领域的语义约束(是我们自己定义的)
  • 2.3.1实体完整性:

    • 实体完整性规则:是指若属性A是基本关系R的主属性,则属性A不能取空值
      • 空值:是 不知道 或 不存在 或 无意义,不是不写(如:学号是主属性就不能为空)
    • 实体完整性的说明: - 主码,主属性不能为空
      • 实体完整性规则是针对基本关系而言。一个基本表通常对应现实世界的一个实体
      • 现实世界实体是可区分的,具有某种唯一性标识
      • 关系模型中以主码作为唯一性标识
      • 主码不能取空值,如果取了空值说明存在不可标识和区分的实体,与第(2)点相矛盾
  • 2.3.2参照完整性:

    • 在关系模型中实体及实体间的类型都是用关系来描述的,因此可能存在着关系与关系间的引用
    •  
    • 外码:参照其它表的主码,在本身表中,就把它加外码
      • 注意:外码不一定要与相应的主码同名(如:专业号,我可以是专业),当然同名比较好  
    • 参照完整性规则:

      • 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
      • 或者取空值(F的每个属性值均为空值)
      • 或者等于S中某个元组的主码值
      • 例:刚开学我要选一个班的班长,还没选好你就是取空值,选好了就必须有一个值(但必须是存在的值)
  • 2.3.3用户定义的完整性:

    • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
    • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
    • 例:说白了就是我们自己去定义要求,我规则成绩最高100,学分只有整数,没有小数             

 2.4关系代数:

  • 关系代数是一种抽象的查询语言,是对关系的运算来表达查询
  • 关系代数的运算对象是关系(二维表),运算结果也是关系(二维表)
  • 关系代数按运算符的不同可分为传统的集合运算和专门的关系运算
    • 集合运算:从关系的水平方向即行的角度进行(行运算)
    • 专门的关系:运算不仅涉及行而且涉及列(列和行都可运算)
    • 运算符:
  • 2.4.1传统的集合运算:

    • ∪并:关系R和关系S具有相同的目n(即两个关系都有n个属性),相应的属性取自同一个域,t是元组变量,t∈R表示t是R的一个元组
      • R与S的运算表示为:R∪S:R∪S={t | t∈R V t∈S}
        • 理解:V:是或的意思 - 就是t元组在R中有或在S在有就成立
        • 运算结果为:n目(有n个属性)关系,由属于R或属于S的元组组成
    •  
    • -差:关系R和关系S具有相同的目n(即两个关系都有n个属性),相应的属性取自同一个域,t是元组变量,t∈R表示t是R的一个元组
      • R与S的运算表示为:RS:RS={t | t∈R ^ tS}     
        • 理解:^是与 - 差和数学里面的差一样,就是互相减,剩下的就是差

        • 运算结果为:n目(有n个属性)关系,由属性R不属于S的元组组成

    •  

    • ∩交:关系R和关系S具有相同的目n(即两个关系都有n个属性),相应的属性取自同一个域,t是元组变量,t∈R表示t是R的一个元组

      • R与S的运算表示为:R∩S:R∩S={t | t∈R ^ tS}

      • 运算结果为:n目(有n个属性)关系,由属性R又属于S的元组组成 

    • ×笛卡尔积:所有的元组都可以进行笛卡尔积
      • R:n目关系(n个属性),k1给元组(行),S:m目关系(n个属性),k2个元组(行)
      • R与S的笛卡尔积运算表示R*S
        • 运算结果为:行:k1*k2个元组,列:(n+m)列元组的集合,其中元组的前n列是更新R的一个元组,还m列是关系S的一个元组

  • 2.4.2专门的关系运算

    • 关系运算包括:选择、投影、连接、除运算
    • 相关记号说明:(下面4段要连起来看,因为不好理解直接用图片)
      • 关系模式为R(A1,A2,...,An),它表示一个关系R,t∈R表示t是R的一个元组。t[Ai]表示元组t中相应于属性Ai的一个分量
        • 理解:t[Ai]表示元组t中相应于属性Ai的一个分量 - t[1] = 一行元组 - t[1.1] = 一行元组里面的第一个属性
      • 若A={Ai1,Ai2,...,Aik},其中Ai1,Ai2,....,Aik是A1,A2,...,An的一部分,则A称为属性列或属性组
      • 象集例子:

    • 选择(行):选择又称为限制。在关系R中选择满足给定条件的元组  

      • 记作:

      • 其中:F为寻找条件,基本形式为:

 

 

      • 其中是班级运算符,它可以是<>≤ ≥ =或<>。X1,Y1等是属名,或为常量,或为简单函数,属性名也可以用它的序来代替
      •  

      • 选择的案例: - 字符的需要加一个单引号(中英文都要)

    • 投影(列):从R中选择出若干属性列组成新的关系

      • 其中:A:R中的属性列。投影存在主要是从列的精度运算。投影之还不仅取消了原关系中的某些列,而且还可以某些元组(避免重复行)

    • 连接(Join)(根据运算符来进行结果运算):又称为连接,表示从两个关系的笛卡尔积中选择属性间满足一定条件的元组(条件就是:)

      • 运数结果:从R和S的广义笛卡尔积RxS中选择(R关系)在A属性上的值与(S关系)在B属性组上值满足比较关系的元组  

        • 列:就是R表中属性A值,和S表属性B要满足比较关系
      • 两类常用连接运算:
        • 1.等值连接():为“=”的连接运算称为等值连接
          • 等值连接含义:从关系R与S的广义笛卡尔积中选择A、B属性值相等的那些元组(说白就是取两个表相同的值)

        • 2. 自然连接:一种特殊的等值连接,两个关系在进行比较的分量必须是相同属性组,在结果中把重复的属性列去掉

          • 例:就是A表和B表的必须要求属性名是一样的从进行比较,A属性名=K B属性名=K 就进行比较
          • 含义:R和S具有相同的属性组B

          • 自然连接还需要取消重复列,所以是同时进行和列的角度进行运算 

        • 案例:

          •   

        • 四个概念:悬浮元组、外连接、左外连接、右外连接

          • 悬浮元组:两个关系R和S在自然连接时,关系R和S在本舍弃的元组称为悬浮元组

          • 外连接:把悬浮元组舍弃的元组也保存在结果关系中,而在其它属性上填上空值(null)

          • 左连接:只保存左边关系R的悬浮元组到结果关系中

          • 右连接:只保存右边关系S的悬浮元组到结果关系中

          • 问题?不符合条件的连接为什么还要放到结果集中?例:学生选课,符合条件的都到了选课表中,不符合的也拿过来不就知道谁没选课了

    •  

      除运算:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。         

      • R与S的除运算得到一个新的关系P(X),P是R在满足下列条件的元组在X属性列上的投影:

      • 元组在X上分量值x的象集Y包含S在Y在投影的集合,记作:

      • Yx:x在R中的象集,x=tr[X]

      • 例:就是A表中的象集,要包含B表中的值     

      • 注意:除操作是同时从行和列角度进行运算    
      •  

         

        出处:https://www.cnblogs.com/Mr-shne/p/16725313.html                    

 


相关教程