Database 表间双向外键的数据库设计考虑
我有两个类,Database 表间双向外键的数据库设计考虑,database,hibernate,jpa,Database,Hibernate,Jpa,我有两个类,User和Status,虽然一个用户将有许多状态,但这自然是多对一关系,可以很容易地映射到DB表 但是,该需求还需要用户保持其“当前”状态,即在用户表中,它需要有一个指向状态表的外键。这样做的结果是在两个表之间的相反方向上有两个外键 其中一个明显的问题是,一旦将记录插入到两个表中,我就不能删除它们,因为从一个表中删除将违反另一个表的外键 对于这种情况,什么是最佳设计?是否必须将状态保存在单独的表中?它不能仅仅由一个java枚举表示,用户将拥有一个status属性。大概是这样的: pu
User
和Status
,虽然一个用户将有许多状态,但这自然是多对一
关系,可以很容易地映射到DB表
但是,该需求还需要用户保持其“当前”状态,即在用户
表中,它需要有一个指向状态
表的外键。这样做的结果是在两个表之间的相反方向上有两个外键
其中一个明显的问题是,一旦将记录插入到两个表中,我就不能删除它们,因为从一个表中删除将违反另一个表的外键
对于这种情况,什么是最佳设计?是否必须将状态保存在单独的表中?它不能仅仅由一个java枚举表示,用户将拥有一个status属性。大概是这样的:
public enum UserStatus {
X, Y, Z;
}
public class User {
private UserStatus status;
...
}
我希望这对你有帮助 这就是我目前使用的方法。了解hibernate中视图的用法很有趣,谢谢。@Wudong数据库视图的用法与表的用法相同,使用
@table
注释