代码之家  ›  专栏  ›  技术社区  ›  Robin Barnes

数据库设计问题-不同类别的多个分数

  •  1
  • Robin Barnes  · 技术社区  · 17 年前

    假设我有一个服装产品的数据库。除了许多其他字段外,数据库还需要为每个产品存储不同类别的评级(10分制)。

    例如,一个类别可以是“场合”。具体情况如下:

    穿去办公室 穿去参加婚礼 戴上日期 … 穿去参加葬礼

    每种产品都需要在每种产品的10分中打分。所以一种产品可能有:

    办公室:5 婚礼:7 日期:10 葬礼:0

    这表明这个项目是愉快的,不太低调,也不太正式。

    有许多类似的类别,这些类别将作为搜索算法的一部分使用,因此速度可能是一个问题。我也不想我的产品表变得太大。这意味着当每个响应都有它自己的列时,我对将它存储在产品表中感到不安。

    可能以这种方式存储,除了在具有联接的其他表中?只是寻找一个相当灵活和优雅的解决方案。

    如果我不清楚,请告诉我。

    P.S正在使用MySQL,如果这有什么区别…

    编辑:我不认为有一个类别表和一个带有产品标识、类别标识和分数的连接表能很好地工作。您要么将联接中的每个分数列(例如婚礼分数等)命名为别名,要么返回多个分数列(每个类别一个)。

    3 回复  |  直到 17 年前
        1
  •  1
  •   grossvogel    17 年前

    编辑:我认为没有类别 表和联接表 产品标识、类别标识和得分 工作得很好。你也可以 必须命名每个分数列(例如 参加婚礼等 别名,或获取多个分数列 返回(每个类别一个)。

    我认为这是一种方法,因为它可以让你对不同的分数一视同仁。当分数类型被添加、重命名、删除等时,大多数代码都不需要进行调整。

    如果您担心复杂的连接来聚合这些信息,那么一两个视图可能会有所帮助。

        2
  •  1
  •   dkretz    17 年前

    你走对了。有一个“类别”表,中间有两列,一列是产品的pk,另一列是产品的pk,加上三分之一的分数。很标准的样式。然后,中间表通常会有一个复合pk(例如productid+categoryid)和另一个categoryid上的非唯一索引。

        3
  •  0
  •   Brody    17 年前

    好吧,关系数据库对存储关系进行了优化,因此存储项目描述的表、评分类别(包括评分描述)的表和联接表(项目到评分)似乎是完美的答案。

    缺点是什么?好吧,每一项都会有好几个分数记录,这是真的。它在查询浏览器中也不会那么容易阅读。但是有了正确的键和索引,它就可以足够快地使用您需要的方式。

    推荐文章