Introduction aux jointures SQL

Formation

En Ligne

Prix sur demande

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Description

  • Typologie

    Formation

  • Méthodologie

    En ligne

Grâce à cette formation vous pourrez acquérir les connaissances nécessaires qui vous permettrons d’ajouter des compétences à votre profil et obtenir de solides aptitude qui vous offriront de nombreuses opportunités professionnelles.

Questions / Réponses

Posez une question et d'autres utilisateurs vous répondront

À qui souhaitez-vous addresser votre question?

Nous ne publierons que votre nom et votre question

Le programme

Introduction du cours

Ce tutoriel a pour but de vous faire découvrir les jointures en SQL. Pour le comprendre, il est nécessaire d'avoir lu la partie Les bases de données du tutoriel officiel de PHP/MySQL.

Attention : pour faciliter votre compréhension des différents concepts, je vous conseille de lire ce tutoriel en entier et dans l'ordre proposé, vous risqueriez sinon de rater certains enchaînements logiques.

Pré-requis : les bases de données relationnelles

Avant d'utiliser les jointures, il faut que votre base de données relationnelle soit correctement conçue. Vous apprendrez dans cette partie quelques règles de base (loin d'être exhaustives) dans la conception des bases de données.

Pour ce faire, utilisons un exemple.

Citation

Vous êtes informaticien dans une agence de presse et vous devez stocker les articles des journalistes de l'agence dans une base de données relationnelle. Vous devez stocker pour chaque article son titre, son contenu et sa date, ainsi que le nom, le prénom et l'adresse e-mail de l'auteur. Plusieurs journaux achètent des articles à l'agence de presse en question. Celle-ci voudrait savoir quels journaux ont acheté quels articles. L'agence désire par ailleurs connaître, en plus de leur nom, l'adresse des journaux.

Règle n°1 : Regroupez dans une même table (= tableau de données) toutes les caractéristiques d'un élément.

Règle n°2 : Si une information se répète plusieurs fois dans une même table, il est préférable de créer une table dédiée à ce type d'information avec une relation entre les deux tables.

Ces règles n'étant pas faciles à comprendre de prime abord, appliquons-les à notre exemple.

On aurait a priori tendance à créer une table "articles" ayant la structure suivante (notez l'absence de caractères spéciaux, d'espaces et d'accents dans les noms des champs) :

articles

id_article

titre_article

nom_auteur

prenom_auteur

email_auteur

texte_article

date_article

Ce qui donne, avec quelques données (exemple) :

id_article

titre_article

nom_auteur

prenom_auteur

email_auteur

texte_article

date_article

1

Wall Street repasse dans le vert

Dupont

Jacques

jacques_dupont@email.com

blabla

26/01/2010

2

La Fed garde son taux directeur inchangé

Dubois

Marcel

mdubois@email.com

blibli

27/01/2010

3

Des pensionnés très occupés !

Dupont

Jacques

jacques_dupont@email.com

bloblo

28/01/2010

4

L'entretien du réseau routier laisse à désirer

Leroy

Nicole

nicole.leroy@email.com

blublu

28/01/2010

On remarque cependant qu’il y a répétition des informations sur l'auteur. En effet, un auteur peut avoir écrit plusieurs articles !

On va donc créer une table "auteurs" en relation avec la table "articles" pour éviter d'avoir une répétition inutile de toutes les informations sur les auteurs. Cela permet en pratique, si vous voulez modifier un élément (par exemple l'adresse e-mail de l'auteur), de ne devoir le faire qu’une seule fois !

La structure de la table auteurs est la suivante :

auteurs

id_auteur

nom_auteur

prenom_auteur

email_auteur

Ce qui donne en données :

id_auteur

nom_auteur

prenom_auteur

email_auteur

1

Dubois

Marcel

mdubois@email.com

2

Dupont

Jacques

jacques_dupont@email.com

3

Leroy

Nicole

nicole.leroy@email.com

La nouvelle structure de la table "articles" est la suivante :

articles

id_article

titre_article

id_auteur

texte_article

date_article

Ce qui donne en données :

id_article

titre_article

id_auteur

texte_article

date_article

1

Wall Street repasse dans le vert

2

blabla

26/01/2010

2

La Fed garde son taux directeur inchangé

1

blibli

27/01/2010

3

Des pensionnés très occupés !

2

bloblo

28/01/2010

4

L'entretien du réseau routier laisse à désirer

3

blublu

28/01/2010

On a donc créé une relation numérique entre deux tables pour éviter la répétition d'informations. On comprend l'importance du champ "id" de chaque table qui doit absolument prendre une valeur différente/unique pour chaque ligne de la table.

Le champ de type "id" (première colonne), qui contient un identifiant unique pour chaque élément (ligne) de la table, est appelé clé primaire (Primary Key = PK).

Dans la table articles, on a un autre type de champ "id", qui peut en effet prendre plusieurs fois la même valeur. C'est ce qu'on appelle une clé étrangère (Foreign Key = FK). Il correspond à la clé primaire d'une autre table et permet de créer une relation avec celle-ci.

Dans notre cas, le champ (clé étrangère) "id_auteur" de la table articles correspond au champ (clé primaire) "id_auteur" de la table auteurs. On nomme généralement de la même façon la clé primaire et la clé étrangère relative. La relation PK – FK est appelée relation 1 – N.

Règle n°3 : Il peut arriver que vous rencontriez une relation N – N, c'est-à-dire une relation où l'on a une répétition des éléments d'une table A dans une autre table B, et également une répétition de plusieurs éléments de la table B dans la table A. Pour optimiser les tables et éviter ces répétitions, il faut dans ce cas créer une table intermédiaire dans laquelle on stockera uniquement des "id".

Mise en pratique :

Reprenons notre exemple. En plus des tables articles et auteurs, créons la table "journaux".

journaux

id_journal

nom_journal

adresse_journal

id_journal

nom_journal

adresse_journal

1

Le Monde

Paris

2

Le Figaro

Paris

3

Le Soir

Bruxelles

4

Libération

Paris

On veut stocker les articles achetés par ces journaux à l'agence de presse. Un journal peut avoir acheté plusieurs articles, et un article peut avoir été acheté par plusieurs journaux. On a donc une relation N – N.

Il ne nous est pas possible de stocker plusieurs articles pour un même journal (on a une seule ligne par journal dans la table journaux), il n'est pas non plus possible de faire l'inverse (on ne peut pas stocker plusieurs journaux pour un même article, on a également une seule ligne par article dans la table articles). On est donc obligés de...

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Introduction aux jointures SQL

Prix sur demande