Sql 评级系统的数据库设计
应用程序处理用户和对象,用户使用3个功能对对象进行评级(每个功能一个评级) 编辑:最后一句话不清楚:我指的是所有对象共享的标准 如何有效地为这样一个系统设计数据库? 设计处理评级系统的数据库的最佳实践是什么 我想的是: 表:Sql 评级系统的数据库设计,sql,database-design,rating-system,Sql,Database Design,Rating System,应用程序处理用户和对象,用户使用3个功能对对象进行评级(每个功能一个评级) 编辑:最后一句话不清楚:我指的是所有对象共享的标准 如何有效地为这样一个系统设计数据库? 设计处理评级系统的数据库的最佳实践是什么 我想的是: 表: 使用者 物体 专长1 羽毛 feat3rates 和关系: 一个对象有很多个属性 专长1 羽毛 feat3rates 一个用户有许多 专长1 羽毛 feat3rates 我必须说,这个设计很奇怪。考虑: Object: ID, ... // Provided f
- 使用者
- 物体
- 专长1
- 羽毛
- feat3rates
- 专长1
- 羽毛
- feat3rates
- 专长1
- 羽毛
- feat3rates
- 我必须说,这个设计很奇怪。考虑:
Object: ID, ...
// Provided features cannot be shared between objects
ObjectFeature: ID, ObjectID, ...
User: ID, ...
UserObjectFeatureRating: UserID, ObjectFeatureID, Rating
假设您不打算增加或减少要评分的评分功能的数量,我将制作一个评分表,跟踪用户、产品和三列(每个功能一列)
因此,您有一个用户表、一个对象表和一个分级表,其中UserID和ObjectID作为组合主键,这样您就可以强制执行每个对象一个用户标准。您希望以这样一种方式封装数据,即每个表只包含与其需要处理的内容直接相关的信息。创建链接表以提供不同数据集(在本例中为用户和对象)之间的关系 我将创建以下表格: 用户-用户的基本信息:登录名、密码、用户ID,以及您需要的任何信息 对象-要评级的对象:其名称/ID和属性 功能-描述一种功能类型的表格,带有某种功能名称/ID。这可能从您的三种主要类型开始,但您始终可以展开/修改它。您还可以自定义每个对象将具有哪些可用于评级的功能 ObjectFeature-对象和功能的链接表。包含每个表的主键,在两个表之间创建多对多关系 UserRating-ObjectFeature和用户之间的另一个排序链接表。包含这两个表的主键以及分配的评级
从关系的角度来看,这是一种比您所展示的更好的数据组织方式。通过它的设计,它清楚地说明了每组数据是如何连接的,并使可扩展性(例如,为速率添加额外的功能,让不同的对象有不同的特性来进行速率)更加清晰。感谢您的回答,但所有对象的功能都是相同的,我刚刚更新了问题,不清楚,但所有对象都共享了功能,我刚刚更新了问题,谢谢你的完整答案