2011-09-15 54 views
2

我正在製作一個Android應用程序,它將使用好友列表。據我所知,你不能在MySQL表中存儲一個數組,所以看起來我必須從我的「用戶」表中創建一個單獨的表並稱它爲「朋友」。這個表格將只有Friend1和Friend2。幫助MySQL好友列表

我的問題是存儲此表的首選方式。我可以使用我的「用戶」表中的用戶名字段(字符串)來存儲它們,或者我可以使用我的「用戶」表中的用戶ID字段(整數)。使用ID會使表更小,因爲小整數比字符串佔用更多空間,但同時我主要使用UserName字段訪問此數據(所以我必須查詢Users表以從中獲取UserID用戶表)。

對於MySQL表,哪種方法是首選?直接使用用戶名,所以我不必從Users表中找到UserID,或者將表保存爲兩個整數,並且查詢從UserName中查找ID?謝謝。

+0

我假設你的意思是SQLite?無論如何,使用ID作爲外鍵,這就是它的目的! –

回答

1

存儲users表中的兩個userID鍵。

假設您將聯繫人的姓名從「Guy from bar」更改爲「Mr. McMoneypants」。如果此聯繫人是朋友,即使在更改之後,它仍會顯示爲「來自酒吧的人」。

儘量讓數據保存在多個地方。

+1

另外,整數比較比字符串比較快得多,這將顯着減輕連接的痛苦。 – jmelesky

0

首選方法是使用Friends表中的用戶表作爲引用該用戶的方式。這樣,正如Phillip所說,用戶可以更改他們的名字,而只需要在一個地方進行更改。此外,正如您所說,與字符串列相比,您的朋友表與數字列佔用的空間更少。

並且關於"(so I have to query the Users table to get the UserID from the Users table)",下面的查詢是不是太麻煩了:

SELECT FriendName 
FROM Users Natural Left Join Friends 
WHERE UserName = 'Ralph'; 

至於查詢而言,你從來沒有來處理用戶ID列。 這並不比你的方法更難:

SELECT FriendName 
FROM Friends 
WHERE UserName = 'Ralph';