关系混淆
嘿家伙我有一个令人困惑的问题,我有一个用户表,它存储了用户所需的所有常用数据,但我试图弄清楚用户如何添加其他用户?关系混淆
听起来很奇怪,但User表中的每个用户都有自己的UI,它是UserID我怎么能添加另一个表,其中UserID可以与另一个UserID有关系?
我会给出答案的那些可以花时间上传表图,以及谁可以用一些例子为sqlsyntax与此相关的问题,即帮助我将如何正确的语法以上问题是否想要在页面上显示所有的用户ID朋友。我将如何添加一个朋友。
您只需要另一张类似于图片和墙纸表的表格。你只需要能够录制了许多朋友的ID为一个用户ID(一对多)
如:
的查询然后让朋友将是:
DECLARE @UserID AS BIGINT
SET @UserID = 123
SELECT [friends].*
FROM [friends]
where [parentuserid][email protected]#
插入一个朋友:
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?什么是添加朋友的过程?你会搜索它们并从列表中选择它们吗?
我认为你有一个用户引用其他用户加入一个简单的要求。如果是这种情况,那么您可以简单地在User
表中添加一列ReferenceUserID
,并且每当新用户引用另一个用户时,只需将他添加到引用用户的UserID
即可。如果他不是被推荐的用户,那么默认情况下它将是NULL
。
稍后检索,您可以使用自我加入。
更新:
对于朋友(多对多的关系),你应该看看在*上
Database design: Best table structure for capturing the User/Friend relationship?
UserRelationship
====
RelatingUserID
RelatedUserID
Type[friend, block, etc]
类似的方法是使用Facebook的,他们有以下问题朋友之间关系的一种交叉连接表。
我认为他希望能够添加好友,而不仅仅是存储用户将他们引用到网站。但这并不完全清楚。你建议1:1的关系,我认为他需要很多关系。 – NerdFury 2011-03-31 14:54:46
OP的问题不清楚......还有很多其他答案解释了另一方面(m2m rel),所以我没有包括这一点。 – 2011-03-31 15:05:20
你只需要一个多对多的关系。
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)
)
你对图表等问题稍微有点....至少对我来说。
这取决于一对一的关系类型,它将成为用户表中的另一个列。如果它很多很多,你需要一个联结表,有两列UserIDA,UserIDB。取决于你为什么需要这种关系。
是否需要'FriendID'? – 2011-03-31 14:57:02
所以ParentUserID是当前的用户ID和childuserid是你添加的用户ID? – 2011-03-31 14:57:57
@Chris - 不,但我总是在我的桌子上有一个主键。 – WraithNath 2011-03-31 14:58:29