Académique Documents
Professionnel Documents
Culture Documents
Principes généraux
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 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.
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.
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.
Etudiant Enseignant
Entité => occurrence Type Entité => Entité
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.
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
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
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
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
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)
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)
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.