在前面的内容中,提到了存储用户电子书划线的表(table_user
),表结构以下。其中,start_point
表示用户划线在对应章节中的起始位置,end_point
表示结束位置。code
id | user_id | ebook_id | chapter | start_point | end_point |
---|
如今,咱们要针对电子书出一个划线表(table_book
),表结构跟上面的相似,去掉user_id
便可。table_book
的对象主体是电子书,存储全部用户在电子书上的划线区间。对象
目前,table_user
数据已经存在,而table_book
是新建的。咱们要对用户的笔记作筛选、汇总,将过滤后的数据写入table_book
表。有两个工做要作:table
table_book
表table_book
表针对老数据的处理,描述一个简单的处理策略:若是用户划线相交,取并集。处理思路以下:循环
start_point ASC, end_point ASC
的顺序排列start_point
、end_point
做为划线的位置;若是不相交,说明前面的数据能够做为一条独立的划线,继续开始下一次循环。针对新数据的处理,相对会比较麻烦。任何一条新的划线笔记,均可能影响到两条既存的笔记。由于,它可能和两条本来独立的划线笔记,发生相交的可能。遍历