数据库系统概论学习笔记(二):更多的概念

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/credolhcw/article/details/55098356

其实这还是概念(关系数据库)

  《数据库学习笔记(一)》中所写,一个数据库的核心是数据模型,往往是什么数据模型就是什么数据库,因此关系数据库的数据模型就是关系模型。作为一种数据模型,关系模型同样具备三要素即:数据结构数据操纵数据的完整性约束条件


关系的数据结构,就是一张张表吗?

是的,就是Table!!!That’s it!!!
 

高逼格的术语时间

  域(Domain),意思完全没有变化上一章都讲两遍了乀(ˉεˉ乀) 。
  
  笛卡尔积Cartesian Product),是域上面的一种集合运算。直接上个例子吧,设有域D1 = { 男,女}; D2 = { 男,女 };D3 = { 1,2,3 },求D1、D2、D3的笛卡尔积Dall。(D1和D2其实是相等,这样即是说求笛卡尔积的运算时允许相同的域的)
  
     Dall
    = D1 x D2 x D3
    = {(男,男,1),(男,男,2),(男,男,3),
     (男,女,1),(男,女,2),(男,女,3),
     (女,男,1),(女,男,2),(女,男,3),
     (女,女,1),(女,女,2),(女,女,3)}
     
    (:笛卡尔积不满足交换律,即(d1,d2)≠(d2,d1))
  
  关系Relation),是笛卡尔积的有限子集,所以也是一张二维表。表示为R(D1,D2,…,Dn
    R,为关系名
    n,为关系的或者叫做

  属性Attribute),由于关系是笛卡尔积的一个有限子集,而且笛卡尔积允许存在相同的域,因此为了区分这些相同的域,就必须给关系表的每一列加上一个名字。所以我们称列为属性,对应的列名就叫属性名,每个元组对应属性的分量就是属性值

  候选码Candidate Key),能够唯一标识元组的一组属性,一个关系中候选码不一定唯一。候选码的诸属性称为主属性Prime Attribute),其余属性叫非主属性Non-prime Attribute)或非码属性Non-key Attribute)。如果一个关系模式的所有属性组成了他的候选码,那么就称为全码All-key)。

关系模式的数据结构介绍到这就行了吗?肯定不行,太短了……→_→。和实际使用完全没关系啊!!!

就拿MySQL来说,我们随便SELECT一下生成的关系table,其行和列貌似都很随意啊!!!就目前说的这些内容看来和这种随意的特点真是毫无关系……

故,当关系作为关系数据模型的数据结构时,需要给予必要的限定和扩充(书中原话):
  ①、无限关系在数据库系统中是无意义的。
  ②、通过属性名取消关系元组的有序性。
  ③、列的顺序无所谓。
  ④、任意两个元组的候选码不能相同。
  ⑤、行的顺序无所谓。
  ⑥、分量必须取原子值,不可分割。
 

描述一张表 —— 关系模式

  简单说,就像上一章说的实体型,在关系模型中,可以简单的将table中的记录(元组)与前文中概念模型的实体对应,关系模式与实体型对应。

  书上的标准形式是R(U,D,DOM,F)。
  R关系名也就是表名
  U,为属性名的集合
  D,为属性组所来自的域(书上都没怎么写,也没准确的例子,略过吧)
  DOM,属性向域的映像集合(同D)
  F,属性间的依赖关系。
  
  通常简记为R(U),例 学生(学号,姓名)。
 

更多的关系 —— 关系数据库

所有关系的集合就组成了关系数据库。


玩弄集合 —— 关系操作

没错,进度太慢了,还在学理论……今后的学习绝对不能用国内教材了,国内的教材都喜欢从基础讲起。然而基础这个内容太多了,学着学着就没兴趣了……下一本书就看国外老师的,嗯再看一遍《Programming Pearls》。
 

基本关系操作

①、查询(Query)
②、插入(Insert)、删除(Delete)、修改(Update)

查询是最主要的部分,查询操作可分为:选择Select)、投影Project)、连接(Join)、除(Divide)、Union)、Except)、交(Intersection)、笛卡尔积
 

关系数据语言的分类

①、关系代数语言(例,ISBL)
②、关系演算语言:元祖关系演算语言(例,APLHA、QUEL),域关系演算语言(例,QBE)
③、具有①和②双重特点的语言(例,SQL
 

关系代数(关系演算记不住,偷个懒)

选择Selection):又称限制Restriction),类似SQL中的WHERE语义,记为σ

投影Projection):类似SQL中的SELECT语义,记为π

连接Join):在笛卡尔积中选取满足一定条件的元组,记为
  等值连接,选取属性值相等的元组。
  自然连接,在等值连接中去除分量重复的元组。
  外连接,把舍弃的元组保留,并在其他属性上用null填充。
  左外连接,保留的元组在左边。
  右外连接,保留的元组在右边。

除运算Division):这个挺烦的,看链接吧http://blog.csdn.net/neildemo/article/details/50081895


没有规矩不成方圆 —— 关系的完整性

关系模型的完整性约束有三类:实体完整性参照完整性用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的,是关系的不变性。用户定义的完整性是用户自己定义的语义约束。

实体完整性Entity Integrity):主码(主键)不可为空

参照完整性Reference Integrity),用定义不如直接上例子。
  例: 关系1:Student学号,姓名),PrimaryKey(学号)
     关系2:SC学号课程名,成绩),PrimaryKey(学号,课程名)
  联系现实世界情况这两个关系之间是有联系的,SC中的某一个元祖的学号属性在Student中必然存在的,即sc.学号 = student.学号,那么SC表中的属性学号即为外码Foreign Key)。而参照完整性的规则就是针对这个外码,SC.学号 = { null ∪ Strudent.学号 }

用户定义完整性User-defined Integrity),这就很自由了,比如某公司员工表中,老板可以自己定义一个规则“性别只能是女……(+_+)? ”

猜你喜欢

转载自blog.csdn.net/credolhcw/article/details/55098356