0902-max / caregiver_road

0 stars 0 forks source link

ER図作成しました #3

Closed 0902-max closed 12 months ago

0902-max commented 12 months ago

ER図はこのようになりました。 https://drive.google.com/file/d/1cc1JW0u95TGoG1MoJev7gT7A_y6rskeT/view?usp=sharing

tmtkzk0823 commented 12 months ago

ご提出ありがとうございます。 以下コメントになります。

0902-max commented 12 months ago

回答ありがとうございます。 Image from Gyazo 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に沿って作成しています。

Tsuchiya2 commented 12 months ago

対応ありがとうございます。 全て指摘すると多いかと思うので一部コメントします。


■共通 ・テーブル名は複数形・キャメルケースに統一しましょう。

■Usersテーブル ・ログインに使用するgem等は何を考えているでしょうか。それによっては適切なカラムになっていないかと思います。

■Choicesテーブル ・UsersテーブルとDocumentsテーブルを繋ぐ中間テーブルかと推測しました。となると、リレーションが適切かを確認いただきたいです。

■Roadmapsテーブル ・GoogleCalenderEventと1対1のリレーションも書かれていますが、これは消し忘れでしょうか?

■UserPastQuesitonAttemptsテーブル ・UsersテーブルとPostQuestionsテーブルの中間テーブルかと推測しましたが...こちらもリレーションは適切かを確認いただきたいです。

0902-max commented 12 months ago

回答ありがとうございます。お手数かと思いますが、全て言ってもらえるとありがたいです。 ■共通 ・テーブル名変更いたしました。 ■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テーブルの中間テーブルかと推測しましたが...こちらもリレーションは適切かを確認いただきたいです。中間テーブルのつもりです。おかしいところがあれば、言ってもらえると助かります。

Tsuchiya2 commented 12 months ago

・gem deviceを使用するのでその関係でemailとencrypted_passwordになっています。初めは名前(name)を考えていましたが、個人でgem deviceに関して知識や実装を考えるととりあえずは、emailとencrypted_passwordで対応させるつもりです。

↑とありますが...掲載されているものには、それが無かったため必要なものは記載をお願いいたします。 Image from Gyazo

また、修正の度に最新のER図をコメント欄に掲載してください。 よろしくお願いいたします。

0902-max commented 12 months ago

迅速な対応ありがとうございます。 Image from Gyazo

■Roadmapsテーブル ・GoogleCalenderEventと1対1のリレーションも書かれていますが、これは消し忘れでしょうか?の件ですが、繋がり自体は必要なかったので、リレーションを消しています。

■Choicesテーブル ・僕の中ではchoicesテーブルに選んだ選択肢を保存させて、選んだ選択肢から紐ついたdoumentsテーブルのtitleを持ってきて、usersテーブルと紐つけて表示するつもりでこの形になりました。

Tsuchiya2 commented 12 months ago

対応ありがとうございます。

choiceテーブルのquestionカラムは質問保存して、user_choiceカラムでユーザーの選択を保存します。選択された質問によってdocument_idでdocumentテーブルのtitleカラムを引っ張ってきます。それをusr_idでusersテーブルと紐つけています。

↑とあるのですが、choicesテーブルにはquessionカラムが無く...一度リレーションやカラムなどを再点検していただいても良いでしょうか。説明との整合性が難しく、統一していただけると助かります。

0902-max commented 12 months ago

返答ありがとうございます。 Image from Gyazo questionカラムは僕も必要なのかどうなのか悩みながら、入れたり消したりしています。

VocabularyEntriesとVocabularyNotesとusersテーブルのリレーションはどうですか?choicesテーブルのとことその2つがうまく行ってない気がしています。アドバイスありましたら、教えてもらえると助かります。

Tsuchiya2 commented 12 months ago

VocabularyEntriesとVocabularyNotesの箇所は概ね良さそうに見えましたが、念のため各テーブルと関係性をコメント欄に説明をお願いできますか。


choicesテーブル周りですが...問題(Questions)テーブルがそもそも必要ではないでしょうか?その問題が4択から選択する形だとすると、以下のようなテーブル・カラムが必要かと思いましたが、作成されるアプリケーションと比較して、以下を参考に修正した方が良いかもしれません。(以下が正解ということではありません。参考までに。)

Questionsテーブル:bodyカラム Choicesテーブル:question_idカラム、body(1選択肢辺りの文章) Answersテーブル:question_idカラム、choice_idカラム、user_idカラム Documentsテーブル:....(一度ご自身でお考えください)

0902-max commented 12 months ago

回答ありがとうございます。 https://gyazo.com/b1c0a0a57e73b5949f43b694d985438f Image from Gyazo

■ VocabularyNotes ・単語帳の大枠のデータベースで、usersテーブルに紐つけて各ユーザーの単語帳を作れるし、確認できる。

■VocabularyEntries ・VocabularyNotesテーブルで作成されている単語帳の中身の単語と意味を保存しておけるテーブルです。単語一つ一つ確認できたり、usersテーブルとリレーションをつなげることで追跡もしやすいかなと思って繋げています。usersテーブルとつなげるかは悩みました。

■Choicesテーブル ・全てのものをchoicesテーブルのカラムで再現しようとしていて、今自主的にこのアプリを制作できるか試しているのですが、choicesテーブルとdocumentsテーブルのところがうまくいかず、悩んでいました。テーブルを増やしてしまうとリレーションが複雑になりそうで中々できなかったです。

Tsuchiya2 commented 12 months ago

概ね良いかと思います。LGTMです。