这是关于数据库设计的初学者问题。假设我们有一个博客网站,其中包含许多用户,每个用户都有一些博客文章。我们希望快速查找给定用户编写的所有文章。我们可以在帖子表中搜索具有给定userID的所有博客帖子。我们还可以设计用户表以获得用户帖子的列表。这或许意味着存储一串逗号分隔的帖子ID。这样做的正确方法是什么?
答案 0 :(得分:3)
您正在寻找database normalization,这种技术可以阻止:
标准化的典型形式称为Boyce-Codd Normal Form,并且通常很难做到,但您可以通过实施较低的Normal Forms来改进设计。
您没有向我们提供足够的信息来为您推荐架构,但如果您需要区分帖子ID,那么“存储一串逗号分隔的帖子ID”是错误的。如果这是你想要的,你应该考虑如下设计:
Users
userID other user fields ..
100 Charlie
101 Edith
Articles
articleID userID pathOrWhatever...
1000 100 http://example.com/stuff
1001 100 http://example.com/moreStuff
1002 101 http://example.com/somethingElse
此设计可以从数据库命令中获取用户或文章中的用户的文章。