Hibernate入门第九讲——数据库中表与表之间的关系

数据库中表与表之间的关系

Hibernate框架基于ORM设计思想,它将关系型数据库中的表与我们Java中的类进行映射,一个对象就对应着表中的一条记录,而表中的字段对应着类中的属性。数据库中表与表之间存在着三种关系,也就是系统设计中的三种实体关系。下面我会进行简单阐述。

一对一

什么样的关系属于一对一呢?例如一个公司只能有一个注册地址,一个注册地址只能被一个公司注册。一对一关系的建表原则有两种:

  1. 唯一外键对应:在任意一方添加一个外键来描述对应关系。如下图所示:
    这里写图片描述
    或者
    这里写图片描述
  2. 主键对应:一方的主键作为另一方的主键。如下图所示:
    这里写图片描述

实体类的设计:

  • 员工类:

    public class Employee {
    	// 其他属性...
    	private Archives archives;
    }
    
  • 档案类:

    public  class Archives {
    	// 其他属性...
    	private Employee employee;
    }
    

一对多(多对一)

什么样的关系属于一对多(或者多对一)呢?客户与订单之间的关系就是一对多(或者多对一)关系,还有,比方说:

  • 一个部门可以对应多个员工,但一个员工只能属于某一个部门;
  • 一个客户对应多个联系人,但一个联系人只能属于某一个客户。

一对多(或者多对一)关系的建表原则:在多的一方添加外键来描述关联关系。如下图所示:
这里写图片描述
实体类的设计:

  • 客户类:

    public class Customer {
    	// 其他属性...
    	private Set<Order> orders;
    }
    
  • 订单类:

    public class Order {
    	// 其他属性...
    	private Customer c;
    }
    

多对多

什么样的关系属于多对多呢?学生与老师之间的关系就是多对多的关系,还有,比方说:

  • 一个学生可以选择多门课程,一门课程也可以被多个学生选择;
  • 一个用户可以选择多个角色,一个角色也可以被多个用户选择。

多对多关系的建表原则:通过一张中间表来描述其对应关系。如下图所示:
这里写图片描述
实体类的设计:

  • 学生类

    public class Student {
    	// 其他属性...
    	private Set<Teacher> ts;
    }
    
  • 老师类

    public class Teacher {
    	// 其他属性...
    	private Set<Student> ss;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李阿昀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值