嘿伙计我有一个令人困惑的问题,我有一个用户表,它存储了您期望的用户的所有常用数据,但我试图找出用户如何添加其他用户?
听起来很奇怪,但User表中的每个用户都有自己的UI,即UserID,如何添加另一个表,UserID可以与另一个UserID建立关系?
我将给那些可能花时间上传表格图表的人给出答案,谁可以帮助解决与此问题相关的sqlsyntax的一些示例,即如果我想显示,我将如何正确解决上述问题的语法页面上的所有UserIDs朋友。我该如何添加朋友?
答案 0 :(得分:2)
你只需要一对多的关系。
Create Table Friend(
UserId int,
FriendId int,
Constraint pk_friends Primary Key (UserId, FriendId),
Constraint fk_friend_user Foreign Key (UserId) References User(UserId),
Constraint fk_friend_friend Foreign Key (FriendId) References User(UserId)
)
答案 1 :(得分:2)
您只需要另一张类似于图片和墙贴牌桌子的桌子。您只需要能够为一个用户ID(一对多)记录许多朋友ID
例如:
然后得到朋友的查询将是:
DECLARE @UserID AS BIGINT
SET @UserID = 123
SELECT [friends].*
FROM [friends]
where [parentuserid]=@UserID#
插入好友:
DECLARE @UserID AS BIGINT
DECLARE @FriendID AS BIGINT
SET @UserID = 123
SET @FriendID = 321
INSERT INTO [Friends]
(
[ParentUserID],
[ChildUserID]
)
VALUES
(
@UserID,
@FriendID
)
插入代码示例:
private void Test()
{
string Query =
@"INSERT INTO [Friends]
(
[ParentUserID],
[ChildUserID]
)
VALUES
(
@UserID,
@FriendID
)";
using ( SqlConnection oSqlConnection = new SqlConnection( "connect string" ) )
{
oSqlConnection.Open();
using (SqlCommand oSqlCommand = new SqlCommand(Query,oSqlConnection))
{
oSqlCommand.Parameters.AddWithValue("@UserID", Session["UserID"]);
oSqlCommand.Parameters.AddWithValue("@FriendID", Session["FriendID"]);
oSqlCommand.ExecuteNonQuery();
}
}
}
你会从哪里获得你的朋友ID?添加好友的过程是什么?你搜索它们并从列表中选择它们吗?
答案 2 :(得分:1)
我认为您有一个简单的要求用户引用其他用户加入。如果是这种情况,那么您可以在ReferenceUserID
表中再添加一列User
,并且每当新用户引用另一个用户时,只需添加一个UserID
引荐用户即可。如果他不是推荐用户,那么默认情况下它将是NULL
。
稍后检索您可以使用自我加入。
<强>更新强>
对于朋友(多对多关系),您应该在StackOverflow上查看以下问题
Database design: Best table structure for capturing the User/Friend relationship?
UserRelationship
====
RelatingUserID
RelatedUserID
Type[friend, block, etc]
Facebook使用类似的方法,他们在朋友之间有一种交叉连接表。
答案 3 :(得分:1)
你对图表等问了很多....至少对我来说。
这取决于关系的类型,一对一,它将是您的用户表中的另一个列。如果它是多对多你需要一个联结表,有两列UserIDA,UserIDB。根据你需要这种关系的原因。