質問: プログラミングをやり始めて少しの初心者です。質問に至らぬところがございましたら申し訳ございません。 現在 PHPとMySQLを使用してプログラミングの勉強をしています。 そして先程データベースをどのようにするのかを考えながら試していた所、重複するデータを多くINSERTしていることが分かりました。 重複するデータを挿入することが多くなってしまう場合、それは、データベースで重複を阻止するのか、PHPで重複を阻止するのかどちらでやるべきなのか。どのようにしたら良いのでしょうか。 現在MySQLを使用しており、その列をUNIQUEにすることで、重複するデータが入ることはなくなりましたが、このPHPのプログラムではDuplicatedな値を多くINSERTしてしまっています。 プログラムを1度動かすと 1割程が新規にINSERTされて残りの、9割程がDuplicatedな値をINSERTしてしまっています。この場合、Duplicatedな値をMySQLへINSERTするのではなくて、PHPで一度処理をしてからMySQLへINSERTするのが良いのでしょうか? ※追記です 自分で読み直したらわかりにくかったため追記をさせていただきます。 PHP(9割重複したデータ) → MySQL(UNIQUE) ・UNIQUEなので重複したデータはテーブルには入っていないが、入らないデータが多くINSERTされていることが不安 PHP(ここで重複を取り除く) → MySQL(UNIQUE) ・MySQLの方に重複処理を任せたほうがいいのかのかどうなのか。(Uniqueに任せる) この2つのやり方どちらでやるのか正解なのかを知りたいです。
回答: 重複とはなにをもって重複と判断していますか? テーブルにユニークなカラム(主キーまたはユニークキー属性のあるカラム)が あれば重複は起こりません 逆にユニークなカラムがなければSQL側で制限するのには工夫が必要です。