私はQuestions
そのように見えるテーブルを持っています
ご覧のとおり、ほぼ同じ 2 つの id 行があります: id
, question_id
. id
- は自動インクリメントされ、各質問の一意の ID であり、question_id
- は、たとえば、コース 1 のレッスン 1 には質問 1、2、3、4、5 のような 5 つの質問があります。コース 1 のレッスン 2 には 3 つの質問があります: 1、2、 3 など。つまり、一意course_id
のlesson_id
組み合わせごとに自動インクリメント フィールドのようなものです。データベース構造の読みやすさを維持し、データベースを台無しにしないために、値間の関連テーブルの束を使用して、にquestion_id
基づいて手動で追加することにしました。course_id
lesson_id
course-lesson-question unique id
最初の質問は
あなたはどう思いますか、それは良い解決策ですか?このデータベースをどのように設計しますか?
問題は、指定された新しい質問を挿入したいときにcourse_id
、フィールドが自動インクリメントされることですが、lesson_id
id
2 番目の質問
一意の組み合わせquestion_id
に基づいて最後の列の値を取得するにはどうすればよいですか。たとえば、コース 1 のレッスン 2 に 1、2、3 の 3 つの質問があり、4 番目の質問を追加したい場合 (私が言ったように、現在のデータベース設計では手動で値を挿入しています)、どうすればそれを知ることができますか?もちろん 1 レッスン 2 は 3 番目で、新しい質問を (last_number=3)++=4? で挿入します。course_id
lesson_id
question_id
アップデート
状況は少し複雑ですが、説明しようと思います。
オンラインのチュートリアル Web サイトです。さまざまなコースがあり、各コースにはたくさんのレッスンがあります。現在、教師が質問を投稿し、ユーザーが専用の質問を取得する、質問と回答の部分を設計しています。
現在、テーブルquestions
はコース>レッスンベースの質問専用です。
question_from_to_assoc
- 質問の作成者と受信者のユーザーの間の関連付けを作成するためのものです。たとえば、admin (id=.) は、id=5 のユーザーに質問を送信します。
qa_assoc
- 質問と回答の関連付けテーブル。