我有四個表在MSSQL 2012數據庫,我找不到了,如果我需要改變設計或與我所做的約束,我認爲堅持是有點麻煩儘管它有效。請看下面的玩具,例如:維持表外部約束引用具有共同的參考表兩張表
考慮到貸款了書籍和雜誌,想跟蹤貸款的庫。值得注意的是雜誌和貸款有不同的狀態,所以我最終得到這些表格:
- MediaType(ID,Name)例如: {「Book」,「Magazine」}
- Media(ID,Name,MediaType) {(「飄」,1),(時間,2)}
- MediaState(ID,State,MediaType) {( 「行貸款」,1),( 「保留」,1),( 「可用」,2),( 「脫銷」,2)}
- 日誌(ID,時間,媒體,MediaState)
我如何確保不會出現狀態缺貨的書籍?
我目前的解決方案是讓一個檢查約束的日誌調用函數checkStates()來檢查,如果下面的計數大於0:
SELECT count(*) FROM Logs l INNER JOIN Media m ON l.Media = m.ID INNER JOIN MediaState ms ON ms.ID = m.MediaState WHERE m.MediaType != ms.MediaType
表格中每個單元的數量在哪裏? – 2014-09-21 11:05:18
它是一個玩具的例子,所以不需要數量 – 2014-09-21 19:53:56