在前面的內容中,提到了存儲用戶電子書劃線的表(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
做爲劃線的位置;若是不相交,說明前面的數據能夠做爲一條獨立的劃線,繼續開始下一次循環。針對新數據的處理,相對會比較麻煩。任何一條新的劃線筆記,均可能影響到兩條既存的筆記。由於,它可能和兩條本來獨立的劃線筆記,發生相交的可能。遍歷