我有一个表 feeds ,其中包含一组代码描述行。 e.g。
Key | Value | Url
fb | facebook | http://www.facebook.com
tw | twitter | http://twitter.com
ff | friendfeed | http://friendfeed.com
REST端点将此表的内容作为JSON数组返回。它显示在网页的下拉框中。
今天老板希望以特定方式对内容进行排序。 我希望你对我的设计发表评论。
设计1
我在名为rank的 feeds 中添加了一个单独的列,以表示该项目的顺序。
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。每种设计的优缺点是什么?你会用哪一个?
答案 0 :(得分:3)
将排名放在单独的表中的唯一原因是,如果a)代码描述与排名之间的关系不是1:1,或者b)列稀疏地填充(大多数行具有NULL值)
即使在后一种情况下,大多数人都会取消规范化并将排名列放在代码描述表中。
答案 1 :(得分:1)
如果是一对一的关系,没有理由把它放在一个单独的表中。选择#1,imo。
答案 2 :(得分:0)
设计1很好。设计2与设计1基本相同,但具有不必要的复杂性。