知识大全 再探JOIN

Posted

篇首语:忍耐力较诸脑力,尤胜一筹。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 再探JOIN相关的知识,希望对你有一定的参考价值。

SQL实战新手入门:再探JOIN  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  第 章 组合数据集

  回顾第 章可知 关系型数据库规范化的过程就是分解数据 使之具有最大的精确度同时又具有最小重复的过程 通过在多个包含数据的表之间建立关系 就可以在很大程度上实现规范化的目标 关系是通过使用特定的值 也称为键 来建立的 每一条记录的键值在整个表中是唯一的

  关系理论中那些正式的术语可能会让人感觉非常难以理解 在本书中 笔者将使用友好的术语 例如表 行(记录)和列 它们对应的正式术语分别为关系 元组和属性

  关系模型可以很好地维护数据 并尽可能地减少数据的不一致性 但是当实际使用数据时 关系模型并不是那么友好 在着手开始烹饪一桌菜肴之前 厨师通常会将所有的配料都摆放齐全 然后根据做菜的规则将它们烹饪在一起 数据库的用户也必须完成类似的工作 考虑好想要访问哪些数据 然后从各个表中取回所有必要的数据 并将其放在一个临时的结构或数据集中 这一工作是由JOIN关键字来完成的 前面的章节已经简要地介绍过该关键字

   再探JOIN

  RDBMS中的数据保存在各个表中 这些表通过 父 子 关系链接起来 数据模型规范化的程度越高 表与表之间的链接数量也就越多

  通常情况下 为了生成相关的数据 从中获取数据的各个表(源表)是链接或联接在一起的 对于其中的某个表 例如LIBRARY数据库中的BOOKS表 每一个数据行必须具有一个唯一的键值(即必须唯一地标识每一个数据行) 对于另外一个表 例如LOCATION表 则具有某个列用于保存BOOKS表中的键值 该列的功能是保存BOOKS表的外键

  图 中BOOKS表与LOCATION表的关系可以进一步用图 中的实际数据进行分析 其中的各条连线指出了这两个表之间的关系(由于不允许存在孤立记录 因此LOCATION表中的每一个数据行在BOOKS表中都具有一个对应的数据行 反之则并非如此 父表中可以包含在子表中没有对应记录的行 根据最佳实践的规则 每一个表都分别具有一个主键 BK_ID和LOC_ID 而LOCATION表还具有一个外键 FK_BK_LOC)

  在图 展示的例子中 BOOKS表与LOCATION表的关系是通过BOOKS表中的BK_ID(主键)和FK_BK_LOC(LOCATION表中对应的外键)来建立的 在BOOKS表的数据行与LOCATION表的数据行之间是一个一一对应的关系 但情况并非总是如此 当我们具有同一本图书的多个副本时 LOCATION表中的一个或多个行就可能包含BOOKS表中该本图书多个的相同键值 当然 在BOOKS表中也可能有一些行在LOCATION表中根本没有与之匹配的记录(例如一本新的图书 还没有在书柜中指定固定的位置) 因此在LOCATION表的FK_BK_LOC列中并没有这本新图书的外键值(即该列包含NULL值) 另外一个值得注意的问题是 LOCATION表可能包含了多个不同表的外键

  为了简单起见 在上面的例子中我们假定这些表的主键仅包含一个列 前面曾介绍过 主键并非总是只包含一个列 主键可以是一个包含多个列的复合主键 此时外键也可由多个列共同组成 只要列组合的值在表中是唯一的 并且没有任何一个列包含NULL值 那么这些列的组合就可以作为有效的候选主键

  例如 LIBRARY数据库中的BOOKS_AUTHORS表既包含了BOOKS表的外键 又包含了AUTHORS表的外键 表 显示了如何通过一个中间表来解决 多对多 关系的问题

  表 分解N:N关系

  在一个规范化的数据库中 严格地减少数据冗余是有代价的 它增加了在规范化数据库中导航的复杂性 为了将一个作者关联到一本图书 必须通过一个中间表 使用主键和外键作为唯一的向导 才能从这两个表(或者多个表)中组装出我们所需的数据集

  表可以以多种方式联接起来 下面的小节将讨论联接的方式

       返回目录 SQL实战新手入门

       编辑推荐

       Oracle索引技术

       高性能MySQL

cha138/Article/program/SQL/201311/16475

相关参考

知识大全 交叉联接(CROSS JOIN)

SQL实战新手入门:交叉联接(CROSSJOIN)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 全联接(FULL JOIN)

SQL实战新手入门:全联接(FULLJOIN)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  全

知识大全 关于C#中Thread.Join()的一点理解

关于C#中Thread.Join()的一点理解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今

知识大全 内联接(INNER JOIN)(1)

SQL实战新手入门:内联接(INNERJOIN)(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 内联接(INNER JOIN)(2)

SQL实战新手入门:内联接(INNERJOIN)(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 N路INNER JOIN

SQL实战新手入门:N路INNERJOIN  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  N路I

知识大全 asp中join函数实现字符串连接

  (list[delimiter])  参数描述  listRequiredAonedimensionalarraythatcontainsthesubstringstobejoined  必选项包

知识大全 左联接(LEFT OUTER JOIN)

SQL实战新手入门:左联接(LEFTOUTERJOIN)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 右联接(RIGHT OUTER JOIN)

SQL实战新手入门:右联接(RIGHTOUTERJOIN)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 数据库学习:MySQL Join详解

数据库学习:MySQLJoin详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  还是先Crea