02_关系数据库

关系数据库

  关系数据库(Relational Database,RDB)就是基于关系模型的数据库。关系数据库系统是一种重要的数据库数据模型,不但其理论成熟,而且其应用范围较网状和层次数据库系统也广得多。目前,关系型数据库管理系统已成为当今流行的数据库系统,各种实现方法和优化方法比较完善。关系数据库的设计拥有一整套完善的规范化理论,确保设计的数据库尽量减少数据冗余及各种操作异常现象。

关系数据库概念

关系数据库是利用数据库进行数据组织的一种方式,是现代流行的数据管理系统中应用最为普遍的一种,也是最有效率的数据组织方式之。关系数据库建立在集合论坚固的数学基础上。是集合论在数据组织领域的应用。在关系数据库里,历有的数据都按表(按关系理沦的术语,表应该被称为“关系’,)进行组织和管理。

关系数据库的内部结构

关系数据库是由数据表和数据表之间的关联组成的。其中数据表通常是一个由行和列组成的二维表,每个数据表分别说明数据库中某特定的方面或部分的对象及其属性。数据库表中的行通常叫做记录或元组。它代表众多共有相同属性的对象中的一个。数据库表中的列通常叫做字段或属性。它代表相应数据库表中存储对象的共有属性。

  从这个学生信息表中可以清楚地看到,该表中的数据都是学校学生的具体信息。其中表中的每条记录代表一名学生的完整信息。每一个字段代表学生的一方面信息,这样就组成了一个相对独.立于其他数据表之外的【学生信息】表。可以对这个表进行添加、删除或修改记录等操作作,而完全不会影响到数据库中其他的数据表。

关系数据库中表的关联

  在关系型数据库中,表的关联是一个非常重要的组成部分。表的关联是指数据库中的数据表与数据表之间使用相应的字段实现数据表的连接。通过使用这种连接,无须再将相同的数据多次存储,同时,这种连接在进行多表查询时也非常重要。

  在下图所示的【项日计划】表中,使用“负责人编号”列将【项目计划】表同【负责人】表连接起来。使用‘营销员编号’列将【项目计划】表同【营销员】表连接起来。这样,在想通过项目名称查询项目负责人的土资或者营销员姓名时,只需要告知管理系统需要查询的项目名称,然后使用“负责人编号”和“营销员编号”列关联【项目计划】表、【负责人】表就可以实现了。 

注意:

  在数据库设计的过程中,所有的数据表名称都是唯一的.因此不能将不同的数据表命名为相同的名称,但是在不同的表中可以存在同名的列。

关系数据库术语:                                                                     

关系数据库的特点是在于它将每个具有相同属性的数据独立的存在一个表中。对任何一个表而言,用户可以新增.删除和修改表中的数据,而不会影响表中的其他数据。下面来了解一下关系数据库中一些基础的术语:

实体(entity)

客观存在并可互相区别的事物称为实体。实体可以是集体的人,事,物,也可以是抽象的概念或联系。Eg:一个学生,一个部门,一次选课,教师和院系的工作关系等都是实体。

属性(attribute)

实体所具有的某一特性称为属性。一个实体可以由若干属性来刻画。Eg:学生实体可以由学号、姓名、性别、出生年月、所在院系等属性组成。

实体型(entity type)

具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。Eg:学生(学号,姓名,性别,出生年月,所在院系,入学时间)就是一个实体型。

实体集(entity set)

同一实体的集合称为实体集。Eg:全体学生就是一个实体集。

联系(relationship)

在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常指组成实体的各属性之间联系。实体之间的联系通常指不同实体集之间的联系。

键码(key)

关系模型中一个重要概念,在关系中用来标识行的一列或多列(唯一标识实体的属性集)。Eg:学号是学生实体的码。

主关键字(primary key)

它是被挑选出来作为表行的唯一标识的候选关键字,一个表中只有一个主关键字,主关键字又称主键。主键可以由一个字段组成,分别称为单字段主键或多字段主键。

候选关键字(Candidate key)

它是唯一标识表中的一行而又不含多余属性的一个属性集。

公共关键字(Common key)

在关系数据库中,关系之间的联系是通过相容或相同的属性或属性组来表示的。如果两个关系中具有相容或相同的属性或属性组,那么这个属性或属性组被称为这两个关系的公共关键字

外关键字(foreign key)

如果公共关键在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字。由此可见,外关键字表示了两个关系之间的联系外关键字又称为外键。

注意:

主健与外键的列名称可以是不同的,但必须要求它们的值集相同,即主健所在表中出现的教据一定要和外键所在表中的值匹配。

关系模型完整性规则

  根据关系数据理论和Codd准则的定义,一种语言必须能处理与数据库的所有通信问题,这种语言有时也称为综合数据专用语言。该语言在关系型数据库管理系统中就是SQL 。SQL的使用土要通过数据操纵、数据定义和数据管理3种操作实现。

  关系模型的完整性规则是对数据的约束。关系模型提供了3类完整性规则:实体完整性规则.参照完整性规则和用户定义完整性规则。其中实体完整性规则和参照完整性规则是关系搜型必须满足的完整胜约束条件.称为关系完整性规则。

实体完整性

实体完整性指关系的主属性(主键的组成部分)不能为空值。现实世界中的实体是可区分的,au即它们具有某种唯一性标识。相应地,关系模型中以主键作为唯一性标识,主键中的属性即主属性不能取空值(“不知道”或“无意义”的值)。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的环境相矛盾,因此这个实体

一定不是一个完整的实体。

参照完整性

如果关系的外键RI与关系R2中的主键相符,那么外键的每个值必须在关系R2中主键的值找到或者是空值。

用户定义完整性

它是针对某一具体的实际数据库的约束条件。它由应用环境所决定,反映某一具体应用所涉及的数据必须满足的要求。关系模型提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理,而不必由应用程序承担这一功能。

原文地址:https://www.cnblogs.com/Vison133/p/sql-note-02.html

时间: 2024-08-14 02:03:01

02_关系数据库的相关文章

关系数据库&&NoSQL数据库

在过去,我们只需要学习和使用一种数据库技术,就能做几乎所有的数据库应用开发.因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库.在高速发展的WEB2.0时代,我们发现关系数据库在性能.扩展性.数据的快速备份和恢复.满足需求的易用性上并不总是能很好的满足我们的需要,我们越来越趋向于根据业务场景选择合适的数据库,以及进行多种数据库的融合运用. 当我们在讨论是否要使用NoSQL的时候,你还需要理解NoSQL也是分很多种类的,在No

MongoDB是一个介于关系数据库和非关系数据库之间的产品

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引.它的特点是高性能.易部署.易使用,存储数据非常方便. MongoDB[1]的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的R

关系数据库的几种设计范式介绍

关系数据库的几种设计范式介绍1.第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库. 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性.如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系.在第一范式(1NF)中表的每一行只包含一个实例的信息.例如,对于图3-2 中的员工

关系数据库小小基础

什么是关系型数据库: 关系型数据库基于关系模型,关系模型是通过二维表保存实体和实体间的关系,所以关系型数据库存储的是由行和列组成的表,每张表可以看作一个实体集,实体之间是有关系的,多张表组成数据库 为什么需要关系模型: 以前数据的逻辑结构有,层次型.网状型,能很好地解决存储的问题,但层次型处理对象间的关系比较麻烦,网状型维护复杂,且查询时需指定类型和路径,所以出现了关系模型 关系型数据表示形式 一个文件在linux文件系统中的表现形式是这样的 表示层:文件形式 逻辑层:文件系统(作为一个中间的映

关系数据库范式粗略理解

粗略看了一下关系数据库范式介绍,简单记录一下自己的理解 第一范式:指属性达到原子性,即属性不可再进行分割了.例如一张person 表,其中有个字段是个人信息p_info,这个个人信息可再分割成姓名,性别,年龄三个字段.那么person这张表就没有达到第一范式,应把个人信息分解成姓名,性别,年龄之后才算达到第一范式. 第二范式:指在达到第一范式的基础上,非主属性完全函数依赖于主属性,就好比表中设了主键,主键之外的属性完全依赖于主属性.完全函数依赖指 x决定y,但是x的任意一个子集都不能决定y.即若

yii关系数据库多表查询

两个表的model继承自CActiveRecord class User extends CActiveRecord class Post extends CActiveRecord 很明显,User和Post是一对多的关系 在两个Model中覆盖relations方法 //class Post public function relations() { return array( 'author'=>array(self::BELONGS_TO, 'User', 'id') ); } // 格

关系数据库

本节要点: 关系数据结构 关系 关系模式 关系数据库 关系操作 关系的完整性约束 关系数据库系统是支持关系模型的数据库系统,关系数据库应用数学方法来处理数据库中的数据.按照数据模型的3个要素,关系模型由关系数据结构.关系操作集合和关系完整性约束3个部分组成. 1          关系数据结构 1.1          关系 关系模型是建立在集合代数的基础上的,这里从集合论角度给出关系数据结构的形式化定义. 1)         域(Domain) 域是一组具有相同数据类型的值的集合.例:整数.

如何将Bitcoin比特币区块链数据导入关系数据库

在接触了比特币和区块链后,我一直有一个想法,就是把所有比特币的区块链数据放入到关系数据库(比如SQL Server)中,然后当成一个数据仓库,做做比特币交易数据的各种分析.想法已经很久了,但是一直没有实施.最近正好有点时间,于是写了一个比特币区块链的导出导入程序. 之前我的一篇博客:在区块链上表白——使用C#将一句话放入比特币的区块链上  介绍了怎么发起一笔比特币的交易,今天我们仍然是使用C#+NBitcoin,读取比特币钱包Bitcoin Core下载到本地的全量区块链数据,并将这些数据写入数

NoSQL数据库探讨之一 - 为什么要用非关系数据库?

随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1.High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往 往要达到每秒上万次读写请求.