Vous êtes sur la page 1sur 77

Base de données

Principes généraux

Dr. MORIE Wielfrid


Généralités sur les bases de données
Une base de données (BD) est un ensemble structuré et
organisé de données modélisant un univers réel.

01 02 03
Permettre le stockage faciliter l'exploitation Être disponible tout
de grandes quantités des données (ajout, le temps
d’informations mise à jour, (Enregistrement sur
recherche de supports persistants)
données).
Un système de gestion de base de données (SGBD) est un ensemble de programmes qui permet la
gestion et l'accès à une base de données. Il héberge généralement plusieurs bases de données
destinées à des logiciels ou des thématiques différentes.

La
La description
manipulation Le contrôle des La sécurité des
des données
des données données (LCD) données
(LDD)
(LMD)

Le partage des La résistance L’indépendanc L’indépendance


données aux pannes e physique logique
Niveaux de description des données (Norme ANSI/SPARC)

Le niveau externe
Au niveau externe, chaque groupe de travail utilisant des données possède une description des données
perçues, appelée schéma externe. Les vues permettent à chaque groupe d’utilisateurs de percevoir les
données indépendamment des autres.

Le niveau conceptuel
Le niveau conceptuel décrit la structure de toutes les données de la base, leurs propriétés, sans se soucier
de l’implémentation physique ni de la façon dont chaque groupe de travail voudra s’en servir. Le schéma
conceptuel découle d’une activité de modélisation.

Le niveau interne ou physique


Le niveau interne correspond à la structure de stockage supportant les données. La définition du schéma
interne est différent selon chaque SGBD. Elle permet donc de décrire les données telles qu'elles sont
stockées dans la machine.
Exemple de SGBD

 PostgreSQL
 Oracle
 Microsoft SQL Server
 SQLite
 MySQL
…
Modèle Entités-Associations
MERISE
Méthode d'analyse et de conception des systèmes d'information basée sur le principe de la séparation des
données et des traitements. Elle possède plusieurs modèles qui sont répartis sur 3 niveaux.

 Le niveau conceptuel (MCD)


 Le niveau logique ou organisationnel (MLD)
 Le niveau physique (MPD)

Données de Modélisation en Transformation en Implémentation


l’entreprise entités et associations schéma relationnel dans un SGBD

Modèle conceptuel Modèle logique Modèle physique


de données de données de données
MODELE ENTITES ASSOCIATIONS

 L’ entité ou objet
 L’association ou relation
 La propriété ou l’attribut
 L’identifiant ou la clé
 Les cardinalités ou les poids de relation
L’entité
Une entité est un objet, une chose concrète ou abstraite qui peut être reconnue
distinctement et qui est caractérisée par son unicité.
Les entités ne sont généralement pas représentées graphiquement.
Exemples d'entité : La classe IDA2, Kouassi, cet ordinateur, la voiture du directeur sur le parking, etc.

Type entité ou classe entité


Un type entité désigne un ensemble d'entités qui possèdent une sémantique et
des propriétés communes. Un type entité est représenter par un nom au
singulier.
NB : Il faut éviter les accent sur les noms des types entité ou type association
Exemple de classe entité : Les étudiants, les livres et les voitures sont des exemples de type
entité.
Etudiant Type entité Etudiant, représentant tous les étudiants de
l’école
Livre Type entité Livre, représentant tous les livres de la
bibliothèque
Etude de cas : Ecole
Le groupe école d’ingénieurs AGITEL-Formation accueille en son sein des étudiants repartis dans des
classes ou niveaux dans lesquelles sont enseignées plusieurs matières. Dans une classe chaque matière est
enseignée par un enseignant. Cependant, un enseignant peut enseigner plusieurs matières. Chaque classe
appartient à une spécialité (parcours) définie.
TAF : déterminez les types entités de cet établissement.

Parcours Classe Matière

Etudiant Enseignant
Entité => occurrence Type Entité => Entité

Identification des types d’entités


• Entités internes : Entités appartenant à l’organisation (employés, les directions,
etc.)
• Entités externes : Entités n’appartenant pas à l’organisation mais qui effectue des
transactions avec elle (Les fournisseurs, les clients, les prestataires de services,
etc.)
• Entités Interfaces : correspond aux échanges entres l’organisation et les entités
Déterminons les entités externes et les entités interfaces d’un entreprise qui fait de l’achat
externes
vente.

Entreprise
Achat/Vente
Déterminons les entités externes et les entités interfaces d’un entreprise qui fait de l’achat
vente.

Entreprise
(Achat/Vente)
L’association
Une association (ou une relation) est un lien entre plusieurs entités. Les
associations ne sont généralement pas représentées graphiquement.
Exemples d’association : l’appartenance de l'étudiant Yannick à la classe IDA2, etc.

Type association ou classe association


Un type association (ou un type relation) désigne un ensemble de relations qui
possèdent les mêmes caractéristiques. Le type association décrit un lien entre
plusieurs type entité. Une classe association est représenter par un verbe à
l’infinitif
Exemple de classe association : Emprunter (un étudiant emprunt un livre) qui lie les entités Etudiant et
Livre
Emprunter Type association Emprunter
Attribut ou propriété
Un attribut (ou une propriété) est une caractéristique associée à un type entité
ou à un type association.
Exemples d’association : le titre d’un livre, la date de publication, le nom d’un étudiant,
etc.
Notion de valeur
Au niveau du type entité ou du type association, chaque attribut possède un
domaine qui définit l'ensemble des valeurs possibles qui peuvent être choisies
pour lui (entier, chaîne de caractères, booléen…).
Etudiant
Emprunter
Nom
Propriété du type Propriété du type
Prénom Date
entité Etudiant association Emprunter
Téléphone

Chaine de Date et heure


caractère
Identifiant ou clé
Un identifiant (ou clé) d'un type entité ou d'un type association est constitué par
un ou plusieurs de ses attributs qui doivent avoir une valeur unique pour chaque
entité ou association de ce type.
Les identifiants d’un type entité doivent être soulignés.
Il est donc impossible que deux entités aient le même identifiant.
NB : Dans chaque type entité, un attribut ou un groupe d’attribut unique est de facto l'identifiant.
Si aucun attribut ne présent de caractère d’unicité, il faut en créer un que sera l’identifiant.
Pour un type association, l’identifiant est formé des identifiants des types entités en relation
Etudiant
Telephone
Acheter Nom
Code_IMEI Prénom
Marque Date Téléphone
Modèle Prix Mail
Règles de normalisation
Règle 1 Un attribut ne peut en aucun cas être partagé par plusieurs type entité
ou type association.
Règle 2 Un attribut est une donnée élémentaire, ce qui exclut des données
calculées ou dérivées.
Règle 3 Un type entité et ses attributs doivent être cohérents entre eux (i.e. ne
traiter que d'un seul sujet).
Règle 4 Chaque type entité possède au moins un identifiant, éventuellement
formé de plusieurs attributs.
Règle 5 Un attribut peut être placé dans un type association uniquement
lorsqu'il dépend de toutes les entités liées par le type association.
TP Reprendre l’exemple de l’école AGITEL-
FORMATION
Le groupe école d’ingénieurs AGITEL-Formation accueille en son sein des étudiants repartis dans des
classes ou niveaux dans lesquelles sont enseignées plusieurs matières. Dans une classe chaque matière est
enseignée par un enseignant. Cependant, un enseignant peut enseigner plusieurs matières. Chaque classe
appartient à une spécialité (parcours) définie.
TAF : déterminez les types entités et les types associations de cet établissement.

Spécialité Classe Matière

Etudiant Enseignant
Cardinalité
les cardinalités d’une entité dans une association expriment le nombre de fois
qu’une occurrence de cette entité peut être impliquée dans une occurrence de
l'association, au minimum et au maximum.
Cardinalité minimale : 0 ou 1 ; est ce qu’une entité est obligatoirement
associée à une autre ?
Cardinalité maximale : 1 ou n ; Combien de fois une entité peut être associée
à une autre ?

Personne
Avoir Compte
N°CNI 1, 1,
Nom n 1 N°Cpt
Prénom Date_ouverture
Exemple de cardinalité

Client
Commander Produit
ID 0, 0,n
Nom n N°PDT
Date Libéllé
Prénom Prix

Client Maison
ID 1, Acheter N°Maison
0,1
Nom n Localisation
Prénom Prix
Complément sur les associations
Associations plurielles : Deux mêmes entités peuvent être plusieurs fois en
association

0, Vendre 1,1
Internaute n Produit
ID N°Pdt
Nom Libellé
Prénom Prix
0, Acheter 0,1
n
Complément sur les associations
Associations reflexives : Un type association est qualifié de réflexif quand il
matérialise une relation entre un type entité et lui-même.

0,
Personne n
ID Être parent
Nom
Prénom
0,
n
Spécification des entités
Elle consiste pour chacune des entités à répertorier les propriétés tous en précisant
les identifiants.
Les propriété qualifiant les entités doivent être le plus stable, c’est-à-dire qu’elles
doivent varier le moins possible et ne pas être optionnelle.
Classe Spécialité Enseignant Matière Etudiant
Spécification des associations
Elle consiste à répertorier les propriétés des associations s’il en existe.
Les propriété qui varie dans le temps afin de prendre en compte l’historique du
système doivent qualifier les associations.
NB : Les propriétés des associations doivent dépendre des entités liés. Les
propriétés des association sont celles dont les valeurs ne seront pas modifiées
dans le temps.
Telephone Client
IMEI Acheter ID client
Marque Nom
Modèle Prénom
Market- Adresse
name

Déterminer les propriétés de l’association Acheter s’il en existe


Spécification des associations
Elle consiste à répertorier les propriétés des associations s’il en existe.
Les propriété qui varie dans le temps afin de prendre en compte l’historique du
système doivent qualifier les associations.
NB : Les propriétés des associations doivent dépendre des entités liés. Les
propriétés des association sont celles dont les valeurs ne seront pas modifiées
dans le temps.

Client Louer Vehicule

Déterminer les propriétés de l’association Acheter s’il en existe


TD Exo 2
Une bibliothèque permet à ces lecteurs d'emprunter des livres. Ils ont
au maximum 1 mois pour retourner les livres. Un lecteur ne peut avoir
plus de 5 livres avec lui. Pour s'assurer qu'un lecteur n'a pas atteint son
quota, l'on doit être capable de lister les livres non encore retournés de
celui-ci. De plus, l'on doit être capable de lister tous les livres en cours
d'emprunt pour contacter les lecteurs ayant dépassé la date limite de
retour.
Un lecteur est identifié par son nom, sa date de naissance, son
téléphone et son adresse géographique. Un livre est identifié par son
titre, son numéro ISBN, sa date de publication, son auteur et la maison
d'édition.
Complément sur les associations
Associations n-aire : Deux mêmes entités peuvent être plusieurs fois en
association
Association binaire : 2 entités X Association ternaire : 3 entités

Batiment
Telephone Client
Adresse
Marque Nom Propriétaire
Modèle Prénom
Adresse Reparation
Ouvrier Nom
Acheter Effectuer
Nom Catégorie
Date Téléphone Début
Prix Fin
Décomposition d’association ternaire en association binaire
• On remplace le type association ternaire par un type entité avec un identifiant.
• On crée des types association binaire entre le nouveau type entité et tous les
types entité existant.
• La cardinalité de chacun des types association binaires créés est 1,1 du côté du
type entité créé, et 0,n ou 1,n du côté des types entité de l'ancien association
ternaire. Batiment
Adresse
Propriétaire

Reparation
Ouvrier Nom
Effectuer
Nom Catégorie
Téléphone Début
Fin
Règles de fusion / suppression
Il faut factoriser les types entité quand c'est possible.
Ex 1 : Nous avons dans une clinique des généralistes, des ophtalmologues et des
dentistes. Ils sont identifiés par leur nom, numéro de téléphone et mail. Comment
modéliser ?
Règles de fusion / suppression
Il faut factoriser les types entités quand c'est possible.
Ex 2 : Un client achète des produits fournis par un vendeur. Comment modéliser ?
Normalisation

 Première forme normale (1FN)


 Deuxième forme normale (2FN)
 Troisième forme normale (3FN)
 Forme normale de Boyce-Codd (BCNF)
 Quatrième forme normale (4FN)
 Cinquième forme normale (5FN)
Première forme normale (1FN)
Un type entité ou un type association est en première forme normale si tous ses
attributs sont élémentaires, c'est-à-dire non décomposables.
Un attribut composite doit être décomposé en attributs élémentaires ou faire l'objet
d'une entité supplémentaire

Personnel Personnel Conjoint


Id Id Id
Nom 1FN Nom Nom
Prenom Prenom Prenom
Tel Tel Tel
Conjoint
Deuxième forme normale (2FN)
Un type entité ou un type association est en deuxième forme normale si, et
seulement si, il est en première forme normale et si tout attribut n'appartenant
pas à la clé dépend de la totalité de cette clé.
Autrement dit, les attributs doivent dépendre de l'ensemble des attributs
participant à la clé.

Article
Produit 2FN
Fournisseur
AdresseFournisseur
Troisième forme normale (3FN)
Un type entité ou un type association est en troisième forme normale si, et
seulement si, il est en deuxième forme normale et si tous ses attributs dépendent
directement de sa clé et pas d'autres attributs.

3FN
Forme normale de Boyce-Codd (BCNF)
Un type entité ou un type association est en forme normale de Boyce-Codd si, et
seulement si, il est en troisième forme normale et si aucun attribut faisant partie de
la clé dépend d'un attribut ne faisant pas partie de la clé.

Assure
Pays
Ref
Nom
Region

Dépendance entre pays et région


TD Normalisation
Identifier les formes normales
Etudiant Employe Adherent Repertoire
Mat Mat Mat Id_groupe
Nom Nom Nom Id_album
Prenom salaire type_adhesion Nom_groupe
Notes batiment Cotisation nb_membre
bureau Année titre_album
année_sortie
Modèle relationnel

 Modèle Logique de Données (MLD)


 Dépendances fonctionnelles
 Algèbre relationnelle
Modèle Logique de Données (MLD ou MLDR)
Dans ce modèle, les données sont représentées par des tables qui constituent donc
la structure logique. Au niveau physique, le système est libre d'utiliser n'importe
quelle technique de stockage (fichiers séquentiels, indexage, adressage dispersé,
séries de pointeurs, compression…) dès lors qu'il est possible de relier ces structures
à des tables au niveau logique. Les tables ne représentent donc qu'une abstraction de
l'enregistrement physique des données en mémoire.

Il existe 4 règles globales de passage du MCD au MLD :


 Règle générale des types entités
 Règle 1:N
 Règle N:N
 Règle 1:1
MCD vers MLD
Règle générale :
Un type entité du modèle entités-associations devient une relation, c’est à dire une
table dans le MLD. Son identifiant dévient la clé primaire et les autres propriétés
deviennent les attributs de la table.

Client
ID client
Nom
devient
Prénom Client(Id_client, Nom, Prenom, Telephone, Adresse)
Telephone
Adresse

MCD MLD
MCD vers MLD
Règle 1:N
Un type association avec une cardinalité 1,n (ou 0,n) d’un coté et 1,1 (ou 0,1) de
l’autre coté se traduit par la création d’une clé étrangère dans la table du coté de la
cardinalité 1,1 issue de la clé primaire de la table du coté de la cardinalité 1,n.
Client Maison
Id_client 1,n Acheter Id_Maison
0,1
Nom Localisation
Prénom Prix
Telephone
Adresse MCD

Client(Id_client, Nom, Prenom, Telephone, Adresse)


devient Maison(Id_Maison, Localisation, Prix, #Id_client)
MLD
MCD vers MLD
Règle N:N
Un type association avec une cardinalité 1,n (ou 0,n) de chaque coté devient une
table dans le MLD. La clé primaire est alors composée des clés primaires des tables
impliquées dans cette association. Les propriétés de ce type association devient des
attributs de la nouvelle table.
Client Produit
Commander
Id_client 0,n 0,n Id_produit
Nom Date Libéllé
Prénom Prix
Telephone
Client(Id_client, Nom, Prenom, Telephone)
devient
Produit(Id_produit, Libelle)
Commander(#Id_client, #Id_produit, Prix, Date)
MCD vers MLD
Règle 1:1
Un type association avec une cardinalité 1,1 (ou 0,1) de chaque coté se traduit pas
l’insertion d’une clé étrangère dans une table issue de la clé primaire de l’autre
table. Le choix de la table qui recevra la clé étrangère peut se faire selon une
réflexion sur une possible évolution de la base de données.
Ingenieur conduire
Id_ing 1,1
Nom Ingenieur(Id_ing, Nom, Prenom, Telephone)
Prénom Vehicule(Id_Vehicule, Marque, #Id_ing)
Telephone devient
1,1 Ou
Vehicule
Id_Vehicule Ingenieur(Id_ing, Nom, Prenom, Telephone,
Marque #Id_Vehicule)
Vehicule(Id_Vehicule, Marque)
TP Reprendre l’exemple de l’école AGITEL-
FORMATION
Le groupe école d’ingénieurs AGITEL-Formation accueille en son sein
des étudiants repartis dans des classes ou niveaux dans lesquelles sont
enseignées plusieurs matières. Dans une classe chaque matière est
enseignée par un enseignant. Cependant, un enseignant peut enseigner
plusieurs matières. Chaque classe appartient à une spécialité (parcours)
définie.
TAF : déterminez le modèle logique de données (MLD) à partir du
MCD.
Algèbre relationnel
L’algèbre relationnelle est un ensemble d’opérations que l’on peut appliquer sur une
ou plusieurs relations pour obtenir une nouvelle relation. Les opérations de l’algèbre
relationnelle peuvent être classées selon deux catégories : les opérations
ensemblistes et les opérations relationnelles. Les opérations ensemblistes découlent
directement de la théorie des ensembles. Les opérations relationnelles sont quant à
elles spécifiques au modèle relationnel.

Les opérations relationnelles majeurs sont :


 La projection (π)
 La restriction (σ)
 La jointure (⋈)
 Les agrégats
La projection (π)
La projection est une opération unaire (qui s’applique sur une seule relation) qui
sélectionne certaines colonnes d’une relation donnée en éliminant les éventuelles
doublons.
Etudiant

Mat Nom Annee Pts Nom


32T Koffi 2001 14 Koffi
12O
11P
Konate 2000
Aka 1999
20
11
πnom (Etudiant) Konate
Aka
45Y Koffi 2003 3 Seka
87D Seka 1998 20 Opah
10Q Opah 2000 17
La restriction (σ)
La restriction est une opération unaire (qui s’applique sur une seule relation) qui
sélectionne certaines lignes d’une relation donnée selon des critères.

Etudiant
Mat Nom Annee Pts Mat Nom Annee Pts
32T Koffi 2001 14 32T Koffi 2001 14
12O
11P
Konate 2000
Aka 1999
20
11 σPts>12 (Etudiant) 12O
87D
Konate 2000
Seka 1998
20
20
45Y Koffi 2003 3 10Q Opah 2000 17
87D Seka 1998 20
10Q Opah 2000 17
La jointure (⋈)
La jointure est une opération qui est utilisée lorsqu’on veut rechercher des données
éparpillées à travers plusieurs tables.
Pays Ville
Code Pays Code Ville (Pays ⋈ Ville)
33 France 33 Paris
1 USA 234 Yaoundé Code Pays Ville
225 Cote d’Ivoire 1 Washington 33 France Paris
234 Cameroun 44 Londres 1 USA Washington
44 Angleterre 234 Cameroun Yaoundé
44 Angleterre Londres
Les agrégats
Les agrégats permettent de présenter les données de manière organisée (Ordonnée,
Groupé, Calculé…)

τ : Ordonner
γ : Grouper
SUM : Somme
AVG : Moyenne
MIN : Minimum
MAX : Maximum
COUNT : Compter
TP : Gestion des Matchs
Plateforme de TP - RelaX : https://dbis-uibk.github.io/relax/calc/local/uibk/local/0
Fichier Sport.txt
Tables :
JOUEURS (id_jou, nom, taille)
MATCHS (id_mat, ville, date)
EQUIPES (id_equ, id_mat, id_jou)

PS : Copier le contenu et le coller sur la plateforme


RelaX : onglets Group Editor
TAF : Donner les requêtes en algèbre relationnel des recherches suivantes :
1. Liste des noms des joueurs sans répétition
2. Noms et tailles des joueurs par ordre croissant des tailles
3. Noms et tailles des joueurs mesurant plus de 1,80 m
4. Noms des joueurs mesurant entre 1,60 m et 1,80 m
5. Villes où il y a eu un match en décembre
6. Joueurs ayant moins de 5 lettres dans leur nom
7. Noms des joueurs ayant participé au match n°1
8. Noms des joueurs ayant joué à Yakro
9. Taille moyenne de tous les joueurs
10. Nombre de matchs ayant été joués à Abidjan
11. Nombre de matchs par ville
12. Noms des joueurs plus grands que la moyenne
L’Union (∪)
L'union est une opération portant sur deux relations R1 et R2 ayant le même schéma
et comprenant les éléments appartenant à chacune des deux relations R1 et R2 sans
doublon, on la note R1 ∪ R2.

Pays
(Pays ∪ Pays)
Pays
Code Pays
Code Pays Code Pays 33 France
33 France 225 Cote d’Ivoire 1 USA
1 USA 234 Cameroun 234 Cameroun
44 Angleterre 221 Ghana 44 Angleterre
225 Cote d’Ivoire
221 Ghana
L’Intersection (∩)
L'intersection est une opération portant sur deux relations R 1 et R2 ayant le même
schéma et constitués des éléments appartenant aux deux relations, on la note R 1 ∩
R2 .

Pays
(Pays ∩ Pays)
Pays
Code Pays Code Pays Code Pays
33 France 33 France 33 France
1 USA 1 USA 1 USA
44 Angleterre 12 Lituanie
La différence (−)
La différence est une opération portant sur deux relations R1 et R2 ayant le même
schéma et constitués des éléments ne se trouvant que dans la relation R 1 ; on la note
R 1 − R2 .
Pays1 Pays2 (Pays1 − Pays2)
Code Pays Code Pays
Code Pays
33 France 33 France
1 USA
1 USA 2 Canada
224 Burkina Faso
224 Burkina Faso 225 Cote d’Ivoire
18 Chine
18 Chine 234 Cameroun
44 Angleterre 12 Angleterre
Soit le modèle relationnel «World» composé des relations suivantes :
Pays(code_pays, nompays, continent, superficie, chefEtat, #code_ville) *chefEtat référence le nom de
PR
Ville(code_ville, nomville, #code_pays)
Langues(code_langue, langue, #code_pays)

TAF : Donner les requêtes en algèbre relationnel des recherches suivantes :


1. Donner le nom de chaque pays et le nom de son chef d’état.
2. Donner le code et le nom de tous les pays d’Europe.
3. Donner le nom de tous les pays d’Afrique et d’Asie.
4. Donner le nom de tous les pays ainsi que le nom de leur capitale.
5. Donner le nom des pays africains francophones.
6. Quelles sont les langues parlées en Belgique mais pas en Suisse ?
Soit la base de données relationnelle des vols quotidiens d’une compagnie aérienne qui contient les
tables Avion, Pilote et Vol.
Avion (id_av, type, capacite)
Pilote (id_pil, nom, age, pays) *age = année de naissance
Vol (id_vol, id_av, id_pil, depart, arrivée)

TAF : Donner les requêtes en algèbre relationnel des recherches suivantes :


1. Afficher le nom et la capacité des avions
2. Afficher le nom des pilotes anglais
3. Afficher le nom et l'âge des pilotes nés après 1950 qui ne sont pas français
4. Afficher le nom des pilotes allemands ou ivoiriens
5. Afficher le nom des pilotes ayant pilotés un Boeing 737
6. Afficher l’id et le nom des pilotes maliens qui n’ont jamais piloté un Airbus A380
7. Afficher l’id et le nom des pilotes maliens ou des pilotes qui ont piloté un Airbus
A380
8. Afficher l’id et le nom des pilotes qui ont piloté un Airbus A380 et un Boeing 737
Dépendance fonctionnelle (DF)
B dépend fonctionnellement de A si, étant donné une valeur de A, il lui correspond
une unique valeur de B (quel que soit l'extension) A et B sont des ensembles
d'attributs.
Notation A → B
Une relation qui n’a pas de DFD sur tout ces attributs n’est pas en 1FN.
Client(Id_client, Nom, Prenom, Telephone)
Déterminons la dépendance fonctionnelle de cette relation

• Dépendance fonctionnelle élémentaire


• Dépendance fonctionnelle directe
Dépendance fonctionnelle élémentaire (DFE)
Une dépendance fonctionnelle X → A est dite élémentaire si
• A n’est pas inclus dans X
• Il n’existe pas X’ inclus dans X tel que X’→ A
Une relation qui n’a pas de DFE sur tout ces attributs n’est pas en 2FN.

Client(Id_client, Nom, Prenom, Telephone)


Produit(Id_produit, Libelle)
Commander(#Id_client, #Id_produit, Prix, Date)
Déterminons les DFE existants dans chaque relation
Dépendance fonctionnelle directe (DFD)
E → F est directe s’il n’existe pas G tel que E → G et G → F.
Autrement dit la relation qui lie un attribut à sont identifiant ne doit pas passer par
un autre attribut.
Une relation qui n’a pas de DFD sur tout ces attributs n’est pas en 3FN.

Client(Id_client, Nom, Prenom, Telephone, opérateur)


L’operateur dépend du numéro de téléphone. Il n’y a donc pas
de DFD.
Langage SQL

 Langage de définition des données (LDD)


 Langage de manipulation des données (LMD)
Langage SQL
Le langage SQL (Structured Query Language) peut être considéré comme le
langage d'accès normalisé aux bases de données. Il est aujourd’hui supporté par tous
les SGBD relationnels

 Langage de définition des données (LDD)


 Langage de manipulation des données (LMD)
 Langage de protection d’accès (LPA)
 Langage de gestion des transaction (LGT)
Langage de définition des données (LDD)
Le langage de définition de données permet de créer, modifier, supprimer des
objets. Il permet également de définir le domaine des données (nombre, chaîne de
caractères, date, booléen…) et d'ajouter des contraintes de valeur sur les données.
Les instructions du LDD sont : CREATE, ALTER, DROP, AUDIT, NOAUDIT,
ANALYZE, RENAME, TRUNCATE.

Create : Créer une table


Alter : Modifier une table
Drop : Supprimer une table

Langage de manipulation des données (LMD)
Le langage de manipulation de données permet l'ajout, la suppression et la
modification de lignes, la visualisation du contenu des tables et leur verrouillage.
Les instructions du LMD sont : INSERT, UPDATE, DELETE, SELECT, EXPLAIN,
PLAN, LOCK TABLE.

Insert : Ajouter des données dans une table


Select : Visualiser les données d’une table
Update : Mettre à jour les données dans une table

Langage de manipulation des données (LMD)
L’utilisation la plus courante de SQL consiste à lire des données issues de la base de
données. Cela s’effectue grâce à la commande SELECT, qui retourne des
enregistrements dans un tableau de résultat.
SELECT colonne1, colonne2, … FROM table

Afficher toutes les colonnes d’une table


SELECT * FROM table
Afficher certaines colonnes d’une table
SELECT colonne1, colonne2,… FROM table
Afficher les données d’une colonne sans les doublons
SELECT DISTINCT colonne1 FROM table
Aide memoire
SELECT * # Sélection des colonnes
FROM table # Nom d'une ou plusieurs tables
WHERE condition # Obtenir les résultats selon la condition
GROUP BY expression # Grouper les tables en groupe
HAVING condition # Condition sur un groupe
{ UNION | INTERSECT | EXCEPT } # Unir plusieurs requêtes
ORDER BY expression # Trier les résultats
LIMIT count # Limiter à N enregistrments
OFFSET start # Débuter à partir N enregistrement
TP fichier TravailleurSql.csv
Télécharger le fichier CSV ci-dessus,
Ouvrer votre outil de gestion de BD (PhpMyAdmin, HeidiSQL,…),
Créer une base de données nommée ReseauRH,
Dans la BD créée, Créer une table nommée Travailleur avec les colonnes suivantes :
• `id` VARCHAR(50) NOT NULL,
• `nom` VARCHAR(50) NOT NULL,
• `prenom` VARCHAR(50) NOT NULL,
• `status` VARCHAR(50) NOT NULL,
• `ville` VARCHAR(50) NOT NULL,
• `genre` VARCHAR(50) NULL,
• `datenaissance` DATE NULL,
• `nbenfant` INT(11) NULL,
• `salaire` INT(11) NOT NULL ,
• `embauche` DATE NOT NULL,
• `taxe` INT(11) NOT NULL
Importer le ficher TravailleurSql.csv dans la table Travailleur. ->
I- Requêtes Basiques
TAF :
Afficher toutes les informations de tous les travailleurs
Select * from travailleur;
Afficher certaines informations des travailleurs
Select Nom, Nbenfant from travailleur;
Afficher toutes les villes
Select Ville from travailleur;
Afficher toutes les villes sans doublons
Select distinct ville from travailleur;
II- Alias ou renommage de colonne.
Pour renommer une colonne, on utilise le mot clé AS
SELECT colonne1 AS prix FROM table
TAF :
Afficher le nom, le nombre d’enfant et la date de naissance des travailleurs.
Que constatez vous sur le nom des colonnes ?
Renommer les colonnes non explicites
Clause WHERE

La clause WHERE permet d’extraire les lignes d’une base de données qui
respectent une condition. Cela permet d’obtenir uniquement les informations
désirées.
SELECT * FROM table WHERE condition
Les opérateurs permettant de faire des comparaisons avec la clause WHERE.
• = Égale
• <> ou != Différent
• > Supérieur à
• < Inférieur à
• >= Supérieur ou égale à
• <= Inférieur ou égale à
• IN Liste de plusieurs valeurs possibles
• BETWEEN Valeur comprise dans un intervalle donnée.
• LIKE Ressemble à un mot.
• IS NULL Valeur est nulle
• IS NOT NULL Valeur n'est pas nulle
TP : Clause WHERE
TAF :
Afficher tous les travailleurs dont le genre est femme
Afficher tous les travailleurs de Korhogo
Afficher tous les travailleurs dont le salaire est inférieur à 100 000
Afficher tous les travailleurs avec au plus 3 enfants et une taxes inférieure à 5000
Afficher tous les travailleurs nés avant 1980 ou ceux ayant au moins 2 enfants
Clause WHERE avec LIKE
L’opérateur LIKE permet d’effectuer une recherche sur un modèle particulier. Il est
par exemple possible de rechercher les enregistrements dont la valeur d’une colonne
commence par telle ou telle lettre.
SELECT * FROM table WHERE condition LIKE modele
 Commence par xyz : LIKE ‘xyz%’
 Se termine par xyz : LIKE ‘%xyz’
 Contient xyz : LIKE ‘%xyz%’
TAF :
Afficher tous les travailleurs dont le nom commence par ‘’KOU’’
Afficher tous les travailleurs dont le nom contient la suite de lettre ‘’in’’
Afficher tous les travailleurs dont le prénom se termine par ‘’le’’
Afficher les prénoms commençant par ‘’c’’ et se terminant par ‘’e’’
Clause WHERE avec IN
L’opérateur IN s’utilise pour vérifier si une colonne est égale à une des valeurs
comprise dans ensemble de valeurs déterminés. C’est une méthode simple pour
vérifier si une colonne est égale à une valeur OU une autre valeur OU une autre
valeur et ainsi de suite, sans avoir à utiliser de multiple fois l’opérateur OR.
SELECT * FROM table WHERE Colonne IN (‘aaa’, ‘bbb’,…)
TAF :
Afficher les travailleurs se nommant ‘’KOUASSI’’, ‘KONE’’, ‘’TOURE’’ ou
‘’ASSA’’
Afficher les travailleurs ne portant pas le nom ‘BAMBA’’, ‘’KONE’’ ou ‘’AKA’’
Clause WHERE avec BETWEEN
L’opérateur BETWEEN est utilisé pour sélectionner un intervalle de données dans
une requête utilisant WHERE. L’intervalle peut être constitué de chaînes de
caractères, de nombres ou de dates. L’exemple le plus concret consiste par exemple
à récupérer uniquement les enregistrements entre 2 dates définies.
SELECT * FROM table WHERE Colonne BETWEEN Valeur1 AND Valeur2
TAF :
Afficher tous les travailleurs nés entre 1970 et 1990
Afficher tous les travailleurs payant une taxe comprise entre 4000 à 7000
Afficher tous les travailleurs embauchés entre 2002 et 2010
Afficher tous les travailleurs touchant un salaire non compris entre 100 000 et 300
000
Les Agrégats
SUM : Somme, AVG : Moyenne, MIN : Minimum, MAX : Maximum, COUNT : Compter
SELECT COUNT(*)FROM table
SELECT Avg(colonne)FROM table
TAF :
Donner le nombre de tous les travailleurs
Donner le nombre de toutes les travailleuses nés entre 1970 et 2002
Donner le plus petit salaire des travailleurs d’Abidjan
Donner la plus grande taxe des travailleurs avec au moins un enfant
Combien coute tous les salaires à l’entreprise
Donner le doyen des travailleurs
Donner le moins âgé des hommes
Clause GROUP BY
La clause GROUP BY est utilisée en SQL pour grouper plusieurs résultats et utiliser
une fonction de totaux sur un groupe de résultat.
SELECT colonne, agregats(colonne)FROM table GROUP BY colonne
TAF :
Donner le nombre de travailleurs par genre
Donner le nombre de toutes les travailleuses par ville
Donner le plus petit salaire des travailleurs par ville
Donner la moyenne des taxes des travailleurs par ville
Combien coute tous les salaires à l’entreprise par ville
Donner la moyenne des salaires des travailleurs par statut
Donner le plus gros salaire par statuts
Nombre de travailleurs par status et par ville
Clause ORDER BY
La commande ORDER BY permet de trier les lignes dans un résultat d’une requête
SQL. Il est possible de trier les données sur une ou plusieurs colonnes, par ordre
ascendant ou descendant.
SELECT colonne1, colonne2 FROM table ORDER BY colonne2
SELECT colonne1, colonne2 FROM table ORDER BY colonne2 Desc, Colonne1 Asc
TAF :
Afficher quelques colonnes en ordonnant sur chacune d’elles
Clause LIMIT
La clause LIMIT est à utiliser dans une requête SQL pour spécifier le nombre
maximum de résultats que l’ont souhaite obtenir. Cette clause est souvent associé à
un OFFSET, c’est-à-dire effectuer un décalage sur le jeu de résultat. Ces 2 clauses
permettent par exemple d’effectuer des système de pagination
SELECT colonne1, colonne2 FROM table LIMIT 10
SELECT colonne1, colonne2 FROM table LIMIT 10 OFFSET 5
TAF :
Afficher les données avec une limite de 10 lignes.

Vous aimerez peut-être aussi