Base de données
(Microsoft Access)
EL BAHRI Nisserine
[email protected]
1
Bases de données
➢ Bases de données : Collection homogène et structurée d'informations ou de
données qui existent sur une longue période de temps et qui décrivent les
activités d'une ou plusieurs organisations
Exemple 1 :
Organisation : une bibliothèque
Données : les livres, les emprunts, les emprunteurs
Exemple 2 :
Organisation : une Université
Données : les étudiants, les enseignants, les cours, etc.
SGBD
Systèmes de Gestion de Bases de Données (DataBase
Management Systems - DBMS) :
Ensemble de logiciels systèmes permettant aux utilisateurs
d'insérer, de modifier, et de rechercher efficacement des données
spécifiques dans une grande masse d'informations (pouvant
atteindre plusieurs milliards d'octets) partagée par de multiples
utilisateurs
Exemples : Microsoft Access, MySQL, PostgreSQL, Oracle,
SQLServer, etc.
SGBD
➢ Principales fonctionnalités d’un SGBD :
• Création et mises à jour de la structure de la base de données(par le
concepteur et/ou le DBA DataBase Administrator)
• Administration de la base de données: gestion des utilisateurs, des
droits d’accès etc. (par l’administrateur –DBA)
• Saisie et mises à jour des données(par le concepteur et/ou les
utilisateurs)
• Interrogation des données selon différents critères et/ou en effectuant
des calculs (par les utilisateurs)
MICROSOFT ACCESS
Concepts de base
➢ Relation (table)
• Collection de nuplets (tuples en anglais) décrivant des données de même
structure
• Tableau à deux dimensions composé d’attributs(ou champs -en colonnes)
et de nuplets (ou enregistrements en ligne)
Nom de la relation Noms des 6 attributs
Dans une relation :
3 nuplets
! Pas de doublon
Pas deux attributs de même nom
Concepts de base
➢ Clé Primaire
Attribut (ou ensemble d’attributs) permettant d’identifier de manière unique
les nuplets de la relation
Exemples :
L’attribut ISBN pour une relation Livre
L’attribut NuméroImmatriculation pour une relation Voiture
L’attribut NuméroCarte pour une relation Emprunteur
Par défaut : Création d’un attribut numérique s’incrémentant
automatiquement
primaire est unique (pas deux fois la même
! valeur) et a forcément une valeur (pas de valeur null)
Concepts de base
➢ Clé étrangère
Attribut (ou ensemble d’attributs) d’une relation qui fait (font)
référence à la clé primaire d’une autre relation
A quoi cela sert ? Exemple d’une mauvaise relation :
Problèmes :
• Répétition des noms, prénoms, dates de naissances, ISBN, etc.
• d’emprunts = Redondance d’information
• Comment identifier les nuplets ?
⇒ Ne pas mettre toutes les données dans une seule relation !!!
!
Concepts de base
➢ Clé étrangère
La solution ? Diviser les données en plusieurs relations
⇒ Division en 3 relations associées : Emprunteurs, Emprunts et Livres
⇒ Stockage unique des informations de chaque livre
⇒ Stockage unique des informations de chaque emprunteur
⇒ Stockage unique des informations de chaque emprunt
Attention : Access appelle Relation ce qui en fait s’appelle Entité
Concepts de base
➢ Clé étrangère
Associations entre plusieurs relations
Un emprunteur peut faire
Association un-à-plusieurs plusieurs emprunts (∞)
entre les relations Emprunteurs mais
et Emprunts un emprunt correspond à un
seul emprunteur (1)
Concepts de base
➢ Clé étrangère
L’attribut RefEmprunteur de la relation Emprunts est une clé
étrangère qui fait référence à l’attribut NuméroCarte de la relation
Emprunteurs
L’attribut RefLivreEmprunté de la relation Emprunts est une clé
étrangère qui fait référence à l’attribut ISBN de la relation Livres
Concepts de base
➢ Clé étrangère
Concepts de base
➢ Clé étrangère
Intégrité référentielle : Ensemble de règles garantissant
la cohérence (l'intégrité) des données réparties dans
plusieurs relations
Exemple d’une de ces règles :
Concepts de base
➢ Index
Structure de données, gérée par le système, permettant
d’accélérer l’accès aux données
Un index est associé à un ou plusieurs attributs
La clé primaire est indexée par défaut
Exemple : Si on cherche les enseignants parmi les emprunteurs
Relation Emprunteurs
Sans index ⇒ Lecture par le SGBD de tous les nuplets de la relation
Avec un index ⇒ Accès direct aux nuplets concernés
Enseignant 1236
Etudiant 1234, 1235
Concepts de base
➢ Index
• Index sur la clé primaire créé automatiquement
• Créer un index lorsque :
• L’attribut est utilisé comme critère de recherche dans
plusieurs requêtes
• L’attribut est utilisé comme critère de tri
• Les valeurs de l’attribut sont très différentes (plusieurs
centaines ou milliers de valeurs différentes)
• La relation contient plusieurs milliers de nuplets
Un index ralentit les mises à jour
L’ajout, la suppression ou la mise à jour de nuplets impliquent une
! mise à jour de l’index
⇒Ne pas créer trop d’index !
Création d’une BD
Clé ➢ Créer une relation (ou table)
primaire
Partie où
définir les
attributs
Partie où
définir les
propriétés
de l’attribut
Penser à commenter vos relations (pour vous plus tard et
pour ceux qui utiliseront votre base de données) !!
Création d’une BD
➢ Type de données
✓ Texte : Chaîne de 255 caractères maximum
✓ Mémo : Texte de 65535 caractères maximum
✓ Numérique : Ensemble de chiffres
• Octet : valeur entière entre 0 et 255
• Entier : valeur entière entre –32768 et +32768
• Entier long : valeur entière entre –2147483648 et +2147483648
• Réel simple et réel double : valeur décimale négative ou positive (précision
de7 chiffres pour simple de 15 pour double)
• Décimal : valeur décimale négative ou positive avec une précision de 28
chiffres décimaux
✓ Date/Heure : Type spécifique pour les dates et les heures
✓ Monétaire : Valeur numérique avec possibilités de gérer
automatiquement le symbole monétaire et le format d’affichage
✓ Oui/non : valeur booléenne (oui/non, vrai/faux, actif/inactif, etc.)
✓ Objet OLE : pour incorporer des images, des fichiers Excel, etc.
✓ Assistant liste de choix : pour insérer une liste de valeurs possibles
Création d’une BD
➢ Propriétés d’un attribut
✓ Taille du champ : taille maximum
Ex. Octet ou Entier pour le type Numérique
✓ Format : aspect des valeurs de l’attribut à l’affichage Ex. >
(caractère supérieur) pour forcer les majuscules < (caractère inférieur)
pour forcer les minuscules
✓ Masque de saisie : pour contrôler la saisie des valeurs de l’attribut
✓ Légende : remplace le nom de l’attribut à l’affichage
✓ Valeur par défaut : valeur prise par l’attribut avant toute saisie
✓ Valide si : Expression logique pour contrôler les valeurs saisies
✓ Ex. >=0 et <=20
✓ Message si erreur : texte affiché en cas d’erreur de saisie
✓ Null interdit : de la valeur oui ou non, indiquant si on peut ou non ne
pas donner de valeur (= null) à l’attribut
Par défaut pas de valeur null pour la clé primaire
✓ Indexé : de valeur non, oui avec doublons et oui sans doublon
Création d’une BD
➢ Masque de Saisie
Un masque de saisie est une chaîne de caractères qui indique le format des valeurs
d’entrée valides. Il est stocké en tant que propriété d’objet.
Caractères définissant les masques de saisie
Caractère Explication
0 L’utilisateur doit entrer un chiffre (0 à 9).
9 L’utilisateur peut entrer un chiffre (0 à 9).
L’utilisateur peut entrer un chiffre, un espace ou un signe plus ou moins. Si aucune valeur n’est entrée,
#
Access insère un espace vide.
L L’utilisateur doit entrer une lettre.
? L’utilisateur peut entrer une lettre.
A L’utilisateur doit entrer une lettre ou un chiffre.
a L’utilisateur peut entrer une lettre ou un chiffre.
& L’utilisateur doit entrer un caractère ou un espace.
C L’utilisateur peut entrer des caractères ou des espaces.
Séparateur décimal et séparateur des milliers, séparateur de date et séparateur d'heure. Le caractère
.,:;-/
que vous sélectionnez dépend de vos paramètres régionaux Windows.
> Convertit tous les caractères qui suivent en majuscules.
< Convertit tous les caractères qui suivent en minuscules.
Création d’une BD
➢ Liste de Choix
Domaine/Ensemble de valeurs prédéfinies d’un attribut
Deux possibilités :
• Saisie des valeurs souhaitées • Enregistrement des valeurs
"en dur" (difficilement dans une relation liée (plus
modifiable par la suite) souple)
Création d’une BD
➢ Valeur par défaut et expression
Utilisation de fonction
pour calculer la valeur
par défaut :
Date() : fonction
retournant la date du
jour
Création d’une BD
➢ Valeur par défaut et expression
Utilisation de fonction
pour calculer la valeur
par défaut :
Date()+30 : ajout de
30 jours à la date du
jour
Concepts de base
➢ Clé Primaire: TP1
1. Ouvrir le programme Microsoft Access selon plusieurs manières.
2. Créez une base de données vide sous le nom TP1.
3. Créez la table T_Contacts en y ajoutant les champs suivants (ajustez les propriétés selon
le type de données) : Champ Type Taille
NoContact Numérique Octet
Société Texte Court 50
Prénom Texte Court 50
Nom Texte Court 50
Adresse Texte Court 255
Ville Texte Court 50
Province Texte Court 2
CodePostal Texte Court 7
Titre Texte Court 50
Téléphone Texte Court 15
Poste Texte Court 10
Courriel Lien HyperText
✓ Résultat: Remarques Texte Long
Concepts de base
➢ Clé Primaire: TP1 (Suite)
1. Identifier la relation: (mode création)
Sélectionner l’attribut
identificateur : par exemple
Sélectionner l’attribut
identificateur : par exemple
Concepts de base
➢ Clé étrangère : TP1-2
1. Réouvrir le TP1
2. Renommer la table T_Contacts par clients.
3. Créer une deuxième table Commandes en y ajoutant les champs suivants (ajustez les
propriétés selon le type de données) :
4. Identifier la relation de la table commandes (clé primaire).
5. Créer une association une association entre les deux tables (clé étrangère), NB :
changer la taille par « entier long » du type « numérique » de l’attribut
« NoContact ».
6. Entrez les renseignements suivants concernant les commandes de chaque client :
Concepts de base
➢ Clé étrangère : TP1-2
Création des association
• Ajout des deux tables • Création d’association entre les deux tables
• Association un à plusieurs
Requêtes
➢ Différents types de requête :
• Requêtes d’interrogation (qu’on manipulera beaucoup)
• Requêtes d’insertion, de mise à jour et de suppression des
données
• Requêtes de définition de schéma
Requêtes
➢ Requête d’ interrogation
• Question sur les données
• Moyen d’extraction des données de la base en fonction
de plusieurs critères
• ≠ relation car pas de stockage des données du résultat
Il existe plusieurs manières d’écrire des requêtes :
• Requêtes graphiques
• Requêtes en SQL (Structured Query Language –Langage de
bases de données standard)
Il existe plusieurs types de requêtes
Requêtes
➢ Requête d’ interrogation
Requête de Sélection : Tri des données
Relation Emprunteurs
Résultat de la requête « Classement des emprunteurs par ordre
alphabétique des noms de famille ? »
29
Requêtes
➢ Requête d’ interrogation
Requête de Sélection : Filtrage des données selon
différents critères
Relation Emprunteurs
Résultat de la requête « Quels sont les noms et
prénoms des emprunteurs étudiants ? »
Résultat de la requête « Quels
sont les noms et prénoms des
emprunteurs étudiants habitant
Paris ? »
Requêtes
➢ Requête d’ interrogation
Requête de regroupement ou jointure
➢ Regroupement des données de plusieurs relations :
Relation Emprunteurs
Relation Livres
Relation Emprunts
« Quels sont les titres des
livres empruntés et le nom
et le prénom de leur(s)
emprunteur(s) ? »
Requêtes
➢ Requête d’ interrogation
Requête de regroupement ou jointure
➢ Regroupement des données de plusieurs relations :
Résultat de la requête « Quels sont les titres des livres empruntés
et le nom et le prénom de leur(s) emprunteur(s) ? »
➢ Possibilité de combiner Sélection et Jointure :
Résultat de la requête
« Quels sont les titres
des livres empruntés par 32
Albert Gamotte ? »
Requêtes
➢ Requête d’ interrogation
Requête de Calculs : Créer des données calculées
Relation Emprunteurs
Résultat de la requête « Combien y-a-t-il d’emprunteurs ? »
Résultat de la requête « Quel est l’age d’Albert Gamotte ? »
Requêtes
➢ Requête d’ interrogation
Combinaison des tous les types de requêtes
d’interrogation :
Relation Livres
Relation Emprunts
On reviendra sur
ces notions …
Résultat de la requête
« Combien y-a-t-il eu
d’emprunteurs par livre ? 34
»
Requêtes
➢ Créer une requête d’interrogation
3
5
Requêtes
➢ Requête de sélection
Définition de la requête « Quels sont les noms et prénoms des
emprunteurs étudiants ? »
La requête
porte sur la
relation Attributs nécessaires à la requête
Emprunteurs (ceux affichés dans le résultat sont cochés)
Tri pour
l’attribut
NomDeFamille
Valeur que doit avoir 3
l’attribut Type pour les 6
nuplets résultats
Requêtes
➢ Requête de sélection
Relation Emprunteurs
Résultat de la requête « Quels sont les
noms et prénoms des emprunteurs
étudiants ? »
Si on ne veut que les étudiants parisiens :
3
Comme : mot clé signifiant la chaîne de caractère ressemble7à
"*Paris*" : Mot Paris entre n’importe quels caractères
Requêtes
➢ Requête de sélection
Équivalence en SQL des requêtes graphiques :
Définition en SQL de la requête « Quels sont les noms et
prénoms des emprunteurs étudiants ? »
SELECT Emprunteurs.NomDeFamille, Emprunteurs.Prénom
FROM Emprunteurs
WHERE Emprunteurs.Adresse LIKE ‘*Paris*’
AND Emprunteurs.Type = ‘Etudiant’ ;
➢ Requête de calcule Requêtes
❖ Opérateurs arithmétiques
Les opérateurs arithmétiques permettent de calculer une valeur à partir de deux nombres ou plus, ou de
modifier le signe d’un nombre de positif à négatif ou inversement.
Opérateur Objectif Exemple
+ Additionner deux nombres. [Sous-total]+[TVA]
- Calculer la différence entre deux nombres ou indiquer la valeur négative d’un nombre. [Prix]-[Remise]
* Multiplier deux nombres. [Quantité]*[Prix]
/ Diviser le premier nombre par le deuxième nombre. [Total]/[NombreArticles]
Arrondir les deux nombres à des entiers, diviser le premier nombre par le deuxième, puis
\ [Inscriptions]\[Salles]
tronquer le résultat de manière à obtenir un nombre entier.
Mod Diviser le premier nombre par le deuxième, et ne renvoyer que le reste. [Inscriptions] Mod [Salles]
❖ Opérateurs de comparaison
Les opérateurs de comparaison permettent de comparer des valeurs et de renvoyer un résultat True
(vrai), False (faux) ou Null (valeur inconnue).
Opérateur Objectif Exemple
< Renvoie True si la première valeur est inférieure à la deuxième. Value1 < Value2
<= Renvoie True si la première valeur est inférieure ou égale à la deuxième. Value1 <= Value2
> Renvoie True si la première valeur est supérieure à la deuxième. Value1 > Value2
>= Renvoie True si la première valeur est supérieure ou égale à la deuxième. Value1 >= Value2
= Renvoie True si la première valeur est égale à la deuxième. Value1 = Value2
<> Renvoie True si la première valeur n’est pas égale à la deuxième. Value1 <> Value2
➢ Requête de calcule Requêtes
❖ Opérateurs logiques
Les opérateurs logiques permettent de combiner deux valeurs booléennes et de renvoyer un résultat True,
False ou Null. Les opérateurs logiques sont également appelés opérateurs booléens.
Opérateur Objectif Exemple
And True quand Expr1 et Expr2 ont la valeur True. Expr1 And Expr2
Or True quand Expr1 ou Expr2 ont la valeur True. Expr1 Or Expr2
Eqv True quand Expr1 et Expr2 ont toutes deux la valeur True ou la valeur False. Expr1 Eqv Expr2
Not True quand Expr n’a pas la valeur True. Not Expr
Xor True quand Expr1 ou Expr2 ont la valeur True, mais pas les deux. Expr1 Xor Expr2
❖ Opérateurs de concaténation
Les opérateurs de concaténation permettent de combiner deux valeurs de texte en une seule.
Opérateur Objectif Exemple
< Renvoie True si la première valeur est inférieure à la deuxième. Value1 < Value2
<= Renvoie True si la première valeur est inférieure ou égale à la deuxième. Value1 <= Value2
> Renvoie True si la première valeur est supérieure à la deuxième. Value1 > Value2
>= Renvoie True si la première valeur est supérieure ou égale à la deuxième. Value1 >= Value2
= Renvoie True si la première valeur est égale à la deuxième. Value1 = Value2
<> Renvoie True si la première valeur n’est pas égale à la deuxième. Value1 <> Value2
Requêtes
➢ Requête de calcule
Définition de la requête « Combien y-a-t-il d’emprunteurs ? »
Menu où
sélectionner
une opération
Requêtes
➢ Requête de calcule
Définition de la requête « Quel est l’age d’Albert Gamotte ? »
Age : Nom de l’attribut apparaissant dans le résultat de
requête
Int(DiffDate("j" ; [DateDeNaiisance];Date())/365,25) :
Formule de calcul de la valeur de l’attribut
Requêtes
➢ Requête de calcule
Age: Int(DiffDate("j";[DateDeNaissance];Date())/365,25)
• Age:⇒affectation à l’attribut Age du résultat de la formule
• Int (nombre)
Fonction arrondissant nombre(réel) à l’entier immédiatement
inférieur
• DiffDate(format,date1,date2)
Fonction retournant la différence entre date1et date2 Si format = "j"
alors retourne la différence en nombre de jours
• Date()
Fonction retournant la date du jour
• [DateDeNaissance]
Les attributs des relations (tables) utilisés dans les calculs sont mis
entre []
Requêtes
➢ Requête de calcule
Menu obtenu en cliquant avec le
bouton droit de la souris
Sous-menu Créer pour ouvrir le
Générateur d’expressions
Requêtes
➢ Requête de calcule
Requêtes
➢ Regrouper pour faire des calculs
Définition de la requête « Combien y-a-t-il eu d’emprunteurs par
livre ? »
Regroupement
des données
Pour chaque
nuplet de
Livres, Access
crée un groupe Création
de nuplets de (nommage) d’un
Emprunts nouvel attribut
(ceux associés pour le résultat de
au livre) Opération qui va comptabiliser le la requête
4
nombre de nuplets de la relation (table) 6
Emprunts associés à chaque nuplet de
Livres
Requêtes
➢ Regrouper pour faire des calculs
Les opérations s’obtiennent
par le menu Opérations
(bouton droit de la souris)
Requêtes
➢ TP2
1. Créer une base de données vide sous le nom « entreprise ».
2. Créer une table « employé ».
3. Saisir les données :
Prénom Nom Poste Bureau Salaire Commission Embauche
Roger Lepage Gérant Montréal 50000 92-01-01
Denis Lambert Vendeur Montréal 43000 92-01-01
Suzanne Rémi Vendeur Montréal 65000 93-01-01
Éric Gendron Vendeur Montréal 23000 93-06-06
4. Faire une modification à la table. Pour cela ajouter quatre nouveaux champs: Numéro de
poste, statut, permanence et commentaires. Le champ Numéro de poste sera utilisé
pour différencier chacun des enregistrements. Il sera la clé primaire de la table
Nom du champ Type de champ Taille
Numéro de poste Numero-Auto
Prénom Texte 15
Nom Texte 15
Poste Texte 10
Bureau Texte 15
Salaire Monétaire
Commission Monétaire
Embauche Date
Statut Numérique Entier long
Permanence Oui/Non
Commentaires Texte long