lj3368
@lj3368 (Tero)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

DB設計について

解決したいこと

初学者です、よろしくお願いします。

ユーザーがテストを作成し、結果を集積して点数の推移をグラフなどで表示できるアプリを作りたいと考えています。
DB設計の正規化に関する知識が浅く、ER図に自信がありません。
ER図だけでは判断が難しいかもしれませんが、以下の実現したい機能を実装するために何か不足や間違いがありましたらご指摘をいただきたいです。
どうぞよろしくお願いいたします。

実現したい機能

  • ユーザーはグループ以外では個人のページが表示される
  • ユーザーがテストを作成できる
  • テストの問題数はユーザーが選べる(100問以下)
  • テスト結果の得点の推移(棒グラフ)が表示される
  • テスト結果に目標などのコメントを記録できる

緑がユーザーとグループ
オレンジがテストの記録やコメント関係
青がテスト関係

0

2Answer

ER図の方、拝見しました。

取り合えず、エンティティにはキーを記載した方が良いと思います。
(usersエンティティにuser_id、groupsエンティティにgroup_id等)

1Like

Comments

キーを記載いたしました。

キー項目かどうか見分けが付くようにした方が良いですね。

ERとして気になる点は
records --- comments:1:多が正しい気がします(本当に1:1なら分ける必要が無い)
sheets --- records:1:多が正しい気がします(recordsは、usersとsheetsの中間テーブルのため)
users --- groups:リレーションが不要
groups --- sheets:リレーションが不要(sheetsが本当にgroupsと繋がる必要があるなら、項目が必要)

何かの参考になれば幸いです。

1Like

Comments

  1. @lj3368

    Questioner

    たくさんご指摘いただきありがとうございます。
    大変勉強になりました。

    records --- comments:
    commentsはテストを実行後、違うタイミングでコメント機能を使用することになりそうなのでrecordsに空のカラムを作らないために別にしておりました。
    もう一度全体的に見直し、機能を実装できるように修正していきたいと思います。
  2. あと見ていて気付いたのですが

    user_groupsのuser_group_idは無くてもいいですね
    (user_id+group_idで一意になるため)
  3. @lj3368

    Questioner

    何度も確認していただき、本当にありがとうございます。
    修正させていただきます。

Your answer might help someone💌