![](/img/trans.png)
[英]Database design: Best Way to store heterogeneous subtypes of a parent class?
[英]mySQL store file details in one or many database table design and best way of creating parent and child categories
----- PHP和mySQL -----
我有两个快速问题,需要一些建议。
在我的网站上,我将允许用户上传以下文件-PDF /视频/照片。 用户上传的所有文件都显示在个人资料页面上。 可以按名称或标签和文件类型搜索所有上传的文件。
最好的mysql数据库设计是什么?
将所有文件存储在一个表中,更易于显示在用户的个人资料页面上并按类型等进行搜索。
每种类型一张桌子,例如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.