Rails 数据库设计:使用 JSONB 和 PostgreSQL 的相册和无相册图像

Rails DB design: Albums and albumless images with JSONB and PostgreSQL

我正在设计一个历史建筑网站,用户可以在其中使用 Shrine 上传多张图片。我正在尝试提出一个数据库设计,使我能够满足我的这些要求:

我能想到的解决方案:

  1. 多态图像。 这将在图像 table 中插入列 imageable_typeimageable_id 以存储父模型及其记录 ID。要存储此图像所属相册的 ID,我可以避免在 Images table 中使用数据库列 album_id 并利用 Images [=56] 中现有的 JSONB 列=] 而不是把它放在那里(我把图片描述和其他东西放在那里,我想保持这种状态)。
    优点:imageable_type 可以是 Building, Blog, Album - 它涵盖了我需要的一切。
    缺点:感觉有点凌乱和奇怪

  2. 根本不使用任何隐式 ActiveRecord 关系(没有 has_many、belongs_to)因为我没有 album_id 用于博客和建筑物描述中的单个图像.使用 JSONB 列中的图像 ID 手动加入。

我非常感谢这里的任何设计想法。集思广益!

我使用了多态图像,以供大家参考。如果将图像添加到画廊,其 imageable_type 是画廊,可以很好地将它们添加到适当的画廊。

感谢您的帮助。