0

我有 2 张桌子:

threads (thread_id)
users   (thread_id,user_id)

用户通过邀请其他用户加入线程来创建线程,因此多个用户可以在同一个线程上。我试图阻止用户创建具有相同用户(重复用户集)的新线程。有人有一个快速的 SELECT 语句来测试这个吗?

4

1 回答 1

0

由于您的用户组是动态的(即用户可以随时邀请其他用户加入线程),因此没有充分的理由强制执行新线程验证。我会放弃其中一项要求。要么使用户组静态(即新用户应在创建时定义组成员),要么允许用户创建他们想要的任何线程。如果对新线程的限制是为了防止垃圾邮件,请使用其他方法,例如验证码(或每个用户每小时新线程数的限制)来实现相同的目标。

如果您尝试同时满足这两个要求,您将遇到 SQL 性能问题,因为每次有人尝试启动新线程时,您都将在数据库上运行多个全表扫描。此外,在任何时候,您都可能会遇到 2 个线程拥有相同用户的情况。例如,线程 1 有用户 A、B 和 C。线程 2 有用户 A 和 B。当用户 B 邀请 C 加入线程 2 时会发生什么?

于 2012-08-22T14:22:47.507 回答