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

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 连接

    显式内连接与隐式内连接之间有效率差异吗 例如 SELECT FROM table a INNER JOIN table b ON a id b id vs SELECT a b FROM table a table b WHERE a id
  • 在数据库中建模抽象基类和子类

    我有4个子类 Video Image Note and Form 每一项都包含不同类型的数据 例如 Image类包含磁盘上图像文件的路径和图像属性 以及Form类包含表单字段值 然而 每个项目之间的共同元素是 GPS 坐标和航向 因此我有以
  • 在 SQL Server 2005 IMAGE 列中存储 20 Meg 文件的最有效方法

    我们将文档存储在 SQL Server 2005 数据库表中 列格式为 Image 每次我尝试存储大于 1 Meg 的 PDF 文件时 它都会以某种方式损坏 NET 中是否有任何特别有效的方法来序列化大文件 10megs 并将其存储到数据库
  • Django 选择性转储数据

    是否可以有选择地过滤哪些记录Django的dumpdata管理命令输出 我有几个模型 每个模型都有数百万行 我只想转储一个模型中符合特定条件的记录 以及引用任何这些记录的所有外键链接记录 考虑这个用例 假设我有一个生产数据库 其中我的用户模
  • 什么是“数据库实体”以及哪些类型的 DBMS 项目被视为实体? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MySQL 左连接 WHERE table2.field = "X"

    我有以下表格 pages Field Type Null Key Default Extra page id int 11 NO PRI NULL auto increment type varchar 20 NO NULL
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • 根据最大值连接表

    这是我正在谈论的内容的一个简化示例 Table students exam results id name id student id score date 1 Jim 1 1 73 8 1 09 2 Joe 2 1 67 9 2 09 3
  • 当两个表非常相似时,什么时候应该将它们合并?

    我有事件和照片 然后对两者进行评论 现在 我有两个评论表 一个用于与事件相关的评论 另一个用于照片评论 架构与此类似 CREATE TABLE EventComments CommentId int EventId int Comment
  • 为什么要为字符变化类型指定长度

    参考 Postgres 文档字符类型 http www postgresql org docs current static datatype character html 我不清楚指定字符变化 varchar 类型的长度 假设 字符串的长
  • 数据库分区 - 水平与垂直 - 规范化和行拆分之间的区别?

    我试图理解不同的概念数据库分区这就是我的理解 水平分区 分片 将表拆分为不同的表 其中将包含初始表中的行的子集 如果按大陆拆分用户表 我见过很多这样的示例 例如北美的子表 欧洲的另一个子表 ETC 每个分区位于不同的物理位置 理解 机器 据
  • 列太多的表的缺点

    我有一些数据需要放入 PostgreSQL 数据库中 这些数据与学校有关 所以有很多与学校相关的属性 大部分是小整数 浮点数或小文本 所有数据每年都会发生变化 所以我正在创建一个名为的实体YearlyData并将属性放在那里 但问题是 属性
  • 确定自上次访问 SQL Server 以来的行更改

    我们有一个多用户系统 用户将数据保存到中央 SQL Server 2005 数据库中 我们遇到了一个问题 即一个用户刷新数据库中的更改 而另一个用户保存新数据 我们当前收集更改的方式是每个表上都有一个时间戳列 该列在每行插入 更新时都会填充
  • 连接查询或子查询

    开发人员何时使用联接而不是子查询是否有经验规则 或者它们是否相同 第一个原则是 准确地陈述查询 第二个原则是 简单明了地陈述查询 这是你通常做出选择的地方 第三个是 陈述查询 以便它能够有效地处理 如果它是一个具有良好查询处理器的数据库管理
  • 为表多次指定了 xxx 列

    我正在尝试将 db2 简单查询调整为 SQL SERVER 该查询在 db2 上运行良好 select from pb console users u join select from pb console users user role
  • VIEW for 表结合 UNION ALL 的 MySQL 性能

    假设我有 2 张桌子MySQL create table persons id bigint unsigned not null auto increment first name varchar 64 surname varchar 64
  • 正确显示mySQL一对多查询结果

    我有两张桌子 TRIPS tripID clientID and LEGS legID depart arrive tripID TRIPS 与 LEGS 具有一对多关系 因为有多个legID s per tripID 我需要以以下格式显示
  • 如何在数据库中保存未来(!)日期

    这个问题专门涉及未来的日期和时间 对于过去的值 UTC 无疑是首选 我想知道是否有人对拯救生命的 最佳 方法有建议futureMySQL 数据库中的日期和时间 或者就此而言一般来说 特别是在该列可以保存不同时区时间的情况下 考虑到时区规则可
  • 在 pandas 中按范围加入/合并的最佳方式

    我经常使用 pandas 通过范围条件进行合并 连接 例如 如果有 2 个数据框 A A id A 值 B B id B 低 B 高 B 名称 它们很大并且大小大致相同 假设每个有 2M 条记录 我想在 A 和 B 之间进行内部联接 因此
  • 如何处理长期运行系统中旧的、过时的数据库数据?

    程序员有哪些可能性来处理很少使用但不能简单删除的数据 因为至少报告仍然需要它 我想到的一些例子 大学老年时期停止的资助类型 未使用的货币 例如意大利里拉 消失国家的名称 例如奥匈帝国 苏联 一些部分解决方案是活动标志 活动周期 可视化优先级

随机推荐

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

    这个问题在这里已经有答案了 我正在尝试编译我的项目并获取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