D3关系模型之基本概念

一、关系模型简述

  • 一个关系就是一个table
  • 关系模型--》处理table的东西,主要由三部分组成
    • 描述DB各种数据的基本结构形式(Table/relation)
    • 描述table之间所可能发生的各种操作(关系运算
    • 描述这些操作应遵循的约束条件(完整性约束

 所以:关系模型的三要素为:基本结构,基本操作,完整性约束(后面详细讲述)

 

  • 关系运算(关系模型的运算):分为关系代数运算 和 关系演算;
    • 关系代数运算:基于集合的运算。每次运算的单位都是集合 
    • 关系演算又分为元组演算和域演算,两者基于逻辑的演算(运算符号一般有 存在,与,大小与……)
    • 元组演算运算单位为元组(一般用一个字母t表示)
    • 域演算运算单位为示例(一般用一堆字母比如a,b,c)

提一句:数据库语言 其实就是把抽象的语言转换为计算机能识别的语言

二、关系的定义:

表:表通俗来讲就是一个关系

表的各个部分名字

 如何严格定义一个表呢?

  • 首先定义列的取值范围,称为“域(Domain)”

域: 一组具有相同数据类型的值的集合。    该集合中元素的个数称为域的基数

例如,上表中,域D1=man集合={李基,张鹏},基数=2;D2=women集合={王方,刘玉},基数=2;也可以有域D3=humen集合={李基,张鹏,王方,刘玉,李建,张睿,张峰},基数=7……

  • 再定义 “元组”及所有可能组合成的元组:笛卡尔积

解释:比如笛卡尔积会存在一个元素为:{李基(从D1中任取一个),王方(从D2中任取一个),李建 (从D3中任取一个)} 

上图右侧白表中 为 全部笛卡尔积,共2*2*3=12个

解释:例如元素 {李基,王方,李建 } ,这就是3-元组,李基就是一个分量

这个笛卡尔积基数为12。(2*2*3=12)

        但不是所有的笛卡尔积都有意义,所以提出关系概念

        比如,在上面丈夫,妻子,孩子关系中:{李基,王方,张睿}是没有意义的。

 

可以说:关系就是有意义的笛卡尔积

区分一下:度(degree)=有几列,基数=有几行=元祖的数目

ps:关系模式R(A,:D1,A,:D2,...,A:D,) 中属性向域的映象在很多DBMS中一般直接说明为属性的类型、长度等例如:
Student( S# char(8), Sname char(10), Ssex char(2).Sage integer, D# char(2), Sclass char(6) )

区分关系模式与关系 :

总结:定义关系的步骤:

1.指出有多少列,2.说清楚每列数据的取值范围,3,支出所有的元组 4.指出有意义的元组

 

 三、关系的特性

1)列是同质:每一列中的分量来自同一域,是同一类型的数据

比如sex列中如果用汉字(男女)表示,就不可以用数字(1,0)表示(不是同一类型),不可以是 不男不女(域内没有)

2)不同的列可来自同一域,称其中的每一列为一个属性,不同的属性要给不同的属性名

例如:家庭这个关系的三个列可以都来自person这一个域,但需要不同的属性名(丈夫,妻子,孩子)

3)行(列)位置互换性,关系以内容区分,不依靠位置来区分

4)实际上,表并不完全等同于关系。关系是个集合,任意两个元组不能完全相同。但在实际应用中,表中会有重复的行 

5)属性不可再分,又称关系第一特性

这个属性不可再分,既包含列不可再分,又包含行不可再分 

四、关系上的一些重要概念

1.候选码 (唯一标识一个元祖)

关系中可能有多组候选码,比如在一个关系中: 学号可以是,身份证号可以是,姓名+手机号也可以是 ,所以提出主码。

2.主码(Primary Key)/主键                当有多个候选码时,可以选定一个作为主码。
  • DBMS以主码为主要线索管理关系中的各个元组
  • 例如可选定属性S#作为“学生”表的主码,也可以选定属性组(SnameSaddress)作为“学生”表的主码。选定EmpID为Employee的主码。
3.主属性与非主属性

4.外码(作用:用来连接多个表)

 

五、完整性

1)实体完整性:

关系的主码中的属性值不能为空值

空值 

  • 不知道或无意义的值,关系模型中‘?’表示
  • 不能参与算术、比较、逻辑运算
  • 空值特殊处理
2)参照完整性:

外码只有两种可能:空值或者关联表中主码的属性值 。(外码一致性)

3)用户自定义完整性:

用户针对具体应用环境定义的约束条件。(针对属性与属性组合) 

eg,年龄在0-100之间,名字在5个字符之间……

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值