我有章,分章,节的一本书的结构,款,第二十和subarticles的数目不详,分subarticles,分次subarticles等SQLite的结构建议
什么是结构的最佳方式? 一个表与子 - 父母关系,多个表?
谢谢。
我有章,分章,节的一本书的结构,款,第二十和subarticles的数目不详,分subarticles,分次subarticles等SQLite的结构建议
什么是结构的最佳方式? 一个表与子 - 父母关系,多个表?
谢谢。
在关系数据库中有几种方法可以保存树结构。最常用的是使用父指针和nested sets。
第一个数据结构非常简单,即指向每个对象上相应父元素的指针,因此易于实现。缺点是不容易对它进行一些查询,因为树不能完全遍历。您需要每层的自连接。
嵌套集更容易查询(当你已经理解它是如何工作的)但更难更新。许多写操作需要对树中的其他对象进行附加更新,这可能会使其更难以过渡保存。
第三个变体是materialized path,我个人认为这是前两者之间的一个很好的折衷。这就是说,如果你想存储任意大小的树(例如,对于节,子节,子节,...),你应该使用提到的树实现之一。如果您的最大深度非常有限(例如最多3层),则可以创建明确的数据结构。但因为事情总是比最初复杂得多,所以我建议你使用真正的树实现。
要确定是否有单独的表格或涉及到一个大表格,您应该仔细查看每个项目 - 章节,子章节等 - 并确定它们是否与其他属性具有不同的属性。一章是否带有与子章不同的内容?
如果是这样,那么你正在查看章节,子章节,章节,子章节,文章的单独表格。文章对我来说依然感觉与你的次级子等分等。
如果不是,那么也许它是一张有父母/小孩的大桌子,但看起来你可能正在谈论'名字'表示层次的深度,这又让我再次偏向单独的表格。
另请考虑您将如何查询以及您将要搜索的内容。
谢谢,我稍后会看看链接。我确实需要遍历查询树。 – Francisc