我正在一个项目中,我需要设计一个像目录管理的表。我只是DB的初学者,所以我真的需要你们的专业知识。我目前的数据库设计思路可以如下图所示:mysql数据库设计和查询optimazation
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。与文件夹类似现实世界的约束complys可以包含文件夹,文件不能有孩子,等...
最常用的查询的情况是:
给出一个id,认定其所有子文件的(包括文件夹和文件),对于每个文件,指示它是否有孩子。
给出一个id,认定其所有祖先的ID(父母,祖父母...)
考虑大规模应用,问题:
- 你认为架构设计合理?如果没有,请提出一个建议。
- 对于这两种情况,我该如何编写不会影响性能的机器人查询。
感谢您的任何帮助。
如果parent_id是FK到同一个表0不允许并且必须为NULL –
确定您希望编写的查询并在您在where子句中使用的同一列(按相同顺序)上创建索引。 –
请不要考虑......让我们到1 – bingjie2680