2010-04-13 48 views
1

我工作的一个论坛一样的web应用,我想,让用户喜爱的项目,以便他们可以跟踪它,也让别人能看到多少次,一个项目的被收藏最多。收藏数据库中的东西 - 保持跟踪的最有效方法?

的问题是,我对数据库的最佳实践,其中包括这种情况不确定。

我有我的头两个想法如何做到这一点:

  1. 添加一个额外的列,像这样的用户表和店里的东西:“| 2 | 5 | 73 |”
  2. 有至少两列,添加一个额外的表为参照项,其他为引用的用户。

我对第二种方法感到不舒服,因为它涉及一个额外的表格,并且可能需要更多的查询。也许这些信念不是问题,因为除了简单地处理表格布局和基本查询之外,我对数据库的理解很少。

回答

3

第二种方法,通常被称为junction or join table,是相当标准的做法,是要远远大于增加像你描述的用户表中的一个列更有效。通过JOIN的魔法,你不会再做任何额外的查询。

由于听起来您的应用程序开始变得有点复杂,我强烈建议您在当地的图书馆或书店购买MySQL数据库书籍(检查亚马逊上的评论以找到好的评论)并扩展您的知识。

+0

好吧,我这样做,谢谢。尽管我已经很熟悉基本的查询语法,但是我假设您因为其他原因而推荐了一本书? – unrelativity 2010-04-13 05:39:50

+0

那么,使用关系数据库有效地意味着不仅仅是知道基本的查询语法。扩展规范化,关系代数等知识是一个不错的主意,特别是如果你打算在将来做更多这样的事情。祝你好运! – 2010-04-13 13:26:18

1

好吧,我不得不+ 1-ED的otherresponse但我太福利局明显的。但是,我推荐这种类型的连接表。