好友列表:关系数据库表设计

2024-02-24

所以,好友列表的现代概念是:
假设我们有一个名为 Person 的表。现在,该 Person 需要有许多好友(其中每个好友也属于 person 类)。构建关系最明显的方法是通过连接表。 IE。

buddyID   person1_id   person2_id
0         1            2
1         3            6

但是,当用户想要查看他们的好友列表时,程序必须检查“person1_id”和“person2_id”列才能找到他们的所有好友。

这是实现此类表的适当方法吗?或者添加记录两次会更好吗?即

buddyID   person1_id   person2_id
0         1            2
1         2            1

因此只需搜索一列。

提前致谢。


这里有几种可能的情况。

首先你需要确定好友关系是否可以是单向的。如果 B 不是 A 的好友,A 可以成为 B 的好友吗?我认为不会,但值得明确。

常识表明您查询的内容多于更新关系的内容。因此,请为此优化您的数据。创建好友关系时,创建两条记录:A 到 B 和 B 到 A。这将使查询变得简单。所以是的,正如您已经考虑过的那样,使用这两条记录。

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

好友列表:关系数据库表设计 的相关文章

  • 确定自上次访问 SQL Server 以来的行更改

    我们有一个多用户系统 用户将数据保存到中央 SQL Server 2005 数据库中 我们遇到了一个问题 即一个用户刷新数据库中的更改 而另一个用户保存新数据 我们当前收集更改的方式是每个表上都有一个时间戳列 该列在每行插入 更新时都会填充
  • drupal 7 将实际内容存储在数据库中的哪里?

    我打开了 drupal 7 的数据库并在表中查找node node revisions and node types并且找不到 drupal 存储实际的位置body节点 内容 的 有人有线索吗 哦 我刚刚找到了 在 D7 中 他们实现了字段
  • 使用 data.table 左连接

    假设我有两个数据表 s dataA A B 1 1 12 2 2 13 3 3 14 4 4 15 dataB A B 1 2 13 2 3 14 我有以下代码 merge test merge dataA dataB by A all d
  • MySQL 和 MariaDB 数据库有什么区别?

    我已经使用 XAMPP 很长时间了 很惊讶 XAMPP 已经从 MySQL 切换到了 MariaDB https www apachefriends org index html https www apachefriends org in
  • 非等值连接 - 比较 R 中的两个数据帧

    我想根据第二个数据框中存在的值过滤数据框 例如 匹配第一个数据帧中 BP 列中高于 start pos 列的第一个值且小于 end pos 列或仅小于第二个数据中的 end pos 的行框架 我需要对第二个数据框中的所有值重复此过程 目前
  • 数据库设计1对1关系

    我的数据库设计不正确 我应该在开发过程中解决这个问题吗 假定 user 表与 userprofile 表具有 1 1 关系 然而 实际设计中 用户 表与 用户配置文件 表具有 1 关系 一切正常 但无论如何应该修复它吗 做一件事 User
  • Rails 中多表单复选框的数据库结构

    我正在开发一个 Rails 应用程序 允许用户创建时间表 这样做时 他们应该能够选择事件发生在一周中的哪几天 我计划在表单中执行此操作的方式是每个工作日旁边有一个复选框 如下所示 etc 然而 我发现这可能不是处理这个问题的非常有效的方法
  • 带外键或不带外键的引用有什么区别

    关于SQLite 带外键或不带外键的引用有什么区别 这有什么区别 CREATE TABLE players set id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL player id INTEGE
  • PostgreSQL 连接使用generate_series 对表进行非规范化

    我有这张表 CREATE TABLE mytable name text count integer INSERT INTO mytable VALUES john 4 mark 2 albert 3 我想以这种方式 去规范化 行 SELE
  • “多对二”关系

    我想知道 多对二 关系 孩子可以与两个父母中的任何一个有联系 但不能与两个父母都有联系 有什么办法可以加强这一点吗 另外我想防止孩子重复输入 现实世界的例子是电话号码 用户和公司 一个公司可以有很多电话号码 一个用户可以有很多电话号码 但理
  • 与谷歌数据流的复杂连接

    我是一个新手 试图了解我们如何将批量 ETL 流程重写到 Google Dataflow 中 我已经阅读了一些文档 运行了一些示例 我建议新的 ETL 流程将由业务事件 即源 PCollection 驱动 这些将触发该特定业务实体的 ETL
  • SQLite:具有四个表的完全外连接

    编辑 可以找到这个问题的扩展here https stackoverflow com questions 47667304 sqlite full outer join with four tables with 30 columns 我想
  • MySQL - 基于日期加入

    是否可以根据同一日期连接两个表 而不考虑时间 就像是 从预约左侧加入销售 约会 日期 销售 日期 唯一的问题是它是一个日期时间字段 所以我想确保它只查看日期并忽略时间 你可以这样做 FROM appointments LEFT JOIN s
  • 如何将商品与定价数据正确关联,同时考虑价格变化历史记录

    事实上 所有 POS 系统都会在销售时将商品的价格直接记录到交易表中 因为该价格可能会在以后发生变化 但其销售价格应保持不变 我想知道如何设置保留价格变化历史记录的定价表 以便您可以根据商品及其销售时间将交易与该表关联起来 以获得正确的价格
  • 一个大连接或多个查询哪个提供更好的性能?

    我有一个名为订单的表 订单上的一列是 customer id我有一个名为 customers 的表 有 10 个字段 给定两个选项 如果我想构建订单对象数组并嵌入订单对象中的是客户对象 我有两个选择 选项1 A 首先查询订单表 b 循环遍历
  • 如何连接行并添加分隔符?

    命令J连接线 命令gJ连接线删除空格 是否还有连接行的命令 在行之间添加分隔符 Example Input text other text more text text 我想做的事 选择这4行 如果开始和 或 EOL 处有空格 请将其删除
  • 修订:算法和数据结构

    我需要通过修订来构建和处理数据的想法 例如 我有一个对象数据库 例如汽车 每个对象都有许多属性 这些属性可以是任意的 因此没有一个固定的模式来描述这些对象 这些对象可能保存为键值对 现在我需要更改对象的属性 我不想完全重写它 我希望能够返回
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 仅使用扩展方法在 Linq 中进行漂亮、干净的交叉连接 [重复]

    这个问题在这里已经有答案了 可能的重复 使用扩展方法表示的嵌套 from LINQ 查询 https stackoverflow com questions 9115675 nested from linq query expressed
  • 如何跟踪用户在 X 天内每天访问该网站?

    Stack Overflow 上有一个新徽章 这 woot https stackoverflow com badges 71 woot enthusiast 徽章将授予连续 30 天内每天访问该网站的用户 如何实现这样的功能 如何以最简单

随机推荐

  • 链接错误:多个定义[重复]

    这个问题在这里已经有答案了 我正在尝试编译我的项目并获取multiple definition of function error CMakeFiles OasisTest dir Tests Oasis test cpp o In fun
  • 如何在工作线程中重用主线程创建的OMP线程池?

    在我的 C 应用程序开始附近 我的主线程使用 OMP 并行化多个 for 循环 在第一个并行化 for 循环之后 我发现所使用的线程在应用程序的持续时间内仍然存在 并且可以使用以下命令 在 CentOS 7 中工作 重用于从主线程执行的后续
  • p:selectOneMenu 下拉部分滚动并且不停留在原位

    我正在使用 PrimeFaces 5 0 5 和 GlassFish 服务器 3 1 2 2 我在 a 中添加了一个 selectonemenu
  • 为什么从 ASP.NET 页面下载 .docx 文件时会损坏?

    我有以下代码用于将页面附件带给用户 private void GetFile string package string filename var stream new MemoryStream try using ZipFile zip
  • 使用自定义比较器在 PHP 数组中搜索

    这可能是无望的 但仍然有办法用我自己的比较器函数搜索数组中的元素吗 在 PHP 中实现它会导致搜索速度变慢 所以也许存在更好的解决方案 我实际上想要从搜索中得到的是a 了解该元素是否存在于数组中 b 最好获取找到的元素的键 索引 例如 ar
  • C17 希望我如何初始化我的原子?

    C17 标准已弃用ATOMIC VAR INIT from stdatomic h 这意味着它仍然支持它 但宁愿不使用它 在 C17 中初始化原子的正确且未弃用的方法是什么 与非原子类型相同 atomic int foo 42 或者新的东西
  • 如何在Firebase Analytics中为Flutter Web设置用户属性?

    我在用这个包 https github com FirebaseExtended firebase dart 版本7 2 1 在一些flutter web项目中 我需要在firebase分析中设置一些用户属性 顺便说一句 感谢这个答案 ht
  • Android:系统资源和应用程序资源之间的区别? [复制]

    这个问题在这里已经有答案了 来自 Android 文档Resources class public static Resources getSystem 添加到 API 级别 1 返回一个全局共享资源对象 仅提供对系统资源的访问 无应用程序
  • 表格中的额外宽度如何在各列之间划分?

    今天我想知道 HTML 表格中的多余空间 超出内容所请求的范围 是如何在各列之间分割的 令人惊讶的是 即使经过大量谷歌搜索 我也找不到答案 所以我很快就模拟了最简单的页面并对其进行了测试 table width 500 tr td div
  • ILSpy,如何解决依赖关系?

    我想用 ILSpy 反汇编整个 NET 程序集 我使用这段代码作为基础 http skysigal xact solutions com Blog tabid 427 entryid 2488 Default aspx http skysi
  • 如何使用需要从命令提示符/批处理文件引用的参数来调用 PowerShell Start-Process 命令?

    我在尝试执行一个命令时收到此错误PowerShell 我在尝试着exec这个命令 powershell exe Start Process FilePath C Windows System32 attrib h s CD Verb run
  • 为什么我的终端不能正确输出 unicode 字符?

    例如 我的终端是这样做的 echo e xE2 x98 xA0 我希望它能做到这一点 echo e xE2 x98 xA0 为什么 如何让我的终端输出正确的 unicode 符号 我在 Arch Linux 上使用 Gnome 3 的终端
  • 纠正使用 jQuery 动画文本不透明度时的 IE Cleartype/Filter 问题

    大家好 我遇到了一个 IE 问题 这似乎是一个众所周知 常见的错误 我有一个用 jQuery 构建的图像幻灯片 可以在其他浏览器中完美运行 然而 在 IE 中 我遇到了一个问题 即幻灯片运行一次后文本就会消除锯齿 也就是说 如果幻灯片中有三
  • Chrome 扩展:chrome.storage 未定义

    我将以下代码添加到我的其他工作的 Google Chrome 扩展中 var storage chrome storage console log storage is storage var bookmarks chrome bookma
  • 使用 awk 和变量正则表达式提取两个模式之间的行

    我正在寻找一种方法来使用 awk 提取两个模式之间的行 变量 每个部分结束于下一个部分的开始处 示例文件 SECTION 1 info 1 info 2 info 3 SECTION 2 info 4 info 5 info 6 SOMET
  • 从 .gitmodules 恢复 git 子模块

    我有一个文件夹 它是一个 git 存储库 它包含一些文件和 gitmodules 文件 现在 当我这样做时git init进而git submodule init 后面的命令输出什么也没有 如何帮助 git 查看 gitmodules 文件
  • sympy 将分数与变量分开

    使用 sympy 如何将分数与变量分开 Mul Fraction 3 5 Pow K Integer 2 2 3 K 5 to 3 2 K 5 我知道这个简化版本还不错 但是当我有很大的方程时 它会变得混乱 我不太熟悉漂亮的打印或 LaTe
  • Maven 过滤

    我正在使用 Maven 3 x 在 Hudson 中构建 Android 应用程序 作为构建的一部分 我使用过滤 配置文件对 strings xml 文件进行文本替换 因此 在 strings xml 中 我将包含以下条目
  • 3D 绘图中 y 轴和 z 轴的交换位置

    默认情况下 在 3D 中绘制一组点 或其他内容 matplotlib 找到z垂直轴 如下所示 代码如下 我需要交换z and y轴 使得y轴垂直显示 我环顾四周但找不到办法告诉matplotlib去做这个 Add 我不想诉诸于交换数据和标签
  • 好友列表:关系数据库表设计

    所以 好友列表的现代概念是 假设我们有一个名为 Person 的表 现在 该 Person 需要有许多好友 其中每个好友也属于 person 类 构建关系最明显的方法是通过连接表 IE buddyID person1 id person2