在DB中唯一存储和图像名称的最佳方式是什么,假设两个人具有相同的图像名称,或者同一个用户上传相同的图像两次。我如何管理这样的scenerios,以便当我想执行更新,删除等操作时,我最终不会删除这两个图像或全部。我的数据库是MySQL。
编辑 - 好的,现在由于某种原因,我为所有图像生成了一个唯一的时间戳,一切都在localhost上工作,但是当我把它带到网上它不起作用,我无法删除它,但它可以脱机工作好。
谢谢 @cybeormin
答案 0 :(得分:1)
在任何表格中,我都会推荐一个ID列,即自动增量并设置为主要字段。这样,尽管用户有两个同名的图像,但所有行都是唯一的。
答案 1 :(得分:0)
在图像上添加引用计数。当您想要删除图像时,只需减少引用计数。当refcount命中0时,你删除了real(或者让cron job删除它)。
答案 2 :(得分:0)
我会丢弃原始图片名称,为每个图片指定一个唯一ID,并将原始名称存储在数据库中。
答案 3 :(得分:0)
在mySQL数据库中,为图像上传创建一个表,创建一个设置为AUTO_INCREMENT
,INT
(整数)的ID列,并将其设为PKEY
(主键)。
这意味着您的ID会在添加新内容时自动创建和生成,并且无论是否添加相同的图像,都始终是唯一的。
其他字段可以捕获其他图像信息(文件名,'给定'名称,文件大小,文件类型和图像本身的BLOB字段),然后您甚至可以添加基于任何组合构成的伪造ID因素......你认为合适吗?
答案 4 :(得分:0)
将唯一键(主键)与每个条目相关联。类似的东西:
fileId | file_name | file
并将fileId设置为自动递增和主键。然后,您可以在“用户”表上(如果您有类似的内容)只需将fileId作为外键引用。
userId | ... | fileId | ...
然后,如果您需要删除该文件,只需使用fileId找到您要删除的文件。