我有兩個類,User
和Status
,而一個用戶會有一些狀態,這當然是Many-to-One
的關係,並且可以很容易地映射到DB表。關於兩個表之間的外鍵雙向數據庫設計的考慮
但是,該要求還需要用戶保持其「當前」狀態,即在User
表中,它需要具有到Status
表的外鍵。這樣做的結果是在相反的方向上在兩個表之間有兩個外鍵。
一個明顯的問題是,一旦記錄被插入到兩個表中,我就不能刪除它們,因爲從一個表中刪除將違反另一個表的外鍵。
這種情況的最佳設計是什麼?
我有兩個類,User
和Status
,而一個用戶會有一些狀態,這當然是Many-to-One
的關係,並且可以很容易地映射到DB表。關於兩個表之間的外鍵雙向數據庫設計的考慮
但是,該要求還需要用戶保持其「當前」狀態,即在User
表中,它需要具有到Status
表的外鍵。這樣做的結果是在相反的方向上在兩個表之間有兩個外鍵。
一個明顯的問題是,一旦記錄被插入到兩個表中,我就不能刪除它們,因爲從一個表中刪除將違反另一個表的外鍵。
這種情況的最佳設計是什麼?
我希望它幫你!
您是否必須將狀態保存在單獨的表中?它可以不只是由一個Java枚舉代表,並且用戶將有一個狀態屬性。事情是這樣的:
public enum UserStatus {
X, Y, Z;
}
public class User {
private UserStatus status;
...
}
這是我目前使用的方法。知道在hibernate中使用view是很有趣的,謝謝。 – Wudong
@Wudong數據庫視圖的用法與表相同,使用'@ Table'註釋 – user75ponic