我正在开发一款应用,其中部分内容涉及人们喜欢并评论其他人发布的图片。显然,我希望当有人评论/喜欢他们的图片时通知用户,但我也希望该用户能够看到他们发布的图片。这带来了几个结构化问题。
我有一个表格,用它的ID,图像,其他信息(如喜欢/评论,日期发布信息,最后是发布图像的用户的用户ID)存储图像:
这是表结构:
图片帖子表:| postID
| image
| misc. image info
| userID
|
userID用于从用户表中的用户条目中获取通知信息。现在当该用户查看包含他自己帖子的页面时,我有两个选择:
1。)查询包含该用户Image Posts Table
的任何图片的userID
。
2。)为每个用户创建一个表,并为他们发布的每个图像添加postID
:
用户表:| postID
|
我认为第二个选项会更有效率,因为我不必查询包含大量条目的表。有没有更有效的方法来做到这一点?
显然我应该阅读好的数据库设计,所以你们有没有任何好的建议?
答案 0 :(得分:3)
相同结构的多个表几乎没有意义。使用第二个选项编写查询会在短时间内变得难看。坚持使用1个大型用户表,数据库设计用于处理包含多行的表。
答案 1 :(得分:1)
我会建议不要手动存储userID
,如解析会做它,如果你只是设置一个名为user
至当前用户属性自己的内部法宝。在内部,它存储ID并将其标记为对象引用。对于查询性能,它们可能有也可能没有额外的优化。
鉴于系统是围绕引用的概念设计的,你应该只保留你提到的两个表/类。
在查询Image Posts
表中可以只添加其中的表达使用当前用户一个(同样它在内部沾到该ID和搜索)。这是一个完全索引的搜索,所以应该表现良好。
的另一个优点是,当你查询Image Posts
表中可以使用include
方法以包括User
对象被链接到,避免了第二查询。仅当您存储引用而不是手动提取和存储userID
时才可以使用此选项。
看一看在AnyPic示例应用程序的tutorial page,因为它是非常相似的,你提什么,将演示的想法。