2017-04-16 85 views
0

我有用戶的移動應用程序。一切都很簡單 - 每個用戶都有ID名稱在一個表格中結合兩個朋友關係來源

用戶表

id name 
1 John 
2 Dave 
3 Jack 

一些這方面的用戶是朋友,是我的問題的主要目的 - 尋找重建友誼表,看起來像最好的辦法(唯一的規則是user_id_1 < user_id_2)

友誼表

id user_1_id user_2_id 
1 1   2 
2 1   3 
3 2   3 

我如何知道用戶是朋友?我從不同的來源(社交網絡A,社交網絡B)獲取這些信息。 因此,如果兩個用戶至少在兩個社交網絡中的一個是朋友 - 他們是我的應用中的朋友。

現在我重新創建友誼表中的每一天:

  1. 以每個用戶,此用戶
  2. 擦除從友誼表包含了ID的所有記錄
  3. 找到他所有的朋友創建空數組NewFriends在網絡A(A-朋友
  4. 對於每A-朋友 - 找到他們在我的應用ID,並將它們添加到NewFriends陣列
  5. 發現他在網絡B的所有朋友(B-朋友
  6. 對於每B-朋友 - 找到他們在我的應用ID,並將它們添加到NewFriends陣列,如果他們不存在有
  7. 刪除從友誼表未在NewFriends陣列
  8. 插入提及的所有記錄的友誼從NewFriends陣列中的所有記錄的友誼友誼表之前沒有

存在那裏,我怎樣才能解決這個任務的賭注之三?

回答

1

首先, 可以使用2對網絡的只有一個表(而不是使用A-朋友表和B-朋友表) 和選擇時,你可以使用不同的關鍵字 的步驟將是:

  1. 以每個用戶
  2. 擦除包含他的ID從友誼表
  3. 發現他在網絡中的所有的朋友,並把它添加到(溫度朋友)
  4. 發現他在網絡B中的所有朋友都記錄在NewFriends表添加記錄
  5. 刪除友誼表未在NewFriends陣列提到
  6. 插入所有的友誼記錄所有友誼的記錄 - 次將其添加到(溫度朋友)
  7. 對於每個不同的溫度,朋友NewFriends數組到友誼表之前並不存在
1

您可以使用set數據類型替代數組。使用set的原因被設置爲不包含重複值。使用兩組oldFriendshipsnewFriendships

  1. 從友誼表加載數據到oldFriendships
  2. 創建新newFriendships
    2.1。從網絡A爲用戶找到所有朋友並將其添加到newFriendships
    2.2。從網絡找到該用戶的所有朋友,將其添加到newFrindships
  3. 更新友誼表
    3.1查找oldFriendships補充newFrindships - 這個被刪除的友誼,從友誼表
    3.2刪除這些值。查找newFrindships補充oldFriendships - 這是增加友誼,這些值添加到友誼表

以下是有關補充

wikipeda文章