【发布时间】:2018-01-13 19:36:11
【问题描述】:
我正在为邮件创建一个数据库,MAIL 表的设计如下:
ID (Surrogate PK)
Recipient/Sender (Coming as FK from `REGISTERED_USERS` table - Recipient if outgoing mail and Sender if incoming mail)
Dispatch/Receive Date
Status (Coming as FK)
PostType (Whether it is Sent or Received mail)
问题
我的问题出现在 状态 列,因为外发邮件或收件邮件的状态不同(例如,外发邮件的状态为已收到,外发邮件为已订购、已盖章、已发送等)。
我的方法
我尝试了一个 trigger 来实现这一点,但我想确保使用一些约束是否有更好的解决方案/设计?非常感谢!
【问题讨论】:
-
问题是什么?你想
check状态还是什么? -
@juergend 谢谢!我想确保只有允许的状态适用于相应类型的邮件(传入/传出)
-
您可以使用
check关键字来定义规则。 -
使用单表方法并不能做太多事情。
-
你不应该有两个表,但你应该有单独的列用于传入和传出信息。如果需要,您可以添加显示组合状态的第三个计算列。
标签: sql sql-server tsql database-design constraints