Les bases de données (suite)

publicité
Les bases de données (suite)
Support de cours
Pascal Ballet
La saisie et l'impression des données
Les formulaires de saisie
Les formulaires de saisie jouent deux rôles importants :
- la mise en forme des données à saisir
> en mettant en avant certaines données ou en en cachant d'autres (par exemple les
numéros automatiques faisant office de clés)
> en facilitant la sélection des données (par exemple pour un champ Titre, il pourrait
exister une liste déroulante permettant à l'utilisateur de choisir entre Mme ou M)
- la sécurisation de la saisie des données (il est aisé d'imaginer qu'après avoir saisi le champ
Titre, le champ N°INSEE impose le chiffre 1 dans le cas de M et de 2 dans le cas de Mme pour
le premier chiffre)
Mise en forme des données à saisir
Une base de données peut être observée sous différents "angles" à l'aide des formulaires de
saisie. Il par exemple possible de n'afficher que les personnes nées avant 1980 ou bien celles
résidant à Brest ou la combinaison des deux. On parle alors de filtres appliqués aux
formulaires.
Il est aussi possible dans un même enregistrement de n'afficher que certains champs.
De plus, certains champs doivent contenir des données bien spécifiées à l'avance (Mme, M
par exemple) ou bien doivent contenir des données en provenance d'une autre table. Dans ces
cas, il est possible de faire apparaître les choix possibles à l'utilisateur sous forme de liste
(déroulantes ou non) à l'utilisateur.
Il est également possible d'agrémenter un formulaire de saisie avec toute sorte de contrôles
(boutons, images, cases à cocher…) afin de rendre la saisie à la fois agréable, pratique et plus
sûre.
Sécurisation de la saisie des données
Les données sont formatées au niveau des champs eux mêmes. Par exemple, un champ
numérique ne pourra pas contenir de caractères ou un champ code postal (numéro de
téléphone…) aura un format de saisie bien spécifique. De même un champ qui est une clé ne
pourra pas accepter de doublon (c'est à dire une même donnée présente au moins 2 fois).
Une partie de la sécurisation du contenu des données est donc assurée dors et déjà par le
format des champs.
Cependant, il est courant d'avoir des dépendances entre données (absence du champ date de
mariage si la personne à moins de 18 ans, ou du nom de jeune fille pour un garçon…).
Cette sécurisation, d'ordre sémantique, n'est pas assurée de manière simple par les SGBDr.
C'est pourquoi, la sécurisation sémantiques peut être améliorée grâce à la sécurisation des
formulaires de saisie. Pour cela, il est possible sous Access par exemple, d'utiliser
(programmer) du code Visual Basic pour traiter précisément les cas spéciaux.
Exemple d'un formulaire de saisie simple avec Access :
Les états d'impression
Un état permet d'imprimer (ou bien de sauvegarder un fichier imprimable (pdf, ps…)) les
données d'une base de données avec une mise en forme élaborée.
Les données peuvent être affichées de manière diverses et variées. Il peut s'agir par exemple
d'afficher un ou plusieurs enregistrement par feuille, de placer le logo de votre société avec
vos coordonnées, d'indiquer les éventuels termes d'un contrat... Ceci avec une ou plusieurs
données de la base.
Comme pour les formulaires, il est possible d'afficher certains champs et pas d'autres pour
personnaliser les états. Il ne s'agit plus ici de sécuriser mais bien de présenter.
Exemple d'état avec plusieurs enregistrement par feuille (page).
Les requêtes
Interroger la base est essentiel pour retrouver l'information désirée. Les requêtes permettent
de manière plus précise que les filtres de retrouver une ou plusieurs données (les requêtes sont
basées sur le langage SQL (Structured Query Language)qui est un langage travaillant sur des
ensembles).
Les requêtes ne servent pas simplement à retrouver des données, elles peuvent aussi ajouter
supprimer ou modifier des données.
Elles ont également la possibilité de modifier la structure même de la base par la création ou
la modification des tables et de leurs relations.
Les requête graphiques
Access permet une mise au point graphique des requêtes, ce qui est bien pratique pour
s'abstraire du langage SQL (que nous verrons par la suite).
Par exemple, pour retrouver dans un carnet de numéro de téléphone les personnes dont le
prénom est AAA, la requête sous forme graphique sera la suivante :
et le résultat de cette requête est alors :
Les critères peuvent être quelconque, plus précisément, toute formule mathématique et
logique est applicable.
Mettons en place maintenant une requête d'ajout qui va nous permettre d'ajouter à la table
CarnetFavoris nos contacts préférés.
Pour cela, il nous faut créer une nouvelle table Favoris qui va stocker le travail de la requête
d'ajout.
Ensuite, il faut créer la requête graphiquement :
Comme critère simple pour le moment nous disons que nos contacts favoris sont ceux qui ont
pour prénom AAA. Le résultat est le suivant :
Naturellement, ces critères peuvent être beaucoup plus complet que ceux vu jusque là. C'est
pourquoi, pour faciliter la mise au point des critères qui parfois sont complexes, Access
intègre un générateur d'expression dont voici un aperçu :
Nous rappelons que toute requête graphique est traduite en SQL même si elle utilise le
générateur d'expression.
Le langage SQL
Toute requête est, in fine, traduite dans le langage SQL. C'est donc ce code SQL qui est
interprété par le SGBDr pour faire les opérations de recherche, d'ajout, de modification ou de
suppression de données. De même ce langage permet de modifier la structure même des tables
et de leurs relations.
Exemple de sélection et d'ajout de données
La requête graphique précédente concernant la recherche des contacts dont le prénom est
AAA s'écrit de la manière suivante en SQL :
Pour la requête d'ajout, le code SQL est le suivant :
Pour information, voici la traduction des commandes :
INSERT INTO TableCarnetFavoris ( Nom, N°, Prénom, NumTel )
Insérer dans les champs ( Nom, N°, Prénom, NumTel ) de la table TableCarnetFavoris…
SELECT TableCarnet.Nom, TableCarnet.N°, TableCarnet.Prénom,TableCarnet.NumTel
la sélection des champs Nom, N°, Prénom, NumTel …
FROM TableCarnet
de la table TableCarnet…
WHERE (((TableCarnet.Prénom)="AAA"));
Où le champ Prénom de la table TableCarnet vaut "AAA"
Exemple d'ajout de table
CREATE TABLE Amis
([IDAmi] entier,
[Nom] texte,
[Prénom] texte,
[DateNaissance] date,
[Téléphone] texte,
[Remarques] mémo,
CONTRAINTE [Index1] CLÉ PRIMAIRE ([IDAmi]));
Commandes courantes en SQL
Syntaxe de la commande SELECT
SELECT [ALL] | [DISTINCT] | [GROUP BY] | [HAVING] | [ORDER BY] <liste des champs>
FROM <Liste des tables>
[WHERE <expression logique>]
L'option ALL est l'option par défaut. Elle permet de sélectionner l'ensemble des lignes
satisfaisant à la condition logique. L'option DISTINCT permet d'éliminer les doublons.
Dans la liste des champs, les champs doivent être séparé par des virgules. Lorsque l'on désire
sélectionner l'ensemble des champs d'une table, le caractère * est à utiliser.
La liste des tables indique l'ensemble des tables (séparées par des virgules) utilisées.
La condition logique permet d'exprimer des critères divers à l'aide des opérateurs logiques, de
comparateurs arithmétiques et des fonctions mathématiques courantes.
Syntaxe de la commande WHERE
Un critère consiste à sélectionner les enregistrements satisfaisant à une condition logique
effectuée sur leurs valeurs (contenu).
En SQL, les critères s'expriment à l'aide de la clause WHERE suivie d'une expression logique
possédant les opérateurs suivants :
logiques
AND
NOT
OR
comparateurs de chaîne
BETWEEN
IN
LIKE
arithmétiques
+
*
/
% (modulo)
& (et)
| (ou)
^ (puissance)
~ (non)
comparaison
=
!= (différent)
>
<
>= (sup. ou égal)
<=
<> (différent)
!> (non superieur)
!<
Exercice 1
NB : Nous utilisons ici la table sur les artistes et leurs titres effectué au premier cours.
A- Ecrire le code SQL permettant de retrouver tous les titres d'un artiste.
B- Ecrire le code SQL permettant pour un titre, de retrouver tous les artistes ayant participés.
Exercice 2
On ajoute à la table Titres (ou Albums) un champ numérique intérêt. Ce champ comportera
notre intérêt pour le morceau (ou l'album) en question. La valeur de ce champ varie entre 0 et
10.
A- Ecrire une requête SQL permettant de créer une table titresFavoris dans laquelle se
trouvera vos titre préférés.
B- Ecrire une requête SQL permettant de stocker dans la table titresFavoris tous les titres de
la table Titres (ou Album) dont 'intérêt est plus grand que 6.
Téléchargement