关于收件与发件的问题(站内短信)
做OA的一个小节点,是企业短信。
我一共有二个表Message信息表(发件箱),一个是MessageToUser消息发送对象表(收件箱).
我的表中的字段和约束是这样的:
SQL code
--发件箱
Create Table Message
(
MessageId int identity(1,1) primary key,
Title varchar(20) not null
.. --略
)
go
--收件箱
Create Table MessageToUser
(
Id int identity(1,1) primary key,
MessageId int foreign key(MessageId) references Message(MessageId) --与发件箱做外键
.. --略
)
go
也就是说,我的收件箱与发件箱是外键关系
我的问题是:
当我要删除发件箱的时候,因为外键的关系,收件箱的对应信息也一定要删除,但事实上,这却不符合逻辑。
然后,我又想,收件箱存储数据时,不用外键,而干脆把发件箱的数据都直接贴过来? 但事实上,也不符合逻辑。
请问:应该如何去解决这个问题呢?
------解决方案--------------------
以你目前的模式为基础修改
当一边删除发件箱或者收件箱的时候给个标识字段,不显示这条消息,实际上他是存在于数据库的,仅当收发件2个表的标识均为删除时候才将数据实际删除,这样你不用将同样的内容贴到2张表中了
------解决方案--------------------
那删除的时候就是要对两张表 都要先查询一次 再判断是去删除 还是修改 对么
还有什么简单的方法么
是表设计的不合理? 还是。。。。
期待。。
------解决方案--------------------
当一边删除发件箱或者收件箱的时候给个标识字段,不显示这条消息,实际上他是存在于数据库的,仅当收发件2个表的标识均为删除时候才将数据实际删除,这样你不用将同样的内容贴到2张表中了
------解决方案--------------------
一,拷贝字段还是可以的阿,毕竟发送以后还能修改吗?
二,添加删除字段,那在显示方面添加条件;(别忘了用户接收的表也要有删除来控制用户的删除)
两种做法都行