我有一个数据库表,例如:如何在表中执行数据库级记录之间的依赖关系
----[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。最后,用户想要查询项目或突发事件,例如报价已被确认。但是,如果一个报价被确认并同时被拒绝,它会提供虚假信息,所以我试图使其能够克服这种结果 –