精华内容
下载资源
问答
  • 1.在关系型数据库中,表与表之间的关系主要有三种:(1)一对一,(2)一对多,(3)多对多 (1)一对一:两张中的数据是一一对应的,例如--> 用户user ------- 身份信息 (2)一对多:一张中的数据,在另...

    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.设计数据库表时,对于是否需要设置物理外键的探讨:

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

    展开全文
  • 一、一对一关系:定义:有两个,在第一个中的某一行只第二个中的一行相关,同时第二个中的某一行,也只第一个中的一行相关,我们称这两个为一对一关系。例如:第一张表:ID姓名国籍贡献1001王大锤...

    一、一对一关系:

    定义:有两个表,在第一个表中的某一行只与第二个表中的一行相关,同时第二个表中的某一行,也只与第一个表中的一行相关,我们称这两个表为一对一关系。
    例如:
    第一张表:

    ID

    姓名

    国籍

    贡献

    1001

    王大锤

    中国

    万万没想到

    1002

    吉泽明步

    日本

    动作艺术片

    1003

    刀锋女王

    未知

    计划生育

    第二张表:

    ID

    出生日期

    逝世日期

    1001

    1988

    NULL

    1002

    1984

    NULL

    1003

    未知

    3XXX

    这里的第一张表的每一行只与第二张表的一行相对应。
    提示:一对一关系是比较少见的关系类型。但在某些情况下,还是会需要使用这种类型。
    情况一:一个表包含了太多的数据列
    情况二:将数据分离到不同的表,划分不同的安全级别。
    情况三:将常用数据列抽取出来组成一个表
     
    二、一对多关系:
    定义:有多张表,第一个表中的行可以与第二个表中的一到多个行相关联,但是第二个表中的一行只能与第一个表中的一行相关联。
    例如:
    第一张表:

    ID

    姓名

    国籍

     

    1001

    王大锤

    中国

     

    1002

    吉泽明步

    日本

     

    1003

    刀锋女王

    未知

     

    第二张表:

    ID

    节目ID

    1001

    10001

    1001

    10002

    1003

    10003

    1003

    10004

    第三张表:

    节目ID

    节目名称

    10001

    万万没想到

    10002

    报告老板

    10003

    星际2

    10004

    英雄联盟

    这里的第一张表的一行可以与第二张表的多行相对应;第二张表的一行与第三张表的一行相对应。
    提示:一对多关系是最常见的关系类型。
     
    三、多对多关系:
    定义:有两个表,第一个表的一行可以与第二个表中的一到多个行相关联,同时,第二个表中的一行可以与第一个表中的一到多个行相关联。
    例如:
    第一张表:

    ID

    姓名

    国籍

     

    1001

    王大锤

    中国

     

    1002

    吉泽明步

    日本

     

    1003

    刀锋女王

    未知

     

    第二张表:

    ID

    节目ID

    1001

    10001

    1001

    10002

    1003

    10003

    1003

    10004

    第三张表:

    节目ID

    节目名称

    10001

    万万没想到

    10002

    报告老板

    10003

    星际2

    10004

    英雄联盟

    在第一张与第三张表之间,一个人可以参加多个节目,一个节目也可以有多个人参加。例如王大锤参加了《万万没想到》和《报告老板》。而《万万没想到》中有王大锤和吉泽明步。这种是多对多的关系。
    展开全文
  • 关系型数据库与关系型数据库

    万次阅读 2018-04-18 15:45:07
    当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。非关系型数据库有 NoSql、Cloudant。非关系型数据库的优势: 1. 性能NoSQL是基于键值对的,可以想象成表中的主键和值的...

            当前主流的关系型数据库Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

    非关系型数据库有 NoSql、Cloudant。

    非关系型数据库的优势

            1. 性能NoSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高

            2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

            3、成本:NoSQL数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜
           4、查询速度NoSQL数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
            5、存储数据的格式NoSQL的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
    缺点:
        1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
        2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。

        3)不提供关系型数据库对事物的处理。

    关系型数据库的优势

            1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询,如join。

            2.最大优势:保持数据的一致性(事务处理) 事务支持使得对于安全性能很高的数据访问要求得以实现。关系型数据库把所有的数据都通过行和列的二元表现形式表示出来。

            3. 由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)

    缺点:

        1.扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。

        2.不擅长如下处理

            1). 大量数据的写入处理

            2). 为有数据更新的表做索引或表结构(schema)变更

            3). 字段不固定时应用

            4). 对简单查询需要快速返回结果的处理

    --大量数据的写入处理

            读写集中在一个数据库上让数据库不堪重负,大部分网站已使用主从复制技术实现读写分离,以提高读写性能和读库的可扩展性。

            所以在进行大量数据操作时,会使用数据库主从模式。数据的写入由主数据库负责,数据的读入由从数据库负责,可以较简单地通过增加从数据库来实现规模化,但数据的写入却完全没有简单的方法来解决规模化问题。        

            第一,要想将数据的写入规模化,可以考虑把主数据库从一台增加到两台,作为互相关联复制的二元主数据库使用,确实这样可以把每台主数据库的负荷减少一半,但是更新处理会发生冲突,可能会造成数据的不一致,为了避免这样的问题,需要把对每个表的请求分别分配给合适的主数据库来处理。

            第二,可以考虑把数据库分割开来,分别放在不同的数据库服务器上,比如将不同的表放在不同的数据库服务器上,数据库分割可以减少每台数据库服务器上的数据量,以便减少硬盘IO的输入、输出处理,实现内存上的高速处理。但是由于分别存储字不同服务器上的表之间无法进行Join处理,数据库分割的时候就需要预先考虑这些问题,数据库分割之后,如果一定要进行Join处理,就必须要在程序中进行关联,这是非常困难的。

      

    --为有数据更新的表做索引或表结构变更

            在使用关系型数据库时,为了加快查询速度需要创建索引,为了增加必要的字段就一定要改变表结构,为了进行这些处理,需要对表进行共享锁定,这期间数据变更、更新、插入、删除等都是无法进行的。如果需要进行一些耗时操作,例如为数据量比较大的表创建索引或是变更其表结构,就需要特别注意,长时间内数据可能无法进行更新。

                              

    --字段不固定时的应用

            如果字段不固定,利用关系型数据库也是比较困难的,有人会说,需要的时候加个字段就可以了,这样的方法也不是不可以,但在实际运用中每次都进行反复的表结构变更是非常痛苦的。你也可以预先设定大量的预备字段,但这样的话,时间一长很容易弄不清除字段和数据的对应状态,即哪个字段保存有哪些数据。

    --对简单查询需要快速返回结果的处理  (这里的“简单”指的是没有复杂的查询条件)

            这一点称不上是缺点,但不管怎样,关系型数据库并不擅长对简单的查询快速返回结果,因为关系型数据库是使用专门的sql语言进行数据读取的,它需要对sql进行解析,同时还有对表的锁定和解锁等这样的额外开销,这里并不是说关系型数据库的速度太慢,而只是想告诉大家若希望对简单查询进行高速处理,则没有必要非使用关系型数据库不可。

    ---------------------------

    NoSQL数据库

            关系型数据库应用广泛,能进行事务处理和表连接等复杂查询。相对地,NoSQL数据库只应用在特定领域,基本上不进行复杂的处理,但它恰恰弥补了之前所列举的关系型数据库的不足之处。

    优点:易于数据的分散

           各个数据之间存在关联是关系型数据库得名的主要原因,为了进行join处理,关系型数据库不得不把数据存储在同一个服务器内,这不利于数据的分散,这也是关系型数据库并不擅长大数据量的写入处理的原因。相反NoSQL数据库原本就不支持Join处理,各个数据都是独立设计的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。 

    典型的NoSQL数据库

    临时性键值存储(memcachedRedis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase

    一、 键值存储

            它的数据是以键值的形式存储的,虽然它的速度非常快,但基本上只能通过键的完全一致查询获取数据,根据数据的保存方式可以分为临时性、永久性和两者兼具 三种。

    (1)临时性

          所谓临时性就是数据有可能丢失,memcached把所有数据都保存在内存中,这样保存和读取的速度非常快,但是当memcached停止时,数据就不存在了。由于数据保存在内存中,所以无法操作超出内存容量的数据,旧数据会丢失。总结来说:

          1、在内存中保存数据

          2、可以进行非常快速的保存和读取处理

          3、数据有可能丢失

     (2)永久性

           所谓永久性就是数据不会丢失,这里的键值存储是把数据保存在硬盘上,与临时性比起来,由于必然要发生对硬盘的IO操作,所以性能上还是有差距的,但数据不会丢失是它最大的优势。总结来说:

           1、在硬盘上保存数据

           2、可以进行非常快速的保存和读取处理(但无法与memcached相比)

           3、数据不会丢失

    (3) 两者兼备

           Redis属于这种类型。Redis有些特殊,临时性和永久性兼具。Redis首先把数据保存在内存中,在满足特定条件(默认是 15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键发生变更)的时候将数据写入到硬盘中,这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性,这种类型的数据库特别适合处理数组类型的数据。总结来说:

           1、同时在内存和硬盘上保存数据

           2、可以进行非常快速的保存和读取处理

           3、保存在硬盘上的数据不会消失(可以恢复)

           4、适合于处理数组类型的数据

    二、面向文档的数据库

       MongoDB、CouchDB属于这种类型,它们属于NoSQL数据库,但与键值存储相异。

       (1)不定义表结构

         即使不定义表结构,也可以像定义了表结构一样使用,还省去了变更表结构的麻烦。

       (2)可以使用复杂的查询条件 

         跟键值存储不同的是,面向文档的数据库可以通过复杂的查询条件来获取数据,虽然不具备事务处理和Join这些关系型数据库所具有的处理能力,但初次以外的其他处理基本上都能实现。

    三、 面向列的数据库

       Cassandra、HBae、HyperTable属于这种类型,由于近年来数据量出现爆发性增长,这种类型的NoSQL数据库尤其引入注目。

       普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。

                                                 

            面向列的数据库具有高扩展性,即使数据增加也不会降低相应的处理速度(特别是写入速度),所以它主要应用于需要处理大量数据的情况。另外,把它作为批处理程序的存储器来对大量数据进行更新也是非常有用的。但由于面向列的数据库跟现行数据库存储的思维方式有很大不同,故应用起来十分困难。

     

    总结:关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。对于这两类数据库,对方的优势就是自己的弱势,反之亦然。

    展开全文
  • 关系型数据库和非关系型数据库的区别

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

    笔者一共用过俩个数据库,一个是MySQL,一个是MongoDB他们俩个就是不同类型的数据库。

    MySQL是关系型的数据库

    MongoDB是非关系型的数据库

    而我们今天就来了解一下关系型数据库与非关系型数据库的区别。

    关系型数据库就是指那种采用了关系模型来组织数据的数据库。
    各种表之间有各种各样的联系,从而组成的一个数据组织。

    非关系型数据库是指一般不遵循ACID原则的数据存储系统。
    ACID原则:
    数据库事务正确执行的四个基本要素的缩写
    其中包含:

    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性(Isolation)
    • 持久性(Durability)

    一个支持事务的数据库,必须要具有这四种特性,否则在事务过程当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
    关于ACID的详细内容请观看:
    https://blog.csdn.net/weixin_43606158/article/details/91064362
    非关系型数据库是以键值对进行数据存储,且结构不固定,每一个元祖可以有不一样的字段,每个元祖可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。

    关系型数据库当中的概念:

    一行的内容叫 实体、记录、元祖叫哪一个都可以。
    一列的内容的标题叫做字段

    PS:注意事项:

    1. 数据库的名称的大写字母会被转换成小写,不要写汉字(建议写法:kl_users)

    SQL:
    结构化查询语言,在数据库平台上执行的语言,方便实现数据库维护。

    • DDL - - 数据定义语言,CREATE / ALTER / DROP
    • DCL - - 数据控制语言,GRANT / REVOKE
    • DML - - 数据操纵语言,数据的增(INSERT)删(DELETE)改(UPDATE)
    • DQL - - 数据查询语言,SELECT

    CRUD:
    主键:

    • 主键是唯一的,不可重复。
    • 一个数据表中只能包含一个主键,不可以设置第二个主键。
    • 一般使用主键来查询数据。
    • 将某个字段设置为主键后,这个字段的信息就不可以更改了。

    Navicat for MySQL:
    将数据库的内容以可视化的界面展示出来。
    关于Navicat for MySQL的使用请看:https://blog.csdn.net/weixin_43606158/article/details/91129625

    展开全文
  • 常见的数据库模型分为两种,分别是关系型数据库和...关系模型就是指二维表格模型,因而一个关系型数据库就是由二维及其之间联系组成的一个数据组织。 关系型数据库优点: 容易理解:二维结构是非常贴近逻辑...
  • 表之间的关联关系,正是关系型数据库得名的原因。 一个由多个字段构成。其中可能有多个字段适合作为主键。主键字段,就是中每一行都不会有重复数据的字段。 主键,可以分为两种:物理主键和逻辑主键。 ...
  • 一、关系型数据库  关系型数据库,是指采用了关系模型来组织数据的数据库... 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维及其之间联系所组成的一个数据组织。 关系模型中常用的概念:
  • 关系型数据关系型数据库NoSql

    千次阅读 2016-05-20 14:52:29
    最近经常听到NoSql,不知道什么意思,百度之,发现NoSql就是...1.非关系型数据库不需要表与表之间联系。 2.非关系型数据库对事务没有需求,不需要严格的保证数据的一致性。 3.非关系型数据库追求的是高并发,高扩展性
  • 1. 关系数据库 ...指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以...
  • 什么是关系型数据库? 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等...关系模型就是指二维表格模型,因而一个关系型数据库就是由二维及其之间联系组成的一个数据组织。 实体关系模型(Entity-Relat
  • 关系型数据库与NOSQL数据库的区别

    千次阅读 2014-01-02 11:12:24
    关系型数据库与NOSQL数据库的区别
  • 最近我在用图形数据库来...它们常常可以用来处理传统的关系型数据库所难以解决的一系列问题。通常情况下,这些NoSQL数据库分为Graph,Document,Column Family以及Key-Value Store等四种。这四种类型的数据库分别使用了
  • 关系型数据库与NoSQL数据库简述

    千次阅读 2017-09-21 16:10:44
    简单定义,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维及其之间联系所组成的一个数据组织。关系模型中常用的概念: 关系:可以理解为一张二维,每个关系都具有一个关系名,就是通常说的...
  • 关系型数据库到非关系型数据库

    万次阅读 多人点赞 2014-01-19 13:47:44
    1. 关系型数据库 关系型数据库,是指采用了关系模型...简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维及其之间联系所组成的一个数据组织。 关系模型中常用的概念: 关系:可以理解为一张
  • 关系型数据库

    千次阅读 2019-08-14 21:24:49
    关系型数据库(NOSQL):除了关系型数据库以外的其他数据库都是非关系型数据库。 非关系型数据库有:Redis、HBase、MongoDB、Cloudant ...NOSQL与关系型数据库比较 优点: 1.成本:nosql数据库简单易部署,基本...
  • 1. 关系型数据库 关系型数据库,是指采用了关系模型来组织...简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维及其之间联系所组成的一个数据组织。 关系模型中常用的概念:
  • 关系型数据库的优势: 1、性能 NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高 2、可扩展性 同样也是因为基于键值对,数据之间没有耦合性,所以非常...
  • NoSQL并不是关系型数据库管理系统,本文将会介绍NoSQL数据库与关系型数据库之间的差别,同时还会讨论在何种场景下应该使用NoSQL,何种场景下不应该使用。由于NoSQL还是个相对较新的技术,因此它还面临着很多挑战。 ...
  • 当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据库有 NoSql、Cloudant。   ==========================优缺点分析如下================================...
  • 1 Hive HDFS 之间联系(1)hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。其优点是学习成本...
  • 如果数据量较大,这时,可能对于关系型数据库(如mysql)来说,单的大小就可以达到几GB,这时K-V存储的非关系型数据库的优势就体现出来了。一般来说,现在的互联网公司,倾向于使用Nosql作为缓存,存储热数据,...
  • 关系型数据库的理解

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

    千次阅读 2016-05-19 15:24:02
    一个程序员很有必要熟悉或者精通一种数据库,MySQL无疑是首选。为什么使用MySQL呢,因为它是开源的,同时具备轻量、简单、稳定和高性能等...关系型数据库把所有的数据都通过行和列的二元表现形式表示出来。它的优势:
  • 关系型和非关系型数据库的区别?

    千次阅读 2018-05-07 16:04:03
    当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。非关系型数据库有 NoSql、Cloudant。nosql和关系型数据库比较?优点:1)成本:nosql数据库简单易部署,基本都是开源软件...
  • 当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据库有 NoSql、Cloudant、MongoDb、redis、HBase等 一、关系型数据库 1.概念 关系型数据库是指采用了关系...
  • 关系型和非关系型数据库的区别

    千次阅读 2018-11-19 16:57:56
    当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据库有 NoSql、Cloudant。 nosql和关系型数据库比较? 优点: 1)成本:nosql数据库简单易部...
  • 关系型数据库和非关系型数据库

    千次阅读 2016-05-25 20:52:05
    虽然学了大半个学期的数据库…但是还是很懵逼的… 面试官问我为什么博客是用mongodb而不是其他的…我知道要说mongodb的优点...1.关系型数据库和非关系型数据库的区别(优缺点,适用环境) 2.为什么是mongodb 1.关系型

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 256,322
精华内容 102,528
关键字:

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