存储已知深度的分层数据的更好方法?
Better way to store hierarchical data with known depth?
我有一个(实际上很简单的)数据结构,它具有树状邻接关系。我正在尝试找到一种好方法来表示基于电影行业的网络应用程序的数据,该应用程序需要存储有关电影项目的数据。数据包括:
project -> scene -> shot -> version
- 每个都以 "one-to-many" 的方式与前一个相邻。
现在我正在考虑一个简单的邻接表,但我很难相信它足够有效地快速检索项目名称,只给出版本,因为我必须循环其他表得到它。 (简化的)布局是这样的:
simple adjacency layout
我在考虑 - 而不是仅引用直接父级 - 引用所有更高级别的父级(like this),知道层次结构具有固定的深度。这样一来,我就可以使用这些快捷方式仅通过一个查询来获取我的信息。但这是糟糕的数据建模吗?还有其他方法吗?
从规范化的角度来看,这不是很好的数据建模。如果您意识到为项目放置了错误的场景,则必须将它和所有内容向下移动。
但是...效率对您重要吗?你说的是多少数据?您需要多快的响应?我想说的是,用你已有的东西,如果你需要更快,有一些东西可以定期将数据提取到缓存中。
尝试一种名为改进的预序树遍历的方法:http://www.sitepoint.com/hierarchical-data-database/
我有一个(实际上很简单的)数据结构,它具有树状邻接关系。我正在尝试找到一种好方法来表示基于电影行业的网络应用程序的数据,该应用程序需要存储有关电影项目的数据。数据包括:
project -> scene -> shot -> version
- 每个都以 "one-to-many" 的方式与前一个相邻。
现在我正在考虑一个简单的邻接表,但我很难相信它足够有效地快速检索项目名称,只给出版本,因为我必须循环其他表得到它。 (简化的)布局是这样的: simple adjacency layout
我在考虑 - 而不是仅引用直接父级 - 引用所有更高级别的父级(like this),知道层次结构具有固定的深度。这样一来,我就可以使用这些快捷方式仅通过一个查询来获取我的信息。但这是糟糕的数据建模吗?还有其他方法吗?
从规范化的角度来看,这不是很好的数据建模。如果您意识到为项目放置了错误的场景,则必须将它和所有内容向下移动。
但是...效率对您重要吗?你说的是多少数据?您需要多快的响应?我想说的是,用你已有的东西,如果你需要更快,有一些东西可以定期将数据提取到缓存中。
尝试一种名为改进的预序树遍历的方法:http://www.sitepoint.com/hierarchical-data-database/