Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est l'importance des contraintes telles que NOT NULL et FOREIGN KEY si je contrôle toujours l'entrée de ma base de données avec PHP ?

Vous partez faire des erreurs avec PHP, 100% garanti. PHP est procédural. Ce que vous voulez, ce sont des contraintes déclaratives. Vous voulez dire à l'ensemble de la pile :"Ce sont les contraintes sur les données, et ces contraintes ne peuvent pas être violées." Vous ne voulez pas faire grand-chose avec "Étape 1 ... Étape 2 ... Étape 3 ... Étape 432 ...", comme méthode d'application des contraintes sur les données, car

  • vous allez vous tromper
  • lorsque vous le changerez plus tard, vous oublierez ce que vous avez fait maintenant
  • Personne d'autre ne connaîtra toutes ces contraintes implicites comme vous les connaissez maintenant, et cela inclut votre futur moi
  • il faut beaucoup de code pour appliquer les contraintes correctement et tout le temps - le serveur de base de données a déjà ce code, mais êtes-vous prêt à l'écrire ?

La question devrait en fait être formulée :"Pourquoi devrais-je utiliser PHP pour appliquer ces contraintes, alors que je pourrais le faire avec MySQL ?"