我正在制作一款将使用好友列表的Android应用。据我所知,你不能在MySQL表中存储一个数组,所以我似乎必须从我的“用户”表中创建一个单独的表并称之为“朋友”。这个表只有Friend1和Friend2。
我的问题是存储此表的首选方法。我可以使用“Users”表中的UserName字段(字符串)来存储它们,或者我可以使用“Users”表中的UserID字段(整数)。使用ID可以使表更小,因为小整数占用的空间比字符串多,但同时,我主要使用UserName字段访问这些数据(所以我必须查询Users表以从中获取UserID用户表)。
MySQL表首选哪种方法?直接使用用户名,所以我不必从Users表中找到UserID,或者将表保存为两个整数,并查询从UserName中查找ID?感谢。
答案 0 :(得分:1)
从users表中存储两个userID键。
假设您将联系人姓名从“Guy from bar”更改为“Mr. McMoneypants”。如果此联系人是朋友,即使在更改后,它仍会显示为“来自酒吧的家伙”。
尽量避免数据生活在多个地方。
答案 1 :(得分:0)
首选方法是使用Friends表中Users表中的UserID作为引用该用户的方法。这样,正如Phillip所说,用户可以更改他们的名字,你只需要在一个地方更改它。另外,正如您所说,与字符串列相比,您的Friends表将占用更少的数字列空间。
关于"(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';
就您的查询而言,您永远不必处理UserID列。 这并不比你的方法困难得多:
SELECT FriendName
FROM Friends
WHERE UserName = 'Ralph';