gpt4 book ai didi

mysql - 对于多个排名来说,一个好的mySQL数据库设计是什么?

转载 作者:行者123 更新时间:2023-11-29 13:05:32 25 4
gpt4 key购买 nike

我正在尝试找出设计数据库的最佳方法,该数据库允许用户对多个项目进行排名。

这些项目由所有用户排名。

每个项目一开始都会自动分配一个等级。因此,当我创建用户时,排名表将自动填充。

所以像这样:

users (id, name) - 100,000+ entries
items (id, name) - never more than 1,000 entries

我目前唯一能想到的排名是这样的:

rankings (id, user_id, item_id, ranking)

但这感觉不对,因为我的 rankings 表中有 1 亿个条目。不知道这样可以吗?我还可以使用什么其他选项?

最佳答案

每个用户可以为每个项目分配零个或一个排名吗?或者她可以为某一特定项目分配多个排名吗?

如果是零或一,您的排名表应该包含这些列

 user_id   INT   
item_id INT
ranking INT

主键应该是复合键(user_id, item_id)。这将不允许同一用户对同一项目进行多次排名,并且效率相当高。在此表上放置单独的 id 不是正确的做法。

为了查询效率,建议您同时创建覆盖索引(user_id, item_id,ranking)(item_id, user_id,ranking)

如果您能让数十万用户对所有 1000 个项目进行排名,那就太好了。这是任何网络应用程序开发人员都希望遇到的问题。

该表的行相当小,并且使用我提到的索引,它在较小规模和添加用户时都应该表现良好。

关于mysql - 对于多个排名来说,一个好的mySQL数据库设计是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com