Chinaunix首页 | 论坛 | 博客
  • 博客访问: 63525
  • 博文数量: 16
  • 博客积分: 305
  • 博客等级: 二等列兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-30 10:18
文章分类

全部博文(16)

文章存档

2013年(1)

2012年(15)

我的朋友

分类: 数据库开发技术

2012-06-02 13:29:33

数据库概论——第二章学习笔记

一,关系数据库的源头:

关系数据库的源头是离散数学中的笛卡尔积(D1 X D2 X D3 X ….X Dn),关系(relation)被定义为笛卡尔积上的子集,关系的属性(attribute)对应于笛卡尔积中的域(domainDn。于是数据库中的表与关系就有如下对应关系:

 表(table           ç==è           关系(relation

行(row             ç==è            元组(tuple

属性(attitude   ç==è             域(domain        

 

二,数据库模式:

 

    数据库模式(database schema):数据库的逻辑设计。

         数据库实例(database instance):给定时刻数据库模式下的一个快照。

关系模式(relation shema:是一个给定域向量表达式(D1D2……,Dn),表示一种定义,可以理解成编程语言中的一个自定义数据类型。

例如:R  = D1D2……Dn)为一个关系模式。

         关系(relation):即给定关系模式下的一个实例对象,可以理解成自定义类型的变量。

                            例如:r(R)为关系模式R下的关系r对象。

         关系实例(relation instance):对应于编程语言中的变量的值。

 

三.元组与码:

 

元组(tuple):即为关系中的一个实例(表的一行),一个关系中没有两个相同的元组。

超码(superkey):关系中可以唯一得标识一个元组的一个或多个属性的集合(注意:只要能唯一标识一个元组的属性集合即可成为超码,所以超码可能包含多余的属性,而不是能唯一标识一个元组的最少属性集)。

      数学描述:如果关系模式R的子集KR的超码,则满足如下关系:

                tuple1,tuple2  r(R),tuple1[r(R)] = tupel2[r(R)]

必有tuple1[r(R)] = tupel2[r(R)]

候选码(candidate key):其子集不再为超码的超码,即为最小超码(此时并非域成员最少的关系集合,比如(D1D2),(D3)都是子集不是超码的超码,则他们满足候选码的要求)。

主码(primary key)被数据库设计者选来用于在同于关系中区分元组的候选码,因此主码必定唯一。

外码(foreign key:一个关系模式R1的属性中包含了另一个关系模式R2的主码,这个属性叫做R1参照R2的外码。

 

 

 

四.关系代数的基本运算:

 

1.选择运算(select      ç==è p(条件)       说明:选择为行过滤。

2.投影运算 (project)        ç==è (Dn,Dm,…)    说明:投影为列过滤。

3.集合并运算(union ç ==è r1Ur2

操作结果:r1r2做交集,同出现或者出现在r1,r2之一的。

    需要满足的约束:a).关系r1r2的属性数目必须相同。

                                                            b).r1r2对应列位置上的属性的域必须相同。

            4.集合差运算(set-deferenceç==è r1 – r2

    需要满足的约束:a).关系r1r2的属性数目必须相同。

                                                           b).r1r2对应列位置上的属性的域必须相同。

         5.笛卡尔积(Cartesian-productç==è r1 X r2

         一下运算由于运算符无法编辑,用图片展示:

 

 

 

      

 

实例:

 

对应的四种操作结果:

五.空值(null):

        Null表示不知道或者不存在的值

1.任何包含空值的算术运算(+-,*,/)应该返回空值。

        2.任何包含空值的比较运算(>,<,>=,<=,!=)结果是特殊值unkown

          Ture and unkown = unkown,false and unkown = false, unkown and unkown = unkown

          Ture or unkown = ture,false or unkown = unkown, unkown or unkown = unkown

          Not unkown = unkown.

 

and

Ture

unkown

False

True

Ture

unkown

False

Unkown

unkown

unkown

False

false

false

false

false

 

or

Ture

unkown

False

True

Ture

ture

true

Unkown

Ture

unkown

unkown

false

ture

unkown

false

 

阅读(1277) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~