SQL c'est quoi?

Qu'est-ce que le SQL? Explication de la raison pour laquelle SQL est rarement utilisé dans Rails et du rôle d'ActiveRecord. Résolution de la confusion des développeurs novices.

bamchi 495

Qu'est-ce que SQL? Et pourquoi n'utilisons-nous presque pas SQL dans Rails? - Raison d'être d'ActiveRecord

De nombreux développeurs débutants se sentent confus à ce stade.

  • Si nous utilisons une base de données, n'avons-nous pas besoin de SQL?

  • Mais dans Rails, le service Web fonctionne presque sans SQL?

  • Quel est exactement le rôle d'ActiveRecord pour que cela soit possible?

Cet article explique clairement ce point central.


1⃣ Qu'est-ce que SQL? (Résumé de l'essentiel)

SQL (Structured Query Language) est

le langage officiel pour interagir avec les bases de données.

Lorsque vous effectuez des opérations sur une base de données, vous utilisez SQL.

Exemple:

SELECT * FROM users WHERE age > 20;

Cette phrase signifie

"Récupérez les enregistrements de la table des utilisateurs où l'âge est supérieur à 20".

Les tâches que vous pouvez effectuer avec SQL se résument à quatre:

  1. Créer - Créer des données

  2. Lire - Lire des données

  3. Mettre à jour - Mettre à jour des données

  4. Supprimer - Supprimer des données

En d'autres termes, CRUD.

Tous les services Web finissent par

demander un CRUD à la base de données via SQL.


2⃣ Cependant, dans Rails, nous n'utilisons presque pas SQL. Pourquoi? Parce qu'il y a ActiveRecord.

L'un des composants clés de Rails est ActiveRecord.

ActiveRecord est un ORM (Object Relational Mapping).

Qu'est-ce que cela signifie?


3⃣ Qu'est-ce qu'un ORM? Un système qui relie automatiquement les "objets ↔ bases de données (tables)"

Les langages de programmation utilisent des objets.

user = User.new(name: "bamcoding")

Les bases de données utilisent des enregistrements.

Ligne 1 de la table des utilisateurs

Le rôle de l'ORM est unique:

Relier automatiquement les "objets du monde Ruby" aux "enregistrements du monde de la base de données".

Cela nous permet de manipuler

la base de données comme nous manipulons les objets.


4⃣ Remplacement de SQL par ActiveRecord

Exemple 1) Lecture de données (Read)

SQL:

SELECT * FROM users;

Rails:

User.all

Exemple 2) Recherche de conditions

SQL:

SELECT * FROM users WHERE age > 20;

Rails:

User.where("age > 20")

Ou de manière plus Ruby-esque:

User.where(age: 21..)

Exemple 3) Création (Create)

SQL:

INSERT INTO users (name, age) VALUES ('bamcoding', 34);

Rails:

User.create(name: "bamcoding", age: 34)

Exemple 4) Mise à jour (Update)

SQL:

UPDATE users SET age = 35 WHERE id = 1;

Rails:

user = User.find(1)
user.update(age: 35)

Exemple 5) Suppression (Delete)

SQL:

DELETE FROM users WHERE id = 1;

Rails:

user = User.find(1)
user.destroy

5⃣ Essentiel: Les développeurs Rails manipulent la base de données avec "Ruby" et non avec SQL

Parce qu'ActiveRecord

convertit mes commandes Ruby

en SQL en arrière-plan.

En d'autres termes,

Même si les développeurs n'utilisent pas SQL, Rails génère et exécute du SQL en interne.

Cela permet aux développeurs

de se concentrer sur la conception de la logique métier

sans avoir à gérer directement la base de données.


6⃣ La vraie raison pour laquelle ActiveRecord est "puissant"

La force d'ActiveRecord ne se résume pas simplement à "ne pas avoir à utiliser SQL".

Ce n'est qu'un avantage superficiel.

Les quatre véritables avantages sont les suivants.


1) Le modèle (Model) et la table de la base de données sont automatiquement liés

Lorsque vous créez un modèle User,

il est automatiquement lié à la table users.

  • Pas besoin de nommer les tables

  • Pas besoin de spécifier de mappages

  • Rails gère automatiquement la liaison selon la convention

Cela accélère considérablement le développement.


2) La configuration des relations est extrêmement intuitive

Exemple:

class Building < ApplicationRecord
  has_many :rooms
end

class Room < ApplicationRecord
  belongs_to :building
end

Ces deux lignes

font que Rails effectue automatiquement les actions suivantes:

  • Créer un JOIN SQL approprié

  • Prend en charge l'appel building.rooms

  • Gérer automatiquement la clé étrangère building_id

  • Optimiser les requêtes basées sur les relations

Pour implémenter cela directement en SQL,

vous auriez besoin de dizaines de lignes de JOIN, INDEX, conditions.

ActiveRecord accomplit tout cela

en deux lignes seulement.


3) Rails gère la sécurité, la prévention des injections, et l'optimisation des requêtes

Les risques liés à l'utilisation directe de SQL:

  • Injection SQL

  • Dégradation des performances due à des requêtes incorrectes

  • Abus de SELECT *

  • Requêtes lentes en raison d'INDEX manquants

ActiveRecord prévient la plupart de ces problèmes ou

convertit en SQL sécurisé.

C'est le filet de sécurité du développeur Web.


4) Une expérience de développement parfaitement intégrée avec la syntaxe Ruby

Vous pouvez assembler des requêtes de manière Ruby-esque:

User.where(active: true)
    .where("age > ?", 20)
    .order(created_at: :desc)
    .limit(10)

Cela ressemble à du code Ruby,

mais génère du SQL optimisé en interne.

Cette capacité de "composition de code"

fait d'ActiveRecord l'un des ORM les plus puissants.


7⃣ Conclusion - Pourquoi les développeurs Rails n'utilisent presque pas SQL

ActiveRecord a abstrait toute la complexité de SQL

Les développeurs n'ont qu'à écrire du code Ruby

Le modèle-relation-requête-stockage-suppression se fait comme manipuler des objets Ruby

La productivité, la sécurité et la maintenabilité s'améliorent de manière écrasante

ActiveRecord n'est pas seulement un simple ORM,

c'est le moteur central de la productivité de Rails.

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Continuer la lecture

Get notified of new posts

We'll email you when Bamchi Blog publishes new content.

Your email will only be used for new post notifications.