数据模型

关系模型

关系:现实中的实体或者实体之间的联系在数据库中用表来表示,而这种表在关系模型里就被称作关系。每个关系就是在属性的值域上面定义的n元联系

例如:R=(A1/D1,A2/D2,A3/D3……An/Dn) or R=(A1,A2,A3……An),R就被称作关系,A为各种属性,D为属性的值域,A1/D1就代表属性1的值域(也可简化为A1)

r为关系R的一个实例,r={t1,t2,t3……tn},t为元组

元组t由每个属性在值域上的具体取值构成,t=1</sub>,v2,v3……vn>,vi∈Di,1≤i≤n

t∈D1×D2×D3……Dn,叉乘为笛卡尔乘积,即两个集合两两组合的结果,所以r∈D1×D2×D3……Dn

通俗来说,关系R就是一张表,属性A就是列,元组T就是行

候选键:条件一:在某一关系中的能够唯一决定元组中其他属性的值;条件二:最小的属性集合(他的子集不满足条件一),满足上述两个条件的属性就是候选键

主键:多个候选键中指定一个为主键,剩下的是候选键

超键:满足候选键的第一个条件,而不满足第二个条件的属性,就是超键

全键:某个关系中用所有属性才能唯一确定元组的集合

外键:在某一关系中能够用来引用其他关系中元组的键,并且在其他关系中为主键,这样的属性就是外键(类似于逻辑指针,不能为空)

实体完整性约束:某一关系中某个属性可以为空,但主键不能为空

缺点:语义比较贫乏

关系代数

基本操作

一元操作

  1. Selection($\sigma$):选择操作
  2. Projection($\pi$):投影操作,删除不需要的属性,会消除重复元组(在实际数据库系统中,除非用户要求,否则不会消除重复元组)

二元操作

  1. Cross-product($\times$):笛卡尔积,将两个关系拼接在一起
  2. Set-difference(-):集合差,将属于关系1但不属于关系2的属性去掉
  3. Union(∪):并操作,将同时在关系1和关系2中的属性合并
  4. Renameing operator(ρ):重命名相同名称的属性
  5. Joins:连接操作,避免笛卡尔积中无意义的元组。条件连接:按照某一条件将两个关系连接在一起;等值连接:条件连接中只出现表达式相等的判断,即为等值连接;自然连接:在两个关系的所有公共属性上都进行等值连接
  6. Division(/):除法操作,A/B=

查询

实例说明

上述理论比较抽象,博主就结合如下图所示的四张表来具体说明上述的各种概念和操作

以R1为例,sid这个属性既可以唯一决定元组,而且是最小属性集合,所以sid就是候选键,同理bid,day也是;对于(sid,bid),可以唯一的决定元组,但不是最小属性集合,所以是超键

ER模型

基本概念

实体(Entity):现实生活中可以被区分的对象,由一组属性表示

实体集(Entity Set):一组相似的实体组成的集合

特点:

  • 实体集中所有实体有相同的一组属性
  • 每个实体集有一个键和一个值域
  • 允许复合类型(表中套表)和多值属性(一个人的多个电话号码)

联系(Relationship):现实世界中两个及以上实体之间的关系

联系集(Relationship set):同类联系组成的集合

ER图

矩形表示实体,菱形表示实体之间的联系,椭圆形表示实体或联系的属性

语义约束

基数比约束

实体集中的实体之间的联系

一对一

一对多

多对多

参与度约束

一个实体参与联系的最小次数和最大次数构成的区间

EER模型(扩展ER模型)

弱实体:不能单独存在、需要依赖其他实体存在的实体。例如,职工与家属,家属就是弱实体

普遍化与特殊化

聚集:将两个实体集之间的联系也看成实体集,用这个实体集再与其他实体集产生联系

范畴:表达不同类型的实体组成的实体集合。例如,银行账户包含对公账户和对私账户,这是两种不同类型的实体组成的实体集

面向对象模型