高效的数据库结构

时间:2014-01-16 00:18:07

标签: sql database database-design data-structures parse-platform

我正在开发一款应用,其中部分内容涉及人们喜欢并评论其他人发布的图片。显然,我希望当有人评论/喜欢他们的图片时通知用户,但我也希望该用户能够看到他们发布的图片。这带来了几个结构化问题。

我有一个表格,用它的ID,图像,其他信息(如喜欢/评论,日期发布信息,最后是发布图像的用户的用户ID)存储图像:

这是表结构:

图片帖子表:| postID | image | misc. image info | userID |

userID用于从用户表中的用户条目中获取通知信息。现在当该用户查看包含他自己帖子的页面时,我有两个选择:

1。)查询包含该用户Image Posts Table的任何图片的userID

2。)为每个用户创建一个表,并为他们发布的每个图像添加postID

用户表:| postID |

我认为第二个选项会更有效率,因为我不必查询包含大量条目的表。有没有更有效的方法来做到这一点?

显然我应该阅读好的数据库设计,所以你们有没有任何好的建议?

2 个答案:

答案 0 :(得分:3)

相同结构的多个表几乎没有意义。使用第二个选项编写查询会在短时间内变得难看。坚持使用1个大型用户表,数据库设计用于处理包含多行的表。

答案 1 :(得分:1)

我会建议不要手动存储userID,如解析会做它,如果你只是设置一个名为user至当前用户属性自己的内部法宝。在内部,它存储ID并将其标记为对象引用。对于查询性能,它们可能有也可能没有额外的优化。

鉴于系统是围绕引用的概念设计的,你应该只保留你提到的两个表/类。

在查询Image Posts表中可以只添加其中的表达使用当前用户一个(同样它在内部沾到该ID和搜索)。这是一个完全索引的搜索,所以应该表现良好。

的另一个优点是,当你查询Image Posts表中可以使用include方法以包括User对象被链接到,避免了第二查询。仅当您存储引用而不是手动提取和存储userID时才可以使用此选项。

看一看在AnyPic示例应用程序的tutorial page,因为它是非常相似的,你提什么,将演示的想法。