在每種類型架構的表中,假設我有一個具有兩個子類型student和teacher的Person類型。學生不能當老師,老師不能當學生。每種類型的專有子類型的數據庫表
下面是我知道如何到目前爲止設置這些的最佳途徑:
Geometry
ID int, PK
Name string
Point
ID int, PK, FK
X float
Y float
Line
ID int, PK, FK
StartPoint int, FK
EndPoint int, FK
注意,對於子類型的主鍵也是一個外鍵幾何。我怎樣才能確保沒有既是點又是線的幾何?是否存在某種相互排斥的約束?
如果唯一的解決方案是使用特定於供應商的觸發器之類的東西,我最好是這樣做,還是在稍後或客戶端的其他地方執行此操作?
謝謝!
所以,你不考慮的想法,一個人不能同時是老師和學生是一個數據完整性的問題,而是一個邏輯問題?擁有這個枚舉不是多餘的嗎?這些不是修辭問題,我真的不知道什麼是最好的 – Eric
也許我太抽象了,如果這是高中或明顯不是什麼,但任何高等教育機構,這當然是可能的。如果它們完全分離,爲什麼它們從'Person'繼承,而不是僅僅創建2個表格,'Teacher'和'Student'? –
我實際上是在一個非常不同的數據庫上工作。在我的數據庫中,子類型絕大多數是獨佔的。在這種情況下,我將編輯該帖子以闡明 – Eric