Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何用DB解决这个问题_Sql Server_Database_Architecture - Fatal编程技术网

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的发件箱中消失。是的,我理解,这取决于业务规则。在任何情况下,这个包含两个表的架构都是正确的?正确性取决于您的业务需求。例如,在您的系统中,是否有可能将一条消息发送给多个接收者,如电子邮件?如果是这样的话,这个结构就不起作用了。此结构非常严格,但在获取消息时会很快。所以我们需要找到类似问题的答案。如果您发布了确切的需求,那么就可以设计出更好的解决方案。