Je ne suis pas sûr que stackoverflow soit un endroit pour une question aussi générale, mais essayons.
Ayant été exposé à la nécessité de stocker des données d'application quelque part, j'ai toujours utilisé MySQL ou sqlite, simplement parce que c'est toujours fait comme ça. Comme il semble que le monde entier utilise ces bases de données (la plupart des produits logiciels, des frameworks, etc.), il est assez difficile pour un développeur débutant comme moi de commencer à se demander si c'est une bonne solution ou non.
Ok, disons que nous avons une logique orientée objet dans notre application, et que les objets sont liés les uns aux autres d'une manière ou d'une autre. Nous devons faire correspondre cette logique à la logique de stockage, donc les relations entre les objets de la base de données sont également nécessaires. Cela nous amène à utiliser une base de données relationnelle, et je suis d'accord avec cela - pour faire simple, les lignes de notre table de base de données devront parfois avoir des références aux lignes d'autres tables. Mais pourquoi utiliser le langage SQL pour interagir avec une telle base de données ?
La requête SQL est un message texte. Je peux comprendre que c'est cool pour comprendre réellement ce qu'il fait, mais n'est-ce pas idiot d'utiliser des noms de tables et de colonnes en texte pour une partie de l'application que personne ne verra jamais après le déploiement ? Si vous aviez dû écrire un stockage de données à partir de zéro, vous n'auriez jamais utilisé ce genre de solution. Personnellement, j'aurais utilisé un bytecode de 'requête db compilée', qui serait assemblé une fois dans une application client et transmis à la base de données. Et il aurait sûrement nommé les tables et les colonnes par des numéros d'identification, et non par des chaînes ascii. Dans le cas de changements dans la structure des tables, ces requêtes en octet pourraient être recompilées selon le nouveau schéma de la base de données, stockées en XML ou quelque chose comme ça.
Quels sont les problèmes de mon idée ? Y a-t-il une raison pour que je ne l'écrive pas moi-même et que j'utilise plutôt une base de données SQL ?
EDIT Pour que ma question soit plus claire. La plupart des réponses affirment que SQL, étant une requête texte, aide les développeurs à mieux comprendre la requête elle-même et à la déboguer plus facilement. Personnellement, cela fait un moment que je ne vois plus de personnes écrire des requêtes SQL à la main. Tous ceux que je connais, y compris moi, utilisent des ORM. Cette situation, dans laquelle nous construisons un nouveau niveau d'abstraction pour cacher le SQL, nous amène à nous demander si nous avons besoin du SQL ou non. Je vous serais très reconnaissant si vous pouviez donner quelques exemples dans lesquels SQL est utilisé sans ORM à dessein, et pourquoi.
EDIT2 SQL est une interface entre un humain et une base de données. La question est pourquoi devons-nous l'utiliser pour l'interaction application/base de données ? Je demande toujours des exemples d'êtres humains écrivant/déboguant du SQL.