在我的数据库中实现图片表的最佳方法
Posted
技术标签:
【中文标题】在我的数据库中实现图片表的最佳方法【英文标题】:Best way to implement a pictures table in my database 【发布时间】:2012-04-05 15:54:23 【问题描述】:我有一个网站,里面有很多图片。目前,我只是将图片全部放在服务器上,然后使用 php 获取目录中的文件并将它们全部显示在一张表中。但是,当我这样做时,图片按字母顺序显示,这是我不想要的。我希望它们显示我的插入时间。我在想我可以创建一个表格,其中一个数字字段设置为自动递增,然后是插入图片的文件名。并将图片留在服务器上。所以每次我插入图片时,它都会插入一行带有数字和文件名的行。所以当我显示时,我只显示那个数字 Desc,它应该给我最新插入的图片。这是最好的方法吗?
谢谢
【问题讨论】:
【参考方案1】:对我来说听起来不错。如果您真的想获得技术知识,可以使用时间戳字段并按此排序。但是,只要您在插入图像时自动递增,听起来您的想法就可以正常工作。
【讨论】:
时间戳数据类型也可以默认为current_timestamp。【参考方案2】:你在正确的轨道上。我会使用时间戳(DATETIME
类型)来确定图片上传的确切时间,并按此排序。递增的 ID 并不总是与插入时间相对应。
【讨论】:
我认为没有必要这样做。按文件系统上文件的实际创建日期排序就足够了。根本不需要另一张桌子。 拥有一个关于您输入到文件系统中的文件的信息表总是一个好主意。你用这些信息做什么是另一回事。是的,您可以按时间戳排序,但拥有一个表格是一种更强大的解决方案。【参考方案3】:您可以通过 auto_incremented id 字段来执行此操作,或者您可以存储时间戳并以这种方式对其进行排序。任何一个都是不错的选择,只要确保避免潜在的主键违规即可。
【讨论】:
【参考方案4】:使用filemtime()
,您可以获得文件的时间戳。因此,在您使用(例如)readdir()
获得文件后,可以使用uasort()
或其他 php 排序函数之一定义排序。不需要数据库。
【讨论】:
【参考方案5】:将指向文件的指针存储在数据库中是最好的方法,并将图像保存在文件系统中。至于创建日期,您可以使用DATETIME
来跟踪它的创建时间,然后按照您想要的顺序查询它们。
【讨论】:
【参考方案6】:我认为没有必要这样做。 PHP 中必须有一种方法来获取所有文件列表并按创建日期排序。由于此文件将上传到您的服务器,因此 date_created 时间将是您服务器上创建的日期;因此,不需要新的表和数据库调用等。
【讨论】:
【参考方案7】:如果您计划在系统中保存数千(或更多)照片,则需要在将实际图像文件存储在硬盘上时使用数据库表来存储元数据。
执行 10,000 次 I/O 命中以按日期对文件进行排序是疯狂的。执行一次 SQL 查询以返回按日期排序的所有文件名的列表要好得多,因为 mysql 可能能够将整个表放入内存中。
table image
id
user_id (if images belong to certain users)
path (the file system path and/or filename)
created (timestamp)
【讨论】:
以上是关于在我的数据库中实现图片表的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
在SQL Server中实现Polymorphic Association的最佳方法是什么?
在 android 应用程序中实现 Youtube/Facebook 类型的标签功能的最佳方法是啥? [关闭]