数据由字段内的逗号与新表分隔

fed*_*o-t 1 sql database database-design

可能重复:
在数据库列中存储逗号分隔列表真的那么糟糕吗?

这是我在尝试扩展数据库时经常遇到的问题.

例如:

我想跟踪有多少用户在我的网站上看到某篇文章,所以在数据库中我向表中添加了一个views字段article.现在,如果我想确保这些是独特的观点,那么这显然是不够的.

因此,让我们说在我的设计中,我可以识别出一个与IP或其他东西一起存储的单个号码的用户(或至少一台计算机).

然后,如果我想跟踪有多少独特用户看到特定文章哪个是最好的方式?

  • 要创建另一个article_views包含字段article_id和 表的表user_id.
  • 在表格字段user_id内保存用逗号分隔的s .viewsarticle

Lar*_*tig 5

永远不会选择单独的逗号解决方案.这违反了数据库设计的每一个原则.改为创建一个单独的表.

在您的特定情况下,使用PRIMARY KEY创建表(article_id,user_id).然后,数据库将禁止输入重复记录.根据您的SQL引擎,您还可以使用INSERT或IGNORE(或等效的)来避免抛出异常.

另一种解决方案要求您在触摸数据的所有应用程序中强制实施唯一性.