Sql server 如何用DB解决这个问题
我有一个表Sql server 如何用DB解决这个问题,sql-server,database,architecture,Sql Server,Database,Architecture,我有一个表Users(UserID,FirstName,LastName…)和一个表Messages。表消息存储用户之间发送的消息 因此,我可以创建如下表: 消息(SenderID、ReceiverID…并为用户创建2个FK,但这种方法似乎不正确,不允许对FK进行级联删除/更新 不允许有多条消息。 此外,我不能为这两个关系设置“set Null”。为什么?那太好了 在这种情况下,哪种结构是正确的?您必须从用户的角度来看待问题 当发送方从发件箱中删除其邮件时,您认为接收方是否希望删除其邮件 否。换
Users
(UserID,FirstName,LastName…
)和一个表Messages
。表消息
存储用户之间发送的消息
因此,我可以创建如下表:
消息(SenderID、ReceiverID…
并为用户创建2个FK
,但这种方法似乎不正确,不允许对FK进行级联删除/更新
不允许有多条消息。
此外,我不能为这两个关系设置“set Null”。为什么?那太好了
在这种情况下,哪种结构是正确的?您必须从用户的角度来看待问题 当发送方从发件箱中删除其邮件时,您认为接收方是否希望删除其邮件 否。换句话说:为每个用户创建一份消息副本 不允许有多条消息
疯狂的要求。这是两条不同的消息。您必须从用户的角度来看待问题 当发送方从发件箱中删除其邮件时,您认为接收方是否希望删除其邮件 否。换句话说:为每个用户创建一份消息副本 不允许有多条消息
疯狂的要求。这是两条不同的消息。cascade delete!不是在我的手表上。。。!我更喜欢让应用程序发出显式删除。我不喜欢相关记录“消失”,因为在DELETE CASCADE上的
意味着,如果用户17向用户18发送消息,然后在稍后删除用户18,该消息将从用户17的发件箱中消失。是的,我理解,这取决于业务规则。在任何情况下,这个包含两个表的架构都是正确的?正确性取决于您的业务需求。例如,在您的系统中,是否有可能将一条消息发送给多个接收者,如电子邮件?如果是这样的话,这个结构就不起作用了。此结构非常严格,但在获取消息时会很快。所以我们需要找到类似问题的答案。如果您发布了确切的要求,那么就可以设计出更好的解决方案。级联删除!不是在我的手表上。。。!我更喜欢让应用程序发出显式删除。我不喜欢相关记录“消失”,因为在DELETE CASCADE上的意味着,如果用户17向用户18发送消息,然后在稍后删除用户18,该消息将从用户17的发件箱中消失。是的,我理解,这取决于业务规则。在任何情况下,这个包含两个表的架构都是正确的?正确性取决于您的业务需求。例如,在您的系统中,是否有可能将一条消息发送给多个接收者,如电子邮件?如果是这样的话,这个结构就不起作用了。此结构非常严格,但在获取消息时会很快。所以我们需要找到类似问题的答案。如果您发布了确切的需求,那么就可以设计出更好的解决方案。