Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 基本数据库设计:类型为的实例列表_Database Design - Fatal编程技术网

Database design 基本数据库设计:类型为的实例列表

Database design 基本数据库设计:类型为的实例列表,database-design,Database Design,这是一个关于数据库设计的初学者问题。假设我们有一个有很多用户的博客网站,每个用户都有一些博客文章。我们希望快速找到给定用户编写的所有文章。我们可以在post表中搜索具有给定用户ID的所有博客文章。我们还可以将用户表设计为包含用户帖子的列表。这可能意味着存储一个逗号分隔的post ID字符串。正确的方法是什么?您正在寻找的一种技术可以防止: 冗余(多次存储相同数据) 异常(改变一个基准改变另一个基准) 循环(改变A改变B改变C改变A) 重新设计(添加或删除字段需要更改其他字段) 偏见(问同一个问

这是一个关于数据库设计的初学者问题。假设我们有一个有很多用户的博客网站,每个用户都有一些博客文章。我们希望快速找到给定用户编写的所有文章。我们可以在post表中搜索具有给定用户ID的所有博客文章。我们还可以将用户表设计为包含用户帖子的列表。这可能意味着存储一个逗号分隔的post ID字符串。正确的方法是什么?

您正在寻找的一种技术可以防止:

  • 冗余(多次存储相同数据)
  • 异常(改变一个基准改变另一个基准)
  • 循环(改变A改变B改变C改变A)
  • 重新设计(添加或删除字段需要更改其他字段)
  • 偏见(问同一个问题的不同方式会给出不同的答案)
标准化的典型形式称为标准化,通常很难实现,但您可以通过实现较低的标准来改进设计

您没有为我们提供足够的信息来为您推荐一个模式,但是如果您需要区分post ID,“存储一个逗号分隔的post 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
此设计可以从用户处获取文章,或从文章中获取用户,或从数据库命令获取文章。

您正在寻找的一种技术可以防止:

  • 冗余(多次存储相同数据)
  • 异常(改变一个基准改变另一个基准)
  • 循环(改变A改变B改变C改变A)
  • 重新设计(添加或删除字段需要更改其他字段)
  • 偏见(问同一个问题的不同方式会给出不同的答案)
标准化的典型形式称为标准化,通常很难实现,但您可以通过实现较低的标准来改进设计

您没有为我们提供足够的信息来为您推荐一个模式,但是如果您需要区分post ID,“存储一个逗号分隔的post 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
此设计可以从用户处获取文章,或从文章中获取用户,或从数据库命令获取文章。

您正在寻找的一种技术可以防止:

  • 冗余(多次存储相同数据)
  • 异常(改变一个基准改变另一个基准)
  • 循环(改变A改变B改变C改变A)
  • 重新设计(添加或删除字段需要更改其他字段)
  • 偏见(问同一个问题的不同方式会给出不同的答案)
标准化的典型形式称为标准化,通常很难实现,但您可以通过实现较低的标准来改进设计

您没有为我们提供足够的信息来为您推荐一个模式,但是如果您需要区分post ID,“存储一个逗号分隔的post 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
此设计可以从用户处获取文章,或从文章中获取用户,或从数据库命令获取文章。

您正在寻找的一种技术可以防止:

  • 冗余(多次存储相同数据)
  • 异常(改变一个基准改变另一个基准)
  • 循环(改变A改变B改变C改变A)
  • 重新设计(添加或删除字段需要更改其他字段)
  • 偏见(问同一个问题的不同方式会给出不同的答案)
标准化的典型形式称为标准化,通常很难实现,但您可以通过实现较低的标准来改进设计

您没有为我们提供足够的信息来为您推荐一个模式,但是如果您需要区分post ID,“存储一个逗号分隔的post 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

此设计可以从用户处获取文章,或从文章中获取用户,或从数据库命令获取文章。

谢谢。我还有一个问题。我假设数据库在主键上实现了红黑树,但其他列又如何呢?通过userID的第二列搜索文档表的效率如何?完全取决于您使用的数据库技术。大多数数据库都允许在不影响数据的情况下进行性能调优查找。@user442920关系数据库通常不使用红黑树-它们适合内存中的操作,但与数据库页(基本上是磁盘分配单元)不一致。相反,B-树几乎被广泛使用。是的,您可以在同一个表的顶部有几个B树索引(在本例中,您可以在
userID
上有索引)。为了更好地理解,我强烈建议阅读(以及几乎整个网站)。@user442920并澄清Dour的答案:存储列表是“错误的”,因为它违反了1NF的原则。与精心设计的索引方案相比,它会损害您的数据完整性(通常比性能更重要),最终也会损害您的性能。谢谢。我还有一个问题。我假设数据库在主键上实现了红黑树,但其他列又如何呢?通过userID的第二列搜索文档表的效率如何?完全取决于您使用的数据库技术。大多数数据库都允许在不影响数据的情况下进行性能调优查找。@user442920关系数据库通常不使用红黑树-它们适合内存中的操作,但与数据库页(基本上是磁盘分配单元)不一致。相反,B-树几乎被广泛使用。是的,你可以有几个B-tr