处理类别和子类别 MySQL 或 JSON
Posted
技术标签:
【中文标题】处理类别和子类别 MySQL 或 JSON【英文标题】:Handling categories and sub categories MySQL or JSON 【发布时间】:2016-09-19 07:21:36 【问题描述】:我正在努力寻找处理类别和子类别的最佳方式。我有 20 个类别和 50 个子类别。以下哪一项是最好的方法:
将数据保存在 json 文件中,并直接在客户端读取内容。
将数据库中的数据保存在单个表中,并使用父 ID 来查看关系,并在同一数组的另一个 foreach 内的结果数组上使用 foreach。
将数据库中的数据保存在两个表中,一个 sql 调用父类别,另一个调用子类别,并使用父 id 查看关系,并在父数组的另一个 foreach 中使用子类别数组的 foreach。
将数据库中的数据保存在两个表中,对父类别进行一次 sql 调用,然后在其 foreach 中对数据库进行多次 sql 调用。
我试图找到处理类别的最佳做法,但找不到任何相同的文章。
【问题讨论】:
【参考方案1】:解决方案完全取决于您的数据库架构和其他实体与类别相关的复杂程度。以及您打算如何阅读这些信息。
json 方法会更快,但在涉及需要链接到类别附加信息的查询时会出现问题。
我使用过且性能良好的另一种方法是将所有类别存储在一个表中。关系不存储在主表中。
另一个表将关系存储为图边。如果您在类别中有循环关系,这是非常有利的。或者不止一位家长。
架构看起来像:
类别(id、name) category_edges (parent_id, child_id)
我在我的实现中使用了oqgraph 来更快地获取关系查询。但那是 MariaDB 而不是 mysql。
希望这会有所帮助。
【讨论】:
所以我猜你是说第 3 种方法是这 4 种方法中最好的,创建两个表,然后根据它们之间的关系在 php 中创建数组。 不一定。如果不清楚地了解对应用程序其余部分的影响,我很难提出解决方案。但在一般实践中,是的,猫放在桌子上是有道理的。但我建议的解决方案与第三个选项不同。它将类别结构实现为图。以上是关于处理类别和子类别 MySQL 或 JSON的主要内容,如果未能解决你的问题,请参考以下文章