Rails初心者エンジニアです。
新規にWebアプリ(マーケットプレイス)を構築し、AWS上にデプロイしたいと考えております。
新規サービスの立ち上げで、フルスクラッチで進める予定で、データ含めて、ゼロからのDB設計となります。
DBはRDB(MariaDB)を使用予定です。
現在、参考書籍:達人に学ぶDB設計を一通り読み、データベースの論理設計を始めておりますが、「主キー/ナチュラルキー/サロゲートキー」に関して、十分に理解できておらず、質問させてください。
###現状理解
参考書籍からの抜粋となりますが、「極力サロゲートキーの使用は避けて、ナチュラルキーを主キーとするようモデリングするべき」が一般原則であるとの理解です。
一方で、Rails(Active Record)ではサロゲートキーが強制されている?
参考サイト1:railsのテーブル名や主キーはcocで厳格なルールがあるおかげで可読性も高い
参考サイト2:代理キーとナチュラルキー
###質問
Q1. DB側でレコード登録時に自動発行されるIDは、サロゲートキー(代理キー)と呼ばれるものでしょうか
(Userテーブルを作成した際に、デフォルトで用意されているカラムuser_idは、サロゲートキーに該当するカラムでしょうか)
Q2. DB側で自動発行されるIDとは別に、一意となるコード体系を、別途定義・発番する必要性はあるでしょうか。具体的には、マーケットプレイス(ECサイト)一般論として、例えば商品テーブルやショップテーブルについて、DB側で自動発行されるproduct_id, shop_idとは別に、商品コード、ショップコードといった、コード体系の定義・発番は必要となるものでしょうか
回答1件
あなたの回答
tips
プレビュー