Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库结构,用于存储用户对布局顺序的偏好_Mysql_Sql_Database_Database Design_Relational Database - Fatal编程技术网

Mysql 数据库结构,用于存储用户对布局顺序的偏好

Mysql 数据库结构,用于存储用户对布局顺序的偏好,mysql,sql,database,database-design,relational-database,Mysql,Sql,Database,Database Design,Relational Database,网页布局中有几个选项 最新消息 推荐新闻 跟踪消息 历史新闻 浏览量最大的新闻 用户可以选择版面的顺序,例如,他们可以将浏览次数最多的新闻排在最前面 因此,我正在考虑如何将选择存储在表中,以便于开发 选择的数量是固定的,只有这5个选择 用户将经常更新订单 我在想: 创建用户选择表 所以,当用户寄存器在表中创建记录时,以及每当更新更改行时,这种方法似乎是可行的,但也不能直接在程序中重新排序布局 那么,有没有更好的结构方案 感谢您的帮助我将创建一个带有用户id、布局id和订单id的表格布局订单。这种

网页布局中有几个选项

最新消息 推荐新闻 跟踪消息 历史新闻 浏览量最大的新闻 用户可以选择版面的顺序,例如,他们可以将浏览次数最多的新闻排在最前面

因此,我正在考虑如何将选择存储在表中,以便于开发

选择的数量是固定的,只有这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或任何一个使用这些东西的人,任何模式选择,它就会引出一个问题:我如何维护排序顺序?这就是乐趣开始的地方,因为事实上如果没有它,人们甚至无法从一开始就做出选择!祝你好运,胡安卡洛斯,我相信你会成功的。大量使用变量和没有显式事务的事务。和其他用户一样,总是加载边缘条件数据,但它也能保存下来。得到我的支持,干得好,胡安·卡洛斯。大量使用变量和没有显式事务的事务。和其他用户一样,总是加载边缘条件数据,但它也能保存下来。得到我的支持。