Redes sociais e afiliações de rede
Estou no processo de planejar um banco de dados para um projeto de rede social e me deparei com esse URL, que é um palpite (bruto) de engenharia reversa no esquema do facebook:
http://www.flickr.com/photos/ikhnaton2/533233247/
O que me interessa é a noção de "Afiliações" e estou tentando entender completamente como elas funcionam, tecnicamente falando. Onde estou um pouco confuso é a coluna NetworkID nas tabelas FacebookGroups "," FacebookEvent "e" Affiliations "(NID em Affiliations). Como essas afiliações de rede são interconectadas?
No meu próprio projeto, tenho uma tabela de perfil simples:
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]
Um perfil pode ter muitas afiliações. E uma afiliação pode ter muitos perfis. E gostaria de projetá-lo de tal maneira que as relações entre afiliações me digam algo sobre os perfis associados. De fato, com base nas afiliações que os usuários selecionam, eu gostaria de saber como deduzir o máximo de coisas possível sobre essa pessoa.
Minha pergunta é, como devo projetar minhas tabelas de afiliação de rede e como elas operam de acordo com meus requisitos acima? Um esquema SQL aproximado seria apreciado em sua resposta.
Desde já, obrigado...