【问题标题】:Ordering the rows of a database table对数据库表的行进行排序
【发布时间】:2010-02-18 04:44:18
【问题描述】:

我有一个表feeds,其中包含一组代码描述行。 例如

Key | Value      | Url                    
fb  | facebook   | http://www.facebook.com
tw  | twitter    | http://twitter.com     
ff  | friendfeed | http://friendfeed.com  

REST 端点将此表的内容作为 JSON 数组返回,并显示在网页的下拉框中。

今天老板想让内容以特定的方式排序。 我希望你对我的设计发表评论。

设计 1

我在 feeds 中添加了一个单独的列,称为 rank 来表示项目的顺序。

Key | Value      | Url                     | Rank
fb  | facebook   | http://www.facebook.com | 3
tw  | twitter    | http://twitter.com      | 1
ff  | friendfeed | http://friendfeed.com   | 2

设计 2

我创建了一个单独的表 FeedRank 来存储排名。

Key | Rank
fb  | 3
tw  | 1
ff  | 2

分析

我倾向于设计#1,因为我可以省去 JOIN。每种设计的优缺点是什么?您会使用哪一种?

【问题讨论】:

    标签: mysql json database-design


    【解决方案1】:

    将排名放在单独的表中的唯一原因是:a) 代码描述和排名之间的关系不是 1:1,或者 b) 列填充稀疏(大多数行都有空值)

    即使在后一种情况下,大多数人也会反规范化并将排名列放在代码描述表中。

    【讨论】:

      【解决方案2】:

      如果是一对一的关系,则没有真正的理由将其放在单独的表中。与 #1 一起去,imo。

      【讨论】:

        【解决方案3】:

        设计 1 很好。设计 2 与设计 1 基本相同,但具有不必要的复杂性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-25
          • 2012-02-24
          • 1970-01-01
          • 2012-06-07
          相关资源
          最近更新 更多