精华内容
下载资源
问答
  • 关系型数据库实现表与表之间的联系
    千次阅读
    2020-06-27 21:48:45

    1.在关系型数据库中,表与表之间的关系主要有三种:(1)一对一,(2)一对多,(3)多对多

    (1)一对一:两张表中的数据是一一对应的,例如--> 用户表user ------- 身份信息表 

    (2)一对多:一张表中的数据,在另一张表中对应多条数据,例--> 英雄表hero ----- 技能表 

    (3)多对多:A表中的数据,在B表中对应多条数据。B表中的数据,在A表中对应多条数据。例-->老师表 ---- 学生表

    2.对于一对一而言,从某些层面上来讲吗,它是没有意义的,我们在设计数据库表时,将表设计成一对一的关系,往往是因为当前表中的字段太多。比如:当前表中一共有100个字段,我们可以将这100个字段拆分成5张表。

    我们在设计一对一这种表关系时,一般需要考虑两种因素:

    (1)数据库的查询性能:对一张表而言,不能有太多的字段。因为如果我们使用ORM映射的方式来查询数据库时,它会将所有的字段信息全部查出,这时,如果一张表的字段太多,会影响查询的性能。

      (2)  考虑业务因素:出于业务的角度,可能需要当前一张大表中的某些字段,需要独立出来,单独形成一张独立的表。这时可以考虑将表进行拆分。

    3.多对多的关系:

    在多对多的关系中,我们需要设计一张中间表,三张表才可以确定一条整体的数据。中间表大致分为两种:(1)只是有确定关联关系的作用,不存在具有业务意义的字段。(2)不仅仅有关联两张表的作用,还存在具有业务意义的字段。

    4.设计数据库表的步骤:

    (1)我们不应该将数据库的每一张表仅仅当做是数据表来处理,而是应该与我们项目中的实体类相对应,每一个实体类对应于数据库中的一张表。

    (2)我们首先需要规划出业务中的一个个业务对象,然后根据业务对象来设计数据库表。

    (3)思考对象与对象之间的业务依赖关系-->是一对一,一对多,还是多对多。那么表与表之间的关联是通过外键的形式来实现的。外键又分为逻辑外键,物理外键。对于物理外键,一般不建议使用。

    (4)整体设计完以后,最后对数据库表进行细化。例如:字段类型,字段的长度限制,是否为空......

            以上只是设计简单项目的数据库,但是对于存储海量数据的数据库而言,我们还需要思考一些其他的维度。例如:单表中的数据记录越多,对数据库性能的影响就会越大。如果单表的字段数量太多,那么就需要考虑对数据库进行垂直拆分,记录太多,那么就需要考虑对数据库进行水平拆分。

     

    5.设计数据库表时,对于是否需要设置物理外键的探讨:

    使用物理外键的好处:它的约束力比较强,可以保证数据的强一致性,但是会影响数据库的查询效率。不使用物理外键,对数据库而言,没有那么强的约束力,相对能提高数据的查询效率。普遍认为,不提倡使用物理外键。

    更多相关内容
  • 关系型数据库表之间可存在的联系/关系(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

    展开全文
  • 数据库 一、概念 数据库是以一定方式储存在一起、能多个用户共享、具有尽可能小的冗余度、应用程序彼此独立的数据集合。 ...三、NoSQL与关系型数据库的区别 存储方式 传统的关系型数...

    数据库

    一、概念

    1. 数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合

    2. 数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

    二、分类

    1. 关系型数据库

    2. NOSQL

    三、NoSQL与关系型数据库的区别

    1. 存储方式

      传统的关系型数据库采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便。

      非关系型数据不适合这样的表格存储方式,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档

    2. 存储结构

      关系型数据库按照结构化的方法存储数据, 每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据,这样做的好处就是由于数据的形式和内容在存入数据之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高,但带来的问题就是一旦存入数据后,如果需要修改数据表的结构就会十分困难。

      NoSQL数据库由于面对的是大量非结构化的数据的存储,它采用的是动态结构,对于数据类型和结构的改变非常的适应,可以根据数据存储的需要灵活的改变数据库的结构。

    3. 存储规范

      关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然,当然这主要是一张数据表的情况。如果是多张表情况就不一样了,由于数据涉及到多张数据表,数据表之间存在着复杂的关系,随着数据表数量的增加,数据管理会越来越复杂。

      NoSQL数据库的数据存储方式是用平面数据集的方式集中存放,虽然会存在数据被重复存储,从而造成存储空间被浪费的问题(从当前的计算机硬件的发展来看,这样的存储空间浪费的问题微不足道),但是由于基本上单个数据库都是采用单独存放的形式,很少采用分割存放的方式,所以这样数据往往能存成一个整体,这对于数据的读写提供了极大的方便。

    4. 扩展方式

      关系型数据库将数据存储在数据表中,数据操作的瓶颈出现在多张数据表的操作中,而且数据表越多这个问题越严重,如果要缓解这个问题,只能提高处理能力,也就是选择速度更快性能更高的计算机,这样的方法虽然可以一定的拓展空间,但这样的拓展空间一定有非常有限的,也就是关系型数据库只具备纵向扩展能力。

      NoSQL数据库由于使用的是数据集的存储方式,它的存储方式一定是分布式的,它可以采用横向的方式来开展数据库,也就是可以添加更多数据库服务器到资源池,然后由这些增加的服务器来负担数据量增加的开销。

    5. 查询方式

      关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,SQL早已获得了各个数据库厂商的支持,成为数据库行业的标准,它能够支持数据库的CRUD(增加,查询,更新,删除)操作,具有非常强大的功能,SQL可以采用类似索引的方法来加快查询操作。

      NoSQL数据库使用的是非结构化查询语言(UnQL),它以数据集(像文档)为单位来管理和操作数据,由于它没有一个统一的标准,所以每个数据库厂商提供产品标准是不一样的,NoSQL中的文档Id与关系型表中主键的概念类似,NoSQL数据库采用的数据访问模式相对SQL更简单而精确。

    6. 规范化

      在数据库的设计开发过程中开发人员通常会面对同时需要对一个或者多个数据实体(包括数组、列表和嵌套数据)进行操作,这样在关系型数据库中,一个数据实体一般首先要分割成多个部分,然后再对分割的部分进行规范化,规范化以后再分别存入到多张关系型数据表中,这是一个复杂的过程。好消息是随着软件技术的发展,相当多的软件开发平台都提供一些简单的解决方法,例如,可以利用ORM层(也就是对象关系映射)来将数据库中对象模型映射到基于SQL的关系型数据库中去以及进行不同类型系统的数据之间的转换。

      对于NoSQL数据库则没有这方面的问题,它不需要规范化数据,它通常是在一个单独的存储单元中存入一个复杂的数据实体。

    7. 事务性

      关系型数据库强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。而NoSQL数据库强调BASE原则(基本可用(Basically Availble)、软状态(Soft-state)、最终一致性(Eventual Consistency)),它减少了对数据的强一致性支持,从而获得了基本一致性和柔性可靠性,并且利用以上的特性达到了高可靠性和高性能,最终达到了数据的最终一致性。

      NoSQL数据库虽然对于事务操作也可以使用,但由于它是一种基于节点的分布式数据库,对于事务的操作不能很好的支持,也很难满足其全部的需求,所以NoSQL数据库的性能和优点更多的体现在大数据的处理和数据库的扩展方面。

    8. 读写性能

      关系型数据库十分强调数据的一致性,并为此降低读写性能付出了巨大的代价,虽然关系型数据库存储数据和处理数据的可靠性很不错,但一旦面对海量数据的处理的时候效率就会变得很差,特别是遇到高并发读写的时候性能就会下降的非常厉害。

      NoSQL数据库相对关系型数据库优势最大的恰恰是应对大数据方面,也就是对于大量的每天都产生非结构化的数据能够高性能的读写,这是因为NoSQL数据库是按key-value类型进行存储的,以数据集的方式存储的,因此无论是扩展还是读写都非常容易,并且NoSQL数据库不需要关系型数据库繁琐的解析,所以NoSQL数据库大数据管理、检索、读写、分析以及可视化方面具有关系型数据库不可比拟的优势。

    9. 授权方式

      关系型数据库常见的有Oracle,SQLServer,DB2,Mysql,除了Mysql大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的Mysql性能也受到了诸多的限制。

      对于NoSQL数据库,比较主流的有redis,HBase,MongoDb,memcache等产品,通常都采用开源的方式,不需要像关系型数据库那样,需要一笔高昂的花费。

    关系型数据库

    一、概念

    1. 在一个给定的应用领域中,所有实体实体之间联系的集合构成一个关系数据库。

    2. 关系数据库的型与值

      关系数据库的型称为关系数据库模式,是对关系数据库的描述,若干域的定义,在这些域上定义的若干关系模式;

      关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库。

    二、分类

    1. 桌面数据库

      例如Access、FoxPro和dBase等

      桌面数据库用于小型的、单机的应用程序,它不需要网络和服务器,实现起来比较方便,但它只提供数据的存取功能。

    2. 客户/服务器数据库

      例如SQL Server、Oracle和Sybase等

      客户/服务器数据库主要适用于大型的、多用户的数据库管理系统,应用程序包括两部分:一部分驻留在客户机上,用于向用户显示信息及实现与用户的交互;另一部分驻留在服务器中,主要用来实现对数据库的操作和对数据的计算处理。

    三、关系模型结构

    1. 单一的数据结构----关系(表文件)

      关系数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组,它类似于Excle工作表。

      一个数据库可以包含任意多个数据表。

      在用户看来,一个关系模型的逻辑结构是一张二维表,由行和列组成。这个二维表就叫关系,通俗地说,一个关系对应一张表。

    2. 元组(记录)

      表中的一行即为一个元组,或称为一条记录。

    3. 属性(字段)

      数据表中的每一列称为一个字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计。

      创建数据表时,为每个字段分配一个数据类型,定义它们的数据长度和其他属性。

      字段可以包含各种字符、数字、甚至图形。

      如错误!未找到引用源。

    4. 属性值

      行和列的交叉位置表示某个属性值,如“数据库原理”就是课程名称的属性值。

    5. 主码

      主码(也称主键或主关键字),是表中用于唯一确定一个元组的数据。

      关键字用来确保表中记录的唯一性,可以是一个字段或多个字段,常用作一个表的索引字段。

      每条记录的关键字都是不同的,因而可以唯一地标识一个记录,关键字也称为主关键字,或简称主键。

      如错误!未找到引用源。

    6. 属性的取值范围。

    7. 关系模式

      关系的描述称为关系模式。

      对关系的描述,一般表示为:关系名(属性1,属性2…属性n)。

      例如上面的关系可描述为:课程(课程号、课程名称、学分、任课老师)。

    非关系型数据库

    一、概念

    1. 非关系型数据库是分布式的非关系型的不保证遵循ACID原则的数据存储系统。

    2. NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。

    二、分类

    1. 键值对存储(key-value)

      代表软件:Redis

      优点:查找速度快

      缺点:数据无结构化,通常只被当作字符串或者二进制数据

      应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

      数据模型:Key 指向 Value 的键值对,通常用hash table来实现

    2. 列存储

      代表软件:Hbase

      优点:查找速度快,可扩展性强,更容易进行分布式扩展

      缺点:功能相对局限

      应用场景:分布式的文件系统

      数据模型:以列簇式存储,将同一列数据存在一起实现

    3. 文档数据库存储

      代表软件:MongoDB

      优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

      缺点:查询性能不高,而且缺乏统一的查询语法。

      应用场景:Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)

      数据模型:Key-Value对应的键值对,Value为结构化数据

    4. 图形数据库存储

      代表软件:InfoGrid

      优点:利用图结构相关算法。比如最短路径寻址,N度关系查找等

      缺点:很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

      应用场景:社交网络,推荐系统等。专注于构建关系图谱

      数据模型:图结构

    三、特点

    1. 易扩展

      NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间,在架构的层面上带来了可扩展的能力。

    2. 大数据量,高性能

      NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般MySQL使用Query Cache。NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说性能就要高很多。

    3. 灵活的数据类型

      NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是——个噩梦。这点在大数据量的Web 2.0时代尤其明显。

    4. 高可用

      NoSQL在不太影响性能的情况,就可以方便地实现高可用的架构。比如Cassandra、HBase模型,通过复制模型也能实现高可用。

    四、应用场景

    1. 数据模型比较简单

    2. 需要灵活性更强的IT系统

    3. 对数据库性能要求较高

    4. 不需要高度的数据一致性

    5. 对于给定key,比较容易映射复杂值的环境

    展开全文
  • 关系型数据库的定义:关系型数据库是数据库的一种类型,英文全称为 `Relational database` ,简称 "RDBMS" ,是指的使用了关系模型的数据库系统。这个阶段除了关系型数据库之外,也要学习非关系型数据库。因为 SQL...
    万叶集
    🎉 隐约雷鸣,阴霾天空。 🎉
    🎉 但盼风雨来,能留你在此。 🎉


    前言
    ✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS - 全栈 赋能的博主 ✌
    🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
    📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
    💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
    🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


    专栏系列(点击解锁)学习路线指引知识定位
    🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。
    语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。
    自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。
    自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。
    数据库开发实战篇 掌握关系型与非关系数据库知识,提升数据库实战开发能力。
    爬虫入门与实战 更新中
    数据分析篇 更新中
    前端入门+flask 全栈篇 更新中
    django+vue全栈篇 更新中
    拓展-人工智能入门 更新中
    网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者
    网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。
    vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。
    shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结]
    WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈
    点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器
    测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得!
    测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。
    RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。
    Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。
    MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。

    在这里插入图片描述


    🐳 关系型数据库

    关系型数据库的定义:关系型数据库是数据库的一种类型,英文全称为 Relational database ,简称 “RDBMS” ,是指的使用了关系模型的数据库系统。

    如果是百度查看具体的词条的话,得到解释会非常的抽象,搞得大家云里雾里最终也没明白什么是关系型数据库。

    其实很简单,数据库是用来存放数据的,这一点大家都知道。如果将数据都写到一个数据文件里,比如说既有人员信息,又有交易记录等等,这样的数据文件就不是那么的好管理。数据乱七八糟的,数据库要经常去判断数据的归属类型,这样一来的话数据的读取速度就会变慢。

    于是就有人想了一个办法:将数据分门别类的保存到不同的文件里面,这样就更好的管理数据了。如下:

    • 人员基本信息保存到名为 user_info 的文件里
    • 交易消费信息保存到 transaction 的文件里
    • 亲属关系信息保存到 mail_list 的文件里

    以上数据分开单独存放,但是数据之间还是会有关联关系的。比如说 “人员信息” 与 “亲属关系” 就是有关联关系的,需要的时候可以从数据库多个数据文件里联合提取出数据,并不是数据拆分完之后就无法联合提取信息了。

    所以 "关系型数据" 总结成一句话:数据分类存放在不同的文件里,数据之间是可以有关联关系的。 这么说,大家是否是不是就好理解关系型的数据库了呢?知识就是这样,一层窗户纸捅破了,也就都明白了。

    写博客也是如此,没有必要去故弄玄虚。如果能把复杂的知识几句话讲明白,直指要害,这才是高超的水平。 也希望大家能够通过这一段关于数据库的学习,对数据库的理解会更加的深刻。

    🐬 关系型数据库的历史

    这里其实有一个冷知识,那就是第一款关系型数据库到底是 IBM 的 DB2 还是 甲骨文 的 Oracle

    其实准确的来说,关系型数据的理论IBM 公司的 "System R" 团队提出来的 ,但是第一个 关系型数据库成品 却是 Oracle 公司做出来的;所以说世界上第一个关系型数据库是 甲骨文 的 Oracle 而不是 IBM 的 DB2

    🐬 关系型数据库的应用

    刚刚我们提到过,关系型数据库是将数据分门别类的存储到不同的数据文件里面,这样就会省却数据库需要不停的判断数据归属类型的问题,所以由此数据的读取速度也就提升了。

    速度提升之后,就可以往数据库里保存大量的数据,就算是成千上万的数据,数据库也可以轻松的去读写。(保存上亿的数据也是不在话下)所以说数据库文件的关系模型还是有好处的吧。

    既然数据库能够保存大量的数据有能高速的去读写,那就没有理由不背大规模的使用,所以说呢关系型数据库才是最重要的数据库产品,在教育、商业、医疗、电信、金融领域都有大规模的使用。

    比如网上购物会使用 “淘宝”、"京东"等线上购物平台,去医院看病会刷医保卡等等。这写业务的背后都有数据的身影,所以只有先掌握了数据库,才能开发出各种各样的系统。

    讲到这里,大家也应该明白数据库系统的重要性了;我们现阶段将要学习的是单机的数据库,如果在大型网站上使用单机数据库在海量的并发请求下是支撑不起来的。就好比电商平台每年的 618 和 双11 的秒杀活动,所以可以将数据库联合起来做成集群,数据库节点变多了,那么就能应对大量的并发访问了。淘宝网的背后是三千多个数据库节点组成的集群来应对正常的电商业务,遇上 双十一 还要增加更多的数据库节点才能应对。

    说这么多也是为了大家能够开拓技术视野,想大型系统是如何使用数据库的。大家都希望能够进入到 BAT 去工作,那就必须技术达到一定相应的水平才可以。(偷偷告诉你们,BAT 的工程师们每天操作的都是数据库集群)所以说啊,有一个开阔的技术视野和一个明确的目标对学技术的人来说是非常重要的。

    OK,话题收回来。学习是分层次的,现阶段的首要任务就是学好 单机数据库 ,下一阶段再去深入的学习数据库的集群技术。饭要一口一口的吃,学习呢也要一步一步的来,既然明确了学习的路径,就应该从第一阶段踏踏实实的开始。

    🐬 主流的关系型数据库

    • DB2:商业版数据库,一般都是随着硬件服务器赠送给用户的。别看是赠送的,硬件服务器的价格那可是相当的贵啊。虽然 DB2 的性能非常的好,无奈时采购的成本实在是太高了。所以 DB2 只会在超大型的项目中才会见到,比如说电信以及金融领域。

    • Oracle:甲骨文的 “Oracle” 也是一款商业的数据库,采购成本没有 DB2 那么恐怖。它是按照 CPU 的数量、内核以及主频的高低来收费,还分为 1年、2年 … 的授权来区分,是按照这些因素来制定收费标准的。(1个CPU 永久的授权费是 17W人民币左右,对于中小心企业来说,价格还能接受,但是对于 BAT 这样的大型互联网公司的动不动就是几千台服务器集群来说,Oracle 的授权之处还是稍微有些肉疼的。)还有一个重要的点是, Oracle 是商业产品,不开放源代码。有的时候根据业务去定制模块是不行的,因此在一些大型企业的眼里 Oracle 反而不如一些开源免费的数据库好用。

    • MySQl:这个数据库是我们接下来要学习的内容之一;它是一款开源免费的产品,性能上比不上 “Oracle 与 DB2” ,但是贵在灵活。我们可以很方便的对 “MySQL” 进行二次开发。像 Facebook、Google、腾讯、百度这些企业都在大规模的使用 “MySQL” ,所以学习好 “MySQL” 前景还是非常好的。

    • SQL server :这款数据库是 微软出品,图形界面做的挺不错,而且在教育领域是让大家免费使用的。(很多大学在将数据库课程的时候用的就是这款数据库)上面三种数据库都是跨平台的,在各个操作系统上都能安装,唯独 SQL server 很特殊。早期微软出品的数据库只能安装在 Windows 系统,不支持 Linux 。所以也就造成了在生产领域没人会去使用,我是不建议使用。虽然说最近的 SQL server 也支持了 Linux 系统,但是长期没有人使用,当你遇到问题的时候在查找资料时也会遇到很多的困难,所以…还是算了吧。

    🐳 非关系型数据库

    这个阶段除了关系型数据库之外,也要学习非关系型数据库。因为 SQL语句是来操作关系型数据库的,所以大家常常将非关系型数据库也叫做 NoSQL数据库。

    🐬 什么是非关系型数据库

    什么是非关系型数据库呢?也不用去查百度,查了也看不懂。所以还是得一针见血直插要害的讲明白 NoSQL 数据库的概念。

    NoSQL 数据库也是把数据分类存储到不同的数据文件里面, 但是数据之间是没有关联关系的,这是因为 NoSQL 数据库根本就没有提供 SQL语言 从多个数据库问价提取关键数据。

    既然如此,那为什么还要使用 NoSQL 数据库呢?其实 NoSQL 数据库是关系型数据库的一种补充,与关系型数据库之间不是竞争的关系,而是互补的关系。

    比如说 “秒杀” 这个场景,价值200元的东西,秒杀只需要10元,但是库存只有100件。于是大家就疯狂的抢购,秒杀有个严重的问题就是超卖。造成超卖的问题的原因是,数据库是多线程的消费者你买我也买的请求在数据库就变成了多个线程争抢读取库存、修改库存。所以多线程的条件下就容易出现超卖,所以秒杀这个业务对于关系型数据库就很难处理。

    这个时候就可以引入 NoSQL 数据库,有一种 NoSQL 数据库 叫做 Redis ,这是一款单线程的非关系型数据库,所以使用 Redis 就不会出现 超卖的情况。这是不是就是对关系型数据库的一种补充呢?

    还有一个问题就是,关系型数据库在存储数据之前需要先建表,定义字段的类型、约束的条件,哪些字段不能为空值,哪些字段不能有重复的值等等。所以在告诉写入的时候,这样的校验就会让速度明显的降低。如果保存的是海量的低价值的数据,这就是对数据库的极大浪费(比如说朋友圈的信息相较于银行转账记录的信息就是低价值的数据),低价值的数据没有必要保存到 MysQL 这样的关系型数据库里面,保存在 NoSQL 数据库里面就是最适合的了。

    因此 NoSQL 数据库没有严格的表结构,数据的读写也没有那么多的校验,读写速度也远远超过了关系型数据库。像是用户登录的信息啊、网站的通知消息等等,保存到 NoSQL 数据库里是最适合的了。

    🐬 主流的 NoSQL 数据库

    以下介绍的 NoSQL 数据库都是开源免费的产品:

    • Redis:一种用内存来保存数据的 NoSQL 数据库,新浪微博用它来保存很多大V用户的热点信息,内存的速度是远远超过硬盘的,所以 Redis 的读写速度要比硬盘快很多。还有就是电商系统首页里的一些商品的信息都可以保存在 Redis 里面,这样我们打开一个电商网站加载的速度就会非常的快。

    • MemCache:也是一种使用内存来保存数据的 NoSQL 数据库。相比较而言,Redis 的市场份额与使用范围更广泛一些。

    • MongoDB: 是一种使用硬盘保存数据的 NoSQL 数据库,保存海量低价值的数据是非常适合的;比如说新闻、留言、回帖等等。

    • Neo4J:也是一种使用硬盘保存数据的 NoSQL 数据库,适合用来保存复杂的组织关系和人际关系

    🐬 NoSQL 数据库的应用场景

    上面我们提到过 NoSQL 数据库是关系型数据的一种补充,只在特定的业务场景去使用。

    比如说新闻的篇幅都很长,MySQL 的字符串类型不适合保存如此之长的字符内容,所以新闻的内容就应该保存到 MongoDB 的数据库里面。

    再有就是电商抢购促销的时候,特别是 电商节 大家疯狂抢购。商品信息从数据库、从硬盘的加载速度比较慢,因此为了让消费者有良好的的购物体验,可以将抢购商品的信息保存到 Redis 里面内存的速度要比硬盘快多了。

    再之后就是微博的热点信息了,也是需要缓存到内存里面的这个时候 Redis 就派上用场了…

    以上就是一些常见的 NoSQL 数据库的应用场景。

    展开全文
  • NoSQL与关系型数据库全面对比

    千次阅读 2021-06-22 00:15:05
    我们总在说各种数据库的使用,以及各个数据库的优缺点,每个数据库都有自己的所擅长的领域,但选择什么样的数据库才是重点,那么问题来了,数据库到底是怎么划分的,有什么讲究呢?数据库大致分为两大类...
  • 图数据库与关系型数据库的对比

    千次阅读 2022-04-13 08:42:04
    图数据库与关系型数据库的对比
  • 当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据库有 NoSql、Cloudant。   ==========================优缺点分析如下================================...
  • 关系型数据库中实体之间的关系

    千次阅读 2021-01-19 00:07:45
    关系型数据库实体间有三种关联关系:一对一,一对多,多对多。一对一关系(1:1):如果实体集()A 中的每一个实休(就是每行记录),在实体集B中只有一条数据它对应,反之实体集B 中的每一个实体,在实体A中只有一条...
  • 关系型数据库

    千次阅读 2022-03-23 16:21:00
    关系型数据库的最大特点就是事务的一致性,但是,在网页应用中,尤其是SNS应用中,一致性却显得不是那么重要,用户A看到的内容和用户B看到的内容更新不一致是可以容忍的,或者说,两个人看到同一好友的数据更新的...
  • 关系型数据库与关系型数据库

    万次阅读 多人点赞 2018-04-18 15:45:07
    当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。非关系型数据库有 NoSql、Cloudant。非关系型数据库的优势: 1. 性能NoSQL是基于键值对的,可以想象成表中的主键和值的...
  • 表之间的关联关系,正是关系型数据库得名的原因。 一个由多个字段构成。其中可能有多个字段适合作为主键。主键字段,就是中每一行都不会有重复数据的字段。 主键,可以分为两种:物理主键和逻辑主键。 ...
  • 关系型数据库&非关系型数据库概述

    千次阅读 多人点赞 2021-04-23 18:04:03
    数据库的英文单词: DataBase 简称 : DB。用于存储和管理数据的仓库,本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的。
  • 常见的数据库模型分为两种,分别是关系型数据库和...关系模型就是指二维表格模型,因而一个关系型数据库就是由二维及其之间联系组成的一个数据组织。 关系型数据库优点: 容易理解:二维结构是非常贴近逻辑...
  • 关系型数据库

    万次阅读 2019-03-19 17:06:24
    数据之间存在着像树一样的层级关系 定义: 有且只有一个结点没有双亲结点,这个结点称为根结点 根以外的其它结点有且只有一个双亲结点 特点: 结点的双亲是唯一的; 只能直接处理一对多的实体联系 ; 任何记录...
  • 一、关系型数据库  关系型数据库,是指采用了关系模型来组织数据的数据库... 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维及其之间联系所组成的一个数据组织。 关系模型中常用的概念:
  •  简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维及其之间联系所组成的一个数据组织。关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的...
  • 关系型数据库和非关系型数据库的区别

    千次阅读 多人点赞 2019-06-06 23:52:16
    而我们今天就来了解一下关系型数据库与关系型数据库的区别。 关系型数据库就是指那种采用了关系模型来组织数据的数据库。 各种表之间有各种各样的联系,从而组成的一个数据组织。 非关系型数据库是指一般不遵循...
  • 关系型数据库管理系统

    千次阅读 2020-11-21 19:32:24
    数据库管理系统(英语全拼:Relational Database Management System,简称RDBMS)是为管理关系型数据库而设计的软件系统,如果想要使用关系型数据库就需要安装数据库管理系统,其实就是一个应用软件。 2. 分类 关系...
  • 最近我在用图形数据库来...它们常常可以用来处理传统的关系型数据库所难以解决的一系列问题。通常情况下,这些NoSQL数据库分为Graph,Document,Column Family以及Key-Value Store等四种。这四种类型的数据库分别使用了
  • 常见的非关系型数据库有哪些

    千次阅读 2020-06-02 16:04:57
    它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。 Redis作为一个内存数据库,具有如下有特点: 性能优秀, 数据在内存中, 读写速度非常快, 并支持10W QPS(每秒查询效率). 单进程单线程, 是线程安全的. ...
  • 关系型数据库与NoSql数据库的比较

    千次阅读 2020-02-08 18:32:11
    一、关系型数据库与NoSql数据库的比较 1、并发支持 关系型数据库:通过事务和锁来支持并发,高并发情况下,执行效率较低。 NoSql:打破了传统关系型数据库范式的约束和事务一致性,因此并发性能高。 2、存储查询 ...
  • 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为,一组组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个...
  • 数据库中存放很多,设计数据库就是设计,而就是对现实事物的抽象,设计数据库,需要明白关系,也要知道数据库的设计准则,即范式。数据库设计的好坏关系到项目开发效率运行的好坏。 2.1 多表之间关系...
  • 关系型数据库与HBase的区别

    千次阅读 2020-12-01 18:56:46
    关系型数据库与HBase的区别 1、数据类型: HBase不仅仅只保存简单的字符串类型,它的类型相对较少。关系型数据库有着丰富的类型选择:int,sting,double等等和存储方式。 2、数据操作: HBase只有简单的插入、查询...
  • NoSQL并不是关系型数据库管理系统,本文将会介绍NoSQL数据库与关系型数据库之间的差别,同时还会讨论在何种场景下应该使用NoSQL,何种场景下不应该使用。由于NoSQL还是个相对较新的技术,因此它还面临着很多挑战。 ...
  • 数据库数据库管理系统关系型数据库是什么?结构化查询语言关系型数据库的优缺点NoSQL数据库的优势有哪些?分布式数据库有哪些特点?CAP理论是什么?相互关系ACID原则是什么?BASE原理最终一致性NoSQL数据库有哪些...
  • 关系型数据库 入门简介

    千次阅读 2019-07-01 16:18:09
    关系型数据库也叫Nosql数据库,全称是not noly sql非关系型...使用这种方式,用户可以根据需要去添加自己需要的字段,这样,为了获取用户的不同信息,不需要像关系型数据库中,要对多进行关联查询。仅需要根据i...
  • 关系型数据关系型数据库NoSql

    千次阅读 2016-05-20 14:52:29
    最近经常听到NoSql,不知道什么意思,百度之,发现NoSql就是...1.非关系型数据库不需要表与表之间联系。 2.非关系型数据库对事务没有需求,不需要严格的保证数据的一致性。 3.非关系型数据库追求的是高并发,高扩展性
  • 关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维及其之间的关系组成的一个数据组织。 常见的关系型数据库:mysql,oracle,SQL Server 存储方式::行存储,一个表里每一个对象的记录存储一行,一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 290,869
精华内容 116,347
热门标签
关键字:

关系型数据库实现表与表之间的联系