にリンクtblquestions
しているanswers
場合は、最初に回答を追加してから質問を追加する必要があります。そうしないと、親の前に子を追加しようとしているため、参照整合性を維持できません。(常に子の前に親を追加してください。)
これを行う1つの方法があります。tbl_question
、の 2 つのテーブルを使用してみましょうtbl_answer
。
tbl_question
少なくとも 2 つの列があります:
tbl_answer
正しい可能性のある回答が含まれています (または、1 つの質問に一連のオプションの回答を追加したい場合は間違っています)。
- question_id:
int
、FK へtbl_question
id
- answer_option:
tinyint(1)
/ char(1)
、単一の質問に対するオプションの回答のセット
- 答え:
text
- is_correct:
tinyint(1)
/ byte(1)
(質問に対する正解をマークします)
question_id
とanswer_option
複合 PKを作成します。これで、2 つのテーブルをid
/で結合しquestion_id
て、1 つの質問に対するすべてのオプションの回答を取得できます。そのうちの 1 つだけが正しいとマークされていることを確認してください。
私がこれを書いている間にあなたはすでに回答を受け入れていますが、私はこの回答を投稿します。tombom が言ったように、FK が間違った方法で確立されています。
結合を使用してテーブルを設定するチュートリアルを尋ねることで、何を意味するのかわかりません。最初に外部キーの概念に精通している必要があります。その後、好きな方法でテーブルを結合できます。ここにいくつかのリンクがあります。
FK の概念は、別のテーブルの列に関連する非常に単純な列です (外部キー列の値を使用して 2 つ以上のテーブルを結合します)。これらのテーブル/値の間に FK 制約を追加することを忘れないでください。これにより、制約を破るようなことをしようとすると RDBMS が警告します。存在しない質問に回答を追加しようとしたときのように。
そして最後に、参照整合性が気になる場合は InnoDB を使用してください (すべての DB 設計者/マネージャー/管理者がそうであるように)。