什么时候文件只是一个文件?

mer*_*tio 5 database-design

因此,您正在编写Web应用程序,并且您可以在该站点的几个区域中用户可以上载文件.我的基本工作方法是将实际文件存储在服务器上,并有一个数据库表,用于将存储的文件名连接到与之相关的记录.

我的问题是:文件的每个"类型"是否应该有不同的表格?此外,文件应该存储在服务器上的上下文相关位置,还是全部存储在一起?

一些示例:用户个人资料照片,工作申请简历,CMS页面上的相关文档等.

Che*_*oft 3

从您的示例中,有两个表的参数,因为您有可以与两个不同事物关联的文件。

  • 简历、照片与用户相关联。
  • 附件与 CMS 页面关联。

如果您将这些放在一张表中(并且您希望允许用户拥有多于一张照片或简历),那么您需要两个链接表来关联文件->用户和文件->cms_pages。可以说,这意味着 HABTM 关系,这是不正确的并且允许不一致的数据。

两个表的方法稍微干净一些,只允许文件通过简单的belongsTo关系与正确类型的实体相关联。

但我认为这个问题没有任何“正确”的答案,除非您需要为不同的文件类型存储不同类型的元数据。

还要确保存储或能够计算每个文件的 mimetype,以便可以使用正确的 HTTP 标头将其正确返回到浏览器。