系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 数据库 > PostgreSQL > 详细页面

【数据库】数据库入门(二): 关系型数据库

时间:2019-12-02来源:电脑系统城作者:电脑系统城

定义

  • 属性(Attribute): 表的每一列具有固定的属性类别。
    • 如姓名(Name)、年龄(Age)、地址(Address)、电话号码(PhoneNumber)等。
  • 域(Domain): 每个属性所限定的数据类型及其取值范围。
    • 常用的域有字符串(STRING)、日期(DATE)、整型数(INT)等。
  • 元组(Tuple): 表的每一行称为一个元组,用来标识一个实体,表中不能出现相同的两个元组。
    • 单个元组的取值必然是所有域的笛卡尔积(Cartesian Product)的一个元素。
    • 如 {'Sunday', ‘2019-08-02‘, 100} 是 {STRING, DATE, INT} 的一个元素。
  • 关系(Relation): 由行和列交错形成的二维表(Table),它表示一类数据关系。
    • 单个二维表的取值必然是所有域的笛卡尔积(Cartesian Product)的一个子集。
  • 关系模式(Relation Schema): 定义的多个二维表及其包含的所有属性。
    • 它包括表名和一系列的属性
    • 每个属性都跟域相关联
1
2
ENROL(StudentID, CourseNo, Semester, Status, EnrolDate);
ENROL(StudentID: INT, CourseNo: STRING, Semester: STRING, Status: STRING, EnrolData: DATE);

 

  • 关系数据库模式(Relational Database Schema): 
    • 它是多个关系模式的集合(包括表名和所有属性);
    • 它是一个关于完整性约束(Integrity Constraints,IC)的集合。

  • 关系数据库状态(Relational%20Database%20State): 
    • 它是多个关系%20/%20表的集合;
    • 在某一个具体时刻,一种关系数据库模式只存在一种关系;
    • 所有的关系%20/%20表都满足完整性约束%20(IC)。

关系型数据库的完整性约束

1、域约束(Domain%20Constraints)

元组中的每一个值必须是在其属性的取值范围之中,即既要符合定义的数据类型,又要在取值范围之中。

 

2、关键字约束(Key%20Constraints)

超键(SuperKey):在一个关系%20/%20表中,不存在两个独立元组的超键有相同的取值,即每一个独立元组超键的取值必不相同。

候选键(Candidate%20Key):当一个超键不存在它的子集仍然为超键时,这个超键被称为最小超键(minimal),也称候选键。

主键(Primary%20Key):取候选键集合中的其中一个,可作为当前关系%20/%20表的主键(主键是惟一的)。

 

举几个例子说明一下

  • {DoB}%20是关系%20STUDENT%20的一个超键吗?
    • 不是,因为不同的元组可能在%20DoB%20这个属性上取相同的值,即可能存在出生日期相同的两个学生。
  • {StudentID,%20DoB}%20是关系%20STUDENT%20的一个超键吗?
    • 是的,因为通过这一组属性,能唯一区分出一个独立的元组。
  • {StudentID,%20DoB}%20是关系%20STUDENT%20的一个候选键吗?
    • 不是,因为存在它的子集%20{StudentID}%20也同样是一个超键,同时这还是一个最小的超键,因此是一个候选键。
  • {StudentID}%20是关系%20STUDENT%20的一个候选键吗?
    • 是的,理由如上。
  • {DoB}%20是可以选为关系%20STUDENT%20的主键吗?
    • 不是,DoB本身不是一个超键,更不会是一个候选键,所以不能作为主键。

 

3、实体完整性约束(Entity%20Integrity%20Constraints)

实体完整性约束主要是对主键取值的约束。由于主键是用于独立区别同一个关系中的不同元组,因此每一个元组的主键取值不能为 NULL,即不能为空。通常在定义关系或者定义属性的时候,使用 NOT%20NULL 关键字对主键进行修饰。

注意:关系表%20R%20中的其他属性也有可能被限定不能为空(NULL),即便它们并不是当前关系表的主键,但是主要一个属性是关系表的主键,那它的取值绝对不能为%20NULL。

 

4、引用完整性约束(Referential%20Integrity%20Constraints)

通过观察发现,在存在多个关系表的关系数据库模式中,数据实体并不会独立存在于单一的关系表中。意思就是,任意一个元组(一个数据实体)必然在各个关系表中存在引用关系

前面讨论到的三种约束类型,都是针对单一的关系表;引用完整性约束针对的是两个关系表之间的关系,要求指定两个关系表中间的引用关系。

外键(Foreign Key):对于一个关系表%20R1%20中的属性%20A,取任意一个%20R1%20中元组,在另一个关系表%20R2%20中都会存在一个元组,其属性%20B%20的取值与%20A%20相等。这种情况下,我们把属性%20A%20叫做关系表%20R1%20的外键,R1%20叫做引用关系(Referencing%20Relation),R2叫做依赖关系(Referenced%20Relation)

 

举个例子说明一下

在上面的关系数据库模式中,我们可以找出关系表 ENROL 的两个外键:

  1. [ CourseNo ] ⊆ COURSE [ No ]
  2. [ StudentID ] ⊆ STUDENT [ StudentID ]

 

容易违反约束条件的几种情况

分享到:

相关信息

热门系统总排行

系统教程栏目

系统帮助 游戏攻略 win12教程 监控安装 祥瑞电脑 重装大师 重装教程 bios 其它教程 软件教程 苹果MAC教程 Linux教程 Win2003教程 Win2008教程 U盘教程 WinXP教程 Win7教程 Win8教程 Win10教程 win11教程 打印机

栏目热门教程

人气教程排行

站长推荐

热门系统下载

373
QQ客服
联系QQ客服
QQ客服:602729135客服时间:9:30--22:00
QQ群聊
加入QQ群聊
咨询群QQ:908212918客服时间:9:30--22:00
  • 1/3
  • 2/3
  • 3/3