在数据库中对用户定义的层次关系进行建模的最佳方法是什么?

2024-04-15

本质上,我希望用户能够定义分层模型,但随后我需要允许用户在其定义的模型中存储数据。这有道理吗?因此,用户将能够创建新的“单元类型”,以分层方式进行组织,并决​​定如何组织这些类型的单元。一个简单的例子:在我假设的界面中,用户创建了三种单位类型:树干、树枝和树叶。然后用户定义它们之间的关系。叶子可以存在于层次结构中的任何点,分支必须有一个主干作为父级。然后,用户可以创建这些单元类型(作为单元)的实例,并可以根据模型中定义的规则组织它们......有没有在数据库中执行此操作的好方法?


这是一个非常广泛的问题,但这可能会为您指明正确的方向。请注意,您只能将关系规则存储在数据库中。强制执行它们将取决于您的客户端代码。试穿这个尺寸..

unit:
    unit id,
    name,

unit relationship:
    unit id,
    foreign unit id

然后,您可以按以下方式使用单位关系表。

unit id与其所描述的单位相关。foreign unit id应该可以为空。

A unit没有关系的记录只能存在于层次结构的根部。 Aunit with a null foreign unit id可以有任何其他unit作为其父级。否则,一个unit必须有另一个unit作为其父级,并且其类型必须是其关系记录中定义的类型之一。

至于存储实例本身,这应该很简单。

instance:
    instance id,
    unit id,
    parent instance_id

我确信您还需要其他字段(例如名称),但我假设您已经明白了。

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

在数据库中对用户定义的层次关系进行建模的最佳方法是什么? 的相关文章

  • 共享主键

    我猜这是一个半常见的问题 但我在过去的问题列表中找不到它 我有一组需要共享主键索引的产品表 假设如下 product1 table id name category other fields product2 table id name c
  • 在数据库中存储有序列表的最佳方法?

    在数据库中存储 有序列表 以便轻松更新它们 添加 删除和更改条目顺序 的最佳方法是什么 考虑一个数据库 其中有一个用户和电影表 每个用户都有一个最喜欢的电影列表 由于许多用户可能喜欢同一部电影 因此我将用户和电影分开表 并使用第三个表 us
  • EF4 CTP5 自引用分层实体映射

    好吧 这应该很容易 但我一直在抓狂 这是我的 POCO 与机器零件有关 因此零件可以包含在父零件中 public class Part public int ID get set public string Name get set pub
  • 在数据库中对用户定义的层次关系进行建模的最佳方法是什么?

    本质上 我希望用户能够定义分层模型 但随后我需要允许用户在其定义的模型中存储数据 这有道理吗 因此 用户将能够创建新的 单元类型 以分层方式进行组织 并决 定如何组织这些类型的单元 一个简单的例子 在我假设的界面中 用户创建了三种单位类型
  • ERM:三元关系中的基数

    如何读取和 或指定实体关系模型 陈表示法 三元关系中的基数 最小 最大 例如 一位领导与他的相关员工一起考察了多项资格认证 现在 我想知道如何在最小 最大 表示法中指定基数 这是给定基数的另一个示例 我想知道如何阅读它 三元关系可以解读为
  • 带有不使用索引的查询变量的 SELECT

    我正在尝试 出于兴趣 通过使用局部变量的递归查询来检索简单邻接列表中的节点树 到目前为止我的解决方案很有趣 但我想知道 这是我唯一的问题 为什么 MySQL 拒绝使用任何INDEX来优化这个查询 MySQL 不应该能够通过使用INDEX 我
  • 将关系 R 分解为 1NF 后最少存在多少张表?

    考虑具有以下属性类型的关系 R A B C D E F G 键总数 1 A 一组简单 或 原子 或 单值属性 B C 多值属性集 D E 复合属性集 F G 将关系 R 分解为 1NF 后 存在的表的最小数量是多少 A 3 B 2 C 4
  • 在Python和XML中递归搜索父子组合并构建树

    我正在尝试遍历这个充满父子关系的 XML 数据 并且需要一种方法来构建树 任何帮助将不胜感激 另外 在这种情况下 父 gt 子关系有属性还是节点更好
  • 每个表都应该有主键吗?

    我正在创建一个数据库表 但没有为其分配逻辑主键 每个表都应该有主键吗 简短回答 yes 长答案 你需要你的桌子可以加入一些东西 如果您希望表聚集 则需要某种主键 如果您的表设计不需要主键 请重新考虑您的设计 很可能您遗漏了某些内容 为什么要
  • 谁能用适当的例子向我解释 1NF、2NF、3NF、BCNF 规则?

    这是一个常见的面试问题 我遇到过一次面试 面试官给了我一张桌子 让我告诉他这张桌子是哪种范式 如果它在 NF中 那么将其归一化到下一个NF 我总是对这些正常形式的数据库感到困惑 谁能向我解释这些范式 并举出每个 NF 如何建模到表中的正确示
  • 基于 MySQL 中的另一列创建计算列

    我的表中有 2 列 varchar 8 and an int 我想要auto increment the int column当我这样做时 我想将值复制到varchar 8 column 但用 0 填充它直到它达到 8 个字符长 因此例如
  • 数据库索引:是好事、坏事还是浪费时间?

    这里通常建议添加索引作为性能问题的补救措施 我只讨论读取和查询 我们都知道索引会使写入速度变慢 多年来 我在 DB2 和 MSSQL 上多次尝试过这种补救措施 但结果总是令人失望 我的发现是 无论索引会让事情变得更好是多么 明显 事实证明查
  • 用户评级的 ER 模型

    我有很多 用户 每个用户最多有 5 个 服务 用户应该能够对每项服务进行评分 0 5 我还想保留用户的平均评分 这是我的想法 但是还有更好的方法吗 User id user name dob 服务 固定数量的服务 id service de
  • 如何使用 nosql 构建成就和徽章

    我目前有一个使用 mongodb 作为数据库的社交游戏应用程序 我的问题是 如果我想创建一个积分和徽章系统 有哪些建议 成就 徽章的业务逻辑可能会变得非常复杂并且非常临时 因此实时授予徽章似乎效率不高 我想象将跟踪的操作添加到队列中的某处
  • PostgreSQL 索引使用分析

    是否有工具或方法可以分析 Postgres 并确定应创建哪些缺失的索引 以及应删除哪些未使用的索引 我在使用 SQLServer 的 分析器 工具执行此操作方面有一些经验 但我不知道 Postgres 中是否包含类似的工具 我喜欢这样来查找
  • 如何:SQL 还是 NOSQL?

    我还没有遇到过这个问题 但这就是我的想法 非常肤浅和简单化恕我直言 如果您有键值类型的存储 并且所有访问都是键查找 请使用 NOSQL 解决方案 如果您想要基于值 和子值 进行查找或者有一些更复杂的东西 例如联接 您会选择关系解决方案 事务
  • 数据库“key/ID”设计思想、代理键、主键等

    因此 我最近看到多次提到代理键 但我不太确定它是什么以及它与主键有何不同 我总是假设 ID 是表中的主键 如下所示 Users ID Guid FirstName Text LastName Text SSN Int 然而 维基百科将代理键
  • 维护数据库表行的排序顺序

    假设我有一个数据库表 其中每行包含有关新闻文章的信息 该表有一个整数 排序 列 用于指示文章在网站上呈现的顺序 我如何最好地实施和维护这种排序顺序 我想避免的问题是文章编号为 1 2 3 4 100 当文章编号 50 突然变得有趣时 它的排
  • 将数据从 MS SQL 导入 MySQL

    我想从 MS SQL Server 导入数据 通过某种正则表达式运行它以过滤掉内容 然后将其导入 MySQL 然后 对于每个查询 我希望显示来自第三个数据库的相关图像 明智地导入和链接 最简单的方法是什么 谢谢 澄清 它是一个 PHP 应用
  • 在数据库中建模抽象基类和子类

    我有4个子类 Video Image Note and Form 每一项都包含不同类型的数据 例如 Image类包含磁盘上图像文件的路径和图像属性 以及Form类包含表单字段值 然而 每个项目之间的共同元素是 GPS 坐标和航向 因此我有以

随机推荐