我正在实施一个消息系统。
我有这些表:Thread
,User
,ThreadUser
,Message
Thread
都有User
个,通过ThreadUser
(多对多)User
都有Thread
个,通过ThreadUser
(多对多)Message
属于Thread
(多对一)Message
属于User
(多对一)让Message.from
指向ThreadUser
而不是User
是个好主意,以确保线程中的消息只能来自该线程中的用户而不是任何用户在我的DB?有什么缺点?
答案 0 :(得分:0)
我认为应该是解决问题的合理方法:
用户表:
UserId (PK), UserName, Email, ......
主题表:
ThreadId (PK), ThreadName, ......
ThreadUser表:
ThreadUserId (PK), ThreadId(FK), UserId(FK),........
请记住在此表中制作UNIQUE KEY
的{{1}},从而确保每个用户只能参与一次。
最后,
消息表:
(ThreadId, UserId)
请注意,我们通过在消息表中引用MessageId (PK), ThreadUserId(FK), MessageTitle, MessageBody,........
来识别 Thread
和User
。这应该有助于确定哪个用户以及在哪个帖子下发布了哪条消息。
这意味着,在有人发布ThreadUserId
内的任何内容之前,应用程序必须验证Messages
是否存在ThreadUserId
以及User
是否存在Thread
;我希望写一些东西。
希望有所帮助。