我有一個數據庫表,例如:如何在表中執行數據庫級記錄之間的依賴關係
----[Statuses]----
StatusID
Name
------------------
與數據例如:
----[Statuses]----
1
Quote created
2
Quote accepted
3
Quote sent
4
Quote confirmed
5
Quote declined
-------------------
現在我想顯示這在界面中是一個多項選擇,因此所有這些記錄下都有一個複選框 - 但是,有些選項不是多項選擇,如「報價已確認」和「報價已拒絕」都不能同時存在。
最大的問題是這個表是可變的 - 用戶可以添加更多的狀態 - 否則我可以創建觸發器。
我該如何在記錄級執行這種規則?有沒有辦法,通過在此表中添加1列或更多列來使其工作?
編輯: 我將添加關於我的問題更完整的設計:
還有一個表,如:
---[Projects]---
ProjectID
Projectname
Projectcode
Projecttype
----------------
爲了記錄用戶回升什麼,一個需要連接表:
------------------[Projects_Statuses]---------------
ProjectID
StatusID
DateChecked (date when the user clicked the status)
UserChecked (user that clicked the status)
-----------------------------------------------------
以下可能是加入表
SELECT *
FROM Projects_Statuses PS
INNER JOIN Statuses S ON PS.StatusID = S.StatusID
INNER JOIN Projects P ON PS.ProjectID = P.ProjectID
結果:
--------------------[Project_Statuses]-----------------
Project_StatusID: 1 | 2
DateChecked: 1/9/2015 | 1/9/2015
UserChecked: User1 | User1
ProjectID: 1 | 4
Projectname: Nameless Project | Nameless Project
Projectcode: P122-323 | P122-323
Projecttype: Type 3 | Type 3
StatusID: 5 | 4
StatusName: Quote declined | Quote confirmed
-------------------------------------------------------
而這也正是我想避免的組合:報價無法確認,並在同一時間下降。這是一個任選項。
因此,「狀態」表包含用戶實際選擇的內容,對嗎?那不是參考表?否則,爲什麼這是一個表變量? – jazzytomato
實際上挑選了什麼,確實記錄在參考表中。例如:Projects_Statuses或Incidents_Statuses。最後,用戶想要查詢項目或突發事件,例如報價已被確認。但是,如果一個報價被確認並同時被拒絕,它會提供虛假信息,所以我試圖使其能夠克服這種結果 –