Facebook数据库设计?

2023-12-12

我一直想知道Facebook是如何设计好友用户关系的。

我认为用户表是这样的:

user_email PK
user_id PK
password 

我用用户的数据(性别,年龄等通过用户电子邮件连接我假设)计算表格。

它如何将所有朋友连接到该用户?

像这样的东西吗?

user_id
friend_id_1
friend_id_2
friend_id_3
friend_id_N 

可能不会。因为用户数量未知并且会扩大。


保留一个好友表,其中保存了 UserID,然后保存了好友的 UserID(我们将其称为 FriendID)。这两列都将是返回 Users 表的外键。

有点有用的例子:

Table Name: User
Columns:
    UserID PK
    EmailAddress
    Password
    Gender
    DOB
    Location

TableName: Friends
Columns:
    UserID PK FK
    FriendID PK FK
    (This table features a composite primary key made up of the two foreign 
     keys, both pointing back to the user table. One ID will point to the
     logged in user, the other ID will point to the individual friend
     of that user)

用法示例:

Table User
--------------
UserID EmailAddress Password Gender DOB      Location
------------------------------------------------------
1      [email protected]  bobbie   M      1/1/2009 New York City
2      [email protected]  jonathan M      2/2/2008 Los Angeles
3      [email protected]  joseph   M      1/2/2007 Pittsburgh

Table Friends
---------------
UserID FriendID
----------------
1      2
1      3
2      3

这将表明 Bob 是 Jon 和 Joe 的朋友,并且 Jon 也是 Joe 的朋友。在此示例中,我们假设友谊始终是两种方式,因此您不需要表中的行(例如 (2,1) 或 (3,2)),因为它们已经在另一个方向上表示。例如,友谊或其他关系不是明确的双向关系,您还需要这些行来指示双向关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook数据库设计? 的相关文章

  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • SQL查询获取列的精度值

    我需要一个 SQL 查询来获取某些列的精度值 我主要关心十进制类型列 并且我需要相同的精度值 我意识到在某些版本和数据库服务器供应商中可以这样做 如果您能列出其中的一些 那就太好了 对于 SQL 服务器 select precision f
  • Oracle数据库中的自增主键

    我想在 SQL Server 的列中实现标识或自动递增值 CREATE TABLE RollingStock Id NUMBER IDENTITY 1 1 Name Varchar2 80 NOT NULL 如何才能做到这一点 正如 Orb
  • 大型数据集的报告工具/查看器

    我有一个数据处理系统 可以根据其处理的数据生成非常大的报告 我所说的 大 是指该系统的 小 执行在转储到 CSV 文件中时会产生大约 30 MB 的报告数据 而大数据集大约为 130 150 MB 我确信有人有更大的想法 大 但这不是重点
  • SSRS报告不显示数据

    我刚刚创建了 SQL Server 2005 SSRS 报告 数据未显示在预览窗格中 数据集是根据字符串参数从存储过程正确填充的 我可以在数据窗格中执行它 在预览窗格中运行报表时 会显示正确的行数 但单元格的内容不包含任何数据 源数据集基于
  • 数据库设计:循环依赖

    想象一下以下数据库 表 companies 包含字段 id name 和旗舰产品 ID 表 products 有字段 id name 和 company id 一家公司必须有一款旗舰产品 1 1关系 所有产品都有一个公司 1 N关系 当使用
  • SQL CASE 语句

    我有以下查询 我想将它们放入 sql CASE 语句中 这样我只有一个查询 但我不知道该怎么做 有人可以帮助我吗 IF SELECT EtlLoadId FROM ssislogs audit processcontrol WHERE Su
  • 查找缺失值

    我有一个表 有 2 个重要的列 DocEntry WebId 样本数据就像 DocEntry WebId 1 S001 2 S002 3 S003 4 S005 现在我们可以注意到 在 WebId 列中 S004 丢失了 我们如何通过查询找
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • 有没有办法将应用程序上下文与非 Sybase DB 服务器中的数据库连接进行通信(类似于 Sybase 中的 set_appcontext)?

    Sybase 有一种让应用程序进行通信的方法 上下文 数据 http manuals sybase com onlinebooks group as asg1250e sag Generic BookTextView 38861 hf 0
  • 保存用户的身高和体重

    我应该如何将用户的身高和体重存储在MySQL数据库中 以便我可以使用这些信息来查找特定身高或体重内的用户 另外 我需要能够以英制或公制显示此信息 我的想法是存储以厘米为单位的身高和以公斤为单位的体重信息 我更喜欢公制而不是英制 我什至可以让
  • MySQL 命令输出在命令行客户端中太宽[重复]

    这个问题在这里已经有答案了 我在用mysql终端模拟器中的命令行客户端lxterminal在Ubuntu中 当我运行以下命令时 mysql gt select from routines where routine name simplep
  • facebook accesstoken 存储在共享首选项中 (Android)

    我正在尝试存储来自 Facebook 的访问令牌以供以后使用 为此 我想使用 SharedPreferences 因此 我得到了字符串部分 令牌 和过期日期 如示例所示 final String MY PREFS NAME MyPrefsF
  • 将表与同一个表的前一条记录连接起来

    我有一个包含历史记录的表 由主表中的多个触发器发布到那里 我想在历史表上创建一个 select 语句 其中每个记录都由其先前的记录 由相同的 LineID 和最高的 ActionDate 标识 连接 这样我就可以提取这两者之间的差异 我尝试
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • 如何编辑表以启用级联删除?

    我有一个代表用户的表 当用户被删除时我得到 DELETE 语句与 REFERENCE 约束冲突 显然 CASCADE DELETE在SQL Server中并不像我想象的那么容易 需要将选项添加到表中 问题是 我不知道如何添加CASCADE
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • 数据库约束与应用程序级验证[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在研究这个主题时 我发现了这篇文章 您是否应该在数据库级别和应用程序级别强制实施约束 https stackoverflow com quest
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable

随机推荐

  • 如何创建winform登录对话框并保持循环

    创建一个登录表单 如果凭据正确 该登录表单将进入主表单 这是基本的伪代码 ShowLoginForm if DialogResult OK CheckCredentials if credentials VALID ShowMainForm
  • CSV 文件未在 WordPress 中上传

    我无法在 WordPress 网站上上传 CSV 文件 错误 抱歉 出于安全原因不允许使用此文件类型 检查下图 网站链接 我相信 错误中清楚地提到了所有内容 并且您也强调了这一点 出于安全原因不允许使用此文件类型 要解决此问题 请在 wp
  • 有什么方法可以跟踪 proc 宏中发生错误的位置吗?

    我正在实现一个 proc 宏 并在另一个板条箱中进行测试 当我编译客户端包时 proc 宏的调用站点抛出错误 error proc macro panicked gt foo src main rs 17 1 该错误发生在 proc 宏实现
  • 基于上下文的实体框架的不同连接字符串

    我有一个使用实体框架的 Web 表单应用程序 该应用程序部署在开发盒 我的本地计算机和生产盒上 其中每个都有不同的连接字符串 处理这个问题的最佳方法是什么 我使用 TFS 构建服务器部署到开发环境 并将构建结果压缩并手动将其复制到生产环境
  • 如何在 MapView 上创建动态编号的 Pin 指针?

    我想在我的设备上显示一些位置MapView 这些位置将显示具有数字 1 2 3 等的图钉 类似于 Google 地图结果 但它是 A B C 我认为拥有所有数字的引脚是不可行的 有什么方法可以让我创建一个带有 pin 背景的布局TextVi
  • python multiprocess.Pool 在标准输出中按顺序显示结果

    在 multiprocessing Pool 中 我试图以相同的顺序显示我的打印结果 from multiprocessing import Pool import time def func arg time sleep 0 001 pr
  • 尝试提供 Meteor 应用程序时出现“babel-runtime”错误

    我最近开始使用 Meteor 和 React 我跟着tutorial在 Meteor 网站上没有问题 然后我尝试创建另一个项目 尝试遵循另一个项目tutorial 对于旧版本的 Meteor 在这个过程中 Meteor 开始抛出一些难以理解
  • 如何使用项目反应器实现调用重复,直到满足特定条件?

    有没有什么方法可以使用项目反应器来做这样的事情 fetchSystemUpdates return Mono
  • 过滤 IQueryable 子列表

    使用实体框架 但这可能无关紧要 如果我有一个 Iqueryable 如何过 滤子列表并使其保持 IQueryable 这样它就不会到达数据库 如果我有 10 个项目 每个项目有 3 个子项目 如何过滤它以便返回所有 10 个项目 并且它们的
  • IE9 中简单模式的问题

    昨天我推出了一个新网站 在将文件上传到服务器之前 我在 IE8 Firefox Safari 和 Chrome 中测试了该网站 一切似乎都正常 但我刚刚安装了IE9简单模态此浏览器中不显示框 我正在使用以下 JavaScript 代码 jQ
  • 用于过滤 Google 表格中具有最高值的唯一行的公式

    我有一张工作表 可以每天多次自动从多个帐户中提取社交指标 因此我经常有同一个帖子的多行数据 如何过滤新工作表中的行 以便每个唯一帖子仅保留展示次数最高 G 列 的帖子 ID F 列 我想要的过滤结果 我已经探索了查询 不是我的强项 和过滤公
  • ASP.NET MVC 中的 Cookie 管理

    我想在 ASP net MVC 中向 cookie 添加一些内容 处理 cookie 或更多 cookie 中所有内容的最佳方法是什么 在asp net mvc中处理cookie有什么好方法吗 这是一个例子 public class Hom
  • 日期范围 Google 图表工具

    我正在尝试使用 Google Charts 在折线图上显示数据 数据显示正常 但我想设置要显示的日期范围 数据以 JSON 文字格式从数据库发送 cols label Week type date label Speed type numb
  • GWT Cell树,如何使用?

    有人可以解释一下如何使用 GWT 单元树吗 我正在尝试谷歌搜索 但没有找到任何有价值的教程 Thanks Try 谷歌示例 1 包括 onModuleLoad 方法
  • 在 Windows XP 下运行 Python 二进制文件

    我将 PySide 应用程序编译为 x32 和 x64 模式 并且它可以在 Windows 7 下工作 但是我发现该应用程序无法在Windows XP下启动 我应该在规范文件中另外使用一些技巧吗 当前的 PyInstaller 脚本在 ap
  • 如何在Excel中使用VBA截断数字而不是四舍五入?

    我需要创建一个表 操作员可以在其中输入数字 这是受保护的工作表 因此操作员无法更改任何内容 他们只能在特定单元格中输入数字 适用于 Mac 的 Microsoft 365 我需要 Excel 显示 2 位小数而不进行四舍五入 例如 对于 3
  • 涉及填充位置的广播问题

    介绍 我有一个函数func这是可矢量化的 我使用它对其进行矢量化np frompyfunc 而不是使用嵌套for循环 我只想调用它一次 因此我需要用以下内容填充输入np newaxis s 我的目标是摆脱两个嵌套for循环并使用numpy
  • cellForRowAtIndexPath:尝试访问数组 objectAtIndex:indexPath.row 时崩溃

    我正在将数据加载到UITableView 从一个习惯UITableViewCell 自己的班级和笔尖 它工作得很好 直到我尝试访问objectAtIndex indexPath row对于一些数组 我先发布我的代码 这样你可能会更容易理解我
  • 在 vb.net 中填充下拉列表

    我有一个从 SQL Server 数据库填充的下拉列表 填充列表不是问题 但有谁知道如何填充列表项的值部分
  • Facebook数据库设计?

    我一直想知道Facebook是如何设计好友用户关系的 我认为用户表是这样的 user email PK user id PK password 我用用户的数据 性别 年龄等通过用户电子邮件连接我假设 计算表格 它如何将所有朋友连接到该用户