Archives de Catégorie: STG

Le langage SQL

Le SQL (Structured Query Language) est un langage informatique normalisé qui sert à effectuer des opérations sur des bases de données. La partie langage de manipulation de données de SQL permet de rechercher, d’ajouter, de modifier ou de supprimer des données dans les bases de données.

En plus du langage de manipulation de données, la partie langage de définition de données permet de créer, et de modifier l’organisation des données dans la base de données, la partie langage de contrôle de transaction permet de commencer et de terminer des transactions, et la partie langage de contrôle de données permet d’autoriser ou d’interdire l’accès à certaines données à certaines personnes.

Dans le concret, comment ça marche ?

Reprenons notre exemple :

Nous allons modéliser ces données dans ce que l’on appel un modèle logique des données (MLD) :

COMMANDE (NCOM,DATECOM,#NCLI)

CLIENT (NCLI,NOM,ADRESSE,LOCALITE)

DETAILS (#NCOM,#NPRO,QCOM)

PRODUITS (NPRO,LIBELLE,PRIX)

Le modèle logique des données sert à modéliser par ligne une table d’une base de données comme ci-dessus, vous n’avez pas besoin de construire une base de données donc ne nous attardons pas là-dessus. Par contre, on va regarde en détails les champs (cette fois ci ce son des champs car nous sommes en base de données cf commentaire de charlotte).

Les champs soulignés sont les clés primaires de la table : la clé primaire est unique et fait référence à une table.
Les champs avec un # sont des clés étrangères : elles sont référence à une autre table (une clé étrangère est une clé primaire d’une autre table)

Ces clés lient les tables entres elles et vont nous permettre d’utiliser le langage de requête SQL.

Les commandes :

La commande la plus basique en SQL est la commande SELECT. Elle permet de pouvoir sélectionner les données de tables d’une base de données.

Syntaxe : SELECT « nom de colonne » FROM « nom de table »
En Français : Sélectionner « telle colonne » DE « telle table »

Exemple : Nous allons sélectionner tous les noms de clients contenus dans la table client.

SELECT NOM FROM CLIENT ;

Le résultat que nous aurons sera la liste des noms classés par nom dans un tableau simple :

NOM
GILLET
xxxxxx
xxxxxx

C’est une commande simple, basique du SQL qu’il est impératif de bien comprendre !

Ensuite, le DISTINCT, très simple. Comment devons-nous procéder pour ne sélectionner que des éléments distincts?
Tout ce dont nous avons besoin est d’ajouter DISTINCT après SELECT.

Syntaxe : SELECT DISTINCT « nom de colonne » FROM « nom de table »
En Français : Sélectionner de façon distinct « telle colonne » DE « telle table »

Exemple : Nous allons sélectionner la liste des dates de bons de commande dans la table COMMANDE. Pour une entreprise il n’est pas nouveau, au contraire, d’avoir plusieurs commande par jour, la commande DISTINC va regrouper les dates pour éviter les doublons.
Imaginons donc que nous avons 4 commandes en date du 02/01/2009 :

Avec un select simple nous aurons :

SELECT DATECOM FROM COMMANDE ;

DATECOM
02/01/2009
02/01/2009
02/01/2009
02/01/2009
05/10/2009

Avec un DISTINCT :

SELECT DISTINCT DATECOM FROM COMMANDE ;

DATECOM
02/01/2009
05/10/2009

Autre commande très importante : la clause WHERE.

Il est aussi possible et très courant de sélectionner conditionnellement les données d’une table. En utilisant la clause WHERE, nous allons pouvoir ajouter une condition à la sélections des données comme par exemple sélectionner les produits dont le prix de vente est supérieur à 200€ pour notre exemple.

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE « condition »
En Français : Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est) « condition »

Exemple : nous allons les produits par nom et prix dont le prix de vente est supérieur à 200 €

SELECT LIBELLE,PRIX FROM PRODUITS
WHERE PRIX > 200;

LIBELLE PRIX
CHEV.SAPIN 400x6x4 220
PL.HETRE 200x20x2 230

Puisque nous avons commencé à utiliser des chiffres, la question qui nous vient à l’esprit naturellement est de nous demander s’il est possible d’effectuer des calculs arithmétiques avec ces chiffres, tels que l’addition ou le calcul de la moyenne. La réponse est oui ! SQL dispose des fonctions arithmétiques suivantes :

AVG = Moyenne
COUNT = Compte chaque enregistrement du champ specifié
MAX = Donne la valeur maximale du champ spécifié
MIN = Donne la valeur minimale du champ spécifié
SUM = Exécute une somme des valeurs du champ spécifié

Bien sur, nous avons les signes classiques arithmétiques :

– =

– <

– >

– <> (different)

Complément à ces conditions :

Nous avons vu que le mot-clé WHERE peut s’utiliser pour sélectionner conditionnellement des données d’une table. Cette condition peut être une condition simple (comme celle de la section précédente), ou combinée. Les conditions combinées se constituent de plusieurs conditions simples connectées par AND ou OR. Une seule instruction SQL peut contenir un nombre illimité de conditions simples.

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE AND / OR « condition »

En Français : Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est) « condition » ET « condition »

Exemple : Nous allons sélectionner le champ nom de la table client pour le client GILLET.

SELECT NOM FROM CLIENT
WHERE NOM=’GILLET’;

NOM
GILLET

Le mot clé IN.

Deux utilisations du mot-clé IN sont possibles dans SQL, et cette section décrit celle qui est relative à la clause WHERE. Utilisé dans ce contexte, ce mot clé nous permet de connaître exactement la valeur des valeurs retournées que nous souhaitons voir au moins pour l’une des colonnes.

On peut la traduire en Français par « fait partie de »

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE « nom de colonne » IN (‘valeur1’, ‘valeur2’, …)

En Français : Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est) « nom de colonne » (fait parti de) (‘valeur1’, ‘valeur2’, …)

Exemple : Nous allons utiliser un autre exemple car, le peu de données dans notre base d’exemple se prête difficilement au jeu.

Sélectionner tous les enregistrements des magasins de Los Angeles et de San Diego dans la Table Store_Information,

Table Store_Information

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999
San Francisco

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

il faut saisir :

SELECT * FROM Store_Information WHERE store_name IN (‘Los Angeles’, ‘San Diego’);

Résultat :

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999

Alors que le mot-clé IN aide les utilisateurs à limiter le critère de sélection à une ou plusieurs valeurs distinctes, le mot-clé BETWEEN permet de sélectionner un intervalle.

Syntaxe :SELECT « nom de colonne » FROM « nom de table »WHERE « nom de colonne » BETWEEN ‘valeur1’ AND ‘valeur2’

Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est comprise entre) « valeur 1 » ET « valeur2 »

Cette instruction sélectionnera toutes les lignes dont les colonnes ont une valeur comprise entre ‘valeur1’ et ‘valeur2’.

Exemple :

pour visualiser toutes les informations de vente comprises entre le 6 janvier 1999 et le 10 janvier 1999 dans la Table Store_Information,

SELECT * FROM Store_Information WHERE Date BETWEEN ’06-Jan-1999′ AND ’10-Jan-1999′

Résultat :

store_name Sales Date
San Diego

250 €

07-Jan-1999
San Francisco

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

Le LIKE est un autre mot-clé utilisé dans la clause WHERE.LIKE permet d’effectuer une recherche basée plutôt sur un modèle qu’une spécification exacte de ce qui est souhaité (comme dans IN) ou une définition d’un intervalle (comme dans BETWEEN). On peut la traduire en Français par « ressemble à » :

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE « nom de colonne » LIKE {modèle}

{modèle} représente souvent des caractères de remplacement. Voici quelques exemples :

  • ‘A_Z’ : toutes les chaînes commençant par ‘A’, ou un autre caractère, et terminant par ‘Z’. Par exemple, ‘ABZ’ et ‘A2Z’ satisferaient la condition, alors ‘AKKZ’ ne le ferait pas (car il y a deux caractères entre A et Z au lieu d’un).
  • ‘ABC%’ : toutes les chaînes commençant par ‘ABC’. Par exemple, ‘ABCD’ et ‘ABCABC’ satisferaient la condition.
  • ‘%XYZ’ : toutes les chaînes terminant par ‘XYZ’. Par exemple, ‘WXYZ’ et ‘ZZXYZ’ satisferaient la condition.
  • ‘%AN%’ : toutes les chaînes contenant le modèle ‘AN’ quelle que soit sa position. Par exemple, ‘LOS ANGELES’ et ‘SAN FRANCISCO’ satisferaient la condition.

Toujours sur notre table Store_Information

store_name Sales Date
LOS ANGELES

1500 €

05-Jan-1999
SAN DIEGO

250 €

07-Jan-1999
SAN FRANCISCO

300 €

08-Jan-1999
BOSTON

700 €

08-Jan-1999

Pour rechercher tous les magasins dont le nom contient ‘AN’, il faut saisir :

SELECT *
FROM Store_Information
WHERE store_name LIKE ‘%AN%’;

Résultat :

store_name Sales Date
LOS ANGELES

1500 €

05-Jan-1999
SAN DIEGO

250 €

07-Jan-1999
SAN FRANCISCO

300 €

08-Jan-1999

Nous allons maintenant voir la clause ORDER BY.
Jusqu’à présent, nous avons vu comment extraire des données d’une table à l’aide des commandes SELECT et WHERE. Il convient souvent de lister les résultats dans un ordre particulier. Le classement peut se faire dans un ordre ascendant ou descendant, ou peut être établi par des valeurs saisies en chiffres ou en lettres. Dans de tels cas, il est possible d’utiliser le mot-clé ORDER BY pour atteindre notre objectif.

La syntaxe d’une instruction ORDER BY est comme suit :

Syntaxe : SELECT « nom de colonne » FROM « nom de table » [WHERE « condition »] ORDER BY « nom de colonne » [ASC, DESC]

Les crochets [] signifient que l’instruction WHERE est optionnelle. Toutefois, si une clause WHERE est déjà présente, elle se trouvera devant la clause ORDER BY. La clause ASC ou DESC provoque respectivement un tri des résultats dans un ordre ascendant ou descendant. En cas d’omission de l’une d’elles, la clause ASC est implicitement appelée, provoquant donc un tri en ordre ascendant par défaut.

Il est possible d’ordonner par plusieurs colonnes. Dans ce cas, la clause ORDER BY ci-dessus devient :

ORDER BY « nom de colonne 1 » [ASC, DESC], « nom de colonne 2 » [ASC, DESC]

Supposons que nous avons choisi l’ordre ascendant pour les deux colonnes, la colonne de sortie sera classée dans un ordre ascendant selon la colonne 1. S’il y a une liaison pour la valeur de la colonne 1, le tri se fera dans un ordre ascendant selon la colonne 2.

Par exemple, pour trier les contenus de la Table Store_Information par montant en dollar, dans un ordre descendant :

Table Store_Information

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999
San Francisco

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

Il faut saisir :

SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY Sales DESC;

Résultat :

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
Boston

700 €

08-Jan-1999
San Francisco

300 €

08-Jan-1999
San Diego

250 €

07-Jan-1999

En plus du nom de colonne, il est également possible d’utiliser une position de colonne (basée sur la requête SQL) pour indiquer la colonne à laquelle nous souhaitons appliquer la clause ORDER BY. La première colonne est 1, la seconde 2, et ainsi de suite. Dans l’exemple précédent, il serait possible d’obtenir les mêmes résultats en utilisant la commande suivante :

SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY 2 DESC;

Nous passons maintenant aux fonctions d’agrégation. Vous souvenez-vous que nous avons utilisé le mot-clé SUM pour calculer les ventes totales de tous les magasins ? Comment pouvons-nous calculer les ventes totales de chaque magasin ? Bien, il y a deux manières : tout d’abord, il est nécessaire de s’assurer d’avoir sélectionné le nom de magasin, ainsi que les ventes totales. Ensuite, tous les chiffres d’affaires doivent êtregroupés par (grouped by) par par magasin. La syntaxe SQL correspondante est :

Syntaxe : SELECT « nom de colonne 1 », SUM(« nom de colonne 2 »)
FROM « nom de table »
GROUP BY « nom de colonne 1 »

Illustrons ce cas de figure à l’aide de la table suivante :

Table Store_Information

store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999

Pour retrouver les ventes totales de chaque magasin, il faut saisir :

SELECT store_name, SUM(Sales) FROM Store_Information
GROUP BY store_name;

Résultat :

store_name SUM(Sales)
Los Angeles 1800 €
San Diego 250 €
Boston> 700 €

Le mot-clé GROUP BY s’utilise lorsque diverses colonnes d’une ou de plusieurs tables sont sélectionnées et qu’un opérateur arithmétique au moins apparaît dans l’instruction SELECT. Nous devons, le cas échéant, regrouper (GROUP BY) toutes les autres colonnes sélectionnées, c’est-à-dire, toutes les colonnes sauf celle(s) utilisée(s) par l’opérateur arithmétique.

Point Très important, les jointures ! Il faut, comme le SELECT, le maitriser et le comprendre.

Pour définir correctement des jointures sous SQL, il faudra se reporter à la plupart des éléments que nous avons exposés jusqu’à présent. Supposons que nous avons les deux tables suivantes :

Table Store_Information

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999
Los Angeles

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

Table Geography

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

Nous souhaitons connaître les ventes par région. La table Geography comprend des informations sur des régions et magasins, et la table Store_Information contient des données relatives aux ventes de chaque magasin. Afin d’obtenir les informations sur les ventes par région, il faut combiner les informations des deux tables. En examinant les deux tables, nous constatons qu’elles sont mises en relation par le champ commun « store_name » (qui est clé primaire et etrangere). Nous allons d’abord décrire l’instruction SQL, puis expliquer l’utilisation de chaque segment :

SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

Résultat :

REGION SALES
East

700 €

West

2050 €

Les deux premières lignes permettent à SQL de sélectionner deux champs : le premier est le champ « region_name » de la table Geography (dont l’alias est REGION), et le second est la somme du champ « Sales » de la table Store_Information (dont l’alias est SALES). Notez comment les alias de tables sont utilisés ici : A1 est l’alias de Geography et A2 de Store_Information. Sans l’alias, la première ligne deviendrait :

SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES

ce qui n’est pas très concis. Par essence, les alias de table sont destinés à faciliter la compréhension des instructions SQL, surtout en présence de plusieurs tables.

Nous passons maintenant à la ligne 3 (à l’instruction WHERE). C’est là où se spécifie la condition de la jointure. Dans ce cas, pour nous assurer que le contenu dans « store_name » de la table Geography corresponde à celui de la table Store_Information, il faut les définir comme valeur égale. L’instruction WHERE est essentielle pour obtenir une requête correcte. Sans l’instruction WHERE appropriée, nous obtiendrons une jointure cartésienne. Les jointures cartésiennes retournent toute combinaison possible des deux tables (ou tout nombre de tables indiqué dans l’instruction FROM). Une jointure cartésienne retournerait donc un résultat d’un total de 4 x 4 = 16 lignes.

Voila ! C’est fini pour la partie SQL ! J’imagine que tout n’est pas bien clair donc vous pouvez poser vos questions.
Dans le prochain article, je vais reprendre tout une série d’exemples à partir de vos cours.

Publicités

Introduction aux bases de données relationnelles

*En informatique, une base de données est un lot d’informations stockées dans un dispositif informatique. Les technologies existantes permettent d’organiser et de structurer la base de données de manière à pouvoir facilement manipuler le contenu et stocker efficacement de très grandes quantités d’informations. wikipédia *

Peu importe le support utilisé pour rassembler et stocker les données (papier, fichiers, etc.), dès lors que des données sont rassemblées et stockées d’une manière organisée dans un but spécifique, on parle de base de données.

Pour introduire un système de base de données relationnel, nous pouvons nous demander en dans un premier comment faisait-on avant ?

Autrefois, les informations étaient stockées de manière physique et souvent complexe à organiser et à retrouver.
Comme sur l’image suivante, nos bases de données étaient de très vastes espaces de stockage des ouvrages, l’information était donc quelque part par là … Bien qu’une bonne organisation du rangement facilitait la recherche grâce à un classement par nature connexes (exemple : Type, style, auteur …), le temps pour retrouver une information était long et nécessitait une intervention humaine qualifiée. Comme une gigantesque bibliothèque !

Constat :

– Nous baignons dans un tourbillon d’informations

– Nous recevons des informations de notre environnement

– Nous transmettons des informations à notre environnement

– Les informations prennent la forme de données (signes mémorisés et

Véhiculés sur un support matériel ou immatériel)

Question : comment stocker, partager et traiter ces données ?

Réponse : – Autrefois dans une bibliothèque (ancienne forme de base de données),
– Aujourd’hui dans une base de données


Une BD sans informatique est constituée:

  • d’un ensemble de fichiers,
  • des liens logiques entre ces fichiers.

Chaque fichier est composé d’une collection de fiches. Une fiche comporte un ou plusieurs renseignements sur un élément (objet ou personne) de la BD. Chacun de ces renseignements (appelés aussi champs) est une information indivisible.

Base de données avec informatique :

La définition d’une BD est la même que précédemment. Par contre, les concepts utilisés en informatique sont un peu différents. Ces derniers dépendent du modèle de représentation des données considéré. Dans le cadre de ce cours, nous considérerons le modèle relationnel . Dans ce modèle, une BD est définie par:

  • un ensemble de tables (Ex: une table pour les vols; tel vol part de tel aéroport à telle heure, arrive à tel autre aéroport à telle heure, a tel équipage, sur tel avion, etc.). Une table est une collection d’articles (Ex: un vol). Un article est un recueil de champs. Un champ est une information atomique (Ex: code d’un vol).
  • un ensemble de relations entre ces tables (Ex: tel pilote assure tel vol)

Petite illustration :

Une fiche client autrefois (ou sans informatique) :

  • Nous avons toute une suite d’informations qui nous permettent d’identifier de façon détaillée un client, une commande et un produit (numéro de client, commande n°, n° produit).
  • Nous avons des liens entre ce client et cette commande
  • Nous avons un état du stock de produit, la somme du chiffre d’affaire réalisé.

Alors, comment les ranger dans un ordinateur ?

Plusieurs solutions s’offrent à nous.

Précédemment, nous avons vus qu’une base de données était constituée de table avec des liens entre elles (basiquement!). Nous allons donc rester dans notre exemple du client GILLET, et réorganiser tout ça par tableaux.

Nous avons donc dans ce cas quatre tableaux qui chacun designent une entité de notre bon de commande :

– Les données de la commande (numéro de commande, numéro du client qui a passé la commande, date de la commande)

– Les données client (numéro de client, nom, adresse, localité)

– Les données des détails (Numéro de la commande, numéro du produit, quantité commandée)

– Les données des produits (Numéro du produit, Libelle du produit, son prix)

Quelles sont ces couleurs ? Nous avons sous les yeux les liens qui lient les tableaux entre eux …

Autrement appelé des clés primaires et étrangères !!

Définitions :

Chaque enregistrement doit pouvoir être identifié de manière unique. La clé primaire d’une table doit se placer sur des champs qui permettent d’identifier chaque ligne de la table.
Dans notre cas, le numéro de commande est clé primaire de la table commande (elle identifie par un code une commande et une seule ! )

Une clé étrangère identifie une colonne d’une table comme référence d’une colonne d’une autre table (la table référencée). Une contrainte de clé étrangère permet ainsi d’établir des liens entre plusieurs tables.

Dans notre cas, restons toujours sur le champ numéro de commande :
Il est présent en qualité de clé étrangère de la table détails. Il pourra nous servir à effectuer une requête dans la table détails en spécifiant un numéro de commande hébergé dans la table commande.

* L’ensemble constitué d’une clé primaire et d’une clé étrangère sert à établir des relations entre tables. Il s’agit d’un des principes fondamentaux des bases de données relationnelles.*

Donc, Tables composées de champs + relations entre elles … ça ressemble à nos tableaux et nos couleurs ! On ajoute des données (ajouts de clients, de commandes, de produits), et voila, nous avons notre base de données !

– Une base de données est constituée d’un ensemble de tables.

– Chaque table contient les données relatives à des entités de même nature.

– Chaque ligne d’une table reprend les données relatives à une entité.

– Chaque colonne d’une table décrit une propriété commune des entités.

– Les lignes d’une table sont distinctes. C’est sur une (voire plusieurs) colonne(s) que se joue cette unicité. Le jeu de colonnes dont les valeurs sont uniques constitue un Identifiant de la table.

– Les lignes d’une table peuvent faire référence chacune à une ligne d’une autre table, où des informations sur une entité associée peuvent être obtenues. Les colonnes de référence s’appellent clé étrangère vers cette autre table.

Maintenant, que peut-on faire de ces données ?

  • Vérifier une commande lors de son enregistrement : le client est-il connu ? son adresse a t-elle changé ? les produits commandés sont-ils répertoriés ?
  • Produire les factures
  • Calculer le chiffre d’affaire mensuel
  • Etudier la répartition géographique des ventes
  • Préparer le rapprovisionnement des produits en rupture de stock


..
.

Comment est représentée une base de données ?


Nous abordons la partie concept de la base de données que nous survolerons car le but n’étant pas que vous soyez des pros de la BDD en details car la partie SQL va nous prendre pas mal de temps !
J’ai emprunté à notre amis Wikipédia son article sur les concepts de la base de données qui est très bien illustré.

De manière générale, un schéma conceptuel est une représentation d’un ensemble de concepts reliés sémantiquement entre eux. Les concepts sont connectés par des lignes fléchées auxquelles sont accolés des mots. La relation entre les concepts s’appuie sur des termes exprimant celle-ci : « mène à », « prévient que », « favorise », etc.

Le schéma conceptuel poursuit plusieurs buts. Il construit la représentation mentale d’une situation, que cette dernière soit personnelle, celle d’un groupe ou encore celle d’une organisation. Il permet de résumer la structure synthétique d’une connaissance construite à partir de sources diverses.

L’ajout d’objets de support : diagrammes, rapports, autres schémas, feuille de calcul, etc., durant l’élaboration des schémas aide l’apprenant à augmenter la quantité et la qualité des informations ainsi apprises. C’est en raison de cet effet positif sur l’apprentissage qu’au xxie siècle des pédagogues ont commencé à utiliser ce type de schéma dans le cadre de leur cours.

En informatique, un schéma conceptuel est une représentation graphique qui sert à décrire le fonctionnement d’une base de données. Il représente ainsi les objets principaux contenus dans cette dernière, leurs caractéristiques et les relations qui s’établissent entre ces différents objets. Cette représentation est normée suivant une modélisation bien définie.

Le modèle entité-relation (encore appelé modèle Entité / Association) est un type de schéma conceptuel très utilisé pour les bases de données, notamment les bases de données relationnelles.

Concepts

Il s’agit d’un outil permettant de décrire le fonctionnement de la base de données en notifiant :

  • Les entités
    • Ce sont des objets concrets (livre, individu) ou abstraits (compte bancaire) que l’on peut identifier.
    • On peut représenter un ensemble d’entités de la réalité par une entité type (un élève pour l’ensemble des élèves).
    • Ces entités sont caractérisées par leurs attributs (pour l’élève : classe, nom …). Parmi ces attributs, on définit un identifiant qui va permettre de caractériser de façon unique l’entité dans l’ensemble (pour l’élève, ses nom et prénom peuvent jouer ce rôle).
  • Relations entre les entités
    • Elles représentent les liens existant entre une ou plusieurs entités.
    • Elles sont caractérisées par un nom, une propriété d’association et éventuellement des attributs.
  • Degré de relation et cardinalité
    • Le degré de la relation (ou dimension de la relation) est le nombre d’entités qui sont impliquées dans cette relation. La relation peut ne faire intervenir qu’une seule entité, auquel cas elle est dite réflexive.

Exemple d’une relation réflexive : la relation ‘de mariage’

  • La cardinalité (d’une entité par rapport à une relation) exprime le nombre de participations possibles d’une entité à une relation. Comme c’est un nombre variable, on note la cardinalité minimum (0 ou 1) et maximum pour chaque entité. Par exemple, dans une bibliothèque, un usager peut emprunter 0 ou N livres, mais le livre ne peut être emprunté que par 0 ou 1 usager.
  • Les entités sont représentées dans des rectangles et s’écrivent en lettres majuscules.
  • L’identifiant d’une entité (clé primaire) est le premier attribut cité et est souligné. Les autres attributs sont placés à la suite.
  • Les relations sont placées dans des ellipses ou des losanges avec leurs attributs respectifs.
  • Les cardinalités sont placées à côté de l’entité qu’elles caractérisent.
  • Les clés étrangères n’apparaissent pas dans l’entité où elle n’est pas la clé primaire.

En Français, ce MCD nous donne :
« Un client peut commander zéro ou plusieurs produits (0,n) et un produit peut être commandé par un seul client ou plusieurs(1,n). »

Exercice :

Avez-vous tout bien compris ? Essayez de créer le MCD de la base de données citée en exemple au début avec ses quatre tables :

Voici une méthode possible pour réaliser un schéma entité/relation :

  1. Etablir la liste des entités (fait)
  2. Déterminer les attributs de chaque entité en choisissant un identifiant
  3. Etablir les relations entre les différentes entités
  4. Déterminer les attributs de chaque relation et définir les cardinalités

Dans un prochain article, nous introduirons le langage SQL et son utilisation dans une base de données relationnelle.

N’hésitez pas si vous avez des questions.