Java 保存数据库标准
我正在开发一个安卓应用程序,人们可以用自己的帐户注册和登录。这些信息将保存到某种数据库中。因此将有一个表,其中每一行都是一个新用户。该表将为每个用户提供3列:用户名、密码(当然是加密的)和好友。因此,是的,用户可以成为其他用户的朋友 我的问题是,在使用friends列实现这样的表时,行业标准是什么 我在想,因为每个用户都有一个唯一的ID,所以每个用户的friends列可以是一个以逗号分隔的用户ID列表。大概是这样的:Java 保存数据库标准,java,android,database,Java,Android,Database,我正在开发一个安卓应用程序,人们可以用自己的帐户注册和登录。这些信息将保存到某种数据库中。因此将有一个表,其中每一行都是一个新用户。该表将为每个用户提供3列:用户名、密码(当然是加密的)和好友。因此,是的,用户可以成为其他用户的朋友 我的问题是,在使用friends列实现这样的表时,行业标准是什么 我在想,因为每个用户都有一个唯一的ID,所以每个用户的friends列可以是一个以逗号分隔的用户ID列表。大概是这样的: ID Username Password Friends 1
ID Username Password Friends
1 blah **** 2,3
2 blah1 **** 1
3 blah2 **** 1
但我的想法听起来非常粗略……像facebook这样的人是如何建立数据库来存储朋友的。或者如果facebook太复杂了…如何设置我的数据库来存储朋友呢 首先,我不会像您那样在表中存储friends列。多对多关系通常存储在一个新表中,如下所示
ID FRIENDS
1 2
1 3
2 1
3 1
表的主键是
(ID,FRIENDS)
即一对一映射,而不是一对多映射。我将使用一个名为FRIENDS的表,该表具有多对多关系,因此在您的示例中
USER TABLE FRIEND TABLE
ID Username Password ID1 ID2
1 blah **** 1 2
2 blah1 **** 1 3
3 blah2 ****
为了更有效地在两个方向(ID1,ID2)和(ID2,ID1)上添加索引,这样您就可以只添加一次友谊,而不需要添加(1,2)和(2,1)您可以通过编辑描述性标题来澄清您的问题,省略与密码无关的详细信息,并避免使用“行业标准”这一术语(是正式/官方文件,而您似乎在询问常见做法)。可能是问题的副本