如何设计一个带有需要引用自身的表的数据库?

2024-03-19

我正在构建一个数据库,但遇到了一个我似乎无法解决的问题。数据库比图中复杂得多,但问题可以归纳为下面的表结构。

问题是每个员工都有一个经理,每个经理都是员工。看起来这些表必须互相引用。但是,当我设置它时,这似乎无法正常工作。

我正在使用cakephp。这种关系类型的名称是什么?这是错误的设计吗?对于这种情况,正确的设计是什么?我希望它尽可能自动地工作。


如果我正确理解这个问题,那么您根本不需要 Managers 表。由于经理是员工,因此没有理由不将经理存储在员工表中。只需将一个字段添加到名为“Employees”的表中manager_id,对于任何给定的行,该行都会引用该员工的经理(这是同一个表中的另一行)。

这称为递归一对一关系,而且很常见。就您而言,它还可以防止您在两个实体之间定义重复的字段(姓名、密码、职位等)。

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

如何设计一个带有需要引用自身的表的数据库? 的相关文章

  • Ruby 模型的数组属性

    是否可以为数组类创建一个属性 我尝试阅读this https stackoverflow com questions 3438827 ruby model with an array as an attribute但我并没有从中得到太多 我
  • 设计基于 Firebase 的可扩展 Feed 模型

    问题 如何设计一个以 Firebase 作为后端 可扩展的社交网络 提要 可能的答案 MVP 解决方案是设计一个feedsroot 子级 每个用户一个 并在每个关注者的提要中附加来自关注用户的任何新帖子 users user1 name b
  • 两种表结构的区别

    我对这两种结构很困惑 这两个表各有什么优缺点 哪一个更好 为什么 TABLE1 反模式 在常见情况下 第二个表是反模式在数据库设计的背景下 而且 更重要的是 它有特定的名称 实体 属性 值 EAV 在某些情况下 使用这种设计是合理的 但这种
  • 使用 MongoDB 有效确定层次结构中记录的所有者

    我正在努力实现以下目标 选择我拥有的所有记录 其中所有权是我创建的对象或我管理的用户创建的对象 其中用户管理可以在管理用户的用户层次结构中 所有权显然很简单 可以通过与所有者相对应的简单 ID 来处理 用户管理的层次结构让我有点难以执行 而
  • 我应该创建代理键而不是复合键吗?

    结构 Actor lt ActorMovie gt Movie ActorMovie ActorID fk MovieId fk gt pk ActorID MovieID 我应该创建一个代理键吗ActorMovie桌子是这样的 Actor
  • 对于依赖于时间的大型数据集,命名表 september_2010 是否可接受且有效?

    我每天需要存储大约 73 200 条记录 由 3 个数据点组成 id 日期和整数 我团队的一些成员建议使用月份作为表名称 september 2010 创建表 而其他人则建议使用一个包含大量数据的表 关于如何处理如此大量的数据有什么建议吗
  • 管理数据库更改的最佳方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 管理数据库更改的最佳方法是什么 无论数据库客户端的语言如何 我都需要有一个解决方案 另外 我希望能够在这些更改中使用特定的数据库功能
  • 每个表都应该有主键吗?

    我正在创建一个数据库表 但没有为其分配逻辑主键 每个表都应该有主键吗 简短回答 yes 长答案 你需要你的桌子可以加入一些东西 如果您希望表聚集 则需要某种主键 如果您的表设计不需要主键 请重新考虑您的设计 很可能您遗漏了某些内容 为什么要
  • 基于 MySQL 中的另一列创建计算列

    我的表中有 2 列 varchar 8 and an int 我想要auto increment the int column当我这样做时 我想将值复制到varchar 8 column 但用 0 填充它直到它达到 8 个字符长 因此例如
  • SQL原型设计:面对使用varchar(N)静默截断数据——有更好的选择吗? (天数据)

    情况 varchar 20 好像默默地截断在 Teradata 和not当遇到长度超过 20 个字符的字符串时扩展或抱怨 这有点令人惊讶 因为我预计列会自动扩展以适应更大的字符串 例如 30 个字符 或者如果更大的字符串会抛出错误遇到字符串
  • Bigtable数据库设计理论

    我非常精通关系数据库设计的理论和实践 我知道什么有效 什么无效 什么是高性能的 什么是可维护的 几乎 当您开始拥有真实数据时 总是有需要调整的地方 看来我找不到关于分布式可扩展数据库的大量知识 例如 Google 的 Bigtable 用于
  • 如何在多个Postgresql数据库之间共享表

    我的 Web 应用程序有多个部署 每个部署都是一个具有唯一 URL 的唯一站点 每个部署都有不同的数据 UI 等 但有非常相似的 Postgresql 数据库结构 带有 PostGIS 这些数据库都位于同一数据库服务器上 我希望来自 1 个
  • 什么时候空值在列中“安全”?

    设计数据库时是否存在允许列为空与 3nf 规范化的一般经验法则 我有一个表 其中的列主要由空值 85 组成 但表大小不超过 10K 记录 不是很大 它主要用于日志记录和记录保存 因此大多数事务将是插入和选择 而不是更新 我试图同时考虑性能和
  • 是使用多个数据库各有一个架构更好,还是一个数据库有多个架构更好? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 After 这条评论 https stackoverflow com questions 1130555 postgresql pitr bac
  • 数据库、表和列命名约定? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我设计数据库时 我总是想知道是否有命名数据库中项目的最佳方法 我经常问自己以下问题 表名应该是复数吗 列名应该是单数吗 我应该为表或列添加前
  • 仅包含主键和外键的数据库表的用途是什么?

    我试图理解一个简单的音乐数据库设计 有些表只包含外键和主键 我不确定如何以及何时使用这些表或向其中插入什么内容 设计如下 Track id primary key title duration live performance true o
  • 创建用于存储高尔夫球成绩的可扩展数据库架构

    我正在尝试设计一个数据库来存储我所有的朋友和我的高尔夫球成绩 您可能知道 高尔夫得分由 18 洞的个人得分组成 我可以想到两种设计模式的方法 创建一个表 每个洞有一列 例如 h1 到 h18 该表具有引用其他表的 FK player id
  • 设计 Cassandra 数据模型的最佳实践是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 以及需要避免哪些陷阱 您有任何交易中断吗 例如 我听说导出 导入 Cassandra 数据非常困难 这让我想知道这是否会妨碍将生产数据
  • 如何在 SQL 中存储目标(例如 RPG Quest)

    今天有人问我他们应该如何将任务目标存储在 SQL 数据库中 在这种情况下 请考虑角色扮演游戏 目标可能包括以下一些内容 发现 地点 杀死 n MOB 类型 获取 对象 的 n 个 实现 技能组 中的 技能 你在角色扮演游戏中获得的所有其他东
  • 具有不同组合的产品和产品包的数据库模型

    您将如何设计数据库来实现此功能 考虑一个场景 我们想要创建一个产品关系 封装 假设我们创建一个产品表 prod id prod name prod fee 1 prepaid A 19 usd 2 prepaid B 29 usd 3 pr

随机推荐

  • Rails 委托方法如何工作?

    阅读下面 jvans 的答案并再查看源代码几次后 我现在明白了 如果有人仍然想知道 Rails delegate 到底是如何工作的 Rails 所做的就是在运行委托方法的文件 类中使用 module eval 创建一个新方法 例如 clas
  • 将 `std::copy()` 与 `std::back_inserter()` 一起使用

    我有两个 A 类和 B 类 都有一个如下所示的成员 class A std vector
  • 在我按照 OWAPS 和 Roslyn Security Guard 的建议应用解决方案后,Veracode 仍然报告操作系统命令注入问题

    我的项目中的当前代码如下所示 Veracode 报告存在操作系统命令注入 filename Regex Replace filename a zA Z0 9 svg ProcessStartInfo startInfo default Pr
  • iOS 9 - Facebook 无法打开已安装的 iOS 应用程序

    iOS 9 和 Facebook 问题 在 iOS9 之前 Facebook 帖子可以通过短 URL 例如 bet365 成功地将用户重定向到已安装的应用程序 现在 在 iOS 9 中 bet365 给出无效链接 从 Safari 可以正常
  • 注册表观察程序 C#

    我是 WMI 的新手 我需要实施注册表值更改事件 http msdn microsoft com en us library aa393042 VS 85 aspx在 C 服务中 我需要一个事件处理程序 每次更改一组注册表值中的任何一个值时
  • C++ 中排列、组合和 PowerSet 的实现 [重复]

    这个问题在这里已经有答案了 我正在寻找使用 C 实现排列 组合和幂集 使用STL 排列 using std next permutation template
  • Char* 字符数组,但 int* 不是整数数组?

    在 C99 中 字符串通常通过使用char 数据类型 因为没有原始的 字符串 数据类型 通过将第一个字符的地址存储在变量中 这有效地创建了一个字符数组 FILE out fopen out txt w char s argv 1 fwrit
  • 为什么执行sonar:sonar时找不到sonar-maven-plugin-3.0.1.jar?

    我们目前正在将 重新激活 声纳纳入我们的持续构建过程中 但我们遇到了一些问题 为了只专注于声纳 我尝试让它在 HelloWorld 项目上工作 但仍然没有成功 repo1 和 repo2 中似乎缺少一个 jar sonar maven pl
  • 启动长时间后台任务

    用户请求我网站上的某些页面 我想做的事 向用户发送快速答案并启动需要很长时间的后台任务 看起来像 public ActionResult index var task new Task Stuff start task async task
  • 删除自定义 ActionBar 中的多余空间

    我的问题涉及使用完全自定义的 ActionBar 视图 因为这对于我的客户希望 ActionBar 的工作方式是必要的 我已经删除了徽标 标题和其他所有可能的内容 但是 ActionBar 的自定义视图不会一直延伸到整个屏幕 我尝试了以下方
  • 单击图像时播放 MP3

    我想在单击网站中的某个图像时播放 MP3 文件 我还想隐藏 MP3 文件 我怎样才能做到这一点 我尝试了这段代码 但没有任何反应
  • BOT/蜘蛛陷阱创意

    我有一个客户 他的域名似乎受到 DDoS 攻击的严重打击 在日志中 看起来很正常的具有随机 IP 的用户代理 但它们翻阅页面的速度太快 不像人类 他们似乎也没有要求任何图像 我似乎找不到任何模式 我怀疑这是一群 Windows 僵尸 客户过
  • 更快地重新连接 CBPeripheral

    我正在开发一个应用程序 它可以多次连接和断开不同的蓝牙低功耗外围设备 经过在互联网上的大量研究 我没有找到一种方法来存储已经发现的服务和特征 以便我可以更快地重新连接 目前 我正在每次重新连接后发现所需的服务和特征 这花费了我 1 5 到
  • 打字稿错误 get 调用需要 0 个类型参数

    我收到打字稿错误预期 0 类型参数 但返回 get 调用的行却得到 1 我的通话有什么问题吗 public get params SummaryParams Observable
  • “OutOfMemoryException”读取 20mb XLSX 文件

    我在用着NPOI https www nuget org packages NPOI 来处理Excel文件 这是我读取文件的方式 using FileStream stream File OpenRead excelFilePath IWo
  • fill-rule="evenodd" 如何在星形 SVG 上工作

    当我试图理解时 我看到了以下 svg 形状fill rule in SVG div class contain demo div
  • 该浮点数小数部分的前 32 位是多少?

    我正在看以下内容SHA256 伪代码 http en wikipedia org wiki SHA 2 SHA 256 28a SHA 2 variant 29 pseudocode在维基百科上 具体来说 我正在查看以下部分 Initial
  • 打印文本而不是 C 枚举中的值

    int main enum Days Sunday Monday Tuesday Wednesday Thursday Friday Saturday Days TheDay int j 0 printf Please enter the
  • EF 映射对象的不兼容数据读取器异常

    我正在使用实体框架并更新了表及其存储过程 但在调用存储过程时出现以下错误 数据读取器与指定的不兼容 FormValueModel Valuation 类型的成员 ValuationId 确实 数据读取器中没有同名的相应列 Valuation
  • 如何设计一个带有需要引用自身的表的数据库?

    我正在构建一个数据库 但遇到了一个我似乎无法解决的问题 数据库比图中复杂得多 但问题可以归纳为下面的表结构 问题是每个员工都有一个经理 每个经理都是员工 看起来这些表必须互相引用 但是 当我设置它时 这似乎无法正常工作 我正在使用cakep