课外天地 李树青学习天地数据库系统原理课件 → [推荐]第二部分课堂讲稿——数据模型


  共有19112人关注过本帖树形打印复制链接

主题:[推荐]第二部分课堂讲稿——数据模型

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1938 积分:26572 威望:0 精华:34 注册:2003/12/30 16:34:32
[推荐]第二部分课堂讲稿——数据模型  发帖心情 Post By:2008/2/20 15:01:03 [只看该作者]

第三部分 关系理论
    1.关系的概念和性质
    1.1 关系概念的定义
    从域的笛卡儿乘积来看关系的定义,关系可以看成是它中所有属性所涉及的域产生的笛卡儿乘积的子集,这部分子集的选择是由用户结合自己的语义需求决定的。
    强调用户的语义选择是因人而异的,但是一定是关系所涉及域产生笛卡儿乘积的子集。
    进一步强调笛卡儿乘积在关系中的应用,主要功能为实现多个关系的连接以形成更大的关系,为进一步的跨关系查询提供基础。结合SQL语句的实现说明之,如:
    select * from stu
    select * from grade
    select * from stu,grade
    select * from stu,grade where stu.number=grade.number

    1.2 关系所涉及的一些子概念
    强调元组、属性和分量等概念来自于域的笛卡儿乘积,区分候选码、主码、全码和非码属性等概念,强调主键属性的选择方法

    1.3 三类关系的具体实现
    基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示
    查询表:查询结果对应的表
    视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

    1.4 关系的性质
    1)列是同质的(Homogeneous)
    强调属性同质的常见表现,说明那些属性异质的处理方法,如BLOB、通用型、变长字段等。
    2)不同的列可出自同一个域
    强调字段名称的意义
    3)列的顺序无所谓
    强调不同数据库管理系统的特殊表现,说明列顺序存储方法和显示结果的不完全对应关系,如查询时的投影字段顺序。
    4)任意两个元组不能完全相同
    强调不同数据库管理系统的特殊表现,说明主键设立的必要性。
    5)行的顺序无所谓
    强调不同数据库管理系统的特殊表现,说明行顺序存储方法和显示结果的不完全对应关系,如查询时的字段排序。
    6)分量必须取原子值
    强调它的含义,与1NF的关系,以及一些如何处理1NF的例子,如学生基本情况表中的家庭成员字段处理方法

    2.关系代数
    说明关系代数对关系模型的重要意义,关系代数运算的分类
    2.1 传统的集合运算
    主要介绍并、差、交和广义笛卡尔积等来自于传统集合运算中的计算方法
    1)并
    以文氏图和关系例子说明含义,结合SQL语句中的实现说明它的意义(一种关系的或者条件):
    一个是用于多个关系的合并,如union和union all:
    select * from stu1
    union
    select * from stu2
    另一个是用于在同一个关系中的多个条件查询的合并,同时说明这种合并可以通过条件或者的运算方法间接实现:
    select * from stu where height>1.75
    union
    select * from stu where sex=0
    等价于
    select * from stu where height>1.75 or sex=0
    强调运算的关系要具有相同的模式结构

    2)交
    以文氏图和关系例子说明含义,结合SQL语句中的实现说明它的意义(一种关系的并且条件):
    一个是用于多个关系的交集,如利用in实现的子查询:
    select * from stu1 where number in (select number from stu2)
    另一个是用于在同一个关系中的多个条件查询的交集,同时说明这种交集可以通过条件并且的运算方法间接实现:
    select * from stu where height>1.75 and number in (select number from stu where sex=0)
    等价于
    select * from stu where height>1.75 and sex=0
    强调运算的关系要具有相同的模式结构

    3)差
    以文氏图和关系例子说明含义,结合SQL语句中的实现说明它的意义(一种关系的并且非条件):
    一个是用于多个关系的差,如利用not in实现的子查询:
    select * from stu1 where number not in (select number from stu2)
    另一个是用于在同一个关系中的多个条件查询的差,同时说明这种差可以通过条件并且非的运算方法间接实现:
    select * from stu where height>1.75 and number not in (select number from stu where sex=0)
    等价于
    select * from stu where height>1.75 and sex<>0
    强调运算的关系要具有相同的模式结构

    4)广义笛卡儿乘积
    以关系例子说明含义,结合SQL语句中的实现说明它的意义(一种关系的连接)

    2.2 专门的关系运算
    选择、投影、连接、除
    1)选择
    强调它是基于行的运算,结合SQL查询子句中where的用法来说明
    说明它的表达方式:σ
    2)投影
    调它是基于列的运算,结合SQL查询子句中select的用法来说明,并且强调还可能产生某些相同元组,介绍避免重复行的方法,如distinct等
    说明它的表达方式:π
    提问学生下面两种写法哪个正确,并说明原因?
    Πname,height(σsex=1 and height>1.75(stu))
    σsex=1 and height>1.75 (Πname,height (stu))
    3)连接
    强调各种常见连接的概念关系,强调笛卡儿乘积、连接、等值连接和自然连接的递进层次关系,其中说明连接和笛卡儿乘积的相同(连接多个关系)和不同(有选择的连接),说明等值连接和非等值连接的区别(语义会随着用户需求的不同而不同),说明自然连接的意义
    利用SQL表达方法说明上述连接的实现,如等值连接:
    select * from stu inner join grade on stu.number=grade.number
    select * from stu inner join grade on stu.name=grade.number(没有意义)
    如非等值连接:
    select * from stu inner join grade on stu.number<grade.number
    如自然连接:
    select stu.number,name,sex,birthday,height,course,grade from stu inner join grade on stu.number=grade.number
    强调上述三种运算的基础作用(赋予用户在任意关系中的定位任意分量的能力)
    说明它的表达方式:蝴蝶结形状
    4)除
    结合关系例子,简单说明除的意义

    要求大家课外了解SQL语言的一些知识,并且多熟悉这些理论是如何体现在SQL语言中的

    3 关系的完整性
    强调关系模型中存在的自身缺点,如主外表间逻辑的不对应(插入一条没有对应学生信息的成绩信息),这在传统的层次模型中是不可能的。所以需要借助外在的一种约束限定关系的完整性。
    关系模型有三种完整性约束,为实体完整性、参照完整性和用户定义的完整性。
    前两个是基本的完整性约束,补充了关系模型的基本缺点,后面的自定义约束是个可以扩展的内容。

    3.1 实体完整性
    即主键不能为空。意义在于赋予关系中每条元组都和现实每个实体存在对应的能力,否则一旦主键为空,既不能有效表达此元组对应哪个实体,同时也在多关系连接时产生混乱。
    很多数据库管理系统在设定主键时自动取消为空的可能。

    3.2 参照完整性
    1)原理和方法
    反映了关系间元组的逻辑对应关系,即参照关系,如选修表中学号参照学生表的学号。但是数据库管理系统不会自动提供这种完整性,原因在于这种参照是具有语义的,系统自己不能判断哪些关系的哪些属性是具有参照关系。
    具体指定参照关系的步骤主要为:
    首先是设定被参照者,即主表。这里需要对主表设定主键,主要原因在于为以后的参照提供一个唯一定位记录的能力。所以主表也被成为主键表。
    然后是通过将主键表的被参照属性拖放于子表的参照属性上完成关系的定义,子表也被成为外键表。
    上述操作可以通过SQL Server2000的关系图来演示,也可以通过VFP的参照完整性设定来演示。两相比较,步骤更加清楚。
    解释以下主键表和外表表在插入、删除和更新等操作中分别可能破坏参照完整性的情况,并强调级联的使用方法。
    2)强调几个问题
    第一是外键的概念和含义,参照完整性也被称为外键约束。
    第二是关系R和S不一定是不同的关系,并通过SQL Server2000的关系图来演示。
    第三是目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上。
    第四是外码并不一定要与相应的主码同名,但是当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。
    第五是外码不一定是主码。

    3.3 用户定义的完整性
    结合SQL Server2000的定义方法来讲解下面四种基本用户定义完整性。
    1)非空约束:在这些列中不允许输入null值。
    2)唯一约束(候选约束):对于一个表中非主键列的指定列,唯一约束确保不会输入重复的值。
    3)Check约束:指定由表中一列或多列接受的数据值或格式。
    4)默认约束:每当用户没有在某一列中输入值时,则将所定义的值提供给这一列。

    结合演示说明SQL Server2000规则、默认和自定义数据类型的使用方法和意义。

[此贴子已经被作者于2010-12-11 19:43:33编辑过]

 回到顶部