2

好的,所以过去几个月我一直在处理这个问题,主要是因为我是一个新手......我做了我的阅读和研究,这就是结果......

我正在为我的网站的画廊设计一个图像表模型。基本上,我将上传一张图片 ( filename) 并创建 5 种不同的尺寸 ( small, thumb, medium, large, big)。

我已经为不同尺寸设置了指南:

  • 上传图片的最小尺寸为 100 像素
  • ---> 始终创建smallthumb调整大小
  • 如果上传的图片大于 100 px ---> create small, thumb, mediumsize
  • 如果上传的图片大于 350 px ---> create small, thumb, medium, largesize
  • 如果上传的图片大于 700 px ---> create small, thumb, medium, large, bigsize

每个大小都有自己的文件名,由代表大小的filename+ a定义。suffix因此,一个小的图像文件名将以_s后缀 (1234_s.jpg) 结尾,拇指_t后缀 (1234_t.jpg) 等等......

我还决定创建一个小型文件系统结构,因为我最终可能会上传大约 125 000 张图像。与此类似的东西:

http://www.mywebsite.com/gallery/images/0/6/image1.png
http://www.mywebsite.com/gallery/images/5/4/image2.png

图像的路径将驻留在一个config.php文件中,我会将数据库中图像文件夹的相对路径保存在名为 relative_dir

我还需要保持宽度和高度,以便它在浏览器中显示正常(如果要显示很多拇指,使用 getimagesize 可能会给服务器带来很大压力)

所以,经过几周的阅读和研究,我想出了这个(记住我是新手)

有什么意见、建议吗?

IMAGE
-----------------------
image_id
title
caption
relative_dir
filename
small_filename
small_width
small_height
thumb_filename
thumb_width
thumb_height
medium_filename
medium_width
medium_height
large_filename
large_width
large_height
big_filename
big_width
big_height
4

1 回答 1

2

具有 , 或在您的情况下 , 之类value1的列表示value2非规范化问题。它会产生一个庞大的表,如果您想要添加(或删除)图像大小,您将不得不更改架构。我不确定为什么需要/列,因为每个列似乎都具有基于其大小状态的静态宽度/高度(例如,始终为 100 像素),但没关系。我建议三个表:value3smallmediumlarge_width_heightsmall

ImageUploads -- canonical image table
iuID, title, caption, relative_dir, filename
(do you need *both* relative_dir/filename)

ImageSizes -- settings for sizes; width/height may go here as well
isID,
sizeName (small, medium, large, big, thumb)
sizeSuffix (_s, _m, _l, _b, _t?)

Images
iuID, isID

使用该Images表,您可以轻松获取规范图像文件名、标题/标题/等。并获得您需要的后缀。如果每个单独的文件需要不同的宽度/高度,或者ImageSizes如果它是每个大小的,则宽度/高度将出现在此表上。如果您想拥有默认值但允许灵活性,您也可以同时使用两者。

于 2013-02-12T19:57:45.400 回答