【问题标题】:Help with MySQL Friends List帮助 MySQL 好友列表
【发布时间】:2011-09-15 20:56:09
【问题描述】:

我正在制作一个使用好友列表的 Android 应用。据我所知,您不能将数组存储在 MySQL 表中,因此看来我将不得不从我的“用户”表中创建一个单独的表并将其称为“朋友”。该表将只有 Friend1 和 Friend2。

我的问题是存储此表的首选方式。我可以使用“用户”表中的用户名字段(字符串)来存储它们,或者我可以使用“用户”表中的用户 ID 字段(整数)。使用 ID 会使表更小,因为小整数比字符串占用更多空间,但同时,我主要使用 UserName 字段访问这些数据(因此我必须查询 Users 表以从用户表)。

MySQL 表首选哪种方法?直接使用用户名,这样我就不必从用户表中查找用户ID,或者将表保存为两个整数,然后查询从用户名中查找ID?谢谢。

【问题讨论】:

  • 我假设你的意思是 SQLite?无论如何,使用 ID 作为外键,这就是它的用途!

标签: android mysql sql


【解决方案1】:

存储用户表中的两个用户 ID 键。

假设您将联系人的姓名从“酒吧的家伙”更改为“McMoneypants 先生”。如果此联系人是朋友,即使更改后仍会显示为“来自酒吧的人”。

尽量避免数据存储在多个地方。

【讨论】:

  • 另外,整数比较比字符串比较快得多,这将大大减轻连接的痛苦。
【解决方案2】:

首选方法是使用 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';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2010-12-31
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2012-07-30
    相关资源
    最近更新 更多