😎

DB設計の悩みを友人に相談した

に公開

お疲れ様です。
コードを書き始めて長くなく、間違えている部分がところどころあるかもしれません。
加えて初投稿で不慣れな部分も多いですが温かい目で見守ってください。

DBの設計

現在、React,Rails API でとある掲示板を作成しているのだが、Postへのgood,badの集計結果をどう保存するかのデータベース設計に悩んでいた。(上記画像が現在のDB)
 はじめやろうとしていたのはgood,badそれぞれの集計結果をpostsテーブルに直接保存することだったのだけど、設計として間違っている気がしたので共同開発している友人に相談したところ、postsが保持するのはpost自体に従属しているものではないから、テーブルを分けるべきらしい。
だから、新しくテーブルを作って投票の集計などはそちらで行うことにした。

class CreateVotesStatus < ActiveRecord::Migration[7.1]
  def change
    create_table :votes_statuses do |t|
      t.references :post, null: false,type: :uuid, foreign_key: true
      t.integer :goodvotes_count
      t.integer :badvotes_count
      t.timestamps
    end
  end
end

これでmigrationを行って、実際にできたdbが

これでvote_statusテーブルで集計結果を管理しやすくなった。

Discussion