【数据库】关系模式概念

  • Post author:
  • Post category:其他


2:关系模式(3)

1 基本概念

关系、候选键、外部键、主属性、非主属性、关系模式、关系数据库。

关系模式完整性


候选码

:候选码就是可以区别一个元组(即表中的一行数据)的属性或属性的集合,比如学生表student(id,name,age,sex,deptno),其中的id是可以唯一标识一个元组的,

所以id是可以作为候选码

的,既然id都可以做候选码了,那么id和name这两个属性的组合可不可以唯一区别一个元组呢?显然是可以的,此时的id可以成为码,id和name的组合也可以成为码,

但是id和name的组合不能称之为候选码

,因为即使去掉name属性,剩下的id属性也完全可以唯一标识一个元组,就是说,

候选码中的所有属性都是必须的,

缺少了任何一个属性,就不能唯一标识一个元组了。


候选码的定义:

可以唯一标识一个元组的最少的属性集合。

主码:一个表的候选码可能有多个,从这些个候选码中选择一个做为

主码

,至于选择哪一个候选码,这个是无所谓的,只要是从候选码中选的就行。


主属性

:能作为候选码的属性称为主属性;****

非主属性:关系中不组成候选码的属性均为非主属性。==》一个关系中,除去主属性,其它都是非主属性。

关系数据库中,关系模式是型,关系是值。

关系模式

是对关系的描述。


关系

是元组的集合,因此关系模式必须指出这个元组集合的结构,即它由那些属性构成。这些属性来至那些域。


关系数据库

:例如导师实体、研究生实体、导师和研究生一对多联系都可以分别用一个关系表示,在一个给定的应用领域,所有关系的集合构成一个关系数据库。

说明:关系:就是元组的集合;

2 关系代数及其运算

任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以

运算对象、运算符、运算结果

是运算的三大要素。

关系代数的运算对象是关系,运算结果也是关系。关系代数用到的运算符包括两类:集合运算符和专门运算符。如下图所示。

uploading.4e448015.gif

正在上传…

重新上传


取消

关系代数运算符

并差交笛卡儿积运算:

集合运算符案例:

1:并

2:差

差:R-S的解释:R中有,且S中没有的记录。

3:交

4:笛卡儿积

关系R为n列,k1元组、关系S为m列,k2元组。R中每个k1与S每个k2组成新的关系。


形成的新的关系一共有K1*K2条记录

专门的关系运算符:

1:选择

2:投影

3:连接:

专门的关系运算符案例:


选择:


假设Student关系表如下:


投影:


连接:

关系R (4条)

A

B

C

a

b

c

b

a

d

c

d

e

d

f

g


关系S(3条)

A

C

D

a

c

d

d

f

g

b

d

g

交叉连接 (4*3=12条记录)—》笛卡儿积

SELECT * FROM  R  CROSS  JOIN  S

R.A

R.B

R.C

S.A

S.C

S.D

a

b

c

a

c

d

a

b

c

d

f

g

a

b

c

b

d

g

b

a

d

a

c

d

b

a

d

d

f

g

b

a

d

b

d

g

….

等值连接

自然连接

外连接

1:左外

2:右外

3:完全外


理论:

左外:先自然连接,成为ABCE。以左边的为基准,所以B列的b5没了。

右外:

先自然连接,以右边的S为基准,保留B列共同的值,R中的b4没有所以删除了。

完全外

不满足R.B=S.B 的元组保留。


实战

搭建本节课环境,创建如下两张表

学生表(学号,姓名)  和  选课成绩表(课程号,学号,分数)

create table student

学号 varchar(10)  primary key,

姓名  varchar(20)

create table course

(

课程号 varchar(5) primary key,

学号 varchar(10),

分数 float

)

insert into student values(’01’,’罗’),(’02’,’张’);

insert into course values(‘010′,’01’,90),(‘020′,’03’,85);

知识点1:左外连接【以左边的表为主表】

语法:select student.学号,student.姓名,course.课程号,course.分数

from student  left  join course

on  student.学号 = course.学号

总结:左边的表的记录完全输出,右边的边仅输出满足条件的

on后面的语句就是条件

知识点2:右外连接【以右边的表为主表】

语法:select student.学号,student.姓名,course.课程号,course.分数

from student right  join course

on  student.学号 = course.学号

知识点3:完全外连接【两个表的记录全部输出】

语法:select student.学号,student.姓名,course.课程号,course.分数

from student full join course

on  student.学号 = course.学号

小结:

左外链接:查看【学生】的选课情况

右外连接:  查看【课程】的选课情况

完全外连接:查看【学生】 和 【课程】的选课情况



版权声明:本文为m0_63949551原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。