应用程序SQL数据库编程的一般问题
这只是一个关于如何处理web服务器上的CRUD操作的一般性问题。每次用户(例如)想要在某个组中发表文章时,在执行应用程序SQL数据库编程的一般问题,sql,Sql,这只是一个关于如何处理web服务器上的CRUD操作的一般性问题。每次用户(例如)想要在某个组中发表文章时,在执行INSERT操作之前,我们是否应该始终检查该组是否存在,方法如下: SELECT COUNT(1) FROM groups WHERE id = 'group_id'; 或者这不是首选,因为它会导致性能问题?但它也更安全…我对用户可以指定一个不存在的组的设计感到困惑。这似乎是问题的根本原因 为了防止“发布到不存在的组”,您可以在posts的groupId中定义一个外键到group
INSERT
操作之前,我们是否应该始终检查该组是否存在,方法如下:
SELECT COUNT(1)
FROM groups
WHERE id = 'group_id';
或者这不是首选,因为它会导致性能问题?但它也更安全…我对用户可以指定一个不存在的组的设计感到困惑。这似乎是问题的根本原因 为了防止“发布到不存在的组”,您可以在
posts
的groupId
中定义一个外键到groups
表中。瞧。数据库确保它们存在
但更进一步。拥有
groupId
意味着该组存在。因此,如果您的代码使用的是“引擎盖下”的ID,那么这根本不是问题。我对用户可以指定不存在的组的设计感到困惑。这似乎是问题的根本原因
为了防止“发布到不存在的组”,您可以在posts
的groupId
中定义一个外键到groups
表中。瞧。数据库确保它们存在
但更进一步。拥有
groupId
意味着该组存在。因此,如果您的代码使用“引擎盖下”的ID,那么这根本不是问题。它更安全,但不是100%万无一失。在多用户多线程环境中,在执行检查和后续插入之间,总是会删除组。依赖数据库约束(如外键)更容易。我认为最好添加一些唯一的约束,让完整性检查为您完成任务。这样更安全,但不是100%万无一失。在多用户多线程环境中,在执行检查和后续插入之间,总是会删除组。依赖数据库约束(如外键)更容易。我认为最好添加一些唯一的约束,让完整性检查为您完成这项工作。我认为可能会发生的事情是,如果用户导航到屏幕上发布到组,一旦他们导航,应用程序就会获取所有组。但是在获取和用户发布之间,可以创建一个组deleted@MichaelHsu . . . 如果这是一个问题(删除组),那么外键关系就足够了。尝试使用已删除的组插入帖子会导致错误。我认为可能会发生的情况是,如果用户导航到屏幕以向某个组发布帖子,一旦他们导航,应用程序就会获取所有组。但是在获取和用户发布之间,可以创建一个组deleted@MichaelHsu . . . 如果这是一个问题(删除组),那么外键关系就足够了。尝试使用已删除的组插入帖子将导致错误。