Closed 0902-max closed 12 months ago
ご提出ありがとうございます。 以下コメントになります。
回答ありがとうございます。 usersテーブルはdeviceを使用してemailとpasswordのシンプルなもののみ使用しています。scoreカラムはUserPastQuestionAttemptsテーブルでの正誤によって点数を保存しておくために追加しました。 choiceテーブルのquestionカラムは質問保存して、user_choiceカラムでユーザーの選択を保存します。選択された質問によってdocument_idでdocumentテーブルのtitleカラムを引っ張ってきます。それをusr_idでusersテーブルと紐つけています。 roadmapテーブルは学習ロードマップのタイトルや説明を保存して、google calender APIと連携するためにおいています。 GoogleCalendarEventテーブルではイベントの追加や時間の設定、題名や内容が保存できるようにしていて、usersテーブルやroadmapテーブルと紐つけています。 NotificationテーブルではGoogleCalendarEventテーブルのidを受け取り、それを通知するメッセージや時間の設定ができます。usersテーブルと紐つけています。 VocabularyNoteは単語帳を保存するためのもので、VocabularyEntryテーブルは単語帳の単語を保存しておく場所にしています。それぞれusersテーブルと紐つけています。 PastQuestions テーブルは過去問を保存しておくテーブルでUserPastQuestionAttemptsテーブルはusersテーブルとPastQuestions テーブルの中間テーブルです。それぞれusersテーブルと紐つけています。 grantsテーブルは補助金APIを使用してそれを保存しておくためのテーブルです。カラムはjGrants APIに沿って作成しています。
対応ありがとうございます。 全て指摘すると多いかと思うので一部コメントします。
■共通 ・テーブル名は複数形・キャメルケースに統一しましょう。
■Usersテーブル ・ログインに使用するgem等は何を考えているでしょうか。それによっては適切なカラムになっていないかと思います。
■Choicesテーブル ・UsersテーブルとDocumentsテーブルを繋ぐ中間テーブルかと推測しました。となると、リレーションが適切かを確認いただきたいです。
■Roadmapsテーブル ・GoogleCalenderEventと1対1のリレーションも書かれていますが、これは消し忘れでしょうか?
■UserPastQuesitonAttemptsテーブル ・UsersテーブルとPostQuestionsテーブルの中間テーブルかと推測しましたが...こちらもリレーションは適切かを確認いただきたいです。
回答ありがとうございます。お手数かと思いますが、全て言ってもらえるとありがたいです。 ■共通 ・テーブル名変更いたしました。 ■Usersテーブル ・gem deviceを使用するのでその関係でemailとencrypted_passwordになっています。初めは名前(name)を考えていましたが、個人でgem deviceに関して知識や実装を考えるととりあえずは、emailとencrypted_passwordで対応させるつもりです。
■Choicesテーブル ・僕の中ではchoicesテーブルに選んだ選択肢を保存させて、選んだ選択肢から紐ついたdoumentsテーブルのtitleを持ってきて、usersテーブルと紐つけて表示するつもりでこの形になりました。
■Roadmapsテーブル ・GoogleCalenderEventと1対1のリレーションも書かれていますが、これは消し忘れでしょうか?これに関しては学習ロードマップに一つのgoogle calender機能を実装しようとしたのでこれで良いのではと思いリレーションを書きました。
■UserPastQuesitonAttemptsテーブル ・UsersテーブルとPostQuestionsテーブルの中間テーブルかと推測しましたが...こちらもリレーションは適切かを確認いただきたいです。中間テーブルのつもりです。おかしいところがあれば、言ってもらえると助かります。
対応ありがとうございます。
choiceテーブルのquestionカラムは質問保存して、user_choiceカラムでユーザーの選択を保存します。選択された質問によってdocument_idでdocumentテーブルのtitleカラムを引っ張ってきます。それをusr_idでusersテーブルと紐つけています。
↑とあるのですが、choicesテーブルにはquessionカラムが無く...一度リレーションやカラムなどを再点検していただいても良いでしょうか。説明との整合性が難しく、統一していただけると助かります。
VocabularyEntriesとVocabularyNotesの箇所は概ね良さそうに見えましたが、念のため各テーブルと関係性をコメント欄に説明をお願いできますか。
choicesテーブル周りですが...問題(Questions)テーブルがそもそも必要ではないでしょうか?その問題が4択から選択する形だとすると、以下のようなテーブル・カラムが必要かと思いましたが、作成されるアプリケーションと比較して、以下を参考に修正した方が良いかもしれません。(以下が正解ということではありません。参考までに。)
Questionsテーブル:bodyカラム Choicesテーブル:question_idカラム、body(1選択肢辺りの文章) Answersテーブル:question_idカラム、choice_idカラム、user_idカラム Documentsテーブル:....(一度ご自身でお考えください)
回答ありがとうございます。 https://gyazo.com/b1c0a0a57e73b5949f43b694d985438f
■ VocabularyNotes ・単語帳の大枠のデータベースで、usersテーブルに紐つけて各ユーザーの単語帳を作れるし、確認できる。
■VocabularyEntries ・VocabularyNotesテーブルで作成されている単語帳の中身の単語と意味を保存しておけるテーブルです。単語一つ一つ確認できたり、usersテーブルとリレーションをつなげることで追跡もしやすいかなと思って繋げています。usersテーブルとつなげるかは悩みました。
■Choicesテーブル ・全てのものをchoicesテーブルのカラムで再現しようとしていて、今自主的にこのアプリを制作できるか試しているのですが、choicesテーブルとdocumentsテーブルのところがうまくいかず、悩んでいました。テーブルを増やしてしまうとリレーションが複雑になりそうで中々できなかったです。
概ね良いかと思います。LGTMです。
ER図はこのようになりました。 https://drive.google.com/file/d/1cc1JW0u95TGoG1MoJev7gT7A_y6rskeT/view?usp=sharing