前提・実現したいこと
Userモデル同士ではなく、例えばCompanyモデルとUserモデルの2つのモデルが絡むチャットアプリを開発する上でのDB設計について悩んでいます。
通常の設計
・users: id, name ・rooms: id, title ・user_rooms: id, user_id, room_id ・messages: id, user_id, content
User同士のチャットの場合だと、上記のようなテーブル設計になり、外部キーから自ずとリレーションを張れると思います。
実現したいこと
User同士だけでなく、例えば企業という登場人物がいたとして、それをCompanyモデルとして定義しているとします。
この際、User - Company間でチャットをしたい場合、どのようなDB設計をするのが良いのでしょうか?
通常の設計に + companiesを追加するとややこしくなると思っていて、
今考えているのは、ChatUserというチャット専用のユーザー人格モデルを作り、
ChatUser hasOne User
ChatUser hasOne Company
というリレーションにし、通常の設計のusers
テーブルをchat_users
テーブルにする方法です。
ただこれでよいのか正直不安ですので、どなたかご意見アドバイスいただけると嬉しいです。