MySQL跟踪分层一对多数据结构的祖先

CMC龙岗

如果您说3张桌子。表A中的一条记录与表B中的许多记录相关。表B中的一条记录与表C中的许多表相关。

现在给定表C中一行的ID,如果我不了解表B,如何查找表A中的原始祖先行呢?

目的是找出表A中的实体是否“拥有”特定行。事实是,表A和表C之间可能存在多个一对多的级别。

红月7777

这是我可以考虑的3个选择:

1)在表C中有一列,其中包含表A的引用。这涉及一些非规范化,但它是有效的。

因此您将拥有类似表A(id,....),表B(id,a_id,...),表C(id,a_id,b_id,...)的架构

2)跟踪表C中表B的名称:因此您将拥有类似于表C的名称(id,parent_object_table,parent_object_id,...),这将使您能够恢复父级的表名和行ID

3)如果这些表具有相同的结构(例如,菜单,子菜单),则最好只使用一个表,并具有parent_id列来跟踪直接父级,并使用可选的depth列来知道下一级表的深度。树是行

编辑

好的,如果我对您的理解正确,那么您想构建一个动态树结构。

尝试这样的事情:

表树

id
object_table
object_id
parent_object_table
parent_object_id
depth

因此具有(id:15,table_b父代:12,table_a父代:3)的table_c记录将具有2条记录:

object_table = 'table_c'
object_id = 15
parent_object_table = 'table_b'
parent_object_id = 12
depth = 1

object_table = 'table_c'
object_id = 15
parent_object_table = 'table_a'
parent_object_id = 3
depth = 2

您还可以根据用例添加另一条记录,该记录将允许所有记录都出现在此表中(并且可能更隐含)。

object_table = 'table_c'
object_id = 15
parent_object_table = 'table_c'
parent_object_id = 15
depth = 0

这将使没有父母的行也可以在此表中

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取mysql以获取分层数据结构

来自分类Dev

.net数据结构具有一对一映射?

来自分类Dev

来自C中一对数据结构的不兼容指针类型

来自分类Dev

R,创建查找表的最佳数据结构,该表创建可能的一对多映射

来自分类Dev

如何使用RecycleView显示分层数据结构?

来自分类Dev

使用JPA(固定深度)实现分层数据结构

来自分类Dev

在Firebase中查询分层数据结构

来自分类Dev

将对象数组转换为分层数据结构

来自分类Dev

使用JPA(固定深度)实现分层数据结构

来自分类Dev

如何使用RecycleView显示分层数据结构?

来自分类Dev

排序闭包表分层数据结构

来自分类Dev

分层 BOM 的最佳数据结构是什么

来自分类Dev

有一个哈希映射来跟踪另一个数据结构中的元素

来自分类Dev

如何实现多对一的数据结构?

来自分类Dev

使用C#将数据表转换为分层数据结构(JSON)

来自分类Dev

哪种 C# 数据结构最适合/可行存储分层数据

来自分类Dev

MVC一对多数据库未更新

来自分类Dev

CoreData一对多,对许多数据进行排序

来自分类Dev

将一对多数据转换为列

来自分类Dev

MVC一对多数据库未更新

来自分类Dev

Spring Jdbctemplate一对多数据检索

来自分类Dev

将一对多数据添加到 Lucene 索引

来自分类Dev

在 Clojure 中,如何从文本文件中读取分层数据结构?

来自分类Dev

有2个indizes /一键键数据结构的数据结构?

来自分类Dev

转换数据结构

来自分类Dev

转换数据结构

来自分类Dev

同步数据结构

来自分类Dev

数据结构使用

来自分类Dev

数据结构过滤