一对一关联
 
1.一对一的单向主键关联:
例如两张表:Husband和wife,在数据库中设置彼此的主键id相互关联(少用)
此时在两个实体类中不用添加任何的对象属性
2.一对一的单向外键关联
例如两张表:Husband和wife
***在设计实体类时建立联系:
对象模型:只在Husband类中添加属性private Wife wife;并生成getter和setter方法,
         如果不使用多表关联查询HQL语句,那么要进行多表查询需在Husband实体类中再添加private int wifeid;属性,这也是传统做法
关系模型:以Wife表为主导:
         在Husband表中添加一个字段wifeid,该字段与wife表中的id建立关联关系
或者:
对象模型:只在Wife类中添加属性private Husband husband;并生成getter和setter方法,
         如果不使用多表关联查询HQL语句,那么要进行多表查询需在Wife实体类中添加private int husbandid;属性,这也是传统做法
关系模型:以Husband表为主导:
         在wife表中添加一个字段husbandid,该字段与husband表中的id建立关联关系
3.一对一的双向外键关联
对象模型:在Husband类中添加属性private Wife wife;并生成getter和setter方法,同时在
         在Wife类中添加属性private Husband husband;并生成getter和setter方法
关系模型:两种主导关系建立任意一种即可,不必两种主导关系同时建:
         以Wife表为主导:在Husband表中添加一个字段wifeid,该字段与wife表中的id建立关联关系或者
         以Husband表为主导:在wife表中添加一个字段husbandid,该字段与husband表中的id建立关联关系
        
4.一对一双向主键关联----(不重要,此处不再介绍)

----------------------------------------------------------------------------------------------
总结:一对一单向和双向在数据库中的表现是一样的,区别体现在java程序中,单向只能找一次,双向可以相互找到
----------------------------------------------------------------------------------------------
 
                                 一对多和多对一关联 ---- 原则:在多方添加外键
  两张表:user表和group表
1.多对一的单向关联:
对象模型:根据在多方添加外键的构思:在多方User类中添加属性:private Group group;
关系模型:在user表中添加groupid字段,该字段和group表中的id关联
2.一对多的单向关联:
对象模型:在一的一方设置多方的集合属性:即在group中设置:private Set<User> users = new HashSet<User>();//此处最适合使用set集合,因为不会重复
关系模型:和多对一在数据库的表现一致,同样遵循在多方设置外键的思想,即在user表中添加groupid字段,该字段和group表中的id关联
3.多对一(一对多)的双向关联:
对象模型:在单方添加集合属性,在多方添加对象属性
关系模型:和单向在数据库的表现一致,同样遵循在多方设置外键的思想,即在user表中添加groupid字段,该字段和group表中的id关联
----------------------------------------------------------------------------------------------
总结:数据库表现相同并遵循一个原则:在多方设置外键
----------------------------------------------------------------------------------------------

多对多关联 --- 增加中间表
  两张表:teacher表和student表
1.多对多单向关联:
对象模型:在其中某一个实体类中设置set集合属性
关系模型:增加中间表,包含studentid和teacherid,并分别向两张表做关联
2.多对多双向关联:
对象模型:在两个实体类中均设置set集合属性
关系模型:和单向关联在数据库表现一致,增加中间表,包含studentid和teacherid,并分别向两张表做关联
-----------------------------------------------------------------------------------------------
总结:在数据库表现一致:增加中间表,类中设置set集合
-----------------------------------------------------------------------------------------------

-----------之前的BBS项目中数据库表设计:
新闻表和评论表:
             1.如果要先查询新闻再查询评论,则确定两张表为一对多关系
             2.如果想在查询评论的时候查询它属于哪个新闻,则确定关系为多对一
到底是一对多还是多对一对在数据库中的表现没有影响,都是在多方设置外键,但是在java类中的表现不同,
是在一方添加set集合属性,还是在多方添加对象属性,这取决于关联关系,既然双向,单向在数据库中表现一致,
那么在java类中建议设置成双向关联。

如何创建数据库表之间的关联关系相关推荐

  1. 数据库设计:pd工程创建数据库表

    数据库建模 了解了数据的设计思想,那对于数据库表的表设计应该怎么做呢?答案是数据库建模数 数据库建模:在设计数据库时,对现实世界进行分析.抽象.并从中找出内在联系,进而确定数据库的结构.它主要包括两部 ...

  2. 使用PowerDesigner创建数据库表

    使用PowerDesigner 建数据库表. 一直很忙,没有时间写东西.这次搞点会声会色的,嘿嘿 此技能为项目经理必备技能. 本次主角: 1.在workspace下建立一项目: physical da ...

  3. MySQL(一)——安装、创建数据库表、DML语言

    文章目录 1. 简述 2. 安装教程 3. 操作数据库 3.1 操作数据库的基本命令 3.2 数据库的列类型 3.3 数据库的字段属性(重点) 3.4 创建数据库表(重点) 3.5 数据表的类型 3. ...

  4. 0基础能学mysql数据库吗_mysql学习入门:零基础如何使用mysql创建数据库表?

    零基础如何自学Mysql创建数据库,是Mysql学习者必经之路,Mysql是受欢迎的关系数据库管理系统,WEB应用方面MySQL是很好的RDBMS应用软件之一.如何使用Mysql创建数据库表,打开My ...

  5. HiveHive创建数据库与创建数据库表

    文章目录 创建数据库 创建数据库操作(增) 删除数据库(删) 修改数据库(改) 查看数据库详细信息(查) 数据库的切换: 创建数据库表操作 内部表与外部表的区别 hive数据表基本操作(增删改查) H ...

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

    关系型数据库表之间的联系[关系]详解 在表中,行和列的逻辑顺序无关紧要.每个表至少包含一列,该列被称为主键,它唯一地标识了表中的每一行. 键是表中扮演特殊角色的列,有两种键:主键.外键. 主键(Pri ...

  7. mysql中下列关于创建_在 MySQL 中,下列关于创建数据库表的描述正确的是( )。_学小易找答案...

    [单选题]在表中设置外键实现的是哪一类数据完整性( ) [单选题]以下为概念模型的是() [论述题]• 参照 < 中国图书馆分类法 > ,谈一下你对自己所学专业在整个科学知识领域中所在的位 ...

  8. jPA自动创建数据库表的一些配置

    2019独角兽企业重金招聘Python工程师标准>>> jPA自动创建数据库表的一些配置 hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如 ...

  9. python代码创建数据库_如何使用python ORM创建数据库表?

    首先同大家说了语言的全方面知识,基本上各个位置点都有涉及,不知道大家有没有学到知识点呢?小编还是习惯跟大家说个总结,这样大家才能抓住重点,今天继续来学习下关于Django框架中ORM的使用,主要的作用 ...

最新文章

  1. 接口里面的方法都是抽象方法吗_单元格区域选取,竟然有这么多种方法,你都造吗?...
  2. pat德才论(java)
  3. Boost.Signals 的文档/查看示例
  4. DRF的序列化——Serializers 序列化组件
  5. python开发网页视频播放器_HTML5 VideoAPI,打造自己的Web视频播放器
  6. python学习-元组tuple(定义、删除、长度、复制、查找、遍历、operator,和列表的区别)
  7. [one day one question] safari缓存太厉害
  8. Python Cookbook手记I
  9. ReactiveSwift源码解析(三) Signal代码的基本实现
  10. 进程调度优先数 c语言,进程调度--动态优先数法(C语言实现)
  11. 深信服 adesk linux 客户端,Sangfor-aDesk巡检工具(深信服桌面云智能交付巡检助手)V2.1 正式版...
  12. 计算机办公自动化取证,办公自动化课程总结范文
  13. Linux cp 复制文件强制覆盖的用法
  14. 【已解决】U盘文件误删 恢复,实用有效 免费无充值 Recuva
  15. codewars练习(javascript)-2021/2/24
  16. c#通配符匹配符合条件文件名
  17. ubuntu程序莫名崩溃显示killed,程序闪退,排除OOM
  18. 如何通过校园招聘,进入互联网大厂?
  19. 分布式、高并发、高性能场景(抢购、秒杀、抢票、限时竞答)数据一致性解决方案...
  20. 那些踩过的declared implicitly的坑

热门文章

  1. 【微语】第十一周(01.25~01.31)
  2. 从双非到应届大厂ssp offer ,再到万能博主,我是怎么做到的?
  3. element-ui 表格(table)合并表头下面合并列且可以收缩展开
  4. elasticsearch 在linux环境的集群搭建
  5. 如何彻底禁止360浏览器弹窗
  6. 红队渗透笔记之红队前端语言基础
  7. 安卓开发陀螺仪!首发10万字Android开发实战文档,进阶学习资料!
  8. cloudflare免费证书_免费获取cloudflare的ssl证书
  9. Matlab power函数用法
  10. 怎么提取图片里的颜色?图像颜色特征提取