首先:我在 amazon s3 中保存图像。
所以我的图像的 URL 根是: https://myapp.s3.amazonaws.com/
我的设计表和关系:
表格文件
id file_name
1 my_document
表格图片
id document_id missing_column??
1 1
2 1
表格images_sizes
id images_id image_size file_name file_extension
1 1 800 output1 .png
2 2 800 output2 .png
3 1 200 output1 .png
4 2 200 output2 .png
然后构建 url 以获取图像将是 https://myapp.s3.amazonaws.com/document_id/image_size/file_name+file_extension
但我不知道我的方法是否正确。这种建模方式的缺点是什么?你建议我另一种方式吗? images 表缺少一个列来区分不同的寄存器...我不知 Prop 体要做什么。
非常感谢你们!!
最佳答案
你为什么不只有一张 table ?
|Image
----------------------------------------------------------
id | image_size(if you need to know size) | url(varchar)
----------------------------------------------------------
文件名可能很棘手。您可能有 2 个具有相同文件名的图像。在 S3 中使用 id 作为键名。如果您使用 id,则可以去掉上面的“url”列并遵循如下约定
https://myapp.s3.amazonaws.com/id.jpeg
您也不需要在 URL 和表格中使用 image_size,如果它是固定大小的话。 如果您要保存一组标准尺寸,则可以像 youtube 那样遵循约定 -
http://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg
关于database - 在 S3 中使用带有外部存储的图像和缩略图进行数据库设计的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235348/