gpt4 book ai didi

database - 用户可分类的记录

转载 作者:太空狗 更新时间:2023-10-30 01:54:08 24 4
gpt4 key购买 nike

对于我的 webapp 中的每个用户,有 n 个相关的 Widget。每个小部件都在数据库中的小部件表中表示。用户可以对他们的小部件进行排序,他们永远不会超过几十个小部件,而且他们会经常对小部件进行排序。

我没有经常处理具有固有顺序的数据库项目。订购它们的好策略是什么?起初,我认为一个简单的“sortIndex”列就可以了,但后来我开始想知道如何初始化这个值。它大概必须是一个唯一值,并且应该大于或小于所有其他排序索引。不过,我不想每次创建新小部件时都必须检查该用户的所有其他排序索引。这似乎是不必要的。

也许我可以有一个默认的“底部优先”排序索引?但是我该如何区分这些呢?我想我可以使用创建日期标志,但是如果用户想要在所有这些最低优先级的小部件中间插入一个小部件怎么办?

处理这类事情的标准方法是什么?

最佳答案

如果您有用户根据自己的个人喜好对小部件进行排序,您需要创建一个查找表,如下所示:

create table widgets_sorting
(
SortID int primary key,
UserID int,
WidgetID int,
SortIndex int
)

然后,对用户的小部件进行排序:

select
w.*
from
widgets w
inner join widgets_sorting s on
w.WidgetID = s.WidgetID
inner join users u on
s.UserID = u.UserID
order by
s.SortIndex asc

这样,对于新用户,您所要做的就是向 widgets_sorting 表中添加新行。确保在 WidgetID 和 UserID 列上放置外键约束和索引。

这些查找表确实是解决此类个性化列表中常见的多对多关系的最佳方式。希望这能为您指明正确的方向!

关于database - 用户可分类的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1319733/

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