Ruby on rails 数据库设计-所有图像相关数据(尽管图像文件本身)是否应存储在单个表中?

Ruby on rails 数据库设计-所有图像相关数据(尽管图像文件本身)是否应存储在单个表中?,ruby-on-rails,postgresql,database-design,Ruby On Rails,Postgresql,Database Design,我想知道在同一个表中存储我的应用程序的所有用户上传图像的数据是否有意义——例如,一个“图像”表 我曾考虑过创建多个表,例如“usersImages”、“productImages”等,但我隐约记得读过一些关于给非连接表一个包含两个名词的名称的内容,这是糟糕的数据库结构的症状,问题基本上是像“productImages”这样的名称描述了两个离散的实体,如果需要关联这两个表,则每个表都需要自己的表和联接表。也就是说,包含所有图像数据的“图像”表是个好主意吗? 正是你的情况 class Image &

我想知道在同一个表中存储我的应用程序的所有用户上传图像的数据是否有意义——例如,一个“图像”表

我曾考虑过创建多个表,例如“usersImages”、“productImages”等,但我隐约记得读过一些关于给非连接表一个包含两个名词的名称的内容,这是糟糕的数据库结构的症状,问题基本上是像“productImages”这样的名称描述了两个离散的实体,如果需要关联这两个表,则每个表都需要自己的表和联接表。也就是说,包含所有图像数据的“图像”表是个好主意吗?

正是你的情况

class Image < ActiveRecord::Base
  belongs_to :imageable, polymorphic: true
end

class User < ActiveRecord::Base
  has_many :images, as: :imageable
end

class Product < ActiveRecord::Base
  has_many :images, as: :imageable
end
类映像
我会选择多态关联。一个表格用于按类型显示图像和筛选,如
ProducImage
UserImage
等。您能说得更多吗?另外,您是否假定图像只能有一种类型?(这可能是一个安全的假设,但我必须问一下。)对于id为4的产品
@product.images
,它将类似于
从images.imageable_type='Product'和images.imageable_id=4的图像中选择图像
使用
多态关联
,稍后您将感谢我。我用你的方式把相似的模型保存在不同的表格里,后来我后悔了。最好花点时间来理解它,这样你就不会浪费很多时间来修复它。这只是一个sql查询,用来显示当你在代码中编写
@product.images
时它会是什么样子。你不需要把它放在任何地方。阅读答案中的链接,你会得到它。