MySQL 存储关系(家族)树

2023-11-23

我需要用 php 和 MySQL 构建一个家谱。我对缺乏开源可定制 html 家谱构建软件感到非常惊讶,但我离题了。我花了很多时间阅读有关存储 MySQL 有向图和家谱的文章。一切对我来说都很有意义:有一个包含节点(人)的表和一个包含边(关系)的表。

我唯一的问题是我不确定存储不一定相邻的关系的最佳方式,例如兄弟姐妹和祖父母关系。起初,我认为这没什么大不了的,因为我可以无形地强制执行一个父级(每个人都有父级)来解决这些连接。

然而,我还需要能够存储可能没有共同父母的关系,例如浪漫伴侣。我读过的所有内容都表明存在亲子关系,但由于浪漫的伴侣没有共同的父母(希望如此),我不确定如何将其存储在边缘表中。我应该使用不同的表还是什么?如果在同一张表中,我该如何表示?只要我在不熟悉的关系中这样做,我也可能在家人身上这样做。

总结起来就是三个问题:

  • 如何表示横向关系?
  • 如果横向关系有共同的父母,我该如何存储它?这应该是一个family存储其他横向关系的表上的标志?
  • 当孩子距离两个或更多边缘(祖父母)但直接父母不可用时,如何存储父子关系?

感谢任何帮助,如果有人对某些 javascript/html 家谱构建软件有任何建议,那就太好了。


一个想法来自于Geneapro 模式 and 根魔法.

person
------
person_id
name (etc)

life_event_types
----------------
life_event_type_id
life_event_type_description (divorce, marriage, birth, death)

life_events
-----------
life_event_id
life_event_type_id
life_event_description
life_event_date

life_event_roles
----------------
life_event_role_id
life_event_role (mother, father, child)

person_event_role
-----------------
person_id - who
life_event_id - what happened
life_event_role_id - what this person did

所以你可能有一个“出生”类型的生活事件,而 role_id 告诉你谁是父母,谁是孩子。这可以扩展到结婚、死亡、离婚、养父母、代理父母(您可能有 3 或 4 个关系非常复杂的父母)等。

至于存储更远的关系,你可以计算这些。例如,您可以通过获取具有匹配 event_id 的“父亲”角色的人来计算任何人的父亲。然后你就可以得到那个人的父亲,你就得到了原来那个人的祖父。任何地方有人不认识,就用未知的数据创建这个人。

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

MySQL 存储关系(家族)树 的相关文章

  • 将具有值的产品属性添加到 Woocommerce 中的产品

    我正在使用此代码添加自定义属性 attributes array array name gt Size options gt array S L XL XXL position gt 1 visible gt 1 variation gt
  • 如何解决 注意:未定义索引:第 21 行 C:\xampp\htdocs\invmgt\manufactured_goods\change.php 中的 id [重复]

    这个问题在这里已经有答案了 我的 PHP 代码有一个问题 显示 注意 未定义的索引 我确信它非常简单 因为我是初学者 所以我不太清楚到底出了什么问题 所以请帮助我 这是代码
  • 如何将 div (或任何元素)覆盖在表格行 (tr) 上?

    我想在恰好有多个列的表行 tr 标记 上覆盖一个 div 或任何可以使用的元素 我尝试了几种方法 似乎都不起作用 我在下面发布了我当前的代码 我确实得到了一个覆盖 但不是直接覆盖在该行上 我尝试将覆盖顶部设置为 div Bottom css
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • 使用画布元素作为文本区域

    我正在寻找有关如何使用类似于文本区域的画布元素的直接描述 我见过这样的项目Ace http ace ajax org 只是想知道如何像文本区域一样写入该区域 只是纯文本 没有什么花哨的 提前致谢 Ace 曾经是 Mozilla Skywri
  • 从 PHP 生成渐变颜色

    我想知道如何构建一个给出颜色代码和 显示该颜色的渐变 例如 function generate color int colorindex Generate 10 pale colors of this color 请帮我 迈克尔引用的代码相
  • 第一次从按钮提交时,只有单击两次后才会打开模态框

    我有一个模式弹出窗口可以通过单击按钮打开 不幸的是 当第一次在浏览器中提交时 我只能在单击两次后才能看到弹出窗口 但是 一旦弹出窗口打开并关闭 我就可以在下一次尝试中单击一次来打开模式 如果我刷新浏览器也会发生同样的情况 这看起来很奇怪 任
  • 管理面板的 htaccess 重写规则

    我的网络应用程序中有这样的 url 模式 www mysitename com foldername controller method 所有请求的页面首先被重定向到根文件夹上的index php 然后处理请求的页面 但每当我进入管理面板
  • Webpack 和 Angular HTML 图像加载

    我一直对 webpack 和 Angular 感到头疼 这可能有一个简单的答案 但我无法弄清楚 我已经阅读了堆栈溢出中关于这个主题的几乎所有答案 但都无济于事 我有一个像这样的 html 页面 还有其他包含图像的模板 img
  • 检查一个类是否是另一个类的子类

    我想在不创建实例的情况下检查一个类是否是另一个类的子类 我有一个类 它接收类名作为参数 作为验证过程的一部分 我想检查它是否属于特定的类系列 以防止安全问题等 有什么好的方法可以做到这一点吗 is subclass of http php
  • 警告:mysqli_query() 期望参数 1 为 mysqli,在 中给出 null

    我正在尝试构建一个简单的自定义 CMS 但出现错误 警告 mysqli query 期望参数 1 为 MySQLi 在中给出的为 null 为什么我会收到此错误 我的所有代码都已经是 MySQLi 并且我使用两个参数 而不是一个 con m
  • 当表格在 IE 中获得焦点时,表格滚动条会向上跳跃

    问题 我有一个table有包装的div with overflow y auto 一旦table获得焦点 滚动条向上跳 我怎样才能防止这种情况发生 我经历过这种行为IE9 不在 Chrome 中 请注意 我已添加tabindex到桌子上 以
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • 清理 html 字符串中的所有脚本

    HTML5 剪贴板很棒 但我正在寻找一种使其安全的方法 用户正在将文本 html 粘贴到我的网页中 这允许他们粘贴图像 表格等 我正在寻找一种方法 在将粘贴的内容添加到页面之前删除所有脚本 我需要删除
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • window.open 使用 css 样式

    我想设计我的 window open 目前 我的网页上有一些项目由于解析了某个类而打开 然后在新窗口中打开指定的文本 我想更改字体大小 字体和填充等 这是我的 JavaScript 代码
  • 角度 ng-repeat 根据条件添加样式

    我在 div 列表上使用 ng repeat 并且在渲染此 div 的 json 中手动添加项目 我需要定位我在 json 中添加的最后一个 div 它会自动在屏幕上渲染 即 couse 光标所在的位置 其余部分保持在相同位置 但没有给出渲
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set

随机推荐

  • 如何监听“props”的变化

    In the VueJs 2 0 文档我找不到任何可以监听的钩子props变化 VueJs 有这样的钩子吗 onPropsUpdated 或类似的 Update 正如 wostex所建议的 我尝试watch我的财产 但没有任何改变 然后我意
  • 在 Rails 外部生成迁移

    我在 Rails 之外使用 ActiveRecord 我想要一个程序来生成迁移的框架 以及一个收集和维护它们的系统 有人可以提出建议吗 也来看看新品活动记录迁移
  • 两个日期之间的月份函数

    在oracle中 我可以找出使用MONTHS BETWEEN函数之间的月份数 在 postgres 中 我为此使用 extract 函数 例如 像 select extract year from age current date 2012
  • PHP和Mysql中实现哈希表的步骤

    我是编程语言新手 我正在使用 PHP 和 mysql 我收到一个用 php 做哈希表的作业 我需要做的是 存储用户收集的项目 然后显示它 在网上做了一些研究后 我将在实现哈希表时执行以下步骤 如果我错了 请纠正我 设置表格 gt 用户表 u
  • 使用反射覆盖私有方法

    NET 3 5 中是否可以使用 Reflection 重写私有方法 嗯 它需要是virtual可以覆盖它 通过编写从该类继承的动态类型 并且您不能拥有private virtual 这个不成立 你也许可以重写internal virtual
  • 从 .NET 程序集创建对象时,VB6 中出现后期绑定运行时错误

    我有一个 vb6 项目 其中引用了 vb net com 库 当我使用早期绑定时 该项目运行良好 例如 Dim b as object Set b new myComLib testObject 当我使用后期绑定时 例如 Dim b as
  • Mongoose 实例方法未定义

    我使用 Mongoose 定义了一个实例方法来验证代表 用户 RepSchema methods authenticate function password return this encryptPassword password thi
  • 类与 Class.new,模块与 Module.new

    有什么区别class and Class new module and Module new 我知道 Class new Module new创建一个匿名class module 当我们第一次将它分配给常量时 它就变成了常量的名称class
  • 基于 Razor 的视图看不到引用的程序集

    我正在尝试基于另一个程序集中的类创建强类型视图 但无论出于何种原因 我的 Razor 视图似乎看不到我的项目中引用的其他程序集 例如 model MyClasses MyModel 导致 Visual Studio 2010 中出现错误 类
  • Android Studio 中的 OpenCV

    我想在 Android Studio 的应用程序中使用 OpenCV 库 我按照说明发现here但我收到错误 未找到名称为 default 的配置 有什么问题吗 我使用 Android Studio 1 0 和 gradle 2 2 1 以
  • 在 wicked pdf 中 render_to_string 的正确方法是什么?

    这是 wicked pdf 文档中指定的内容 WickedPdf new pdf from string render to string pdf gt pdf file pdf template gt templates pdf html
  • Flutter Redux Navigator GlobalKey.currentState 返回 null

    我正在使用 Redux 开发 Flutter 当用户启动应用程序时 我想要Redux自动地dispatch an action 这一行动将使Navigator依赖地推送不同的路线 这个片段由 Flutter 开发成员提供使用GlobalKe
  • 在 Java 中将多个项目添加到已初始化的数组列表中

    My arraylist可能会根据用户设置以不同的方式填充 因此我已将其初始化为 ArrayList
  • React 路由器参数化路由:语法错误:预期表达式,得到 '<'

    我设置了一个使用参数化路由的 React router
  • Laravel:Auth 中间件中的多重防护

    我有一个 Laravel 应用程序 使用多用户表来扮演不同的角色 我添加了 2 个自定义守卫 如下所示 guards gt consumer gt driver gt session provider gt consumer member
  • 具有部分视图的 AJAX pagedlist

    我不太清楚如何使用 ajax 获取部分视图来呈现分页列表 我最接近的工作是来自的例子在部分视图中使用分页 asp net mvc 我基本上试图创建一个页面 其中包含每个用户的评论列表 其中该页面可以按照与 stackoverflow 用户页
  • 使用系统列区分 UPSERT 中插入和更新的行

    最近有人问了几个关于如何区分 PostgreSQL UPSERT 语句中插入和更新的行的问题 INSERT ON CONFLICT DO UPDATE 这是一个简单的例子 create table t i int primary key x
  • 使用 nightwatch.js 断言 web 元素列表的文本值

    我刚开始使用 nightwatch js 我想获取元素列表并使用给定字符串验证每个元素的文本值 我努力了 function iter elems elems value forEach function element client ele
  • Flutter:带有可选参数的 Equatable props getter

    我有一个扩展 Equatable 并包含可选参数的对象 如果我尝试将该参数添加到 props getter 中 则会收到错误The element type String can t be assigned to the list type
  • MySQL 存储关系(家族)树

    我需要用 php 和 MySQL 构建一个家谱 我对缺乏开源可定制 html 家谱构建软件感到非常惊讶 但我离题了 我花了很多时间阅读有关存储 MySQL 有向图和家谱的文章 一切对我来说都很有意义 有一个包含节点 人 的表和一个包含边 关