質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

529閲覧

データベースの設計について

akicha

総合スコア3

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/10/07 16:21

編集2020/10/08 01:29

前提・実現したいこと

djangoでチャットサービスを作っているものです。

参加部屋一覧ページを作りたいのですが、
DBの設計の部分で迷っています。

今のところ、User と Room というモデルを作っているのですが、

*User に新しくカラムを設けて、room_idを入れておく

*myroomのようなモデルを作る。

好ましいのはどちらかアドバイスいただけると幸いです。

####追記

情報不足で失礼いたしました。質問があったので追記しておきます。

同時に複数の部屋に参加可能かどうか

複数のチャット部屋に同時に参加可能です。

>>発言をどのように管理しているかとか
まだ肝心のチャット機能は未実装で、未定です。すみません。

>「参加部屋一覧」はあくまで自分が参加している一覧という意味ですよね?
その通りです。
>あと、それは「参加している」だけなのか「入室している」なのか
人数制限をかけたいと考えているので、「入室している」にしたいと考えています。

>あるいは「参加・入室両方で、一覧でそれがわかるようにする」か
自分の立てた部屋と入室した部屋を一覧でわかるようにしたいと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/10/07 21:12

要件が不明瞭な部分があるかと思います。 同時に複数の部屋に参加可能かどうかとか 発言をどのように管理しているかとか
m.ts10806

2020/10/07 21:13

「参加部屋一覧」はあくまで自分が参加している一覧という意味ですよね? あと、それは「参加している」だけなのか「入室している」なのか あるいは「参加・入室両方で、一覧でそれがわかるようにする」か いわゆるブックマークのようなものなのか 何をもって「一覧とする」部分が不明です
akicha

2020/10/08 01:26

失礼いたしました。 >同時に複数の部屋に参加可能かどうか 複数のチャット部屋に同時に参加可能です。 >>発言をどのように管理しているかとか まだ肝心のチャット機能は未実装で、未定です。すみません。 >「参加部屋一覧」はあくまで自分が参加している一覧という意味ですよね? その通りです。 >あと、それは「参加している」だけなのか「入室している」なのか 人数制限をかけたいと考えているので、「入室している」にしたいと考えています。 >あるいは「参加・入室両方で、一覧でそれがわかるようにする」か 自分の立てた部屋と入室した部屋を一覧でわかるようにしたいと考えています。
hentaiman

2020/10/08 04:31

追記があっても要件が明確ではありません。要件が明確ではないから設計が出来ないのです。 思い浮かぶ設計がその二つだとして、実装したい機能要件がハッキリすれば必然的に選択肢から外れる設計があるはずです。 設計できないうちはまず実装が簡単な方のDB設計で作りましょう。そしてDB設計が原因で実装ができない、またはプログラム側で吸収しなければならない部分が過大になると思ったら再設計して作り直せばいいんです。 慣れなきゃ設計出来ないのは当然なので、とりあえず作って作り直してを繰り返して慣れましょう
akicha

2020/10/08 04:47

勉強になります。とりあえず、実装が簡単な設計を意識しようと思います。
m.ts10806

2020/10/08 05:03

ひとまず画面レイアウトと画面遷移図から。
guest

回答2

0

ベストアンサー

私はmyroomモデル派です。
DBのイメージです。

イメージ説明

こうすることで、ユーザーごとの参加部屋一覧だけではなく、部屋ごとの参加ユーザー一覧も作りやすいと思います。

投稿2020/10/07 16:39

takutakuya

総合スコア979

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akicha

2020/10/08 01:30

ありがとうございます。この場合、room_idとuser_idはfkでしょうか?
takutakuya

2020/10/08 03:47

room_idとuser_idはfkにしましょう。
guest

0

*User に新しくカラムを設けて、room_idを入れておく
自分なら上記にして、それとRoomモデルのidを紐づけますかね。
そして外部キー制約をつける。

投稿2020/10/07 16:29

firegrape

総合スコア902

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問