gpt4 book ai didi

mysql 数据库设计和查询优化

转载 作者:行者123 更新时间:2023-11-29 00:54:45 25 4
gpt4 key购买 nike

我正在做一个项目,我需要设计一个像目录管理这样的表。我只是 DB 的初学者,所以我真的需要你们的专业知识。我目前对数据库设计的想法可以说明如下:

 id   name       type        create_time       parent_id
1 folder1 folder 2011-2-3
2 folder2 folder 2011-2-3 1
3 folder3 folder 2011-2-3 1
4 folder4 folder 2011-2-3 1
5 file1 file 2011-2-3 4
....

如您所见,parent_id 指向它自己的表 PK id。约束符合现实世界,例如文件夹可以包含文件夹,文件不能有子项等...

最常用的查询场景是:

  1. 给定一个id,找到它的所有子文件(包括文件夹和文件),对于每个文件,表明它是否有子文件。

  2. 给定一个 id,找到它的所有祖先 id( parent ,祖 parent ...)

考虑到大规模应用,问题:

  1. 您认为schema设计合理吗?如果没有,请推荐一个。
  2. 对于这两种情况,我如何编写不会影响性能的机器人查询。

感谢您的帮助。

最佳答案

可以这样考虑:

id    name     -----   type    ----    create_time       parent_id
1 folder1 --- folder --- 2011-2-3
2 folder2 --- folder --- 2011-2-3 ----- 1
3 folder3 --- folder --- 2011-2-3 ----- 2-1
4 folder4 --- folder --- 2011-2-3 ----- 3-2-1
5 file1 ----- file ----- 2011-2-3 ----- 4-3-2-1

将层次结构信息放在 parent_id 中,它说明了它的所有祖先。

当您想在 folder4 下添加一个新文件夹时,例如您只需将 4- 附加到 folder4 的 parent_id 值,并使其成为新文件夹的 parent_id。

这样你就不必递归地找出所有的祖先。

关于mysql 数据库设计和查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com