社交网络和网络隶属关系
Posted
技术标签:
【中文标题】社交网络和网络隶属关系【英文标题】:Social Networking & Network Affiliations 【发布时间】:2010-05-04 16:19:35 【问题描述】:我正在为一个社交网络项目规划一个数据库,并且 偶然发现了这个 url,这是对 facebook 的(粗略的)逆向工程猜测 架构:
http://www.flickr.com/photos/ikhnaton2/533233247/
我感兴趣的是“附属机构”的概念,我正在尝试 从技术上讲,完全了解它们的工作原理。我有点困惑的地方是 FacebookGroups”、“FacebookEvent”和“Affiliations”表(Affiliations 中的 NID)中的 NetworkID 列。这些网络从属关系如何相互关联?
在我自己的项目中,我有一个简单的配置文件表:
CREATE TABLE [dbo].[Profiles](
[profileid] [int] IDENTITY(1,1) NOT NULL,
[userid] [uniqueidentifier] NOT NULL,
[username] [varchar](255) COLLATE Latin1_General_CI_AI NOT NULL,
[applicationname] [varchar](255) COLLATE Latin1_General_CI_AI NOT NULL,
[isanonymous] [bit] NULL,
[lastactivity] [datetime] NULL,
[lastupdated] [datetime] NULL,
CONSTRAINT [PK__Profiles__1DB06A4F] PRIMARY KEY CLUSTERED
(
[profileid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
CONSTRAINT [PKProfiles] UNIQUE NONCLUSTERED
(
[username] ASC,
[applicationname] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
一个个人资料可以有多个从属关系。一个附属机构可以有许多个人资料。我想以这样一种方式设计它,即从属关系之间的关系告诉我一些关于相关配置文件的信息。事实上,根据用户选择的从属关系,我想知道如何推断出尽可能多的关于那个人的事情。
我的问题是,我应该如何设计我的网络从属关系表以及如何 他们是否按照我的上述要求进行操作?粗略的 SQL 模式将不胜感激 您的回复。
提前谢谢...
【问题讨论】:
【参考方案1】:首先,它是一个对象模式而不是数据库模式。其次,它没有显示一切,远未完成。查看 Schools 类(不是表)注意关系、高中 1 和 2 以及学校列表。您是否在 Profile 类中看到用于保存这些“外键”的属性。
您的问题无法准确回答
其次,为什么要关心 facebook 是如何做到的?第三范式不是魔法吗?没有你不知道的失落之书知识。
您希望从属关系和个人资料之间建立多对多关系吗?或不?您是否试图揭示隶属关系之间的相互依赖关系?
为什么不直接向我们询问有关如何设计您想要做的事情的具体问题?
编辑
一个个人资料可以有多个从属关系。一个附属机构可以有许多个人资料。
这是一个多对多的关系。
在物理数据库中,您需要一个多对多映射表。
最简单的情况是,它包含两个表中的 PK,而这些列形成了该表的 PK。
所以现在只需向映射表添加列。
Start_date => 个人资料添加该隶属关系的日期
End_Date => 本质上是一个逻辑删除
您还想了解有关关系的其他信息。
想想这些对象 1. 视频 2. 租客 3. 商店
可以描述为租赁的多对多对多。
VideoID、RenterID、StoreID,
关于“出租”,您还想了解什么
-
日期(已签出)
返回日期
截止日期
打折(说是租三送一,这是第四次什么的)
【讨论】:
Stephanie,根据“the_drow”的上述评论,我真的只是想了解从属关系在 Facebook 数据库中的工作方式。我不是试图复制它,只是增加我对隶属关系的理解。但是,由于您更喜欢从“我将如何做”的角度来处理事情,我可以理解,我已经更新了我的问题并会感谢您的反馈(如果您认为我的问题在这一点上是可以回答的:))以上是关于社交网络和网络隶属关系的主要内容,如果未能解决你的问题,请参考以下文章