Order 排序
Order 排序
		
		Categories:
可重新排序的资料表设计
| 方式 | 说明 | 
|---|---|
| 使用 integer 栏位排序 | 将新增的资料排序间隔加大,当有需要插入排序时,可以将重新排序项目数字更新到未用的数字中间,只是若重新排序空间不够时,必须要重新更新排序数字 | 
| 使用 double 栏位排序 | 当要重新排序时,将要排序的资料顺序指定到指定的精度后方,多加几个小数位数,即可调整排序,但要小心若排序的栏位超过此精度,可能会有排序错误状况发生,可以定期重新对资料重新编号排序 | 
| 使用 string 栏位排序 | 当要重新排序时,将要排序的资料顺序指定到指定的精度后方,多加几个字串,即可调整排序,但要小心字串长度过长问题 | 
| 限制排序栏位一次只能移动 1 个位置 | 将两个项目排序数字交换即可,但使用体验可能会不太好 | 
资料重新排序策略
- 评估排序的项目数量有多少,避免超过可排序精度
 - 每晚重新整理排序数字,让精度重置,可以再继续让使用者重新排序
 - 让重新排序行为在离峰时间执行,提高高峰时间使用者存取效率
 
double 排序
| 项目 | 排序 double 栏位 | 
|---|---|
| item1 | 1.0 | 
| item2 | 1.01 | 
| item3 | 1.012 | 
| item4 | 1.0123 | 
| item5 | 1.01234 | 
| item6 | 1.012345 | 
integer 排序
| 项目 | 排序 integer 栏位 | 
|---|---|
| item1 | 100 | 
| item2 | 200 | 
| item3 | 300 | 
| item4 | 400 | 
| item5 | 500 | 
| item6 | 600 | 
string 排序
| 项目 | 排序 string 栏位 | 
|---|---|
| item1 | a | 
| item2 | ab | 
| item3 | abc | 
| item4 | abcd | 
| item5 | abcde | 
| item6 | abcdef | 
参考资料
- Storing a re-orderable list in a database - Software Engineering Stack Exchange
 - How do you best represent ordered lists in a relational database, allowing for easy and efficient updates (insertion/deletion of list elements)? - Quora
 - User-defined Order in SQL
 - Storing an ordered list in database
 - How to design a database for storing a sorted list? - Database Administrators Stack Exchange
 - database design - How to move an element in a sorted list and keep the CouchDb write “atomic” - Stack Overflow
 - How to save a sorted list in a database? (SQL or NoSQL) | George Tachev’s Blog