我正在构建门户网站的数据库结构,我对我决定不会存储在数据库中的元素有一些疑问,通常是媒体和特定图像。
假设我们有内容,每个内容都可以有一个主图像。此外,还有一个幻灯片,其中包含需要内容大图像的特色内容。一个直观的想法是让DB没有这个任务,并使用名称约定存储图像。然后,在代码(php)中,我可以检查文件是否存在,然后按照需要进行操作(要求上传幻灯片的图像,显示默认图像或地图而不是所需的主图像......)。另一个极端是将文件名存储在数据库中,其他选项是使用文件名约定但在数据库中存储一个布尔值而不是检查代码中是否存在。
我对主观观点感兴趣,但我真的想知道是否有基于技术和客观原因的最佳做法,或仅仅是出于实际原因......
答案 0 :(得分:1)
使用每个内容记录将图像文件名存储在数据库中。这是最灵活的选项,因为您可以通过更新数据库记录轻松更改所选图像。
假设您添加某种后端/管理区域来管理内容。要更改内容的主图像,您可以在图像文件夹中显示文件下拉列表(以及文件上传选项),并轻松将记录更新为所选图像。
如果您想要幻灯片显示内容图片,只需从表格中选择图片文件名,然后输出指向图片的<img />
标签。
如果您在没有数据库的情况下执行此操作,请使用命名约定,例如content-image-{contentId}.jpg
然后更改您需要重命名/删除文件的图像,您需要满足不同的图像文件扩展名。
答案 1 :(得分:0)
我不会将图像存储在数据库中。相反,我将它们存储在磁盘上的单独文件夹中,并维护一个包含名称,大小,mimetype等的表。
我实际的原因是不将它们存储在数据库中:
mysqldump
然后使用编辑器。没有转储中的所有二进制数据,这会更容易。