私はオンライン試験モジュールに取り組んでいますが、最初にデータベースを作成しました。問題の数が固定されていると、私は10問と複数のユーザーがいます要件は、私は何をすべき私は50個の質問の試験を実施したい異なる場合や、管理者が要件今オンライン検定のためのデータベースを設計するより良い方法
CREATE TABLE `test_sheet` (
`user_id` varchar(200) NOT NULL,
`q1` int(10) DEFAULT '0',
`q2` int(10) DEFAULT '0',
`q3` int(10) DEFAULT '0',
`q4` int(10) DEFAULT '0',
`q5` int(10) DEFAULT '0',
`q6` int(10) DEFAULT '0',
`q7` int(10) DEFAULT '0',
`q8` int(10) DEFAULT '0',
`q9` int(10) DEFAULT '0',
`q10` int(10) DEFAULT '0',
`ip_address` varchar(100) DEFAULT 'Not Available',
`score` int(50) DEFAULT NULL,
`start_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`random_question` varchar(500) DEFAULT NULL,
`passedTime` varchar(500) DEFAULT NULL,
`remainTime` varchar(500) DEFAULT NULL,
`last_update_time` varchar(500) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ごとにこの
insert into `test_sheet`(`user_id`,`q1`,`q2`,`q3`,`q4`,`q5`,`q6`,`q7`,`q8`,`q9`,`q10`,`ip_address`,`score`,`start_time`,`random_question`,`passedTime`,`remainTime`,`last_update_time`) values ('[email protected]',0,0,0,0,0,0,0,0,0,0,'Not Available',0,'2016-06-11 14:46:52','1,5,4,2,3,10,9,7,6,8','59','5258','2016-06-11 14:47:25');
ようtest_sheetテーブルを質問の数を変更することができます任意の時間私はこのような別のオプションを持っています
User_ID || Q_ID || ANS_ID
[email protected] || 1 || 4
[email protected] || 2 || 3
[email protected] || 3 || 2
[email protected] || 4 || 4
[email protected] || 5 || 1
[email protected] || 1 || 2
[email protected] || 2 || 4
[email protected] || 3 || 2
[email protected] || 4 || 1
[email protected] || 5 || 3
今私が受験のために50の以上の質問やユーザーを持っているが、300かもしれませので、行は約15000以上になりますので、より良い方法やその他のアイデアは何である
代替オプションのように、質問のために別のテーブルを作成する必要があります。次に、試験の質問数に制限されません。 – DoubleT28
最初に正規化を参照してください。 – Kason
私は質問のために別のテーブルを持っています。列は質問、qid、op1、op2、op3、op4、correct_op、no_per_questionです..上記の表は、試験が開始され、前回の質問は試行されているか、電気が試験中に消えてしまったので、私はそれぞれの質問にユーザーIDと選択されたオプションを保存しています... –