繁体   English   中英

一个或多个数据库表设计中的mySQL存储文件详细信息以及创建父级和子级类别的最佳方法

[英]mySQL store file details in one or many database table design and best way of creating parent and child categories

----- PHP和mySQL -----

我有两个快速问题,需要一些建议。

在我的网站上,我将允许用户上传以下文件-PDF /视频/照片。 用户上传的所有文件都显示在个人资料页面上。 可以按名称或标签和文件类型搜索所有上传的文件。

最好的mysql数据库设计是什么?

  1. 将所有文件存储在一个表中,更易于显示在用户的个人资料页面上并按类型等进行搜索。

  2. 每种类型一张桌子,例如pdf,视频和照片<-这可能对性能更好,但对于搜索我不知道?

第二个问题是,我允许用户使用父级和子级类别创建自己的菜单/类别,例如:

  • ->父类别
        • >子类别
        • >子类别
  • ->父类别

        • >子类别
        • >子类别

目前,我有两个数据库表,一个存储每个用户的所有父类别,另一个存储带有父类别的外键(id)的子类别。

要获取所有类别,我首先要获取所有父类别并使用foreach循环。 我在循环中调用一个函数,以通过父ID获取子类别。

我想知道这是执行此操作的最佳方法,还是可以在mySQL查询中完成而不循环?

多谢你们 !!!

对于第一个问题,这取决于要存储的有关文件的信息。

如果它在所有类型(名称,日期,文件类型,大小等)中都是通用的,那么一个单独的具有类型列的“文件”表就很有意义。

但是,如果要保存与文件类型有关的文件属性,例如视频文件的帧频,图像文件的高度和宽度,PDF的作者,那么您将还需要一些辅助表来存储该信息。 您不想在文件表中悬挂一堆只对特定文件类型有用的列。

对于第二个问题,粗糙的SQL基于父类别表和子类别表之间的JOIN。

伪代码示例:

select p.userid, p.parentcategoryid,c.childcategoryid 
from ParentCategory p INNER JOIN   
     ChildCategory c  
        on p.parentcategoryid=c.parentcategoryid
WHERE 
      p.userid = @UserID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM