Académique Documents
Professionnel Documents
Culture Documents
Données
Pr. AATTOUCHI ISSAM
Chapitre 1
Introduction aux bases de données
GBD - S5 2
1- Qu’est-ce qu’une base de données ?
Description générale
Il est difficile de donner une définition exacte de la notion de base de données. Une définition
très générale pourrait être :
GBD - S5 3
1- Qu’est-ce qu’une base de données ?
Définition 2 -Base de données informatisée- Une base de données informatisée est un ensemble
structuré de données enregistrées sur des supports accessibles par l’ordinateur, représentant des
informations du monde réel et pouvant être interrogées et mises à jour par une communauté
d’utilisateurs.
Le résultat de la conception d’une base de données informatisée est une description des
données. Par description on entend définir les propriétés d’ensembles d’objets modélisés dans
la base de données.
Cette description des données est réalisée en utilisant un modèle de données. Ce dernier
est un outil formel utilisé pour comprendre l’organisation logique des données.
La gestion et l’accès à une base de données sont assurés par un ensemble de programmes
qui constituent le Système de gestion de base de données (SGBD).
GBD - S5 4
1- Qu’est-ce qu’une base de données ?
Enjeux
Les bases de données ont pris aujourd’hui une place essentielle dans l’informatique, plus
particulièrement en gestion.
Au cours des années 80 et 90 , des concepts, méthodes et algorithmes ont été développés pour
gérer des données sur mémoires secondaires ; ils constituent aujourd’hui l’essentiel de la discipline
« Bases de Données » (BD). Cette discipline est utilisée dans de nombreuses applications.
Il existe un grand nombre de Systèmes de Gestion de Bases de Données (SGBD) qui permettent de
gérer efficacement de grandes bases de données. Les bases de données constituent donc une
discipline s’appuyant sur une théorie solide et offrant de nombreux débouchés pratiques.
GBD - S5 5
2- QUALITÉ D’UNE BASE DE DONNÉES
GBD - S5 6
2- QUALITÉ D’UNE BASE DE DONNÉES
La cohérence des données est fondamentale ; elle nécessite une réflexion préalable sur la
normalisation du contenu des champs. On suppose qu’un champ contient la qualité d’une
personne (par exemple, Monsieur, Madame, Mademoiselle). Si l’on trouve dans ce champ
‘Mr’ à la place de ‘Monsieur’, il est clair que les recherches sur ce champ par le contenu ‘Monsieur’
risquent d’être erronées. Dans ce cas, les informations seraient moins nombreuses que celles
obtenues avec le contenu correct. On qualifie cet état de fait de « silence », qui signifie que
certains résultats pertinents sont ignorés lors d’une interrogation.
Dans un autre cas, si l’on saisit ‘Mme’ pour ‘Madame’ et ‘Melle’ pour ‘Mademoiselle’, et
qu’il y ait eu par erreur plusieurs saisies de ‘Mme’ alors qu’il s’agissait d’une demoiselle,
la recherche par le contenu ‘Mme’ donne cette fois plus de résultats qu’il n’y a réellement
de dames. On qualifie cet état de fait de « bruit », qui signifie que certains résultats non
pertinents sont retournés lors d’une interrogation.
GBD - S5 7
2- QUALITÉ D’UNE BASE DE DONNÉES
La cohérence des données est fondamentale ; elle nécessite une réflexion préalable sur la
normalisation du contenu des champs. On suppose qu’un champ contient la qualité d’une
personne (par exemple, Monsieur, Madame, Mademoiselle). Si l’on trouve dans ce champ
‘Mr’ à la place de ‘Monsieur’, il est clair que les recherches sur ce champ par le contenu ‘Monsieur’
risquent d’être erronées. Dans ce cas, les informations seraient moins nombreuses que celles
obtenues avec le contenu correct. On qualifie cet état de fait de « silence », qui signifie que
certains résultats pertinents sont ignorés lors d’une interrogation.
Dans un autre cas, si l’on saisit ‘Mme’ pour ‘Madame’ et ‘Melle’ pour ‘Mademoiselle’, et
qu’il y ait eu par erreur plusieurs saisies de ‘Mme’ alors qu’il s’agissait d’une demoiselle,
la recherche par le contenu ‘Mme’ donne cette fois plus de résultats qu’il n’y a réellement
de dames. On qualifie cet état de fait de « bruit », qui signifie que certains résultats non
pertinents sont retournés lors d’une interrogation.
GBD - S5 8
2- QUALITÉ D’UNE BASE DE DONNÉES
La redondance est parfois plus délicate à identifier. Si l’on considère le cas très simple d’un carnet
d’adresses qui contiendrait en même temps le code postal et le nom de la ville, elle est ici évidente.
Nom Téléphone Ville Code Postale
Alami 0521353526 Casablanca 10000
Bouayad 0632524223 Kenitra 14000
Kafssi 0678956545 casa 10000
Belamri 0641253652 Kenitra 14000
Ridini 0671234578 Casablanca 10000
On remarque que l’on stocke plusieurs fois la même association d’information (par exemple, Kenitra
et 14000), ce qui consomme de la place inutilement et peut devenir significatif
lorsque la base atteint quelques millions d’enregistrements.
De plus il existe des incohérences dans la saisie du nom de la ville ‘Casablanca’. La recherche
par le nom ‘Casablanca’ ne donnera pas le même résultat que la recherche par le code
‘10000’.
On verra plus loin que l’approche relationnelle procure des outils capables de détecter et
d’améliorer considérablement ce genre de problèmes de qualité des bases de données.
GBD - S5 9
3- Évolution des bases de données et de leur utilisation
Modèle hiérarchique
GBD - S5 10
3- Évolution des bases de données et de leur utilisation
Modèle réseau
Donc pour retrouver une donnée dans une telle modélisation, il faut connaître le
chemin d’accès (les liens) ce qui rend les programmes dépendants de la structure
de données.
GBD - S5 11
3- Évolution des bases de données et de leur utilisation
Modèle Relationnel
Une base de données relationnelle est une base de données structurée suivant les principes de l’algèbre
relationnelle.
Le père des bases de données relationnelles est Edgar Frank Codd. Chercheur chez IBM à la fin des années
60, il étudiait alors de nouvelles méthodes pour gérer de grandes quantités de données car les modèles et
les logiciels de l’époque ne le satisfaisait pas. Mathématicien de formation, il était persuadé qu’il pourrait
utiliser des branches spécifiques des mathématiques (la théorie des ensembles et la logique des prédicats
du premier ordre) pour résoudre des difficultés telles que la redondance des données, l’intégrité des
données ou l’indépendance de la structure de la base de données avec sa mise en œuvre physique.
En 1970, Codd (1970) publia un article où il proposait de stocker des données hétérogènes dans des tables,
permettant d’établir des relations entre elles.
Un premier prototype de Système de gestion de bases de données relationnelles (SGBDR) a été construit
dans les laboratoires d’IBM. Depuis les années 80, cette technologie a mûri et a été adoptée par l’industrie.
GBD - S5 13
II. Système de gestion de base de données (SGBD)
1. Principes de fonctionnement
GBD - S5 15
II. Système de gestion de base de données (SGBD)
2. Objectifs
• Non redondance des données : Afin d’éviter les problèmes lors des mises à jour,
chaque donnée ne doit être présente qu’une seule fois dans la base.
• Cohérence des données : Les données sont soumises à un certain nombre de contraintes
d’intégrité qui définissent un état cohérent de la base. Elles doivent pouvoir être
exprimées simplement et vérifiées automatiquement à chaque insertion, modification
ou suppression des données. Les contraintes d’intégrité sont décrites dans le Langage de
Description de Données (LDD).
• Partage des données : il s’agit de permettre à plusieurs utilisateurs d’accéder aux mêmes
données au même moment de manière transparente.
• Sécurité des données : Les données doivent pouvoir être protégées contre les accès non
autorisés. Pour cela, il faut pouvoir associer à chaque utilisateur des droits d’accès aux
données.
GBD - S5 16
II. Système de gestion de base de données (SGBD)
3. Niveaux de description des données ANSI/SPARC
GBD - S5 17
II. Système de gestion de base de données (SGBD)
3. Niveaux de description des données ANSI/SPARC
L’architecture ANSI/SPARC s’inscrit dans les concepts et théories de la première génération des bases
de données, dont l’objectif est d’avoir une indépendance entre les données et les traitements
• Niveau interne ou physique. C’est le niveau le plus « bas ». On décrit les structures de stockage de
l’information, ce qui le rend très dépendant du SGBD employé. Il se fonde sur un modèle de données
physique.
• Niveau conceptuel. Il correspond à l’implémentation du schéma conceptuel de la base de données,
que l’on réalise lors de la phase d’analyse (voir Modèle Conceptuel des Données, Modèle Logique des
Données). Il est utilisé pour décrire les éléments constitutifs de la base de données et les contraintes
qui leur sont associées. Il s’agit d’une certaine façon de la « documentation » de la base de données.
• Niveau externe. Le niveau externe sert à décrire les vues des utilisateurs, c’est-à-dire le schéma de
visualisation des données qui est différent pour chaque catégorie d’utilisateurs. Un schéma externe
permet de masquer la complexité de la base de données complète en fonction des droits ou des
besoins des utilisateurs. Cela facilite la lecture et la sécurité de l’information.
GBD - S5 18
II. Système de gestion de base de données (SGBD)
3. Quelques SGBD connus et utilisés
GBD - S5 19
Chapitre 2
Conception des bases de données (modèle
Entité-Association)
GBD - S5 20
Conception des bases de données : le
modèle entités-associations
Merise
MERISE (Méthode d’Étude et de Réalisation Informatique pour les
Systèmes d’Entreprise) est certainement le langage de spécification le
plus répandu dans la communauté de l’informatique des systèmes
d’information, et plus particulièrement dans le domaine des bases de
données.
GBD - S5 21
Merise
Pour aborder la modélisation d’un système, il convient de l’analyser en premier lieu de façon globale et de se
concentrer sur sa fonction : c’est-à-dire de s’interroger sur ce qu’il fait avant de définir comment il le fait. Ces niveaux
de modélisation sont organisés dans une double approche données/traitements. Les trois niveaux de représentation
des données, puisque ce sont eux qui nous intéressent, sont détaillés ci-dessous.
Niveau conceptuel : le modèle conceptuel des données (MCD) décrit les entités du monde réel, en terme d’objets, de
propriétés et de relations, indépendamment de toute technique d’organisation et d’implantation des données. Ce
modèle se concrétise par un schéma entités-associations représentant la structure du système d’information, du
point de vue des données.
Niveau logique : le modèle logique des données (MLD) précise le modèle conceptuel par des choix organisationnels. Il
s’agit d’une transcription (également appelée dérivation) du MCD dans un formalisme adapté à une implémentation
ultérieure, au niveau physique, sous forme de base de données relationnelle.
Niveau physique : le modèle physique des données (MPD) permet d’établir la manière concrète dont le
système sera mis en place (SGBD retenu).
GBD - S5 22
Éléments constitutifs du modèle entités-
associations
La représentation du modèle entités-associations s’appuie sur trois
concepts de base :
• l’objet ou entité,
• l’association,
• la propriété.
L’objet est une entité ayant une existence propre. L’association est un
lien ou relation entre objets sans existence propre. La propriété est la
plus petite donnée d’information décrivant un objet ou une
association.
GBD - S5 23
Entité Personne Etudiant Livre
GBD - S5 24
Entité
Définition 2 -type-entité- Un type-entité désigne un
ensemble d’entités qui possèdent une sémantique et des
propriétés communes.
Les personnes, les livres et les voitures sont des exemples de type-
entité. En effet, dans le cas d’une personne par exemple, les
informations associées (i.e. les propriétés), comme le nom et le
prénom, ne changent pas de nature.
Une entité est souvent nommée occurrence ou instance de son
type-entité.
GBD - S5 25
Attribut ou propriété, valeur
Définition -attribut, propriété- Un attribut (ou une propriété) est une
caractéristique associée à un type-entité ou à un type-association.
Exemples d’attribut : le nom d’une personne, le titre d’un livre, la
puissance d’une voiture.
Définition -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, . . .). Au niveau de l’entité, chaque attribut
possède une valeur compatible avec son domaine.
GBD - S5 26
Identifiant ou clé
Définition -identifiant, 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.
Il est donc impossible que les attributs constituant l’identifiant d’un
type-entité (respectivement type-association) prennent la même valeur
pour deux entités (respectivement deux associations) distinctes.
Exemples d’identifiant : le numéro de CINE pour une personne, le
numéro d’immatriculation pour une voiture, le code ISBN d’un livre
pour un livre (mais pas pour un exemplaire).
GBD - S5 27
Association ou relation
Définition -association- Une association (ou une relation) est un lien entre plusieurs
entités.
Exemples d’association : l’emprunt par l’étudiant Houssam du 3e exemplaire du livre «
Maîtrisez SQL ».
GBD - S5 28
Association ou relation
Définition -participant- Les type-entités intervenant dans un type-
association sont appelés les participants de ce type-association.
Définition -collection- L’ensemble des participants d’un type-association
est appelé la collection de ce type-association.
Cette collection comporte au moins un type-entité , mais elle peut en
contenir plus, on parle alors de type-association n-aire (quand n = 2 on parle
de type-association binaire, quand n = 3 de type-association ternaire, . . .).
Définition -dimension ou arité d’un type-association- La dimension, ou
l’arité d’un type-association est le nombre de type-entités contenu dans la
collection.
Comme un type-entité, un type-association possède forcément un
identifiant, qu’il soit explicite ou non.
GBD - S5 29
Cardinalité
Définition -cardinalité- La cardinalité d’une patte reliant un type-association
et un type-entité précise le nombre de fois minimal et maximal
d’interventions d’une entité du type-entité dans une association du type-
association.
La cardinalité minimale doit être inférieure ou égale à la cardinalité
maximale.
Exemple de cardinalité : une personne peut être l’auteur de 0 à n livre, mais
un livre ne peut être écrit que par une personne.
Règle 1 L’expression de la cardinalité est obligatoire pour chaque patte
d’un type-association.
Règle 2 Une cardinalité minimal est toujours 0 ou 1 et une cardinalité
maximale est toujours 1 ou
n.
GBD - S5 30
Cardinalité
Les seuls cardinalités admises :
0,1 : une occurrence du type-entité peut exister tout en étant impliquée
dans aucune association et peut être impliquée dans au maximum une
association.
0,n : c’est la cardinalité la plus ouverte ; une occurrence du type-entité peut
exister tout en étant impliquée dans aucune association et peut être
impliquée, sans limitation, dans plusieurs associations.
1,1 : une occurrence du type-entité ne peut exister que si elle est
impliquée dans exactement une association.
1,n : une occurrence du type-entité ne peut exister que si elle est impliquée
dans au moins une association.
GBD - S5 31
Compléments sur les associations
Associations plurielles
Deux mêmes entités peuvent être plusieurs fois en association
Association réflexive
Un type-association est qualifié de réflexif quand
il matérialise une relation entre un type-entité et lui-même
GBD - S5 33
Compléments sur les associations
GBD - S5 34
Compléments sur les associations
GBD - S5 35
Compléments sur les associations
GBD - S5 36
Règles de bonne formation d’un modèle
entités-associations
La bonne formation d’un modèle entités-
associations permet d’éviter une grande partie
des sources d’incohérences et de redondance.
Pour être bien formé, un modèle entités-
associations doit respecter certaines règles et les
type-entités et type-associations doivent être
normalisées.
GBD - S5 37
Règles de bonne formation d’un modèle
entités-associations
Règles portant sur les noms
Dans un modèle entités-associations, le nom d’un type-entité, d’un
type-association ou d’un attribut doit être unique.
GBD - S5 38
Règles de bonne formation d’un modèle
entités-associations
Règles de normalisation des attributs
1- Il faut remplacer un attribut multiple en un type-association et un type-entité
supplémentaires.
En effet, les attributs multiples posent régulièrement des problèmes d’évolutivité du modèle.
Il est également intéressant de décomposer les attributs composites comme l’attribut Adresse par
exemple. Il est en effet difficile d’écrire une requête portant sur la ville où habitent les employés si
cette information est noyée dans un unique attribut Adresse.
GBD - S5 39
Règles de bonne formation d’un modèle
entités-associations
Règles de normalisation des attributs
2- Il ne faut jamais ajouter un attribut dérivé d’autres attributs, que ces autres attributs se
trouvent dans le même type-entité ou pas.
GBD - S5 40
Règles de bonne formation d’un modèle
entités-associations
Règles de normalisation des attributs
3- Un attribut correspondant à un type énuméré est généralement
avantageusement remplacé par un type-entité.
Par exemple, sur la figure, l’attribut Type caractérise le type d’une
émission et peut prendre des valeurs comme : actualité, culturelle,
reportage, divertissement, etc. Remplacer cet attribut par un type-
entité permet, d’une part, d’augmenter la cohérence (en
s’affranchissant, par exemple, des variations du genre culturelle,
culture, Culture, . . .) et d’autre part, si les cardinalités le permettent, de
pouvoir affecter plusieurs types à une même entité (ex : actualité et
culturelle)
GBD - S5 41
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
1- Il faut factoriser les type-entités quand c’est possible.
La spécialisation du type-entité obtenu peut se traduire par
l’introduction d’un attribut supplémentaire dont l’ensemble des
valeurs possibles est l’ensemble des noms des type-entités
factorisés
GBD - S5 42
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
2- Il faut factoriser les type-associations quand c’est possible.
La spécialisation du type-association obtenu peut se traduire par l’introduction d’un
attribut supplémentaire dont l’ensemble des valeurs possibles est l’ensemble des
noms des type-associations
factorisés.
GBD - S5 43
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
3- Lorsque les cardinalités d’un type-association sont toutes 1, 1
c’est que le type-association n’a pas lieu d’être.
Il faut aussi se poser la question de l’intérêt du type-
association quand les cardinalités maximale sont toutes de 1.
GBD - S5 44
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
4- Il faut veiller à éviter les type-associations redondants.
En effet, s’il existe deux chemins pour se rendre d’un type-entité à un
autre, alors ces deux chemins doivent avoir deux significations ou deux
durées de vie distinctes. Dans le cas contraire, il faut supprimer le
chemin le plus court puisqu’il est déductible des autres chemins.
Il faut aussi se poser la question de l’intérêt du type-
association quand les cardinalités maximale sont toutes de 1.
GBD - S5 45
Règles de bonne formation d’un modèle
entités-associations
• Par exemple, dans le modèle représenté, si un client ne peut pas régler la facture d’un autre
client, alors le type-association Payer est redondant et doit purement et simplement être
supprimé du modèle. On pourra toujours retrouver le client qui a effectué un règlement en
passant par la facture correspondante.
• Par contre, si un client peut régler la facture d’un autre client, alors on remplace le type-entité
Règlement par un type-association Régler.
GBD - S5 46
Règles de bonne formation d’un modèle
entités-associations
• Par contre, si un client peut régler la facture d’un autre client, alors on remplace le type-entité
Règlement par un type-association Régler.
GBD - S5 47
Cas d’une bibliothèque (1re partie)
Une petite bibliothèque souhaite informatiser la gestion de son fonds
documentaire et de ses emprunts. Dans cette perspective, le bibliothécaire, qui
n’est pas un informaticien, a rédigé le texte suivant :
Grâce à cette informatisation, un abonné devra pouvoir retrouver un livre en
connaissant son titre. Il doit aussi pouvoir connaître la liste des livres d’un auteur.
Un abonné a le droit d’emprunter au maximum dix ouvrages simultanément. Les
prêts sont accordés pour une durée de quinze jours. La gestion des prêts doit
permettre de connaître, à tout moment, la liste des livres détenus par un abonné,
et inversement, de retrouver le nom des abonnés détenant un livre absent des
rayons. Un livre peut être écrit par plusieurs auteurs. Chaque livre est acheté en un
ou plusieurs exemplaires.
1. Identifiez, dans le texte ci-dessus, les mots devant se concrétiser par
des entités, des associations ou des attributs.
2. Proposez un modèle entités-associations permettant de modéliser la
situation décrite ci-dessus.
GBD - S5 48
Normalisation des type-entités et type-
associations
Les formes normales sont différent stades de qualité qui permettent
d’éviter la redondance, source d’anomalies. La normalisation peut être
aussi bien effectuée sur un modèle entités- associations, où elle
s’applique sur les type-entités et type-associations, que sur un modèle
relationnel.
Il existe 5 formes normales principales et deux extensions. Un type-
entité ou un type-association en forme normale de niveau n est
automatiquement en forme normale de niveau n − 1. Une
modélisation rigoureuse permet généralement d’aboutir directement à
des type-entités et type- associations en forme normale de Boyce-
Codd.
GBD - S5 49
Normalisation des type-entités et type-
associations
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.
GBD - S5 50
Normalisation des type-entités et type-
associations
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é.
GBD - S5 51
Normalisation des type-entités et type-
associations
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.
GBD - S5 52
Normalisation des type-entités et type-
associations
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é.
GBD - S5 53
Élaboration d’un modèle entités-associations
Étapes de conceptions d’un modèle entités-
associations
Recueil des besoins – C’est une étape primordiale. Inventoriez l’ensemble des données à
partir des documents de l’entreprise, d’un éventuel cahier des charges et plus
généralement de tous les supports de l’information.
Tri de l’information – Faites le tri dans les données recueillies. Il faut faire attention, à ce
niveau, aux problèmes de synonymie/polysémie.
Identification des type-entités – Le repérage d’attributs pouvant servir d’identifiant
permet souvent de repérer un type-entité. Les attributs de ce type-entité sont alors les
attributs qui dépendent des attributs pouvant servir d’identifiant.
Identification des type-associations – Identifiez les type-associations reliant les
type-entités du modèle. Le cas échéant, leur affecter les attributs correspondant.
Vérification du modèle – Vérifiez que le modèle respecte bien les règles que nous avons
énoncés et les définitions concernant la normalisation des type-entités et des type-
associations. Le cas échéant, opérez les modifications nécessaires pour que le modèle soit
bien formé.
GBD - S5 54
Exercice
GBD - S5 55
Exercice 2
Une banque désire posséder un SGBD pour suivre ses clients. Elle désire ainsi
stocker les coordonnées de chaque client (nom, prénom adresse), et les
comptes dont elle dispose ainsi que leur solde (sachant par ailleurs que
certains compte ont plusieurs bénéficiaires). On stockera également les
opérations relatives à ces comptes (retrait et dépôt, avec leur date et le
montant).
Questions :
• Identifier les différentes entités et leurs propriétés pour cette gestion
• Préciser les différentes associations entre les entités et ajouter les
propriétés pour les associations porteuses de propriétés.
• Préciser les cardinalités pour les différentes associations.
GBD - S5 56
Exercice 3
Le but est de construire un système permettant de gérer un magasin de vente de produit a des particuliers.
Les produits du magasin possèdent une référence (un code), un libelle et un prix unitaire.
Les clients ont une identité (nom, prénom, adresse).
Les clients passent des commandes de produits. On mémorise la date de la commande.
Pour chaque commande, le client précise une adresse de livraison.
La commande concerne un certain nombre de produits, en une quantité spécifiée pour chaque produit.
Questions :
• Identifier les différentes entités et leurs propriétés pour cette gestion
• Préciser les différentes associations entre les entités et ajouter les propriétés pour les associations porteuses
de propriétés.
• Préciser les cardinalités pour les différentes associations.
GBD - S5 57
E aministration
• Dans le cadre de la mise en place de la e-adminitsration au Maroc, les bureaux d’états civils des arrondissements des
différentes préfectures du royaume et des consulats du Maroc à l’étranger ont décidé d’informatiser la gestion des
services d’états civils offerts aux citoyens.
• Pour enregistrer un nouveau-né, le déclarant de la naissance (obligatoirement un parent ou tuteur) doit se rendre au
bureau d’état civil le plus proche de son domicile. Le bureau d’état civil est caractérisé par le numéro d’arrondissement,
le nom de la préfecture et la ville. Le déclarant doit être muni du certificat de naissance du nouveau-né, délivré par la
clinique ou l’hôpital dans lequel a eu lieu la naissance, après quoi, ce nouveau-né est inscrit au niveau du registre du
bureau d’état civil (identifié par un numéro, une année), par l’intermédiaire de l’officier d’état civil, qui est caractérisé par
son matricule, nom, prénom, date de prise de service au niveau du bureau. Les informations suivantes sont nécessaires
pour l’enregistrement d’un nouveau-né : Numéro d’enregistrement, nom, prénom, date de naissance, nom et prénom du
père, nom et prénom de la mère, prénoms des grand parents paternels et maternels, ville et pays de naissance (sans
oublier les personnes nées à l’étranger).
• Lors du décès d’une personne, un proche parent doit déclarer ce décès au niveau du bureau, à la suite de la
présentation du certificat du médecin légiste, l’officier du bureau procède à l’enregistrement du décès au niveau du
registre en incluant le Numéro de l’acte de naissance ainsi que la date et le lieu du décès.
• L’essentiel des documents délivrés par le bureau d’état civil sont l’extrait d’acte de naissance et l’attestation de décès
d’un citoyen.
GBD - S5 58
Exercice Cas d’une bibliothèque
Une petite bibliothèque souhaite informatiser la gestion de son fonds documentaire et de ses
emprunts. Dans cette perspective, le bibliothécaire, qui n’est pas un informaticien, a rédigé le texte
suivant :
Grâce à cette informatisation, un abonné devra pouvoir retrouver un livre en connaissant son titre.
Il doit aussi pouvoir connaître la liste des livres d’un auteur, la liste des auteurs d’un livre ainsi que
son éditeur. Chaque livre est acheté en un ou plusieurs exemplaires. Attention, un livre est parfois
édité plusieurs fois, éventuellement par des éditeurs différents. Pour s’abonner, une personne doit
verser une caution et laisser ses coordonnées. Suivant le montant de sa caution, un abonné a le
droit d’emprunter entre deux et dix ouvrages simultanément. Les prêts sont accordés pour une
durée de quinze jours. La gestion des prêts doit permettre de connaître, à tout moment, la liste des
livres détenus par un abonné, et inversement, de retrouver le nom des abonnés détenant un livre
absent des rayons. La gestion du fonds documentaire doit permettre de connaître pour chaque
exemplaire sa date d’achat, son état et s’il est disponible en rayon dans la bibliothèque.
• Identifiez, dans le texte ci-dessus, les mots devant se concrétiser par des entités,
des associations ou des attributs.
• Proposez un modèle entités-associations bien formé permettant de modéliser la situation décrite
ci-dessus.
GBD - S5 59
Chapitre 3
Bases de données relationnelles
GBD - S5 60
Introduction au modèle relationnel
• Dans ce modèle, les données sont représentées par des tables, sans
préjuger de la façon dont les informations sont stockées dans la
machine. Les tables constituent donc la structure logique du modèle
relationnel. Les tables ne représentent donc qu’une abstraction de
l’enregistrement physique des données en mémoire.
GBD - S5 61
Introduction au modèle relationnel
Les objectifs du modèle relationnel sont :
• proposer des schémas de données faciles à utiliser ;
• améliorer l’indépendance logique et physique ;
• mettre à la disposition des utilisateurs des langages de haut niveau ;
• optimiser les accès à la base de données ;
• améliorer l’intégrité et la confidentialité ;
• fournir une approche méthodologique dans la construction des schémas.
De façon informelle, on peut définir le modèle relationnel de la manière suivante :
• les données sont organisées sous forme de tables à deux dimensions, encore appelées
relations, dont les lignes sont appelées n-uplet ou tuple en anglais ;
• les données sont manipulées par des opérateurs de l’algèbre relationnelle ;
• l’état cohérent de la base est défini par un ensemble de contraintes d’intégrité.
Au modèle relationnel est associée a la théorie de la normalisation des relations qui permet de se débarrasser
des incohérences au moment de la conception d’une base de données relationnelle.
GBD - S5 62
Éléments du modèle relationnel
attribut- Un attribut est un identificateur (un nom) décrivant une
information stockée dans une base.
Exemples d’attribut : l’âge d’une personne, le nom d’une personne, le
numéro de sécurité sociale.
Domaine- Le domaine d’un attribut est l’ensemble, fini ou infini, de ses
valeurs possibles.
Par exemple, l’attribut numéro de sécurité sociale a pour domaine
l’ensemble des combinaisons de quinze chiffres et nom a pour domaine
l’ensemble des combinaisons de lettres (une combinaison comme cette dernière
est généralement appelée chaîne de caractères ou, plus simplement, chaîne).
relation- Une relation est un sous-ensemble du produit cartésien de n
domaines d’attributs (n > 0).
Une relation est représentée sous la forme d’un tableau à deux dimensions
dans lequel les n attributs correspondent aux titres des n colonnes.
GBD - S5 63
Éléments du modèle relationnel
schéma de relation- Un schéma de relation précise le nom de la
relation ainsi que la liste des attributs avec leurs domaines.
Exemple de relation de schéma Personne(N˚ sécu : Chaine, Nom :
Chaîne, Prénom : Chaîne)
GBD - S5 64
Éléments du modèle relationnel
degré- Le degré d’une relation est son nombre d’attributs.
occurrence ou n-uplets ou tuples- Une occurrence, ou n-uplets, ou tuples,
est un élément de l’ensemble figuré par une relation. Autrement dit, une
occurrence est une ligne du tableau qui représente la relation.
cardinalité- La cardinalité d’une relation est son nombre d’occurrences.
clé candidate- Une clé candidate d’une relation est un ensemble
minimal des attributs de la relation dont les valeurs identifient à coup
sûr une occurrence.
La valeur d’une clé candidate est donc distincte pour toutes les tuples
de la relation. La notion de clé candidate est essentielle dans le modèle
relationnel.
Règle Toute relation a au moins une clé candidate et peut en avoir
plusieurs.
GBD - S5 65
Éléments du modèle relationnel
clé primaire- La clé primaire d’une relation est une de ses clés
candidates. Pour signaler la clé primaire, ses attributs sont généralement
soulignés.
clé étrangère- Une clé étrangère dans une relation est formée d’un
ou plusieurs attributs qui constituent une clé primaire dans une autre
relation.
schéma relationnel- Un schéma relationnel est constitué par
l’ensemble des schémas de relation.
base de données relationnelle- Une base de données relationnelle est
constituée par l’ensemble des n-uplets des différentes relations du
schéma relationnel.
GBD - S5 66
Passage du modèle entités-associations au
modèle relationnel : Règles de passage
• Pour traduire un schéma du modèle entités-associations vers le modèle relationnel, on peut
appliquer les règles suivantes :
1. La normalisation devrait toujours être effectuée avant le passage au modèle relationnel. Dans les
faits, elle est parfois faite a posteriori, ce qui impose
toujours une surcharge de travail importante.
2. Chaque type-entité donne naissance à une relation. Chaque attribut de ce type-
entité devient un attribut de la relation. L’identifiant est conservé en tant que clé de la relation.
3. Chaque type-association dont aucune patte n’a pour cardinalité maximale 1 donne naissance à
une relation. Chaque attribut de ce type-association devient un attribut de la relation. L’identifiant,
s’il est précisé, est conservé en tant que clé de la relation, sinon cette clé est formée par la
conbinaison des identifiants des type-entités qui interviennent dans le type-association.
4. Un type-association dont au moins une patte a une cardinalité maximale à 1 (ce type- association
devrait être binaire et n’a généralement pas d’attribut) ne devient pas une relation. Il décrit en effet
une dépendance fonctionnelle. La relation correspondant au type-entité dont la patte vers le type-
association a une cardinalité maximale valant 1, se voit simplement ajouter comme attribut (et
donc comme clé étrangère) l’identifiant de l’autre type-entité.
GBD - S5 67
Passage du modèle entités-associations au
modèle relationnel : Règles de passage
GBD - S5 68
Passage du modèle entités-associations au
modèle relationnel : Règles de passage
GBD - S5 69
Passage du modèle entités-associations au
modèle relationnel : Règles de passage
GBD - S5 70
Exemple complet
GBD - S5 71
Exercice
GBD - S5 72
Chapitre 4
Algèbre relationnelle
GBD - S5 73
Introduction
L’algèbre relationnelle est un support mathématique cohérent sur
lequel repose le modèle relationnel. L’objet de cette section est
d’aborder l’algèbre relationnelle dans le but de décrire les opérations
qu’il est possible d’appliquer sur des relations pour produire de
nouvelles relations. L’approche suivie est donc plus opérationnelle que
mathématique.
GBD - S5 74
Les opérateurs
• Les opérateurs unaires (Sélection, Projection) : ce sont les opérateurs
les plus simples, ils permettent de produire une nouvelle table à partir
d’une autre table.
• Les opérateurs binaires ensemblistes (Union, Intersection Différence) :
ces opérateurs permettent de produire une nouvelle relation à partir de
deux relations de même degré et de même domaine.
• Les opérateurs binaires ou n-aires (Produit cartésien, Jointure,
Division) : ils permettent de produire une nouvelle table à partir de
deux ou plusieurs autres tables.
Les notations ne sont pas standardisées en algèbre relationnelle. Ce
cours utilise des notations courantes mais donc pas forcément
universelles.
GBD - S5 75
Sélection
Sélection- La sélection (parfois appelée restriction) génère une relation
regroupant exclusivement toutes les occurrences de la relation R qui
satisfont l’expression logique E, on la note σ(E)R.
En d’autres termes, la sélection permet de choisir (i.e. sélectionner) des
lignes dans le tableau. Le résultat de la sélection est donc une nouvelle
relation qui a les mêmes attributs que R. Si R est vide (i.e. ne contient
aucune occurrence), la relation qui résulte de la sélection est vide.
GBD - S5 76
Sélection
Num_Prod Désignation Prix
P001 Laptop Fujitsu i70 12500 DH
P002 PC Hp note book 11200 DH
P003 Tablette Samsung 5 3200 DH
P004 Mac book Air 18500 DH
P005 Onduleur 1850 DH
GBD - S5 78
Sélection
Exemple de projection sur la relation Produit: Π(Désignation)Produit
Désignation
Laptop Fujitsu i70
PC Hp note book
Tablette Samsung 5
Mac book Air
Onduleur
GBD - S5 79
IV. Algèbre relationnelle
Les opérateurs binaires ou n-aires: Produit cartésien
Notation : R1 × R2
Notation : R1 × R2
q Le résultat du produit cartésien est une nouvelle relation qui a
tous les attributs de R1 et tous ceux de R2.
q Si R1 ou R2 ou les deux sont vides, la relation qui résulte du
produit cartésien est vide.
q Le nombre d’enregistrements de la relation qui résulte du
produit cartésien est le nombre d’enregistrements de R1 multiplié
par le nombre d’enregistrements de R2.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Produit cartésien
q Pour deux tables R1 et R2, table R1 × R2 est le résultat de
l’algorithme suivant :
Pour chaque ligne de R1 faire
Pour chaque ligne de R2 faire
concaténer la ligne de R1 avec la ligne de R2
Fin Pour
Fin Pour
q Propriétés de la structure:
§ degré(R1 × R2 )=degré(R1)+degré(R2 )
§ cardinalité(R1 × R2 )= cardinalité (R1) * cardinalité (R2 )
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Produit cartésien
Exemple : PERSONNE × ACHAT
PERSONNE × ACHAT
R1 ⋈E R2 = σE (R1 × R2)
q Est le résultat de l’algorithme suivant :
Pour chaque ligne de R1 faire
Pour chaque ligne de R2 faire
lig= concaténer ligne R1 avec ligne R2
Si E(lig)=vrai alors garder lig
Fin Pour
Fin Pour
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
Exemple de jointure : PERSONNE ⋈((âge ≤ âgeA)Ʌ(prix ≤500))ACHAT
ACHAT
PERSONNE
âgeA article prix
nom prénom âge
99 livre 500
Sabri Zahraa 7
7 poupée 200
Yahy Khalid 43
22 baladeur 900
Samir Fouad 16
11 montre 250
PERSONNE ⋈((âge ≤ âgeA)Ʌ(prix ≤500))ACHAT
nom prénom âge âgeA article prix
Sabri Zahraa 7 99 livre 500
Sabri Zahraa 7 7 poupée 200
Sabri Zahraa 7 11 montre 250
Yahy Khalid 43 99 livre 500
Samir Fouad 16 99 livre 500
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle
Exemple de jointure : PERSONNE ⋈((âge ≤ âgeA)Ʌ(prix ≤500))ACHAT
§ Thêta-jointure
Définition : La thêta-jointure est une jointure dans laquelle
l’expression logique E est une simple comparaison entre un
attribut A1 de la relation R1 et un attribut A2 de la relation R2.
§ Équi-jointure
Définition : Une équi-jointure est une thêta-jointure dans laquelle
l’expression logique E est un test d’égalité entre un attribut A1 de
la relation R1 et un attribut A2 de la relation R2. L’équi-jointure est
notée R1 ⋈A1=A2 R2.
NB: Il vaut mieux écrire R1 ⋈A1=A2 R2 que R1 ⋈A1,A2 R2, car cette
dernière notation, bien que parfois dans la littérature, prête à
confusion avec une jointure naturelle explicite.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle
§ Jointure naturelle
Définition : Une jointure naturelle est une jointure dans laquelle
l’expression logique E est un test d’égalité entre les attributs qui
portent le même nom dans les relations R1 et R2.
q Dans la relation construite, ces attributs ne sont pas
dupliqués, mais fusionnés en une seule colonne par couple
d’attributs.
q La jointure naturelle est notée: R1 ⋈ R2 .
q Si la jointure ne doit porter que sur un sous-ensemble des
attributs communs à R1 et R2 il faut préciser explicitement ces
attributs de la manière suivante : R1 ⋈A1, .., An R2.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle
§ Jointure naturelle
q Si R1 et R2 n’ont qu’un attribut en commun. Dans ce cas, une
jointure naturelle est équivalente à une équi-jointure dans
laquelle l’attribut de R1 et celui de R2 sont justement les deux
attributs qui portent le même nom.
PERSONNE ⋈(âge)ACHAT
nom prénom âge article prix
Sabri Zahraa 7 poupée 200
Yahy Khalid 43 Livre 500
Samir Fouad 7 poupée 200
Tami Ayoub 25 montre 250
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Division
ENSEIGNEMENT÷ ETUDIANT
ENSEIGNEMENT ETUDIANT
nomEnseignant nomEtudiant nomEnseignant
nomEtudiant
Germain Dubois Germain
Dubois
Fidus Pascal Fidus
Pascal
Robert Durand
Germain Pascal
Fidus Dubois
IV. Algèbre relationnelle
IV.5. Exercices
Nom Age Profession
Nom_imb Adresse Nb_étage Année Nomgérant
Alami 54 Architecte
Annakhil 22 Rue Azrou, Rabat 10 2009 Alami
Atif 39 Médecin
Firdaous 15 bd des Far, Fès 5 2000 Dahbi
Barhoum 58 Avocat
Table Immeuble Dahbi 65 Retraité
Table Personne
Nom_imb No_app Superficie Etage
Annakhil 1 150 10 Nom_imb No_app Nom_occ Année_h
Annakhil 2 100 1
Annakhil 1 Alami 2009
Annakhil 10 90 9
Annakhil 2 Dahbi 2009
Firdaous 5 120 2
Firdaous 10 100 5 Firdaous 5 Atif 2001
§ En mode intégré :
Une commande SQL est mélangée avec les instructions
d’un programme en langage de haut niveau tel que C,
C++, Visual basic, ...
V.2. Types de données
§ INTEGER ou INT : entiers signés.
§ TEXT(p) ou CHAR(p) : chaîne de caractères de longueur fixe de p
caractères.
§ VARCHAR (p): chaîne de caractères de longueur variable de p
caractères maximum.
§ DATE, TIME, DATETIME: dates et/ou heures.
§ LOGICAL : valeur logique « oui » ou « non ».
§ DECIMAL(p, q) : nombres décimaux de p chiffres dont q après le
point décimal (par défaut, q = 0).
§ FLOAT : nombre réel en virgule flottante(il y a aussi Single pour
simple et Double pour réel double).
§ CURRENCY, MONEY : Monétaire.
§ COUNTER : Compteur (NuméroAuto).
V.2. Types de données
q Expressions de contraintes d'intégrité en SQL
§ Une contrainte d'intégrité est une clause permettant d’obliger la
modification de tables, faite par l'intermédiaire de requêtes
d'utilisateurs, afin que les données saisies dans la base soient
conformes aux données espérées (assurer la cohérence des
données dans une base) est:
Ø INTÉGRITÉ DE DOMAINE
Ø INTÉGRITÉ DE RELATION(DE CLÉ)
Ø INTÉGRITÉ DE RÉFÉRENCE
V.2. Types de données
q Expressions de contraintes d'intégrité en SQL
Ces contraintes doivent être exprimées dès la création de la table grâce
aux mots clés suivants:
Ø NULL / NOT NULL : valeurs non obligatoires/obligatoires.
Ø DEFAULT (Valeur) : pour définir une valeur par défaut*
Ø CHECK (Condition): pour contrôler la validité des valeurs*
Ø UNIQUE : permet de vérifier que la valeur saisie pour un
champ n'existe pas déjà dans la table.
Ø PRIMARY KEY : clé primaire.
Ø FOREIGN KEY : clé étrangère.
CONSTRAINT : permet de donner un nom à une contrainte ce qui
permet de la manipuler.
V.2. Types de données
§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table avec une clé
primaire simple :
CREATE TABLE Nom_table (
champ1 type [CONSTRAINT nom_contrainte] PRIMARY KEY,
champ2 type [NOT NULL],
…,
…….,
champN type [NOT NULL] );
3. Requêtes d’action
§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table avec une clé
primaire composée :
CREATE TABLE Nom_table (
champ1 type [NOT NULL],
champ2 type [NOT NULL],
…,
champN type,
PRIMARY KEY (champ1, champ2,…) );
3. Requêtes d’action
§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table avec une clé
primaire composée :
CREATE TABLE Nom_table (
champ1 type [NOT NULL],
champ2 type [NOT NULL],
…, champN type,
[CONSTRAINT nom_contrainte1] PRIMARY KEY (champ1,
champ2,…) );
3. Requêtes d’action
§ Création de table : Exemples
CREATE TABLE Client (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4) ) ;
3. Requêtes d’action
§ Création de table : Exemples
CREATE TABLE Client (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4)
UNIQUE(nom) ) ;
3. Requêtes d’action
V. Langage SQL
3. Requêtes d’action
§ Création d’une table : Exemples
ü Créez une requête SQL permettant de créer la table
DETAILS ( Ncommande: entier, Réf: texte(30), Pu: réel non
nul, Quantité: entier non nul, Remise: réel simple );
Ville Text(20) ) ;
UNIVERSITE IBN TOFAIL ENCGK
V. Langage SQL
V.3. Requêtes d’action
CREATE TABLE EMPLOYES (
Nemployé INTEGER PRIMARY KEY,
Nom TEXT(25),
Prénom TEXT(20),
Fonction TEXT(15),
Adresse TEXT(50),
Codeville LONG ) ;
Ø Exemples :
Ø Syntaxe :
UPDATE table SET nouvelles valeurs WHERE critères
3. Requêtes d’action
§ Modification d’un enregistrement
UPDATE table SET nouvelles valeurs WHERE critères
Ø Les champs à mettre à jour doivent être écrits dans la clause SET,
l’un après l’autre (avec leurs valeurs) et séparés par des virgules.
§ Suppression d’enregistrements
Ø Exemples :
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)
GBD - S5 152
• Requêtes de consultation de tables
• Projection, Sélection, Jointure
• Tri, Agrégation, Partitionnement
153
Projection
Syntaxe SQL :
SELECT [UNIQUE1] liste_attributs2 FROM Table ;
Équivalent AR :
Pliste_attributs R(Table)
154
Projection - Exemples
Donner les noms, les prénoms et les âges de tous les étudiants.
Donner les numéros des étudiants dans une colonne nommée Numéro.
155
Sélection
Syntaxe SQL :
SELECT * FROM table WHERE condition;
Équivalent AR :
scondition R(Table)
La condition peut formée sur des noms d'attributs ou des constantes avec
• des opérateurs de comparaison : =, >, <, <=, >=, <>1
• des opérateurs logiques : AND, OR, NOT
• des opérateurs : IN, BETWEEN+AND, LIKE, EXISTS, IS
• _ qui remplace un caractère et % qui remplace une chaîne de caractères
156
Sélection – Exemples
Sur la relation Étudiants(#Num, Nom, Prénom, Age, Ville, CodePostal)
Quels sont tous les étudiants âgés de 20 ans ou plus ?
SELECT * FROM Étudiants WHERE (Age >= 20);
Quels sont tous les étudiants âgés de 19 à 23 ans ?
SELECT * FROM Étudiants WHERE Age IN (19, 20, 21, 22, 23);
SELECT * FROM Étudiants WHERE Age BETWEEN 19 AND 23;
Quels sont tous les étudiants habitant à casa ?
SELECT * FROM Étudiant WHERE CodePostal LIKE ’20*' ;
Quels sont tous les étudiants dont la ville est inconnue/connue ?
SELECT * FROM Étudiants WHERE Ville IS NULL ;
SELECT * FROM Étudiants WHERE Ville IS NOT NULL ;
157
Produit Cartésien
Syntaxe SQL :
SELECT *
FROM table1 [Alias1], ..., tablen [Aliasn],
Équivalent AR :
Table1 ´ ... ´ Table n
158
q-Jointure
Syntaxe SQL : Possibilité de Renommage des tables
SELECT *
FROM table1 [Alias1], ..., tablen [Aliasn],
WHERE condition;
Équivalent AR :
Table1 q ... q Table n
Autre Syntaxe :
SELECT * FROM table1 INNER JOIN table2 ON condition;
159
Jointure - Exemples
Soient les relations Produit (prod, nomProd, fournisseur, pu)
DétailCommande (numcmd, prod, pu, qte, remise)
Quels sont les numéros de commande correspondant à l'achat d'une table ?
SELECT DC.numcmd
FROM Produit P, DétailCommande DC
WHERE P.prod =DC.prod
AND nomProd LIKE "table";
160
Union, Intersection et Différence
Table1 È Table2 : SELECT liste_attributs FROM table1
UNION
SELECT liste_attributs FROM table2 ;
161
Tri de résultats
Syntaxe :
Cette clause se place derrière la clause WHERE
ORDER BY attribut [ordre] [, attribut [ordre] ...]
On peut préciser un ordre croissant ASC ou décroissant DESC.
Exemple
Trier Stock par numéro de produit croissant et par quantité décroissante
SELECT *
FROM Stock
WHERE qte > 0
ORDER BY prod ASC, qte DESC
162
Agrégation des résultats
Il est possible d'utiliser des fonctions f d'agrégation dans le résultat d'une sélection.
Syntaxe :
SELECT f ( [ ALL | DISTINCT ] expression)
FROM ...
où f peut être COUNT nombre de tuples
SUM somme des valeurs d'une colonne
AVG moyenne des valeurs d'une colonne
MAX maximum des valeurs d'une colonne
MIN minimum des valeurs d'une colonne
Pour COUNT, on peut aussi utiliser COUNT(*)
Seul COUNT prend en compte les valeurs à NULL.
163
Fonctions d'agrégation - Exemples
Quelle est la meilleure note ?
Résultats (de Pierre)
SELECT MAX(Note) FROM Résultats ® 15
Matière Coef Note
Quelle est la plus mauvaise note ?
Maths 4 15 SELECT MIN(Note) FROM Résultats ®9
Sc Nat 3 9 Quelle la somme pondérée des notes ?
165
Partitionnement des résultats - Exemples
Résultats (de Pierre)
Quelle est la note moyenne pour chaque coefficient ?
Matière Coef Note
SELECT coef, Avg(note) as Moyenne Coef Moyenne
Maths 4 15
1 11
FROM Résultats
Sc Nat 3 9 2 12
GROUP BY coef;
Sc Phy 3 12 3 10.5
4 15
Français 2 13
Quels sont les coefficients auxquels participe une seule
Sc Hum 2 11 matière ?
166
Ajouts de tuples dans une relation
Syntaxe :
Pour insérer un tuple complètement spécifié :
INSERT INTO Table VALUES (val1,..., valn);
167
Exemples d'insertion
Sur les relations Étudiants (#Num, Nom, Prénom, Age, Ville, CodePostal)
ClubThéâtre(#Num, Nom, Prénom)
Ajouter l'étudiant ALAMI Ahmed, 21 ans, habitant casa avec le numéro 634.
168
Modification de tuples
Syntaxe :
UPDATE Table
SET attribut1 = expr1, ..., attributn = exprn
FROM ...
WHERE ...
169
Mise à jour - Exemple
UPDATE Étudiants
SET Age = Age + 1;
On a appris que tous les étudiants de casa ont déménagé à rabat.
UPDATE Étudiants
SET Ville = ‘rabat', CodePostal = ‘21000'
WHERE Ville = ‘CASA';
170
Suppression de Tuples
Syntaxe :
DELETE FROM Table
[WHERE condition]
Remarque :
! Si on supprime tous les tuples d'une relation,
le schéma de relation existe toujours !
Exemple :
Retirer de la liste tous les étudiants de plus de 22 ans.
171
TP SQL
On considère la base de données suivante qui concerne la gestion
des travaux facturés par le cabinet d’expertise comptable FidOrient.
On donne ci-dessous un extrait du schéma relationnel de la base de
données de cette société tel que le représente Access :
Comptable(NomComptable, PrénomComptable) ;
Client(CodeClient, Raisonsociale, Rue, CP, Ville, NomComptable) ;
Realiser(Date, CodeClient, CodeTravaux, TempsPassé) ;
Travaux(CodeTravaux, Libellé, CoûtHoraire) ;
172
Req1
Select *
From Client
Where ville = « rabat »;
173
Req2
select raisonsociale
From Client C, Réaliser R
where c.codeclient=r.codeclient and
ville=[saisir une ville]
order by Raisonsociale ASC;
174
Req 3
Select raisonsociale
from Client C,Réaliser R
where c.codeclient=r.codeclient
And Date between 15/11/2005 and
17/11/2005
order by raisonsociale asc;
175
Req 4
Where C.codeclient=R.codeclient
and R.codetravaux=T.codeTravaux
and date between 01/11/2005 and
15/11/2005 and
Nomcomptable=[saisir un
comptable] 176
Select top 5 libellé,
177
Req 6
178
Req 6
Select (couyhoraire*tempspassé) as
total, libellé
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient
and T.codeTravaux=R.codetravaux
and Raisonsociale=« Chama »;
179
Req 8
Select count(*)
from client;
180
Req 9
Select SUM(couthoraire*tempspassé) as facture,
SUM(couthoraire*tempspassé) *0,95 as factred, raisonsociale
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient and T.codeTravaux=R.codetravaux
Group By RaisonSociale
Having facture>600;
UNION
Select SUM(couthoraire*tempspassé) as facture,
SUM(couthoraire*tempspassé) as factred, raisonsociale
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient and
T.codeTravaux=R.codetravaux
Group By RaisonSociale
Having facture<=600;
181
• Update Client
• Set Rue=« Mehdia,2210 » , ville=« kénitra »
• Where codeclient=18;
182