0

我需要一些關於我的數據庫關係的幫助。我的問題是我不知道我是否正確地處理這個問題。我有一個應用程序,用戶可以與Facebook上的友誼類似的其他用戶。與自己的多對多關係

╔═══════════╗ 
║ Users ║ 
╠═══════════╣ 
║ #id  ║ 
║ *username ║ 
║ *password ║ 
╚═══════════╝ 

╔══════════════╗ 
║ User_friends ║ 
╠══════════════╣ 
║ *user_id  ║ 
║ *friend_id ║ 
╚══════════════╝  

╔════════════════╗ 
║ Friend_request ║ 
╠════════════════╣ 
║ #id   ║ 
║ *user_id  ║ 
║ *friend_id  ║ 
║ *created_at ║ 
║ *updated_at ║ 
╚════════════════╝ 

用戶李四想登錄到我的應用程序和發送好友請求,以Jane Doe的這樣的記錄將被保存在Friend_request李四登錄到應用程序,她會看到有人想要友誼的通知。當李四接受John Doe的友好關係請求我想兩個記錄存儲到User_friends因爲李四簡的朋友李四Jane Doe的與友誼李四

我不確定我是否以正確的方式處理這個問題。

回答

1

你所做的事情是合理和直接的。

PS還有另一些候選鍵(UNIQUE NOT NULL列集不包含更小的),比PRIMARY KEY是你們等已表明(通過#):

Users (username) -- likely -- though not on Stack Overflow 
User_friends (user_id, friend_id) 
Friend_request (user_id, friend_Id) 

PPS回覆標題「許多與自身一對多的關係」 :我想你的意思是在User_friendsFriend_request實體類用戶有一個「與自己多對多的關係」。表格表示(應用程序)關係。行中的值因此是相關的,因此它們指定的實體是相關的。有user_idfriend_id列的外鍵到Users id。這些往往是,稱爲「關係」,儘管它們是事實/限制。 (如果您詢問用戶的用戶名和請求或接受的朋友,那麼您將自己與JOINUsers)。