精华内容
下载资源
问答
  • 关系型数据库以行和列的形式存储数据,行和列的形式被称为是由一组相关实体组成的集合。一组组成了数据库。表中的一行称为关系的一个元组,用来存储事物的一个实例;表中的一列称为关系的一个属性,用来描述...
  • 关系型数据库表之间可存在的联系/关系(relationship)有三种:一对一、一对多和多对多。

    关系型数据库表之间的联系[关系]详解

    在表中,行和列的逻辑顺序无关紧要。每个表至少包含一列,该列被称为主键,它唯一地标识了表中的每一行。

    是表中扮演特殊角色的列,有两种键:主键、外键。

    主键(Primary Key)由一列或多列组成,唯一地标识了表中的每一行(主键由多列组成时称为复合主键,对于多列组合的主键,某列值可以重复,但列的组合值必须唯一),其值标识了数据库中的特定行,实现了表级完整性——确保没有重复的行。它还被用来和数据库中的其他表之间建立关系。如下面两个表,AgentID列是一个典型的主键,它唯一地标识了Agents(经纪人)表中的每一行,并通过确保没有重复的行来实现表级完整性。它还被用来在Agents表和数据库中的Entertainers(艺人)表之间建立关系。

    通常复制第一个表的主键,并将其插入到第二个表(称为从表)中。在第二个表中,这个主键被称为外键。(为何称为外键?因为第二个表有自己的主键,而你引入的第一个表的主键原本并不在第二个表中。在从表中外键的列名不必主表中主键的列名相同,虽然一般相同。

    外键(Foreign Key):关系R中的一个属性组,它不是R的候选键,但它与另一个关系S的候选键相对应,则称这个属性组为R的外键(外码)。关系R称为参照关系(Referencing Relation也称为参照表从表),关系S称为被参照关系(Referenced Relation也称为被参照表主表)

    外键很重要,这不仅是因为它被用来在两个表之间建立关系,还因为它可确保关系级完整性。保关系级完整性意味着两个表中的行将被正确地关联起来,因为外键的值必须与其引用的主键的值相同。外键还有助于避免出现致命的“孤行”。

     

    建立外键约束(FOREIGN KEY)后,从表中的外键的取值,要么在主表有对应的值,要么为NULL,但不能是主表中没有对应的值。特殊情况下,从表和主表可以是同一个表。

     

    表之间可存在的联系/关系(relationship)有三种:一对一、一对多和多对多。

    【请注意,在英语国家讲数据库的英语文献中,relation有时指“表”,有时指两表之间的联系(relationship)。

    relationship和relation通常都翻译为关系,但在数据库中两者含义不同。relationship[关系;联系;关联],在数据库中指不同表之间的数据彼此联系的方法。数据库表之间的表之间的relationship有:一对一、一对多、多对多。relation[关系],在数据库指表,从本质上说,关系是一个包含行和列的二维表或数组。应根据语境区别理解。】

    先介绍一对一,如下图,其中Agents(经纪人)为主表,而Compensation(报酬)为从表。Agents表中的每行都只关联到Compensation表中的一行,而Compensation表中的每行也都只关联到Agents表中的一行。请注意,AgentID实际上是这两个表的主键,它还是从属表的外键。

     

    一对多,如下图,其中一个表中的一行可能关联到另一个表中的多行,但后者中的一行只关联到前者中的一行。要建立这种关系,可将位于“一”端的表中的主键作为外键插入到位于“多”端的表中。

    下图演示了一个典型的一对多关系。在这个示例中,Entertainers( 艺人)表中的一行可能关联到Engagements(预约)表中的多行,但Engagements表中的一行只关联到Entertainers表中的一行。你可能猜到了,在Engagements表中,EntertainerID为外键。

     

    多对多,两个表的任一个表中的一行都可能关联到另一个表中的多行,为了正确地建立这种关系,必须创建链接表(linking table)。链接表让你能够将一个表中的行关联到另一个表中的行,还可避免添加、删除或修改相关的数据时出现问题。为了定义链接表,可复制多对多关系中每个表中的主键,并根据它们来定义链接表的结构。这些列有两个作用:它们一起构成了链接表的复合主键,同时单独充当外键。

    下图演示了一个无法解析的多对多关系,其中Customers( 客户)表中的一行可能关联到Entertainers(艺人)表中的多行,同时Entertainers表中的一行可能关联到Customers表中的多行。

    多对多关系是无法直接解析的,通过创建并使用链接表,可正确地解析多对多关系,如下图所示:

    链接表是以Customers(客户)表中的CustomerID和Entertainers(艺人)表中的EntertainerID为基础创建的。与数据库中的其他表一样,这个新的链接表也有名称——Engagements(预约)。实际上,Engagements是一个典型的存储事件信息的表。演唱组合1003(JV & the Deep Six)在2月23日为顾客10001(Doris Hartwig)演出了。链接表让你能够存储有关这种关联的额外信息,如日期,还可能有演出合约的价格。链接表能够将多对多关系涉及的两个表中的任意数量的行关联起来。

     

    外键约束详解及术语释疑 https://blog.csdn.net/cnds123/article/details/39827049

    展开全文
  • 当前数据库分为关系型数据库和非关系型数据库 关系型数据库 关系型数据库:指采用了关系模型来组织数据的数据库。 关系模型指的就是二维表格模型...属性:二维表中的一数据库称为字段 域:属性的取值范...

    当前数据库分为关系型数据库和非关系型数据库

    • 关系型数据库

      关系型数据库:指采用了关系模型来组织数据的数据库。
      关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

    • 关系模型中常用的概念:

      关系:一张二维表,每个关系都具有一个关系名,也就是表名
      元组:二维表中的一行,在数据库中被称为记录
      属性:二维表中的一列,在数据库中被称为字段
      :属性的取值范围,也就是数据库中某一列的取值限制
      关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
      关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, … … ,属性N),在数据库中成为表结构

    • 关系型数据库的优点:

      1.容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解
      2.使用方便:通用的SQL语言使得操作关系型数据库非常方便
      3.易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率

    • 关系型数据库存在的问题

      1.网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
      2.网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的
      3.在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。当需要对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移。
      4.性能欠佳:在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。

    数据库事务必须具备ACID特性
    ACID分别是
    Atomic原子性,
    Consistency一致性,
    Isolation隔离性,
    Durability持久性。

    当今十大主流的关系型数据库

    Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,
    Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP

    非关系型数据库

    非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。

    非关系型数据库结构

    非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。

    优点:
    1.用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。
    2.适用于SNS(Social Networking Services)中,例如facebook,微博。系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库难以应付,需要新的结构化数据存储。由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

    不足
    只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适。不适合持久存储海量数据

    非关系型数据库的分类

    非关系型数据库都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:

    面向高性能并发读写的key-value数据库
    key-value数据库的主要特点是具有极高的并发读写性能
    Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
    主流代表为Redis, Amazon DynamoDB, Memcached,
    Microsoft Azure Cosmos DB和Hazelcast

    面向海量数据访问的面向文档数据库
    这类数据库的主要特点是在海量的数据中可以快速的查询数据
    文档存储通常使用内部表示法,可以直接在应用程序中处理,主要是JSON。JSON文档也可以作为纯文本存储在键值存储或关系数据库系统中。
    主流代表为MongoDB,Amazon DynamoDB,Couchbase,
    Microsoft Azure Cosmos DB和CouchDB

    面向搜索数据内容的搜索引擎
    搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统。
    主要是用于对海量数据进行近实时的处理和分析处理,可用于机器学习和数据挖掘
    主流代表为Elasticsearch,Splunk,Solr,MarkLogic和Sphinx

    面向可扩展性的分布式数据库
    这类数据库的主要特点是具有很强的可拓展性
    普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。
    这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。
    主流代表为Cassandra,HBase,Microsoft Azure Cosmos DB,
    Datastax Enterprise和Accumulo

    CAP理论

    NoSQL的基本需求就是支持分布式存储,严格一致性与可用性需要互相取舍
    CAP理论:一个分布式系统不可能同时满足C(一致性)、A(可用性)、P(分区容错性)三个基本需求,并且最多只能满足其中的两项。对于一个分布式系统来说,分区容错是基本需求,否则不能称之为分布式系统,因此需要在C和A之间寻求平衡
    C(Consistency)一致性
    一致性是指更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。与ACID的C完全不同
    A(Availability)可用性
    可用性是指服务一直可用,而且是正常响应时间。
    P(Partition tolerance)分区容错性
    分区容错性是指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

    关系型与非关系型数据库的比较

    1.成本:Nosql数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
    2.查询速度:Nosql数据库将数据存储于缓存之中,而且不需要经过SQL层的解析,关系型数据库将数据存储在硬盘中,自然查询速度远不及Nosql数据库。
    3.存储数据的格式:Nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
    4.扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。Nosql基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
    5.持久存储:Nosql不使用于持久存储,海量数据的持久存储,还是需要关系型数据库
    6.数据一致性:非关系型数据库一般强调的是数据最终一致性,不像关系型数据库一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,
    Nosql不提供对事务的处理。

    最近的数据库排名
    网站地址:https://db-engines.com/en/ranking
    在这里插入图片描述
    可以发现现在主流的还是关系型数据库,非关系型数据库中Redis和MongoDB最受欢迎

    展开全文
  • 便于日常用到时进行查找,如下:一、关系型数据库1、含义:关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和的形式存储数据,以便于用户理解,关系型数据库这一系列的行和称为表,一组组成了...

    综合百度百科和自己的理解整理以下内容,便于日常用到时进行查找,如下:

    d9cb7d2ef2c37bfc714d37e4e100a581.png

    一、关系型数据库

    1、含义:

    关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

    2、常见的关系型数据库

    关系型数据库常见的有 Oracle,SQLServer,DB2,Mysql,Microsoft Access等多个品种,每种数据库语法功能各具特色。除了Mysql大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的Mysql性能也受到了诸多的限制。

    3、ACID原则

    关系型数据库强调ACID规则

    (即:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。

    4、其他理解,请百度

    二、非关系型数据库

    1、含义:

    非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言),据维基百科介绍,NoSQL最早出现于1998 年,是由Carlo Storzzi最早开发的个轻量、开源、不兼容SQL 功能的关系型数据库,2009 年,在一次分布式开源数据库的讨论会上,再次提出了NoSQL 的概念,此时NoSQL主要是指非关系型、分布式、不提供ACID (数据库事务处理的四个基本要素)的数据库设计模式。同年,在亚特兰大举行的“NoSQL(east)”讨论会上,对NoSQL 最普遍的定义是“非关联型的”,强调Key-Value 存储和文档数据库的优点,而不是单纯地反对RDBMS,至此,NoSQL 开始正式出现在世人面前。

    2、常见的非关系型数据库有Redis, Amazon DynamoDB, Memcached,

    Microsoft Azure Cosmos DB和Hazelcast

    3、不遵循ACID原则

    4、使用范围:分布式数据库,近几年分布式数据库用的比较火的是redis

    三、数据库排名参考

    地址:

    https://db-engines.com/en/ranking

    如图:(图会随时变更)

    d028fa8a337fbd06f1afe6106fd9470f.png

    PS:以上整理如有不当之处,欢迎留言

    注意:ACID(面试常问)

    数据库事务必须具备ACID特性,ACID分别是Atomic原子性,Consistency一致性,

    Isolation隔离性,Durability持久性。

    展开全文
  • 关系型数据库理论

    千次阅读 2020-08-19 10:15:06
    关系型数据库,是指采用了关系模型来组织数据的数据库,借助集合代数等数学概念和方法来处理数据库的数据。其中,关系模型,即:实体(Entity)之间的关系(Relationship),所以也称为 E-R 模型(Entity-...

    目录

    关系型数据库

    关系型数据库,是指采用了关系模型来组织数据的数据库,借助集合代数等数学概念和方法来处理数据库中的数据。其中,关系模型,即:实体(Entity)之间的关系(Relationship),所以也称为 E-R 模型(Entity-Relationship Model),现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。而集合代数则描述了集合的基本性质和规律,如:并集、交集、补集,以及集合的关系,如:等于、包含、被包含。

    • 关系模型和 “科德十二定律” 由 E.F.Codd 于 1970 年首先提出的,关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成,作为关系型数据库的基石。

    • E-R 模型由陈品山(Peter P.S Chen)博士于 1976 年提出的一套数据库的设计工具,运用了显式世界中的事物与关系的观念,来解释数据库中的抽象的数据架构。E-R 模型利用图形的方式(E-R 图)来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

    • SQL(Structured Query Language,结构化查询语言)由 Boyce 和 Chamberlin 于 1974 年提出,作为关系型数据库语言的标准,是一种介于关系代数与关系演算之间的结构化查询语言(具有关系代数和关系演算双重特征),执行对关系型数据库中数据的检索和操作。

    关系型数据库以行(Row)和列(Column)的形式存储数据,这一系列的行和列被称为表(Table),包括基础表、派生表(查询结果)和虚拟表(视图),一组表再组成了数据库。从这个角度来看,“实体” 可以理解为二维表格模型,而 “关系” 则是这些二维表及其之间的组织方式。简而言之,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。

    关系型数据库的特点:

    1. 基于模型的储存方式,也称为结构化存储,储存结构化数据:关系型数据库采用行列二维表格的方式进行存储。并且每个数据表的表项(列)都必须预先定义好该字段的属性(例如:类型、长度),然后再严格按照数据表的结构存入数据。结构化存储的好处在于数据的结构在存入之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高;相对的,结构化存储的灵活性就会很差,一旦存入数据后再要修改数据表的结构就会十分困难。这就要求了关系型数据库应用系统必须要考虑数据库灰度升级的方案(注:这里不是指 RDBMS 软件的升级)。

    2. 存储规范:关系型数据库为了避免储存冗余数据以及充分利用好存储空间,要求数据按照最小关系表的形式进行储存,根据合理的范式进行分表。

    3. 扩展方式:关系型数据库数据操作的瓶颈主要有两个方面:1)运行环境的硬件性能;2)数据库表设计的合理性。关系型数据库多表之间可能存在复杂的关联关系(例如:多表级联查询),而且数据表越多这个问题越严重。也由于多表间所具有的关联关系,导致关系型数据库不具备分布式运行的条件。关系型数据库大多采用主备高可用方案,只能纵向扩展,无法很好地实现原生的分布式集群方案。相对的大多数非关系型数据库都支持集群模式。

    4. 查询方式:关系型数据库采用结构化查询语言(即 SQL)来对数据库进行查询,SQL 支持 CRUD(增加,查询,更新,删除)操作,还可以采用类似索引的方法来加快查询操作。

    5. 事务性:即 ACID 规则,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

    6. 读写性能:关系型数据库十分强调数据的一致性,并为此付出了降低读写性能的代价。因此相对于非关系型数据库,关系型数据库具有非常不错的数据处理可靠性,但高并发读写性能欠佳。

    科德十三准则(RDBMS 十三准则)

    全关系系统应该完全支持关系模型的所有特征。关系模型的奠基人埃德加·科德具体地给出了全关系系统应遵循的基本准则。

    1. 一个关系型的关系数据库管理系统必须能完全通过它的关系能力来管理数据库。
    2. 信息准则:关系数据库管理系统的所有信息都应该在逻辑一级上用表中的值这一种方法显式的表示。
    3. 保证访问准则:依靠表名、主键和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项。
    4. 空值的系统化处理:全关系的关系数据库管理系统支持空值的概念,并用系统化的方法处理空值。
    5. 基于关系模型的动态的级联数据字典数据库的描述在逻辑级上和普通数据采用同样的表述方式。
    6. 统一的数据子语言:一个关系数据库管理系统可以具有几种语言和多种终端访问方式,但必须有一种语言,它的语句可以表示为严格语法规定的字符串,并能全面的支持各种规则。
    7. 视图更新准则:所有理论上可更新的视图也应该允许由系统更新。
    8. 高级的插入、修改和删除操作:系统应该对各种操作进行查询优化。
    9. 数据的物理独立性:无论数据库的数据在存储表示或访问方法上作任何变化,应用程序和终端活动都保持逻辑上的不变性。
    10. 数据逻辑独立性:当对基本关系进行理论上信息不受损害的任何改变时,应用程序和终端活动都保持逻辑上的不变性。
    11. 数据完整的独立性:关系数据库的完整性约束条件必须是用数据库语言定义并存储在数据字典中的。
    12. 分布独立性:关系数据库管理系统在引入分布数据或数据重新分布时保持逻辑不变。
    13. 无破坏准则:如果一个关系数据库管理系统具有一个低级语言,那么这个低级语言不能违背或绕过完整性准则。

    ACID 原则

    • 原子性(Atomicity):指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

    • 一致性(Consistency):指一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态,即:从一个一致性状态变换到另外一个一致性状态。

    • 隔离性(Isolation):指在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。

    • 持久性(Durability):指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

    事务的 ACID 特性是由 RDBMS 来实现的。RDBMS 通常会采用日志机制来保证事务的 ACID。日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志,撤销事务对数据库已做的更新,使数据库退回到执行事务前的初始状态。简单来说:

    • 原子性:要么全有,要么全无;
    • 一致性:每次读取的都必须是最新数据;
    • 隔离性:多并发事务互相隔离,对共享数据加锁;
    • 持久性:数据最终的落盘变更是持久而不变的。

    数据结构

    数学建模

    • 域(Domain):是一组具有相同数据类型的值的集合。例如:整数、实数、介于某个取值范围的整数、指定长度的字符串集合、{‘男’,‘女’}。

    • 笛卡尔积(Cartesian Product):表示为 X × Y,第一个对象是 X 的成员而第二个对象是 Y 的所有可能有序对的其中一个成员。假设集合 X={a, b},集合 Y={0, 1, 2},则两个集合的笛卡尔积为 {(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。在关系数据结构中,运算因子为一组域,例如:D1,D2,…,Dn。

    在这里插入图片描述

    • 元组(Tuple):笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个 n 元组(n-tuple)。

    • 分量(Component):笛卡尔积元素(d1,d2,…,dn)中的每一个值 d[i] 叫作一个分量。

    • 基数(Cardinal number):若 di(i=1,2,…,n)为有限集,其基数为 mi(i=1,2,…,n)。简而言之,基数就是笛卡尔积中所包含的元组的数量。例如:D1×D2×…×Dn 的基数 M 为:
      在这里插入图片描述
      下面看一个示例。

    给出 3 个域:

    1. D1 = 导师集合 SUPERVISOR ={张清玫,刘逸}
    2. D2 = 专业集合 SPECIALITY ={计算机专业,信息专业}
    3. D3 = 研究生集合 POSTGRADUATE ={李勇,刘晨,王敏}

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

    D1×D2×D3={
    (张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
    (张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
    (张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
    (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
    (刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
    (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏)

    基数为:2 × 2 × 3=12。

    实现表征

    回头再看关系数据结构在关系型数据库中的应用,当我们要查询的数据被存放在 n 张表时,RDBMS 首先需要对 n 张表求得笛卡尔积,然后在根据过滤条件返回其中的 m 个元组(记录)。

    • 笛卡尔积 R(D1×D2×…×Dn) 的子集叫作在域 D1,D2,…,Dn 上的一个关系(R:关系名;n:关系的目)。对于关系型数据库而言,笛卡尔积的某个子集才有实际含义。
    • 关系表现为一张二维表,每行对应一个元组,每列或多列对应一个域。
    • 关系中不同列可以对应一个相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute), n 目关系必有 n 个属性。
    • 码(键):
      • 候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
      • 全码(All-key):极端的情况,关系中的所有属性组都是这个关系的候选码,称为全码。
      • 主码(Primary key):若一个关系有多个候选码,则选定其中一个为主码。
      • 主属性:候选码的主属性(Prime attribute),不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute)

    关系的性质:

    • 列是同质的(Homogeneous)。
    • 不同的列可以出自同一个域,其中的每一列称为一个属性,不同的属性要给予不同的属性名。
    • 行或列的顺序无所谓。
    • 任意两个元组的候选码不能相同。
    • 分量必须取原子值。

    完整性约束

    完整性约束用于维护数据的完整性或者满足业务约束的需求。实体完整性、参照完整性是关系模型必须满足的完整性约束条件,称为关系的两个不变性,应该由 RDBMS 支持。而用户定义的完整性,是应用领域需要遵循的约束条件,体现了具体领域中的语义约束 。

    实体完整性(主键约束)

    规则:

    1. 若属性 A 是基本关系 R 的主属性,则属性 A 不能取空值。
    2. 空值就是 “不知道” 或 “不存在” 或 “无意义” 的值。

    规则说明:

    • 实体完整性规则是针对基本关系而言的,一个基本表通常对应现实世界的一个实体集。
    • 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
    • 关系模型中以主码作为唯一性标识。
    • 主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。

    参照完整性(外键约束)

    注:参照,Reference 也翻为 “引用”。

    规则:若属性(或属性组)F 是基本关系 R 的外码,它与基本关系 S 的主码 Ks 相对应(基本关系 R 和 S 不一定是不同的关系),则对于 R 中每个元组在 F 上的值必须为:

    • 或者取空值(F 的每个属性值均为空值)。
    • 或者等于 S 中某个元组的主码值。

    关系间的引用

    在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用。

    如下例:

    • “学号” 是主码,“班长” 是外码,它引用了本关系的 “学号”。
    • “班长” 必须是确实存在的学生的学号。

    在这里插入图片描述

    外码(键)

    设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的码。如果 F 与基本关系 S 的主码 Ks 相对应,则称 F 是 R 的外码。

    • 基本关系 R 称为参照关系(Referencing Relation)
    • 基本关系 S 称为被参照关系(Referenced Relation)或目标关系(Target Relation)

    规则:

    • 关系 R 和 S 不一定是不同的关系。
    • 目标关系 S 的主码 Ks 和参照关系的外码 F 必须定义在同一个(或一组)域上。
    • 外码并不一定要与相应的主码同名,当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。

    例如:

    • 学生关系的 “专业号” 与专业关系的主码 “专业号” 相对应。
    • “专业号” 属性是学生关系的外码。
    • 专业关系是被参照关系,学生关系为参照关系。

    在这里插入图片描述

    用户定义完整性(非空约束、唯一约束、检查约束和默认值)

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

    例如:课程(课程号,课程名,学分)

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

    操作集合

    关系操作的本质就是集合的操作,操作的对象和结果都是集合,一次一集合的方式。

    • 数据查询操作:选择(Selection)、投影(Projection)、连接(Join)、并集(Union)、差集(Exception)、交集(Intersection)、笛卡尔积(Cartesian product)、除。其中,选择、投影、并、差、笛卡尔基是 5 种基本操作。
    • 数据更新操作:插入、删除、修改。

    关系代数运算

    关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。运算对象是关系、运算结果亦为关系、关系代数的运算符有两类:集合运算符和专门的关系运算符。

    • 传统的集合运算是从关系的 “水平” 方向即行的角度进行。
    • 专门的关系运算不仅涉及行而且涉及列。

    关系代数运算符:
    在这里插入图片描述

    传统的集合运算

    • R:
      在这里插入图片描述

    • S:
      在这里插入图片描述

    R 和 S:

    • 具有相同的 n 目(即两个关系都有 n 个属性)
    • 相同的属性取自同一个域。

    并集运算

    R ∪ S:仍为 n 目关系,由属于 R 或属于 S 的元组组成。

    在这里插入图片描述

    差集运算

    R - S:仍为 n 目关系,由属于 R 而不属于 S 的所有元组组成。

    在这里插入图片描述

    交集运算

    R ∩ S:仍为 n 目关系,由既属于 R 又属于 S 的元组组成。

    在这里插入图片描述

    笛卡尔积

    R × S:

    • 列:(n + m)列元组的集合,元组的前 n 列是关系 R 的一个元组,后 m 列是关系 S 的一个元组。
    • 行:k1 × k2 个元组。

    在这里插入图片描述

    专门的关系运算

    在这里插入图片描述

    • Student
      在这里插入图片描述

    • Course
      在这里插入图片描述

    • S-C:
      在这里插入图片描述

    选择运算(WHERE 根据条件过滤行)

    选择运算又称为限制(Restriction):在关系中选择满足给定条件的元组。选择条件是一个逻辑表达式,例如:>,≥,<,≤,= 或 <>,结果为 “真” 或 “假”。选择运算主要是从列的角度进行运算。

    例如:查询 IS 系(信息系)全体学生。

    在这里插入图片描述

    投影运算(SELETE 显式选取列)

    从关系 R 中选择出若干属性列组成新的关系 S。投影运算主要是从列的角度进行运算。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)。

    在这里插入图片描述

    例如:查询学生的姓名和所在系。即:求 Student 关系上学生姓名和所在系两个属性上的投影。

    在这里插入图片描述

    连接运算(JOIN 多表级联)

    在这里插入图片描述

    连接运算有以下类型:

    • 等值连接:是条件连接(或称 θ 连接)在连接运算符为 “=” 号时。例如:select * from A, B where A.学号=B.学号

    • 非等值连接:对比等值连接,例如:select * from B, B mm where B.成绩>mm.成绩

    • 自连接:自己和自己做笛卡尔积,例如:select * from A mm, A tt where mm.姓名=tt.姓名

    • 自然连接:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。即:自然连接使用多表中所有相同字段(不但值相同,名字也要相同)进行连接(两表中有几个相同,就连接合并几个相同字段)。例如:select * from A natural join B

    • 外连接(Outer Join):将两个表等值连接了起来,次结果会将 A 表或 B 表中不符合的行删除。此时保留不合格的次行信息,便有了左外连接和右外连接和全连接。

      • 左外连接(LEFT OUTER JOIN 或 LEFT JOIN),左表 A 的记录将会全部表示出来,而右表 B 只会显示符合搜索条件的记录。右表记录不足的地方均为 NULL。例如:select * from A left outer join B on A.成绩=B.成绩 order by A.学号
      • 右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN),与左外连接实现效果相反。
      • 全连接(FULL OUTER JOIN 或 FULL JOIN):同时实现了左外和右外连接的效果。

    除运算

    除运算是同时从行和列角度进行运算。

    • 给定关系 R (X,Y) 和 S (Y,Z),其中 X,Y,Z 为属性组。
    • R 中的 Y 与 S 中的 Y 可以有不同的属性名,但必须出自相同的域集。
    • R 与 S 的除运算得到一个新的关系 P(X),P 是 R 中满足下列条件的元组在 X 属性列上的投影:元组在 X 上分量值 x 的象集 Yx 包含 S 在 Y 上投影的集合,记作:
      在这里插入图片描述

    在这里插入图片描述

    示例:设关系 R、S 分别为下图。

    • R
      在这里插入图片描述

    • S
      在这里插入图片描述

    • R / S
      在这里插入图片描述

    在关系 R 中,A 可以取四个值 {a1,a2,a3,a4}

    • a1 的象集为 {(b1,c2),(b2,c3),(b2,c1)}
    • a2 的象集为 {(b3,c7),(b2,c3)}
    • a3 的象集为 {(b4,c6)}
    • a4 的象集为 {(b6,c6)}

    关系 S 在 (B,C) 上的投影为:{(b1,c2),(b2,c1),(b2,c3) }

    只有 a1 的象集包含了 S 在 (B,C) 属性组上的投影,所以 R / S = {a1}。

    主流的 RDBMS

    下面列举笔者使用过的几个主流 RDBMS:

    • Oracle:Oracle 公司前身叫 SDL,由 Larry Ellison 和另两个编程人员在 1977 创办,是最早的 RDBMS 厂商之一。1983 年,Oracle 公司发布了世界上第一个商业化 RDBMS。

    • MySQL:是一个轻量级的开源 RDBMS,开发者为瑞典 MySQL AB公司。MySQL 是最流行的关系型数据库管理系统之一,在 2008 年被 Sun 公司收购,然后又被 Oracle 收购并闭源。在社区切出了开源分支 MariaDB,所以 MySQL 常被诟病为不纯粹的开源软件。

    • PostgreSQL:是以加州大学伯克利分校计算机系开发的 ORDBMS(对象关系型数据库管理系统),完全开源并由社区驱动,具有可以说是目前世界上最丰富的数据类型的支持。另外,PostgreSQL 是目前唯一一个同时支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的开源数据库管理系统。

    参考文档

    https://blog.csdn.net/sjjsaaaa/article/details/106781879

    展开全文
  • 关系型数据库

    万次阅读 2019-03-19 17:06:24
    数据之间存在着像树一样的层级关系 定义: 有且只有一个结点没有双亲结点,这个结点称为根结点 根以外的其它结点有且只有一个双亲结点 特点: 结点的双亲是唯一的; 只能直接处理一对多的实体联系 ; 任何记录...
  • 数据库 一、概念 数据库是以一定方式储存一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 ...三、NoSQL与关系型数据库的区别 存储方式 传统的关系型数...
  • 一、关系型数据库  关系型数据库,是指采用了关系模型来组织数据的数据库... 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维及其之间的联系所组成的一个数据组织。 关系模型常用的概念:
  • 关系型数据库由哪三部分组成 使用关系数据库 (Using The Relational Database) A relational database is used for electronic data management in computer systems and is based on the relational database model...
  • 什么是关系型数据库? 关系数据库,是建立关系模型基础上的数据库,借助于集合代数等...关系模型就是指二维表格模型,因而一个关系型数据库就是由二维及其之间联系组成的一个数据组织。 实体关系模型(Entity-Relat
  • 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和的形式存储数据,以便于用户理解,关系型数据库这一系列的行和称为表,一组组成了数据库。用户通过查询来检索数据库的数据,而查询是一个...
  • 关于关系型数据库的一些基本概念

    千次阅读 2020-06-17 11:03:43
    一、数据库 1、数据库简介 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储...用户通过数据库管理系统访问数据库中表内的数据。 管理数据库操作系统的程序员叫做数据库管理员DBA(dat
  • 常见的数据库模型分为两种,分别是关系型数据库和...关系模型就是指二维表格模型,因而一个关系型数据库就是由二维及其之间的联系组成的一个数据组织。 关系型数据库优点: 容易理解:二维结构是非常贴近逻辑...
  • 2.非关系型数据库通常指数据以对象的形式存储数据库,而对象之间的关系通过每个对象自身的属性来决定  比如 有一个学生的数据:  姓名:张三,性别:男,学号:12345,班级:二年级一班  还有一个班级的...
  • 今天看到一篇文章,里面有一句话,先摘录下来: 面对压力,我可以挑灯夜战、不眠不休;...数据是数据库中存储的基本对象,是按一定顺序排列组合的物理符号。数据有多种表现形式,可以是数字、文字、...
  • 关系型数据与非关系型数据库NoSql

    千次阅读 2016-05-20 14:52:29
    最近经常听到NoSql,不知道什么意思,百度之,发现NoSql就是...1.非关系型数据库不需要之间有联系。 2.非关系型数据库对事务没有需求,不需要严格的保证数据的一致性。 3.非关系型数据库追求的是高并发,高扩展性
  • 关系型数据库基础总结

    千次阅读 2016-08-07 12:44:01
    关系型数据库管理系统简介 数据库的集中式控制有如下优点:  1.降低数据存储的冗余度  2.更高的数据一致性  3.存储的数据可以共享  4.便于维护数据完整性  5.能够实现数据的安全性   ...
  • 数据库根据其数据的存储方式可以分为关系型数据库和非关系型数据库。常见的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。常见的非关系性数据库有 NoSql、Cloudant,Hbase等 3....
  • clickhouse是一个完全式的分布式数据库管理系统,最开始是为世界第二大web分析平台YandexMetrica 设计开发的。 用户的查询纬度是多变的、不确定的、而又需要快速的得到结果,因此需要联机分析处理。起初,...
  • HarmonyOS数据库之关系型数据库

    千次阅读 2021-07-15 11:43:40
    数据库的操作及管理基础概述关系型数据库创建前的配置关系型数据库创建...关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库,创建关系模型基础上的数据库,以行和的形式存储数据。。
  • 我一直使用MySql进行数据库的增删改查等操作,也知道MySql叫数据库,却没有深入的探讨一下MySql是什么类型的...首先MySql数据库称为关系型数据库,所谓关系型数据库,就是建立关系模型的基础上创建的数据库...
  • 目录: 1.什么是数据库 2.数据库的种类 3.数据库的存储方式 4.关系型数据库的优缺点及使用场景 ...数据库根据其数据的存储方式可以分为关系型数据库和非关系型数据库。常见的关系型数据库有Oracle、D...
  • 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和的形式存储数据,以便于用户理解,关系型数据库这一系列的行和称为表,一组组成了数据库。用户通过查询来检索数据库的数据,而查询是一个...
  • 一、关系型数据库 &nbsp;&nbsp;&nbsp; 关系型数据库,是指采用了关系模型来组织数据的数据库。 &nbsp;&nbsp;&nbsp; 关系模型是1970年由IBM的研究员E.F.Codd博士首先提出的,之后的几...
  • 关系型数据库的理解

    千次阅读 2015-11-26 19:43:50
    1.关系型数据库简单的可以理解为二维数据库,的格式就如Excel,有行有。常用的关系数据库有Oracle,SqlServer,Informix,MySql,SyBase等。(也即是我们平时看到的数据库,都是关系型数据库) 2.所谓关系型...
  • 关系型数据库与NoSQL数据库简述

    千次阅读 2017-09-21 16:10:44
    关系:可以理解为一张二维,每个关系都具有一个关系名,就是通常说的表名元组:可以理解为二维表中的一行,在数据库中经常被称为记录属性:可以理解为二维表中的一在数据库中经常被称为字段域:属性的取值范围...
  • 关系型数据库的特点 …………………………………………………………………………………. 1.关系型数据库 ……………………………………………………………………………………………… 2. 关系型数据库瓶颈 ……...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,066
精华内容 34,026
关键字:

在关系型数据库中表中的列称为