严格的概念认识——关系、关系模型

上篇文章里,我们已经了解了关系数据库设计的一般流程。在这篇文章里,我想把大家带入一个严格的、明朗的关系数据库世界里。看了本篇文章,希望能在大家脑海中建立一个这样的印象:数据库及其设计是一件严谨的事,数据库本身由于它的严谨性决定了它的科学性及可靠性。

这篇文章的内容会涉及一些集合论的知识,没这方面根底的朋友不用担心,我尽量用通俗的文字加以解释,希望大家学习愉快。另外,由于本人知识限制,有些集合论的知识可能讲得不是那么严谨,希望这方面的朋友不吝指导,我这里点到为止。

在给定关系的概念之前,我引入两个概念

  • :域是一组具有相同数据类型的值的集合。相对于数据类型,它更包含一个“取值范围”,当然后半句不是严谨的,但确是非常符合数据库要求的。
  • 笛卡尔积:我们知道每个域都有一个取值范围,通俗地讲就是能有“好多”值;笛卡尔积就是
      “几个域的所有取值的组合方式”的集合
  • 元组:笛卡尔积所代表的集合的每一个集成元素叫元组,又跟据域的个数,有1元组、2元组、n元组之说。这个元组相当于数据库里的每一行。
  • 分量:元组中的每一个值叫做分量。

关系

好了,无聊的东西到此为止,以下是跟我们主题直接相关的,上篇中,我提到:关系就是指联系么?以下将给出关系的定义:

  D1*D2*...*Dn的子集叫做在域D1,D2,...,Dn上的关系。

  注:Dn表示一个域,D1*D2*...*Dn表示所有这些域的笛卡尔积。

可见“关系”其实是集合论中的一个概念,从本质上来说,关系是一个集合,所以它有好多集合操作,这些操作包括:

  选择(select)、投影(project)、接连(join)、除(divide)、并(union)、差(except)、交(intersection)、及笛卡尔积。

灵活地撑握这些运算非常重要,很可能,正因为你比人家多撑握一个操作,而比别人写出性能更优的sql代码,甚至帮助企业解决一个数据库的查询瓶颈。

属性

好了,到这里关系的概念大家应该已经清楚了。顺水推舟,我们来讲讲并系里面的“属性”。

  • 候选码:如果关系中的某一个属性组的值能唯一地标识一个元组,那么这组属性称为候选码。
  • 主码:设计时,可以选定一个候选码为主码。
  • 主属性:候选码中的属性称为主属性。
  • 非主属性:不包含在任何候选码中的属性称为非主属性,或非码属性。

这些概念在将来学习范式的时候非常重要,这里大家只要留心记得就可以。

关系模式

刚刚我讲了,关系理论上讲是一个集合,集合也是一个具体的“值”;而关系模式呢?相对于值,它是型,类型的意思。也就是具有相同数据结构的关系。

请了解一下关系模式的表示方法

  R(U,D,Dom,F)

  • R:关系的名称
  • U:关系的属性集合
  • D:属性所对应域的集合
  • Dom:属性与域的映射关系
  • F:在关系内部属性与属性的依赖关系。

给出这个表示方法的目的并不是让大家如何地理解它,而是希望大家能从中体会出关系与关系模型的区别,从而更好地了解关系及关系模型的概念。

好了,这篇文章到此为止。从本质上了解一样东西是不是很爽,呵呵,下一讲,我会跳过“概念模型设计”,而讲范式及函数依赖。感谢大家花时间阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值