sql - 社交网络和网络关系

标签 sql database

我正在为社交网络项目规划数据库,并且 偶然发现这个网址,这是对 Facebook 的(粗略的)逆向工程猜测 架构:

http://www.flickr.com/photos/ikhnaton2/533233247/

我感兴趣的是“从属关系”的概念,我正在尝试 从技术上讲,完全理解它们是如何工作的。我有点困惑的地方是 FacebookGroups”、“FacebookEvent”和“Affiliations”表中的 NetworkID 列(Affiliations 中的 NID)。这些网络从属关系如何互连?

在我自己的项目中,我有一个简单的配置文件表:

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 模式将不胜感激 你的回应。

提前致谢...

最佳答案

首先,它是一个对象模式而不是数据库模式。其次,它并没有展示一切,远未完成。查看 Schools 类(不是表),注意关系、高中 1 和 2 以及学校列表。您是否在 Profile 类中看到保存这些“外键”的属性。

无法准确回答您的问题

第二,为什么要关心 Facebook 是如何做到的?第三范式不是黑魔法吗?没有任何关于《失落与永远》的知识是你不知道的。

您希望从属关系和个人资料之间存在多对多关系吗?或不?您是否试图揭示隶属关系之间的相互依赖性?

为什么不直接向我们询问有关如何设计您想要做的事情的具体问题?

编辑

One profile can have many affiliations. And one affiliation can have many profiles.

这是多对多关系。

在物理数据库中,您需要一个多对多映射表。

最简单的是,它包含两个表中的 PK,并且这些列形成该表的 PK。

现在只需将列添加到映射表即可。

Start_date => 个人资料添加该隶属关系的日期

End_Date => 本质上是逻辑删除

关于这段关系,您还想了解什么。

想想这些物体 1. 视频 2. 承租人 3.存储

可以将多对多对多描述为租赁。

VideoID、RenterID、StoreID、

关于“租赁”您还想了解什么

  1. 日期( checkout )
  2. 返回日期
  3. 截止日期
  4. 折扣(假设是租 3 送 1,这是第四个或其他)

关于sql - 社交网络和网络关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2767034/

相关文章:

mysql - 用另一个表的数据更新 MySQL 大表

mysql - SQL加入一对多关系 - 计算每张图片的票数?

php - if/else 从表中更新值

javascript - 如何从 Angular 相关对象获取数据?

mysql - MySQL VARCHAR 可以存储任何字符吗?

sql - 为什么 Dapper 即使没有异常(exception)也不更新数据到 MS Access?

mysql内连接限制结果

mysql - 以下关系中的候选键是什么

php - 如何为电子商务网站创建独特的产品页面?

ravendb - 用于存储即时消息的关系数据库或文档数据库?也许别的什么?