0

n個の列を持つことが可能であることは知っていますが、それは適切なmysqlの「コーディング標準」ですか?

これが私がやっていることです:

私は、studentテストスコアを含むすべての学生情報を含むテーブルです:

student
-------
studId
name
age
gender
testId

個々のテストの回答をテーブル内に配置する代わりに、各学生のテスト結果を保持するstudentという名前の別のテーブルを作成しました。testAnswers

testAnswers
-----------
testId
ques1
ques2
.
.
.
quesN

テーブル内の各エントリは、testAnswersテーブル内の特定の生徒に対応していますstudent

もちろん、テストの質問は毎年変更される可能性があるため、質問を追加したり質問を削除したりできる管理者がいます。したがって、管理者が回答を削除した場合、それは列の 1 つが削除されることを意味します。

繰り返しになりますが、これはmysqlのテーブルの列を編集および削除できることを知っていますが、適切な「コーディング標準」ですか?

4

3 に答える 3

1

答えは単純明快です。いいえ。非常に少数のまれなケースを除いて、これは行うべき方法ではありません。

これにアプローチする通常の方法は、データベースを正規化することです。正規化は、(とりわけ)列名を持つテーブルを持つことを回避する標準的な手順に従いますques1, ques2, ques3 ...

このプロセスにより、次の3 つのテーブルを含むデータベースが表示されます。

students - ID、名前、および各生徒に適用されるその他のもの

questions- 各質問の ID と質問テキスト

answers - これは学生間の N:M 関係です: student_id、question_id、answer_value

于 2013-03-30T21:04:13.550 に答える
0

...もちろん 2 つのテーブル、3 つを使用することもできます。testAnswers テーブル (student テーブルへの REFERENCE を使用) にも studId 列を挿入し、SELECT クエリで INNER JOIN testAnswers ON student.studId=testAnswers.studId を挿入することを忘れないでください。 (データを読み取るため)。

于 2013-03-30T21:37:16.157 に答える