0

假设我在数据库中编码了一系列文章,这些文章显示在网站的前端。

如果添加了对自定义排序的支持,那么如何/应该在数据库中表示?

PS:可能会有一篇文章显示在多个列表中的情况。

4

2 回答 2

3

将用户定义的排序存储在数据库中的唯一方法是将数据行存储在表中。为此,您需要列

  • 识别用户,
  • 识别物品,以及
  • 识别订单。

前两个很容易。有几种不同的方式来存储订单。设计目标通常是减少重写订单的需要。

create table user_defined_order (
  user_id integer not null references users (user_id),
  article_id integer not null references articles (article_id),
  sort_order <sort_data_type> not null,
  primary key (user_id, article_id),
  unique (user_id, sort_order)
);

最后一个约束unique (user_id, sort_order)是依赖于应用程序的。

sort_data_type 选项

不同的数据类型为您提供了用于插入和更改顺序的不同选项。最常用的是

  • 没有间隙的整数(插入需要重写一堆行)
  • 带间隙的整数(插入间隙,当间隙关闭时重写一堆行)
  • 浮动(在现有浮动之间插入一半,拆分失败时重写)
于 2012-12-03T10:07:28.703 回答
2

如果我理解正确,那么每个用户都可以以不同的顺序显示订单。假设每个用户都有一个 id,那么您将需要一个由三个字段组成的表,用户 id/文章 id/显示顺序,其中用户 id 和文章 id 为表提供了一个复合主键。

于 2012-12-03T10:00:57.833 回答