Ruby on rails 数据库设计-存储不同的资产(相同的表与不同的表)

Ruby on rails 数据库设计-存储不同的资产(相同的表与不同的表),ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我很好奇,在数据库中存储资产是否有一种首选方法,即文件路径(如果有必要,我将使用postgres)。我会有PDF、视频和音频文件 我应该创建一个表并有一个“类型”字段,还是创建一个PDF表、视频表和音频表更有意义 谢谢在设计数据库时,这是一个非常常见的问题,没有一个万能的答案。这实际上取决于两种设置中哪一种对您最有用。或者,哪种设置会给您带来最少的问题 从逻辑上讲,您是否希望以不同的方式处理每种资源?或者你希望将它们视为同一类型事物的微妙变体?例如,您的数据模型中是否存在引用某一特定类型的关系或

我很好奇,在数据库中存储资产是否有一种首选方法,即文件路径(如果有必要,我将使用postgres)。我会有PDF、视频和音频文件

我应该创建一个表并有一个“类型”字段,还是创建一个PDF表、视频表和音频表更有意义


谢谢

在设计数据库时,这是一个非常常见的问题,没有一个万能的答案。这实际上取决于两种设置中哪一种对您最有用。或者,哪种设置会给您带来最少的问题

从逻辑上讲,您是否希望以不同的方式处理每种资源?或者你希望将它们视为同一类型事物的微妙变体?例如,您的数据模型中是否存在引用某一特定类型的关系或约束(例如,resumes.pdf_file_id将专门用于pdf文件,并且将其作为mp3可能不会有很大帮助)。如果是的话,我会选择单独的桌子

另一方面,如果您希望能够查看用户上载的所有附件,则只需查询一个表就可以了,例如,
SELECT*FROM attachments,其中user_id=?
,而不是从三个单独的表中进行选择


不过,也有一些折中的选择。您可以使用单独的表,但将它们全部链接到存储S3URL的
附件
表。或者您可以使用数据库级继承将它们视为单独的和统一的表(此解决方案通常看起来很完美,但我不推荐)。最终,最佳选择取决于您的用例。

您所说的“在数据库中存储资产”是什么意思?您想存储他们的数据吗?是否要存储它们的URL(指向类似S3的内容)?后者。它只存储到S3的路径。谢谢。这真的很有帮助。