数据表间关联是数据库操作常见的一种应用。sp框架提供了多种表间关联的功能支持,令开发者可以轻松应对各种数据表关联情况。

在sp框架的定义中,数据表表间关联主要存在以下三种情况:

1、一对一的关联。一对一的情况也可以理解为将一个较大的数据表拆分为两个表,然后两个表之间一一对应。一对一关联中,记录完整并且不可或缺的表可以称之为主表,而不一定是完整的但记录都会与主表一一对应的表可以成为从表。

举 个例子,腾讯QQ我们有一份个人资料,那可以说是一个主表;然后我们在QQ空间内又可以有空间的资料,那就是一个从表。主表的记录是完整的,正如有使用 QQ的人都有QQ资料一样;但是从表未必完整,用QQ的人没开通QQ空间,那这人就没有空间资料了,不过,如果一旦开了空间,那么空间资料就只能对应一个 QQ,这就是主表和从表的一对一关系了。

一对一关联主要应用的情况就是当许多的资料记录都是指向同一个事物,从逻辑或效率的考虑出发,将这些资料拆分成两个表(甚至更多),一一对应。如QQ和QQ空间的资料都指代QQ使用者,但是从逻辑上就把QQ和QQ空间的资料分开,以便更好的管理和更有效率的操作。

同时,一对一关联我们还有可能遇到一种比较特殊的情况,就是从从表的角度去关联主表。这种关联与主表关联从表是相同的,所以sp框架也把它归类到一对一关联中,使用的方法和一对一关联相同。

2、一对多的关联。一对多的情况就是主表上一条记录可以对应从表上多条记录(当然也可以对应零条),但是请注意,从表上的任何一条记录,只能对应主表的一条记录。如在PHP论坛中,一个用户可以发多个帖子,但任何一个帖子的发帖人只能是一个用户,这就是一对多的关联。

一对多关联比较强调从属的关系,如帖子就一定从属于发帖人,没有发帖人就没有这个帖子。

3、多对多的关联。与一对多关联有所不同的是,多对多关联就无法区分主表和从表,或者说两者都是从表。用QQ和QQ群来说,一个QQ用户可以加入多个QQ群,而一个QQ群也可以有很多的QQ成员,这就是多对多的关系。

多对多关联同时也存在一种特殊情况,就是事务的自身与自身之间的多对多关联;比如QQ用 户之间,A可以拥有包括B在内的许多好友,而B也可以A作为好友同时还有其他的QQ好友。这在QQ用户之间形成了多对多的关系。在sp框架的处理中,这类 自身的多对多关联也是归类到多对多的关联内。

转载于:https://www.cnblogs.com/zhizhuwang/p/3560538.html

[数据模型] 数据表三种关联的概述相关推荐

  1. powerdesigner 怎么关联两张表_【PL/SQL数据库】 三种关联机制 - 执行计划

    看完这章你会学习到以下内容: 1. 三种关联分别是什么? 2. 什么时候那个适合用哪个?(总结) 一共有三种关联机制: Nest Loop 嵌套循环 (大小表) Sort Merge 排序合并 (添加 ...

  2. 【Java基础】IO流概述分类、字节流写数据、字节流写数据的三种方式及写数据的两个小问题

    目录 一.IO流概述和分类 二.字节流写数据 三.字节流写数据的三种方式 四.字节流写数据的两个小问题 一.IO流概述和分类 IO流介绍: ● IO:输入/输出(Input/Output) ● 流:是 ...

  3. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  4. mysql数据库删除数据的三种方式:

    mysql数据库删除数据的三种方式: delete from table where 直接删除表中的某一行数据,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作.所以delete相 ...

  5. mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  6. mysql 禁止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  7. android sqlite使用之模糊查询数据库数据的三种方式

    android sqlite使用之模糊查询数据库数据的三种方式 android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sql ...

  8. Oracle删除数据的三种方式

    Oracle删除数据的三种方法 删除表(记录和结构)的语句delete--truncate--drop drop命令 drop table 表名: 例如:删除学生表(student) drop tab ...

  9. oracle 批量导入 数据,Oracle批量插入数据的三种方式【推荐】

    第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); inse ...

  10. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

最新文章

  1. Spring基础面试题(一)
  2. kali linux 学习 NETCAT NC的使用
  3. Cucumber入门之_World
  4. |9 其他(linux特定的), 用来存放内核例行程序的文档.,Linux下的帮助命令
  5. 工作组模式下专用队列(Private Queue)如何引用远程队列路径
  6. ffmpeg内存模型及AVPacket和AVFrame API基本使用
  7. React学习:组件之间的关系、参数传递-学习笔记
  8. 【java】如何在IDEA 中查看 Class文件的汇编
  9. hdu 1710 Binary Tree Traversals (二叉树)
  10. hidefocus小技巧
  11. aov建立Java模拟,JAVA
  12. SQL2016安装错误:安装程序无法与下载服务器联系。请提供 Microsoft R Open 和 Microsoft R Server 安装文件的位置
  13. 14个免费的 GIS 软件:以开源的方式绘制地图
  14. android扫描局域网打印机,Android 浅谈同一局域网下使用WiFi连接打印机
  15. [转]现代汉语词性分类
  16. 28 电子商务风险控制
  17. 计算机课怎么给老师发消息,案例 | 信息化课堂 老师如何教
  18. 轻松掌握辗转相除法(原理+俩道简单编程题详解)
  19. JAVA和MySQL实现公交管理_基于JSP公交管理系统的设计与实现(SSH,MySQL)(含录像)
  20. LeetCode70. 爬楼梯(Java解法——使用完全背包求解)

热门文章

  1. 同步方案java_【Java基础】多线程中同步的两种解决方案
  2. mysql创建工作经历表_国内首款 Serverless MySQL 数据库重磅发布!
  3. cad相对坐标快捷键_CAD里面绝对、相对、极坐标是什么?如何区别
  4. python 截取字符串的某一个字符
  5. 双方确认函_影片份额转让合同约定第一出品方出具确认函后合同生效,未出具而受让方支付投资款的,合同也生效...
  6. js add方法_爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py
  7. python列表中存类对象_python中对类的操作,怎么增加或删除类中的对象呢?比如下面这个题...
  8. Apache Jackrabbit Oak 1.12.0 发布,可扩展、高性能分层存储库
  9. C#之生成树形菜单数据
  10. SQL Server之旅:(二)Could not load the DLL xpstar90.dll