Mysql 数据库结构,用于存储用户对布局顺序的偏好
网页布局中有几个选项 最新消息 推荐新闻 跟踪消息 历史新闻 浏览量最大的新闻 用户可以选择版面的顺序,例如,他们可以将浏览次数最多的新闻排在最前面 因此,我正在考虑如何将选择存储在表中,以便于开发 选择的数量是固定的,只有这5个选择 用户将经常更新订单 我在想: 创建用户选择表 所以,当用户寄存器在表中创建记录时,以及每当更新更改行时,这种方法似乎是可行的,但也不能直接在程序中重新排序布局 那么,有没有更好的结构方案 感谢您的帮助我将创建一个带有用户id、布局id和订单id的表格布局订单。这种方式很容易添加更多布局,无需向表格添加更多列 创建新用户时,您将分配默认订单Mysql 数据库结构,用于存储用户对布局顺序的偏好,mysql,sql,database,database-design,relational-database,Mysql,Sql,Database,Database Design,Relational Database,网页布局中有几个选项 最新消息 推荐新闻 跟踪消息 历史新闻 浏览量最大的新闻 用户可以选择版面的顺序,例如,他们可以将浏览次数最多的新闻排在最前面 因此,我正在考虑如何将选择存储在表中,以便于开发 选择的数量是固定的,只有这5个选择 用户将经常更新订单 我在想: 创建用户选择表 所以,当用户寄存器在表中创建记录时,以及每当更新更改行时,这种方法似乎是可行的,但也不能直接在程序中重新排序布局 那么,有没有更好的结构方案 感谢您的帮助我将创建一个带有用户id、布局id和订单id的表格布局订单。这种
user_id layout_id order_id
1 1 1
1 2 2
1 3 3
1 4 4
1 5 5
下面是一个更新示例。该布局需要@user\u id、@layout\u id和@order\u id
在这里,我使用变量创建一个具有特殊顺序的新排名
您可以检查返回的内容,只需在联接中选择
我将使用用户id、布局id和顺序id创建一个表布局顺序。这种方法很容易添加更多布局,而无需向表中添加更多列
创建新用户时,您将分配默认订单
user_id layout_id order_id
1 1 1
1 2 2
1 3 3
1 4 4
1 5 5
下面是一个更新示例。该布局需要@user\u id、@layout\u id和@order\u id
在这里,我使用变量创建一个具有特殊顺序的新排名
您可以检查返回的内容,只需在联接中选择
我会朝这个方向走:
create table user
( -- your pre-existing user table, this is a stub
id int auto_increment primary key
-- the rest
);
create table sortChoices
( -- codes and descriptions of them
code int auto_increment primary key,
description varchar(100) not null
);
create table user_sortChoices_Junction
( -- intersect or junction table for user / sortChoices
userId int not null,
code int not null,
theOrder int not null,
primary key (userId,code), -- prevents dupes
constraint `fk_2user` foreign key (userId) references user(id),
constraint `fk_2sc` foreign key (code) references sortChoices(code)
);
连接表驱动它,它是灵活的,并且那些跟随它的人不会把自己锁定在相同的想法中“永远只有5个”
另外,对于喜欢CSV值的其他人来说,还有数据规范化问题。这是我为此做的一个示例,并与连接表相关联
因此,以下内容与OP问题一样适用。我将朝这个方向发展:
create table user
( -- your pre-existing user table, this is a stub
id int auto_increment primary key
-- the rest
);
create table sortChoices
( -- codes and descriptions of them
code int auto_increment primary key,
description varchar(100) not null
);
create table user_sortChoices_Junction
( -- intersect or junction table for user / sortChoices
userId int not null,
code int not null,
theOrder int not null,
primary key (userId,code), -- prevents dupes
constraint `fk_2user` foreign key (userId) references user(id),
constraint `fk_2sc` foreign key (code) references sortChoices(code)
);
连接表驱动它,它是灵活的,并且那些跟随它的人不会把自己锁定在相同的想法中“永远只有5个”
另外,对于喜欢CSV值的其他人来说,还有数据规范化问题。这是我为此做的一个示例,并与连接表相关联
因此,这对于后面的人来说和OP问题一样重要。good point@JuanCarlosOropeza,我被一个从窗口飞出的连接表所包围,所以一旦OP或任何使用这些东西的人,任何模式选择,都会引出一个问题:我如何维护排序顺序?这就是乐趣开始的地方,因为事实上如果没有它,人们甚至无法从一开始就做出选择!祝你好运@JuanCarlosOropeza,我相信你会抓住它好的一点@JuanCarlosOropeza,我被一个从窗口飞出的连接表所包围,所以一旦OP或任何一个使用这些东西的人,任何模式选择,它就会引出一个问题:我如何维护排序顺序?这就是乐趣开始的地方,因为事实上如果没有它,人们甚至无法从一开始就做出选择!祝你好运,胡安卡洛斯,我相信你会成功的。大量使用变量和没有显式事务的事务。和其他用户一样,总是加载边缘条件数据,但它也能保存下来。得到我的支持,干得好,胡安·卡洛斯。大量使用变量和没有显式事务的事务。和其他用户一样,总是加载边缘条件数据,但它也能保存下来。得到我的支持。