database - 如何设计一个与其自身具有多对多关系的表?

标签 database hibernate jpa orm

例如,一个Users实体有一个friends属性,我该如何设计这个friends属性,我认为有两种方法:

  1. friends 属性是一个字符串,所有用户名都用“,”分隔,这样就很难读取和修改。
  2. friends 属性是一个 Set,如 Set<Users> ,但是这样我就不知道实体怎么写了?

有人知道最佳实践吗?

最佳答案

Hay 的企业模型模式对此进行了介绍。

一方代表一个人(或一个组织):

Party
id
name

一方可以在一段时间内与另一方建立关系:

PartyRelationship
fromPartyId
toPartyId
fromDate
toDate nullable

基本图:

Party -< PartyRelationship >- Party

示例 SQL:

insert into party values (1, 'Jerry');
insert into party values (2, 'Neil');

insert into partyRelationship values (1, 2, getDate(), null);

关于database - 如何设计一个与其自身具有多对多关系的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463702/

相关文章:

database - 使用 git 作为文本数据库?

sql - 参数化语句真的会更改存储在数据库中的数据以防止 SQL 注入(inject)吗?

java - 无法解析Hibernate的 'AnnotationConfiguration'符号

java - 同一个 JPA 类的多个数据库支持

java - Spring JPA 没有将自定义值枚举类型保存到数据库

node.js - 如何高效地将 Postgres 数据从 Query 传输到 S3

database - 下载 Azure SQL 数据库

java - Hibernate Envers 用以前的审计表条目替换当前数据条目

java - 如何将 JPA 实体映射到数据库中的 2 个主键

java - JPA:根据实例变量动态地将实体映射到表