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

定义

  • 属性(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): 定义的多个二维表及其包含的所有属性。
    • 它包括表名和一系列的属性
    • 每个属性都跟域相关联
ENROL(StudentID, CourseNo, Semester, Status, EnrolDate);
ENROL(StudentID: INT, CourseNo: STRING, Semester: STRING, Status: STRING, EnrolData: DATE);
  • 关系数据库模式(Relational Database Schema)

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

?

  • 关系数据库状态(Relational Database State)

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

?

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

1、域约束(Domain Constraints)

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

2、关键字约束(Key Constraints)

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

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

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

举几个例子说明一下

?

  • {DoB} 是关系 STUDENT 的一个超键吗?

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

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

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

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

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

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

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

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

举个例子说明一下

?

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

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

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

  • 插入操作(Insert)
  • 删除操作(Delete)
  • 更新操作(Update / Modify)

原文地址:https://www.cnblogs.com/wymanwong/p/11516729.html

时间: 2024-07-31 16:08:41

【数据库】数据库入门(二): 关系型数据库的相关文章

关系型数据库 V.S. 非关系型数据库

关系型数据库的最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,这个特性使得关系型数据库可以用于几乎所有对一致性有要求的系统中,如典型的银行系统. 但是,在网页应用中,尤其是SNS应用中,一致性却不是显得那么重要,用户A看到的内容和用户B看到同一用户C内容更新不一致是可以容忍的,或者说,两个人看到同一好友的数据更新的时间差那么几秒是可以容忍的,因此,关系型数据库的最大特点在这里已经无用武之地,起码不是那么重要了. 相反地,关系型数据库为了维护一致性所付出的巨大代

mysql系列之二关系型数据库基础理论

SQL查询语句: sequel-->SQL SQL-86 SQl-89 SQL-92 SQL-99 SQL-03 SQL-08 SQL语言的组成部分: DDL DML 完整性定义语言:DDL的一部分功能 视图定义 事物控制: 嵌入式SQL和动态SQL: 授权:DCL 使用程序设计语言如何跟RDBMS交互: 嵌入式SQL:与动态SQL类似,但其语句必须在程序编译时完全确定下来. ODBC 动态SQL:程序设计语言使用函数与数据库服务器建立连接并进行交互 JDBC MySQL插件式存储引擎(默认)

MongoDB学习笔记(二:入门环境配置及与关系型数据库区别总结)

一.下载及安装MongoDB MongoDB下载官网链接:http://www.mongodb.org/downloads 具体安装步骤教程:http://www.shouce.ren/api/view/a/6191(PS:该链接中对MongoDB安装讲解比较详细,通俗易懂.安装教程链接是我从手册网上找到的,下面的总结知识点也是本人从中学习后归纳的一部分,有兴趣的同学不妨收藏一下~) 二.MongoDB可视化工具下载 个人比较习惯在图形化界面进行相关命令操作,所以在安装完MongoDB后,就顺便

从关系型数据库到非关系型数据库

来源:http://blog.csdn.net/robinjwong/article/details/18502195 1. 关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型. 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模型中常用的概念: 关系:可以理解为一

写给开发者看的关系型数据库设计

目录 一 Codd的RDBMS12法则——RDBMS的起源 二 关系型数据库设计阶段 三 设计原则 四 命名规则 数据库设计,一个软件项目成功的基石.很多从业人员都认为,数据库设计其实不那么重要.现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍.多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单.其实不然,数据库设计也是门学问. 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA).根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据

关系型数据库设计

转自:http://www.cnblogs.com/MeteorSeed/archive/2013/03/27/2880054.html ------------------------------------------------------------------------------------- 目录 一 Codd的RDBMS12法则——RDBMS的起源 二 关系型数据库设计阶段 三 设计原则 四 命名规则 数据库设计,一个软件项目成功的基石.很多从业人员都认为,数据库设计其实不那么

关系型和非关系型数据库的区别--转载

关系型数据库和非关系型数据库 关系数据库和非关系数据库的区别是,关系数据库只有“表”这一种数据结构:而非关系数据库系统还有其他数据结构,对这些数据结构还有其他操作. 随着网络的不断发展,单纯关系数据库面临挑战. 关系与非关系型数据库的特点 1.关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就

[转载]从关系型数据库到非关系型数据库

1. 关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库. 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型. 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名 元组:可以理解为二维表中的一行,在数据库中经常被称为记录 属性:可

关系型数据库,摘要

关系型数据库,简单理解就是“行列-表-库”形式的二维数据库,采用关系模型来组织数据,简而言之就是二维表之间的字段可能通过某种关系而组合起来,形成规模较大的数据网络:当然,单独的关系表也可以作为一个简单库. 关系型数据库相较于其他类型数据库的最大优势是可以保持数据的一致性(事务处理),其他还有诸如以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处). 可以进行Join等复杂查询等. 关系型数据库也有相应的弊端,比如海量的读写都集中在一个数据库上的话,将会严重影响数据库的工作效率,所以大

关系型数据库和NoSQL数据库

关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过 “NoSQL”呢?近年,这个词极受关注.看到“NoSQL”这个词,大家可能会误以为是“No!SQL”的缩写,并深感愤怒:“SQL怎么会没有必要了 呢?”但实际上,它是“Not Only SQL”的缩写.它的意义是:适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存 储. 为弥补关系型数据库的不足,各种各样的NoSQL数据库应运而生. 为了更好地了解本书所介绍的No