好的,所以我在过去的几个月里一直在处理这个问题,主要是因为我是新手......我做了我的阅读和研究,这就是结果......
我正在为我网站的图库设计图像表模型。基本上,我会上传图片(filename
)并创建5种不同尺寸(small
,thumb
,medium
,large
,big
)
我已经设定了不同尺寸的指南:
small
和thumb
尺寸small
,thumb
,medium
尺寸small
,thumb
,medium
,large
尺寸small
,thumb
,medium
,large
,big
尺寸每个大小都有自己的文件名,由filename
+ 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
答案 0 :(得分:2)
拥有value1
,value2
,value3
或您的案例small
,medium
,large
等列表示非规范化问题。它构成了一个庞大的表,如果您想要添加(或删除)图像大小,则必须更改架构。我不确定为什么你需要_width
/ _height
列,因为每个列看起来都有一个基于其大小状态的静态宽度/高度(例如small
总是100px),但是不管。我建议三个表:
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
上。如果您想要默认但允许灵活性,也可以使用两者。