数据库笔记

第一章 绪论

1.1 数据库系统概论

1.1.1 数据、数据库、数据库管理系统、数据库系统

一、数据(Data)

数据是数据库中存储的基本对象

定义:描述事物的符号记录被称为数据。描述事物的符号可以是数字,也可以是文字、图形、图像、声音、语言等,数据有种表现形式,它们都可以经过数字化后存入计算机。

二、数据库(DataBase,简称DB)

数据库是长期存储在计算机内、有组织、可共享的大量数据的集合。

数据库数据具有永久存储、有组织和可共享三个基本特点。

三、数据库管理系统(DataBase Management System,DBMS)
  1. 数据定义功能:DBMS 提供数据定义语言(DataBase Definition Language,DDL)用户通过它可以方便地对数据库中的对象进行定义。
  2. 数据组织、存储和管理: DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据。数据的存取路径等。
  3. 数据操纵功能:DBMS提供数据操纵语言(Data Manipulation Language DML),用户可以使用DML操纵数据,实现对数据库的基本操作,例如查询、插入、删除和修改等。
  4. 数据库的事务管理和运行管理:数据库在建立、运用和维护的时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
  5. 数据库的建立和维护功能:数据库的输入、转换功能,数据库的转储、恢复功能、数据库的重组织功能和性能监视、分析功能等。
 四、数据库系统(DataBase ,DBS)

数据库系统易班由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。

1.1.2 数据管理技术的产生和发展

数据管理技术经过了人工管理、文件系统、数据库系统3个阶段。

一、人工管理阶段

人工管理阶段有以下特点:

  1. 数据不保存
  2. 应用程序管理数据
  3. 数据不共享
  4. 数据不具有独立性

缺点:数据的逻辑结构和物理结构发生变化后,必须对应用程序做相应的修改,这就加重了程序员的负担。

二、文件系统阶段

用文件系统管理数据具有如下的特点:

  1. 数据可以长期保存
  2. 由文件系统管理数据

缺点:

  1. 数据共享性差,冗余度大
  2. 数据独立性差(只和一个程序绑定不是大家都可以访问的)
三、数据库系统阶段

用数据库系统管理数据具有如下特点:

  1. 数据结构化
  2. 数据的共享性高,冗余度低,易扩充
  3. 数据独立性高
  4. 数据由DBMS统一管理和控制

1.2 数据模型

数据模型(Data Model)也是一种模型,它是对现实世界叔觉得抽象。数据模型就是现实世界的模拟。

1.2.1 两类数据模型

数据模型应满足三方面的要求:

  1. 能比较真是滴模拟现实世界
  2. 容易为人所理解
  3. 便于在计算机上实现
概念模型(Conceptual Model):

概念模型也称为信息模型,它是按照用户的观点来对数据和信息建立模型,主要用于数据库的设计。

逻辑模型和物理模型:
  • 逻辑模型主要包括层次模型(Hierachical Model)、网状模型(Network Model)、关系模型(Relational Model)、面向对象模型(Object Oriented Model)和对象关系模型(Object Realtional Model)等。它是按计算机系统的观点对数据建模,主要用于DBMS的实现。
  • 物理模型是对数据最底层的抽象,他描述数据在系统内部的表示方法和存储方法,在磁盘或者磁带上的存储方式和存取方式,是面向计算机的。

1.2.2 数据模型的组成要素

数据模型通常由数据结构、数据操作和完整性约束三部分组成。

一、数据结构

数据结构描述数据库的组成对象之间以及对象之间的联系。数据结构所描述的对象类型的集合,是对系统静态特性的描述。

二、数据操作

数据库主要有查询和更新(包括插入、删除、修改)两大类操作。数据操作是对系统动态特性的描述。

三、数据的完整性约束条件

数据完整性约束条件是一组完整性规则。

【例】在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。

【例】在某大学的数据库中规定教授的退休年龄是65周岁,男教职工的退休年龄是60周岁,女职工的退休年龄是55岁。

1.2.3 概念模型

概念模型是现实世界到机器世界的一个中间层次,表现为:

  1. 概念模型用于信息世界的建模
  2. 现实世界到信息世界的第一层抽象
  3. 数据库设计人员进行数据库设计的有力工具
  4. 数据库设计人员与用户之间进行交流的语言

概念模型的要求:

  1. 具有较强的语义表达能力
  2. 能够方便、直接地表达应用中的各种语义知识
  3. 简单、清晰、易于用户理解
一、信息世界中的基本概念

1.实体(Enity)

客观存在并可以互相区别的实物被称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。

【例】一个职工、一个学生、一个部门、一门课、学生的每一次选课都是实体。

2.属性(Attribute)

实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。

【例】学生实体可以由学号、姓名、性别、出生年月份、所在学院、入学时间等属性所组成,这些属性组合起来表征了一个学生。

3.码(Key)

唯一标识实体的属性集称码。

【例】学号是学生实体的码。

4.域(Domain)

域是一组具有相同数据类型的值的集合。属性的取值范围来自于某个域。

【例】学号的域为8位整数,学生年龄域为整数,学生性别的域为(男,女)

5.实体型(Entity Type)

具有相同属性二队实体必然具有共同的特征和性质。用实体名以及其属性名集合来抽象和刻画同类实体,称为实体型。

【例】学生(学号,姓名,性别,出生年月)就是一个实体型。

6.实体集(Emtity set)

同一类型的实体的集合称为实体集。

【例】全体学生就是一个实体集。

7.联系(Relationship)

在现实生活中,事物内部以及事物之间是有联系的,这些联系在信息世界中反应为实体(型)内部的联系和实体(型)之间的联系。

实体内部的联系通常是指实体的个属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。

二、两个实体型之间的联系

1.一对一联系(1:1)

如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。

【例】学校里面,一个班级只有一个正班长,而一个班长只在一个班级中任职,则班级与班长之具有一对一的联系。

2.一对多联系(1:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之对于实体集B中的每一个实体,实体集A中至多有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。

【例】一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多的联系。

 3.多对多联系(m:n)

如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之,对与实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:n。

【说明】实际上,一对一联系是一对多联系的特例,一对多联系又是多对多联系的特例。

 三、两个以上的实体型之间的联系

两个以上的实体型之间存在着一对一、一对多、多对多的联系。

若实体型E1、E2.....En之间存在着联系,对于实体型Ei(j=1,2,.....,i-1,i+1,......,n)中的给定实体,最多只和Ei中的一个实体相联系,则说明Ei与E1,E2,......Ei-1,Ei+1,....,En之间相联系是一对多的。

【例】对于课程,教师参考书3个实体型,如果一门课程可以由若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只提供一门课程使用,啧课程与教师、参考书之间的联系是一对多的。

 四、单个实体型内的联系

同一个实体集内的各实体之间可以存在一对一、一对多、多对多的联系。

【例】职工实体型内部具有领导与被领导的联系,即某一个职工(干部)“领导”若干名职工,儿一个职工仅被另外一个职工直接领导,因此这是一对多的体系。

 五、概念模型的一种表示方法:实体-联系图(E-R图)

E-R图提供了表示实体型、属性和联系的方法。

实体型:用矩形表示,矩形框内写明实体名。

属性:用椭圆形表示,并向无向边将其相应的实体型连接起来。

【例】学生实体具有学号、姓名、性别、出生年份、系、入学时间等属性。

联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁边标上联系的类型(1:1,1:n,m:n)。

【注意】如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。

【例】如果用“供应量”来描述“供应”的属性,表示某供应商供应了多少数目的零件给某个项目。那么这三个实体及其之间联系的E-R图如下:

六、一个实例

用E-R图来表示某个工厂物资管理的概念模型。

物资管理涉及的实体有:

  1. 仓库属性有仓库号、面积、电话号码
  2. 零件属性有零件号、名称、规格、单价、描述等
  3. 供应商属性有供应商号、姓名、地址、电话号码、账号
  4. 项目属性有项目号、预算、开工时间
  5. 职工属性有职工号、姓名、年龄、职称

对实体的联系分析如下:

  1. 一个仓库可以存放多种零件,一个零件可以存放在多个仓库之中,因此仓库和零件是多对多的联系。用库存量来表示在仓库中的某种零件的数目。
  2. 一个仓库有多个职工当仓库的保管员,但是一个职工只能在一个仓库工作,因此仓库和职工之间是一对多的联系
  3. 职工之间具有领导和被领导的关系。即仓库主任领导报关员,因此职工实体中具有一对多的联系
  4. 供应商、项目和零件三者之间有多对多的联系。一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件,每种零件可以由不同的供应商供给。

实体和属性的E-R图(因为属性E-R图很好画,这里将只给出一个,不再重复)

 实体及其联系的E-R图:

完整的E-R图只要把属性的都用无向边加上去就可以了,我懒我不画了

 1.2.4 最常用的数据模型

目前,数据库领域中最常用的逻辑数据模型有:层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relationship Model)、面向对象模型(Object Orient Model)、对象关系模型(Object Relational Model)。

1.2.5 关系模型

一、关系数据模型的数据结构

关系(Relation):一个关系对应通常说的一张表,如下面这个学生登记表;

元组(Tuple):表中的一行为一个元组

属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即为属性名

【例】下表有6列,对应6个属性(学号、姓名、年龄、性别、系名和年级)

学号 姓名 性别 系名 年级
2005004 王小明 社会学 2005
2005006 黄大棚 商品学 2005
2005008 张文斌 法律 2005
... ... ... ... ...

码(Key):也称为码键。表中的某个属性组,他可以唯一确定一个与元组;如上表中的学号,可以唯一确定一个学生,也就成为本关系的码;

域(Domain):属性的取值范围,年龄一般在1-150之间;

分量:元组中的一个属性值

关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,属性3,....属性n)

【例】上面的关系可以描述为:学生(学号、姓名、年龄、性别、系名、年级)

【例】学生、课程、学生与课程之间的多对多的联系在关系模式中可如下表示:

学生(学号,姓名,年龄,性别,系名,年级)

课程(课程号,课程名,学分)

选修(学号,课程号,成绩)

二、关系数据模型的操纵与完整性约束

关系数据模型的操作主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。

关系的完整性约束条件包括三大类:

  1. 实体的完整性
  2. 参照完整性
  3. 用户定义的完整性

下面对于上述三个完整性约束进行通俗易懂的解释:

实体完整性:能够确定一个实体,用多种属性等,例如每个学生都有一个学号而且学号是不同的且具有唯一性的。

参照完整性:和别人差不多,例如学生的基本信息取的属性应该是一样的,学号姓名等

用户定义完整性:根据用户的场景,来定义取值的范围,例如退休年龄是65岁,那么在职的教授都应该是在65岁以下的。

三、关系数据模型的优点
  1. 关系模型和格式化模型不同,它是建立在严格的数学概念的基础上的
  2. 关系模型的概念单一
  3. 关系模型的存取路径对用户透明,从而具有更高的独立性、更好的安全保密性也简化了程序员的工作和数据库开发建立的工作。

2024.1.13

1.3 数据库系统结构

1.3.1 数据库系统模式的概念

模式是数据库中全体数据的逻辑结构和特征描述,同一个模式可以有很多实例。

【例】在学生选课数据库模式中,包括学生记录、课程记录、学生选课记录,则2003年中有一个学生数据库的实例,该实例包含了2003年学校中所有学生的记录(如果学校有10000个学生,则有10000个学生的记录)、学校开设的所有课程的记录和所有学生选课的记录。

1.3.2 数据库系统的三级模式结构

数据库系统的三级模式结构是指数据库系统由外模式、模式和内模式三级构成。

  • 外模式根据需求返回数据给应用,供给应用程序使用
  • 模式就是具体的数据库
  • 内模式在实际的物理上哪里存储
  • 模式之间的转换叫做映像
一、模式(Schema)

模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

它是数据库系统模式结构的中间层,挤不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的的应用开发工具及高级程序设计语言(如C,COBOL)无关。

二、外模式(External Schema)

外模式也成子模式(Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,它是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

【注意】

  1. 外模式通常是模式的子集,一个数据库可以有多个外模式
  2. 同一外模式也可以为某一用户的多个应用系统所使用,但是一个应用程序只能使用一个外模式。
  3. 外模式是保证数据库安全的一个有力措施。每个用户只能看见和访问对应的外模式中的数据,数据库其余数据是不可见的。
三、内模式(Internal Schema)

内模式也称为存储模式(Storage Schema),一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。

1.3.3 数据库的二级映像功能与数据独立性

数据库系统的三级模式是对数据的3个抽象级别,他对数据的具体组织留给DBMS管理,使用户能逻辑地抽象低处理数据,而不必关心数据在计算机中的具体表示方式和存储方式。

数据库管理系统在这三级模式中提供了两层映像:

外模式/模式映象

模式/内模式映像

两层映像保证了数据库中的数据能够具有较高的逻辑独立性和物理独立性。

1.4 数据库系统的组成

数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统和数据库管理员构成。

一、硬件平台以及数据库

硬件资源要求:

  1. 要有足够大的内存,存放操作系统。DBMS的核心模块、数据缓冲区和应用程序
  2. 要足够大的磁盘或磁盘阵列等设备存放数据库,渔鸥足够的磁带(或者光盘)作数据备份
  3. 要求系统有较高的通道能力,以提高数据传送速率
二、软件

数据库系统的软件主要包括:

  1. DBMS。DBMS是为数据库的建立、使用和维护配置的系统软件。
  2. 支持DBMS运行的操作系统。
  3. 具有与数据库借口的高级语言以及编译系统,便于开发应用程序。
  4. 一DBMS为核心的应用开发工具。
  5. 为特定应用环境开发的数据库应用系统。
三、人员

开发、管理和使用数据库系统的人员主要是:数据库管理员、系统分析员和数据库设计人员、应用程序员和最终用户。不同的人员涉及到不同的数据抽象级别,具有不同的数据视图,如下图所示:

1.数据库管理员(DataBase Administrator,DBA)

需要有专门的管理机构来监督和管理数据库系统。DBA则是这个机构的一个(组)人员,负责全面监管和控制数据库系统。具体职测包括:

(1)决定数据库中的信息内容和结构,数据库中要存放那些信息,DBA要参与决策

(2)决定数据库中的存储结构和存取策略

(3)定义数据的安全性要求和完整性约束条件

(4)监控数据库的使用和运行

(5)数据库的改进和重组重构

2.系统分析员和数据库设计人员

系统分析员负责应用系统的需求分析和规范说明,要和用户及DBA相结合,确定系统的硬件软件配置,并参与数据库系统的概要设计。

数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。

3.应用程序员

应用程序员负责设计和编写应用程序的程序模块,并进行调试和安装

4.用户

这里用户是指最终用户(End User)。最终用户通过应用程序的用户接口使用数据库。

2024.1.14

第二章 关系数据库

2.1 关系数据结构以及形式化定义

2.1.1 关系

单一的数据结构——关系

现实世界的实体以及实体间的各种联系军用关系来表示

逻辑结构——二维表

从用户角度,关系模型中数据的逻辑结构是一张二维表

关系模型是建立在集合代数的基础上
 

1.域(Domain)

【定义】域是一组具有相同类型的值的集合

【例】整数、实数、介于某个取值范围的整数、指定长度的字符串集合,{“男”、“女”}等等。

2.笛卡尔积(Cartesian Product)

【定义】给定一组域D1,D2,.....,Dn,这些域可以是相同的。D1,D2,...,Dn的笛卡尔积为:

D1×D2×....×Dn={(d1,d2,....,dn)|di∈Di,i=1,2,.....,n}.所有域的所有取值的一个组合。

单纯的看有点抽象,所以在这里我决定给出一个更抽象的例子!

【例】D1=字母的集合={A,B},D2=数字的集合={1,2},D3=符号的集合={@,#}

则D1,D2,D3的笛卡尔积为:

D1×D2×D3={(A,1,@),(A,#),(B,#)}

元组(Tuple)

笛卡尔积中的每一个元素(d1,d2,d3,dn)称作是一个n元组(n-tuple)或简称元组(Tuple)。

【例】(A,@)(A,#)等都是元组。

分量(Component)

笛卡尔积元素(d1,d2,.....,dn)中的每一个值的di称作一个分量。

【例】A,@等都是分量。

基数(Cardinal number)

若Di(i=1,n)为有限集,其基数为m_{i}(i=1,n),则D_{1}×D_{2}×....×D_{n}的基数M为:

M=\prod_{n}^{i=1}m_{i}

笛卡尔积的表示方法:笛卡尔积可以表示为一个二维表,表中的每行对应一个元组,表中的每列对应一个域。

上面的可能说的不是那么的通俗易懂,接下来Ares用最简单的方法来说明到底什么是基数,(A,#)的基数都为3,这也就是说一个括号里面有多少个元素那个基数就是几。我们上面一共是有三个集合分别为:字母的集合,数字的集合还有符号的集合,每个集合里面有两个元素,那么基数就是2*2*2=8.

3.关系(Relation)

(1)关系

D_{1}×D_{2}×....×D_{n}的子集称作在域D_{1}D_{2},....,D_{n}的关系,表示为R(D_{1}D_{2},....,

D_{n}

R表示关系名,n表示关系的目或度(Degree)

(2)元组

关系中的每个元素是关系中的元组,通常用t表示。

(3)单元关系与二元关系

当n=1时,称作该关系为单元关系(Unary relation)或者一元关系

当n=2时,称作搞关系为二元关系(Binary relation)

(4)关系的表示

关系也是一个二维表,表的每一行对应一个元组,表的每列对应一个域,一个属性

导师 专业信息 姓名
韩博林 人工智能 姜走走
杨泰铭 物联网工程 帅帅
王夹心 计算机科学与技术 广为

(5)属性

关系中不同列可以对应相同的域,为了加以区分,必须给列起一个名字,称为属性(Attribute)。

n目关系必有n个属性。

(6)码

候选码(Candidate key):若关系中的某一属性组的值能唯一地表示一个元组,则称该属性码为候选码。

简单的情况:候选码只包含一个属性。

全码(All-key):最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。

主码:若一个关系有多个候选码,则选定其中一个为主码(Primary)

主属性:候选码的诸属性称为主属性

非主属性:不包含在任何候选码中的属性(Non-Prime attribute)或非码属性(Non-key attribute)。

注意:码不一定指的是一个属性,也可能指多项属性,在没有一个属性能作为码的时候,全码就是指的是最坏的情况,所有的属性一起才算是一个码。

【说明】D_{1}D_{2},....,

D_{n}的笛卡尔积的自己不是都有实际意义,只有某个自己才有实际意义。

【例】上面题目中的导师,专业和姓名的笛卡尔积其实就没有实际意义。取出有实际意义的元组来构造关系。

关系:SAP(导师,专业,姓名)

假设:导师与专业:1:1,导师与学生1:1

主码:姓名(假设所有的学生不会重名)

SAP关系有实际含义的子集之一,包含三个元组:{(韩博林,人工智能,姜走走),(杨泰铭,物联网工程,帅帅)(王夹心,计算机科学与技术,广为)}

(7)三类关系

  1. 基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示。
  2. 查询表:查询结果对应的表。
  3. 视图表:由基本表或者其他视图表导出的表,是虚表,不对应实际存储的数据。

(8)基本关系的性质

  1. 列是同质的
  2. 不同的列可以出自同一个域,其中每一列称为一个属性,不同的属性要给予不同的属性名
  3. 列的顺序无所谓,列的次序可以任意交换
  4. 任意两个元组的候选码不能相同
  5. 行的顺序无所谓,行的次序可以任意交换
  6. 分量必须取原子值,这是规范条件中最基本的一条

2024,16 有缘人 你都看到这里了吗,我明天会更的(前提是我不懒)

2.1.2 关系模式

1.什么是关系模式

关系模式是对关系的描述。关系模式是模型,关系是值。

(1)元组集合的结构

属性构成、属性来自域、属性与域之间的影响关系

(2)一个关系通常由富裕他的元组语义确定。

(3)现实世界中还存在着完整性约束。

2.定义关系模式

关系模式可以形式化低表示为:R(U、D、DOM、F)

R:关系名

U:组成该关系的属性名的集合

D:属性组U中属性所来自的域

DOM:属性向域的映象集合

F:属性间的数据依赖关系集合

【例】倒是和研究生出自同一个域一人,因此取不同的属性名并在模式中定义属性向的影响,即说明他们分别出自哪个域:

DOM(SUPERVISOR——PERSON)=DOM(POSTGRADUATE——PERSON)=PERSON

3.关系模式与关系

关系模式是静态的、稳定的。

关系式动态的、随时间不断变化的。

关系是关系模式在某一时刻的状态或内容,在实际工作中关系模式和关系往往统称为关系,需要通过上下文加以区别。

2.1.3 关系数据库

1.关系数据库

在一个给定的应用领域中,所有关系的集合构成一个关系数据库。

2.关系数据库的型与值

(1)关系数据库的型:关系数据库的模式,对关系数据库的描述。

(2)关系数据库的模式:若干域的定义,在这些域上定义的若干关系模式。

(3)关系数据库的值:关系模式在某一时刻对应的关系的集合简称为关系数据库。

2.1.4 关系模型的存储结构

1.有的关系数据库管理系统中一个表对应一个操作系统文件

2.有的关系数据库管理系统从操作系统那里申请若干文件,自己划分文件空间,组织表。索引等存储结构,并进行存储管理。

2.2 关系数据结构

2.2.1 基本关系操作

一、常用的关系操作

查询:选择、投影、连接、除、并、交、差等,其中选择、投影、并、差、笛卡尔积是五种基本操作。

数据更新:插入、删除、修改

查询的表达能力是其中最主要的部分

二、关系操作的特点

集合操作方式:操作的对象和结果是集合,一次一集合的方式。

2.2.2 关系数据库语言的分类

一、关系代数语言

用对关系的运算来表达查询要求。代表:ISBL

二、关系演算语言

用为此来表达查询的要求。

(1)元组关系演算语言:谓词变元的基本对象是元组 变量

代表:APLHA,QUEL

(2)域关系演算语言:谓词变元的基本对象域变量

代表:QBE

三、具有关系代数和嘎UN稀盐酸双重特点的语言

代表:SQL(Structured Query Language)

2.3 关系的完整性

关系模型中有三种完整性约束:实体完整性、参照完整性、参照完整性和用户定义的完整性。

其中实体完整性、参照完整性是模型必须满足的完整性约束条件,称为关系的两个不变性,应该由关系系统自动支持。

用户定义完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

2.3.1 实体完整性

实体完整性规则(Enity Integrity)是指若属性A是基本关系R的主属性,则属性A不能取空值。

空值就是“不知道”或“不存在”或“无意义”的值。

【例】SAP(SUPERVISOR,SPECIALLITY,POSTGRADUATE)

POSTGRADUATE:主码(假设研究生不会重名)不能取空值

实体完整性规则的说明:

(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实生活世界的一个实体集。

(2)现实世界中实体是可以区分的,即他们具有某种唯一性标识。

(3)关系模型中以主码作为唯一性标识。

(4)主码中的属性即主属性不能取空值。

主属性去空值,就说明存在某一个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则被称为实体完整性。

【注意】实体完整性规则规定基本关系的所有主属性都不能取空值

【例】选修(学号、课程号、成绩)

“学号、课程号”为主码,则学号和课程号两个属性不能取空值。

2.3.2 参照完整性

在关系模型中实体及实体间的联系都是用关系来描述的,存在着关系和关系间的引用。下面我们举几个例子。

【例】学生实体、专业实体

学生(学号、姓名、性别、专业好、年龄)

专业(专业号,专业名)

学生关系引用了专业关系的主码“专业号”。

学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。

学号

姓名

性别 专业号 年龄

801

张三 01 19
802 李四 01 20
803 王五 01 20
804 赵六 01 20
805 钱七 01 19
专业号 专业名
01 信息
02 数学
03 计算机

【例】学生、课程、学生与课程之间的多对多联系

学生(学号、性别、性别、专业号、年龄)

课程(课程号、课程名、学分)

选修(学号、课程号、成绩)

学号

姓名

性别 专业号 年龄

801

张三 01 19
802 李四 01 20
803 王五 01 20
804 赵六 01 20
805 钱七 01

19

 

课程号 课程名 学分
01 数据库 4
02 数据结构 4
03 编译 4
04 PASCAL 2
学号 课程号 成绩
801 04 92
801 03 87
801 02 65
802 03 98
802 04 76
803 04 81

2.外码(Foreign Key)

定义:设F是基本关系R的一个或一组属性,但不是没关系R的码。如果F与基本关系S的主码

K{_{s}}^{}相对应,则称F是基本关系R的外码。

基本关系R称为参照关系。

基本关系S称为被参照关系或者目标关系。

【例】选修关系的“学号”与学生关系的主码“学号”相对应;选修关系的“课程号”与课程关系的主码“课程号”相对应。

“学号”和“课程号”是选修关系的外码;

学生关系和课程关系均为被参照关系;

选修关系为参照关系。

【说明】

  1. 关系R和S不一定是不同的关系;
  2. 目标关系S的主码

    K{_{s}}^{}和参照关系的外码F必须定义在同一个或同一组域上

  3. 外码并不一定要与相应的主码同名,当外码与相应的主码属于不同的关系时,往往取相同的名字以便于识别。

3.参照完整性规则

参照完整性规则:若属性(或属性组)F是基本关系R的外码,他与基本关系S的主码

K{_{s}}^{}相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

或者取空值(F的每个属性均为空值);

或者等于S中某个元组的主码值。

2.3.3 用户定义的完整性

针对某一具体关系数据库的约束条件,反应某一具体应用所涉及的数据必须满足语义要求。

关系模型应提供定义和经验这类完整性的机制,以便用统一的系统方法处理他们,而不要由应用程序承担这一功能。

【例】课程(课程号,课程名,学分)

“课程号”属性必须取唯一的值,非主属性“课程名”也不能取空值,“学分”属性只能取值{1,3,4}。、

2024.1.21 真好

原文地址:https://blog.csdn.net/xffmmw/article/details/135560453

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读773次,点赞6次,收藏9次。【代码】c# json字符串转Oracle的insert into的小程序。
文章浏览阅读8.7k次,点赞2次,收藏17次。此现象一般定位到远端的监听服务来找问题,在远端查看监听服务状态(具体看下面的解决方案会详细呈现),服务是否开启,另外查看监听端点概要是否存在host未指向到计算名的,如无直接进入监听配置文件listener.ora内添加指向即可。2、查看监听服务状态 lsnrctl status,右边为远端端点状态,未添加host指向到计算名;1、本地及远端安装好Oracle并配置好连接,Oracle服务和监听已启动;1、远程Oracle数据库:Oracle11g R2。或者进入下述服务手动重启。,再进行远程连接即可。_ora-12541:tns:无监听程序
文章浏览阅读2.8k次。mysql脚本转化为oracle脚本_mysql建表语句转oracle
文章浏览阅读2.2k次。cx_Oracle报错:cx_Oracle DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library_cx_oracle.databaseerror: dpi-1047: cannot locate a 64-bit oracle client libr
文章浏览阅读1.1k次,点赞38次,收藏35次。本文深入探讨了Oracle数据库的核心要素,包括体系结构、存储结构以及各类参数。通过解析Oracle数据库的体系结构,读者可以深入了解其内部组成和工作原理。存储结构部分介绍了数据在Oracle中的存储方式,从表空间到数据文件的层层逻辑。最后,我们深入探讨了Oracle数据库中各类参数的作用和配置方法,帮助读者更好地理解和优化数据库性能。本文旨在帮助读者全面理解Oracle数据库的运作机制,为其在实践中的应用提供基础和指导。
文章浏览阅读1.5k次。默认自动收集统计信息的时间为晚上10点(周一到周五,4个小时),早上6点(周六,周日,20个小时)由于平时默认每天只收集4小时,时间有点短了,改成每天可收集8小时。oracle 18c中默认是打开的。查看当前自动收集统计信息的时间。_oracle自动收集统计信息
文章浏览阅读929次,点赞18次,收藏20次。只有assm(Automatic Shared Memory Management)模式可以使用大页,需要关闭amm(Memory Manager Process)HugePages_Free: 306 (空闲306页,已使用306-306=0页)防止oracle使用的内存交换,所以设置的大小与oracle配置的sga、pga相关。HugePages_Rsvd: 0 (操作系统承诺给oracle预留的页数)HugePages_Total: 306 (总共306页)_oracle11g 大页
文章浏览阅读801次。例如:10046:0,1,4,8,12。默认redo日志有三个,大小为50M,循环覆盖使用。redo log再覆盖之前,会被归档,形成归档日志。答:不同事件,不同级别。trace的不同级别?_oracle 日志
文章浏览阅读4.2k次,点赞84次,收藏77次。主要讲解MySQL中SQL的DDL语句,其中包括对数据库和表的一系列操作。_sql ddl 新增字段 mysql
文章浏览阅读1.1k次。ON DEMAND:仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;ON COMMIT:一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。Method =>'C',物化视图有三种刷新方式:COMPLETE、FAST和FORCE。物化视图会占用空间,一半可用于大量数据查询时,减缓主表的查询压力使用。例如创建一个物化视图,让对接单位查询。_oracle物化视图定时刷新
文章浏览阅读713次,点赞21次,收藏18次。1.背景介绍在当今的大数据时代,数据量越来越大,传统的关系型数据库已经无法满足业务需求。因此,NoSQL数据库技术迅速崛起,成为企业和开发者的首选。Oracle NoSQL Database是Oracle公司推出的一款分布式NoSQL数据库产品,具有高性能、高可用性和易于扩展等特点。在本文中,我们将深入了解Oracle NoSQL Database的集成与开发者工具,帮助您更好地掌握这款产品的...
文章浏览阅读2.5k次,点赞2次,收藏4次。今天遇见一个问题需要将字段中包含中文字符串的筛选出来。_oracle查询包含中文字符
文章浏览阅读802次。arcmap 在oracle删除表重新创建提示表名存在解决放啊
文章浏览阅读4.3k次,点赞2次,收藏4次。Oracle连接数据库提示 ORA-12638:身份证明检索失败_ora-12638
文章浏览阅读3.4k次,点赞6次,收藏25次。etc/profile是一个全局配置文件,所有用户登录都会使用该文件构建用户环境。与windows配置环境变量是一个道理。选择Linux系统,找到适合自己系统的安装包,我的是CentOS 8 x64。接下来需要登陆Oracle账户才能下载,无账户的可以自己注册一个。Linux中export 命令用于设置或显示环境变量。模式,利用上下键到文档最后,添加以下代码。出现如图所示版本号字样,则说明安装成功。点击下载,勾选1,点击2。记住完整路径用于后面配置。找到Java并点击进去。往下翻,找到Java8。_linux安装jdk1.8
文章浏览阅读2.4w次,点赞26次,收藏109次。JDK 是的简称,也就是 Java 开发工具包。JDK 是整个 Java 的核心,其中JDK包含了 Java 运行环境(Java Runtime Envirnment,简称 JRE),Java 工具(比如 javac、java、javap 等等),以及 Java 基础类库(比如 rt.jar)。最主流的 JDK 是Oracle公司发布的 JDK,除了 Oracle JDK(商业化,更稳定)之外,还有很多公司和组织开发了属于自己的 JDK,比较有名的有IBM JDK(更适合 IBM) 和OpenJDK。_jdk安装教程
文章浏览阅读7.5w次。出现 “java.sql.SQLNonTransientConnectionException:Could not create connection to database server” 的错误通常是由于无法连接到数据库服务器引起的。_java.sql.sqlnontransientconnectionexception: could not create connection to
文章浏览阅读849次,点赞7次,收藏10次。在ClickHouse中创建用户、数据库并进行权限分配是一个重要的管理任务,它涉及到安全性和访问控制。下面是一个基本的指南来帮助你完成这些操作:1. 创建数据库首先,需要创建一个数据库。使用以下命令:CREATE DATABASE IF NOT EXISTS your_database_name;将 your_database_name 替换为你想要的数据库名。2. 创建用户接下来,创建一个新用户。使用以下命令:CREATE USER your_username IDENTIFIED WIT_在clickhouse中如何创建用户 赋权
文章浏览阅读1.2k次,点赞53次,收藏39次。本文是一篇关于Oracle数据库安装和使用的博文摘要。作者以轻松幽默的笔调介绍了自己在实验中掌握的Oracle数据库基本操作,包括使用组件查看命令、配置数据库监听器等。作者也分享了在实验中遇到的一些有趣问题,如SQL语句缺少分号导致的意外错误。此外,作者还强调了登录sys用户和启动实例加载数据库的注意事项,并鼓励读者面对挑战时保持乐观,不断提升自己的能力。整体风格风趣严谨,引人入胜。
文章浏览阅读820次,点赞17次,收藏16次。KingbaseES、xml、dbms_xmlgen、SETSKIPROWS、人大金仓、KingbaseES兼容Oracle包dbms_xmlgen的功能是通过SQL查询将关系表中数据转化为XML文档。转化方式一共有两种:(1)通过查询字符串直接转化。(2)通过上下文句柄转化。对于通过查询字符串直接转化的方式,无法跳过若干行进行查询,只能直接将表格中的所有数据转化为XML文档。