これを処理する適切な方法は、学生 ID とマークを保持する別の正規化されたテーブルを使用することです。INSERT IGNORE
学生情報をテーブルに挿入してから、学生ごとに複数の行で表にstudent
マークを挿入するために使用します。marks
これにより、テーブルに追加された各マークとともに日付やその他の情報 (どのコースに属しているかなど) を保存することもできます。通常、行の作成に使用することはお勧めしませんINSERT IGNORE
が、行が存在するかどうかを最初にコードで確認し、存在しない場合にのみ挿入することに注意してください。
CREATE TABLE marks (
markID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
studentID INT NOT NULL,
mark VARCHAR() NOT NULL,
markdate DATETIME NOT NULL
);
/* First execute the insert, which will ignore errors if it already exists */
INSERT IGNORE INTO student (ID, name) VALUES ($id, '$name');
/* Then insert the new marks. Loop to add as many new marks as needed */
INSERT INTO marks (studentID, mark, markdate) VALUES ($id, '$marks', NOW());