评级系统的数据库设计

Gae*_*bar 3 sql database-design rating-system

应用程序处理用户和对象,用户对具有3个功能的对象进行评级(每个功能一个速率).

编辑:最后一句不清楚:通过功能我的意思是所有对象共享的标准

如何有效地为这样的系统设计数据库?设计处理评级系统的数据库的最佳做法是什么?

我在想什么:

表:

  • 用户
  • 对象
  • feat1rates
  • feat2rates
  • feat3rates

和关系:一个对象有很多

  • feat1rates
  • feat2rates
  • feat3rates

用户有很多

  • feat1rates
  • feat2rates
  • feat3rates

The*_*TXI 8

假设您不打算增加或减少评级功能的数量,我会制作一个评级表来跟踪用户,产品和三列(每个功能一个)

因此,您拥有Users表,Objects表和您的Ratings表,其中UserID和ObjectID作为组合主键,这样您就每个用户标准对每个对象强制执行一次评级.


小智 7

您希望以这样一种方式封装数据,即每个表只包含与其需要处理的内容直接相关的信息.创建链接表以提供不同数据集(在本例中为用户和对象)之间的关系.

我会创建以下表格:

用户 - 用户的基本信息:登录,密码,用户ID,无论您需要什么.

Object - 要评估的对象:其名称/ ID和属性.

功能 - 描述功能类型的表,具有某种功能名称/ ID.这可能从您的三种主要类型开始,但您可以随时扩展/修改它.您还可以自定义每个对象可用于评级的功能.

ObjectFeature - 对象和功能的链接表.包含每个表的主键,在两者之间创建多对多关系.

UserRating - ObjectFeature和User之间的另一个排序链接表.包含这两个表的主键以及指定的分级.

从关系角度来看,这是一种比您提供的更好的数据组织方式.通过它的设计,它可以清楚地表明每组数据是如何连接起来的,并且可以扩展(例如,添加额外的功能以进行评级,使不同的对象具有不同的特征以进行评级).