ASUR_2010 - contenu1

publicité
Contenu ASUR – 2010
Extrait du référentiel
UE 2 : Connaissances de base et outils pour les réseaux d’entreprise (130h)
MASbd = Les Bases de données
20h
Introduction théorique
TD 4h
François
Déploiement
TP 4h
François
Gestion des utilisateurs
TP 4h
François
Les backup
TP 4h
François
Notions de SQL
TP 4h
François
Kieffer
Kieffer
Kieffer
Kieffer
Kieffer
Chaque TP ou TD donne lieu à un compte rendu noté ?
1
Théorie des bases de données (rappels?)
Utilité, relevé d'information, méthodes de modélisation, merise et schémas de merise,
1.1
Utilité
Une base de données vise à modéliser une partie du monde réel et sert de support à des
applications informatiques pour stocker, protéger les données formelles de l'organisation et
les manipuler (calculs, statistiques, tris, extractions, mises en corrélations, …).
-
-
-
Modéliser : pour représenter la réalité des données manipulées par l'organisation
(fournisseurs, articles, désignations, prix, adresses de postes, utilisateurs, etc.
…) selon une structure logique, à l'aide de système de modélisation (merise,
UML),
Stocker sous forme de tables de "fiches", enregistrements ou occurrences
d'entité, dans des fichiers ou dans un SGBD(R) que l'on peut sauvegarder ou
précharger,
Protéger : restreindre l'accès aux données aux personnes autorisés, assurer la
préservation des données contre les risques informatiques,
Manipuler en effectuant des extractions grâce à un langage de requêtes (SQL)
Ceci dans le but de conserver les archives de l'entreprise, son savoir-faire, son expertise et
de faciliter la diffusion des informations nécessaires.
Exemple :
Annuaire(nom, prénom, âge, CP, Ville)
tableau Redondances (CP, Ville, …)
2ème tableau : (CP, Ville)
Note : toute situation ne nécessite pas forcément de Base de données.
Exemple :
Un groupe de DB, de disques suffisamment important pour justifier une BDD
Si ce n’est que pour en faire la liste, un tableau suffit.
SGBD : Système de gestion de Bases de Données
SGBDR : SGBR relationnel : il est possible d’établir des relations entre les données de la BDD
Exemples : Oui : Oracle, MySQL, Ingre, SQL Server ; Non : SQL (langage).
Comment faire ?
Réponse : l’analyse.
1. Analyse des besoins : Pourquoi, à quoi ça sert ? Quand ?
2. Comment ? Techniques d’analyse.
Pourquoi une technique d’analyse (Merise ou UML) ?
Les gros volumes de données nécessitent une approche rigoureuse du problème de la
modélisation. Pour parvenir à un résultat cohérent, des méthodistes ont développé une
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 1 sur 11
méthode (encore en cours d’évolution) nommée Merise et, parallèlement, un langage de
modélisation dit universel (UML).
Après l’analyse des besoins, la première action, dans la création d'une BDD, est de dégager
les concepts, les données élémentaires, les exemples de données de l'interview de
l'organisation.
1.2
Le relevé d'informations
Le relevé d'information est la chose la plus difficile de l'analyse merise ou UML.
Les informations à modéliser sont trouvées lors de l'interview de l'organisation : réunions
d'information avec le personnel, consultation des procédures internes, lecture des
documents d'archives et description des activités et de la structure de l'entreprise,
rétroconception du logiciel existant, audit des pratiques professionnelles.
1.2.1
En théorie c'est ça …
Concepts, données et valeurs
Avant d'aborder le MCD, on va pouvoir relever trois types d'informations qui sont
des concepts, des données ou des valeurs.
Les concepts sont des choses, des objets que l'on va gérer. Ils deviendront
probablement des entités du schéma entité association vu plus loin.
Les données sont des informations élémentaires sur les concepts.
Données et concepts sont souvent masqués par des valeurs de ceux-ci ou exprimés
par des euphémismes ou des synonymes.
Attention !
Les acteurs ne sont pas des informations à mémoriser.
Les personnes sont souvent des acteurs mais parfois des concepts lorsqu'il s'agit de gérer du
personnel.
Donnée
Une donnée est une information élémentaire que l'on ne peut pas décomposer.
Exemple oui : description, prix, quantité, numéro d'identification, nom, prénom, ville, code
postal, etc. …
Exemple non : fournisseur, article, ingénieur
Dans le discours du sujet, une donnée est souvent rattachée à un concept.
Exemple oui : description de l'article, nom de l'employé, numéro du client, numéro de
commande, etc. …
Exemple non : description (tout court, sans dire de quoi)
Concept
Un concept est une information complexe qui peut être décomposée en données.
Exemple oui : article, commande, client, employé, etc. …
Exemple non : description, organisation gérée, tapis Z7 cendré.
Pour détecter un concept, on va relever les noms de choses, d'objets, de personnes ou de
types. Ce seront souvent des concepts.
Ce seront sûrement des concepts si des données y sont rattachées.
Valeur
Certains concepts ou données sont masqués par des valeurs exposant différentes
occurrences de ceux-ci.
Exemple oui : Strasbourg, Nantes, Rennes, Lyon et Mulhouse sont des occurrences du
concept 'ville'.
Ces mêmes valeurs sont, de plus, des occurrences de la donnée 'nom ville'.
Exemple non : type article, ville.
Remarques importantes :
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 2 sur 11
Dans tous les cas, il ne faut relever que les données et concepts pertinents pour l'étude,
gérés par le système décrit, et ne pas se laisser perturber par des informations qui
constituent le bruit de l'étude.
A noter que les information sur l'entreprise elle même ne sont pas à relever, seules les
données avec lesquelles on travaille sont à noter.
Exemple descriptif : la société InfoTech travaille avec des fournisseurs à Strasbourg, Lyon et Nancy.
InfoTech n'est pas une donnée, c'est la description de l'organisation ;
-
Fournisseur est un concept (dont on ne sait rien d'autre)
Strasbourg, Lyon, … sont des occurrences de la donnée 'nom ville' du concept 'ville'.
À indique qu'il y a un lien, une association, une relation entre les concepts fournisseur et ville
1.2.2
… mais en pratique …
Certains concepts sont ambigus. Ainsi dans certains cas, des concepts seront relégués au
rang de donnée.
Exemple descriptif : la société InfoTech travaille avec des fournisseurs à Strasbourg, Lyon et Nancy.
Les noms des villes ne font pas l'objet d'une gestion particulière.
-
InfoTech n'est pas une donnée, c'est la description de l'organisation ;
Fournisseur est un concept (dont on ne sait rien d'autre)
Strasbourg, Lyon, … sont des occurrences de la donnée 'nom ville' du concept 'ville'.
À indique qu'il y a un lien entre 'Fournisseurs' et 'Ville'. Mais comme la ville n'a pas besoin
d'être de façon précise, codifiée (ajout au sujet) le nom de la ville sera noté seul et le concept
risque de disparaître.
Les données seront consignées dans un dictionnaire des données, les concepts resteront au
brouillon, à titre d'indication pour une future utilisation.
1.3
Représentation (Merise)
Pour représenter une base de données, on utilise souvent la modélisation Merise qui apporte
des règles de représentation et formalise les schémas de modélisation des BDD.
On y trouve des éléments similaires à ceux utilisés dans MS-Access trois niveaux
conceptuels, trois schémas et trois normalisations des noms :
Modèle
Conceptuel
Données
de
Modèle
Logique
de
Données
ou
Modèle
Relationnel
MPD
Graphe des Dépendances
Fonctionnelles ;
Données, dépendances ;
Schéma Conceptuel des
Données
SLD
Entités, attributs, identifiants,
associations, cardinalités, etc. …
Tables, propriétés, clés primaires,
relations
MR
Relations,
propriétés,
clés
primaires, clés étrangères
Implémentation du MR en langage de définition des données
(création des tables de la BDD)
Le MCD contient parfois des informations qu'il est impossible de traduire sous forme
schématique dans les modèles suivants. On aura donc parfois recours à des contraintes
exprimées textuellement.
Voir schéma gestion commerciale……
1.4
Modèle relationnel
Le modèle relationnel est la représentation textuelle du MLD et MCD.
Une relation est un ensemble de données associées de manière cohérentes : elle
appartiennent toutes au même concept et à la même occurrence de ce concept.
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 3 sur 11
Exemple :
Relation client :
cliNum
C1
C45d
VEBBU2O34
…
Relation Commande
cliRaisonSociale
Toto
Titi
GRRRR
cdeNum
1
24
345
cliZip
68000
67000
68750
cliVille
Colmar
Strasbourg
Bergheim
cdeDate
23/12/2005
01/01/2009
01/01/2009
cliadr1
Ici
La-bas
Quelque-part
cliNum
C1
C1
VEBBU2O34
Le schéma relationnel montre toutes les relations, les attributs, les références de la base.
Dans ce modèle, il manque cependant l'expression des contraintes (une valeur ne doit pas
dépasser une certaine limite, un enregistrement doit être simultané avec la présence d'un
autre dans une autre table, etc. …)
Client(cliNum, cliRaisonSociale, cliadr1, cliZip, cliVille)
Clé primaire : cliNum
Commande(cdeNum, cdeDate, cliNum)
Clé primaire : cdeNum
Clé étrangère : cliNum référence cliNum dans client*
* officiellement, on devrait dire : "l'attribut clinum est en dépendance de référence avec
l'attribut cliNum de la table Client", mais je trouve que c'est un peu long.
Les colonnes sont nommées champ ou attribut
nom de l’attribut est unique dans une relation
nom attribut peu exister plusieurs fois dans des tables différentes. Ce sont des
champs différents mais qui signifient la même chose, même sémantique.
Le domaine est la liste, l’ensemble des valeurs acceptées pour le champ.
Exemple : {Colmar, Strasbourg, Bergheim} est le domaine de ville
-
L’ordre des attribut n’a pas d’importance mais convention : identifiant de
l’occurrence est devant, les champs qui font référence à des identifiants d’autres
tables sont derrière. Les champs sont souvent regroupés par ensembles signifiant
cohérents (adresse : CP, Ville, N°, Rue ; description : libellé, poids, volume ; etc. …).
Les lignes sont nommées enregistrement ou tuple et représentent les valeurs d’une
occurrence, d’un « objet » représenté par la relation.
Exemple :
C1
Toto
68000
Est un enregistrement de la relation Client.
1.5
Colmar
Ici
Privilèges (Droits d'accès)
Pour assurer la sécurité des données, on va mettre en place un système de droits sur les
tables et les champs de celles-ci.
Ces droit sont : création, interrogation, modification, suppression (CIMS).
Création permet de créer des enregistrements, des tables, des utilisateurs.
Interrogation permet d'extraire des enregistrements partiels ou entiers, d'afficher le
contenu de table, la structure des tables, la liste ou les droits des utilisateurs et
groupes.
Modification permet de modifier des valeurs, la structure de tables, les droits des
utilisateurs.
Suppression permet de supprimer des enregistrements, des champs, des tables, des
droits, des utilisateurs ou groupes.
Ils sont données hiérarchiquement selon :
Droits globaux sur la base
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 4 sur 11
Droits globaux pour la catégorie d'utilisateur (adm, usr)
Droits de groupes puis de sous-groupes
Droits particuliers à un utilisateur.
Cependant, il vaut mieux ne pas multiplier les niveaux et les groupes de droits, afin de ne
pas risquer de maillage des droits :
Droit de création groupe interdit sur une table puis sous groupe autorisé sur une partie de
cette table. Donc en contradiction avec la règle du groupe …
Tentative de cession de privilèges refusés = erreur.
Exemple XXXXX (voir sujet CGO)
Un tableau de définition des privilèges du LID et LMD, table Client
Utilisateur/groupe Consultation
Insertion
modification
adm
Aucun
Concepteur
Oui
Non
Non
Gestion
Oui
Non
Oui
Production
Non
Non
Non
Ventes
Oui
Oui
Oui
Suppression
Oui
Non
Non
Non
Une hiérarchisation de base des privilèges
PUBLIC (Base) = all
adm = all
usr = select, insert, delete, update : all, create, alter, drop, grant, revoke : none
production : insert on client : none, delete on client : none
…
1.6
Exercices
♥=facile, ♦=moyen, ♠=difficile, ♣=expert, $=rusé, sioux, *=squelette de source fourni.
1.6.1
Exo droits ♥
Expliquez quels sont les risques de ne pas respecter la hiérarchisation d’attribution des
droits.
Proposez une solution simple pour pallier à cette difficulté.
1.6.2
Exo MCD ♥
L'entreprise de négoce ECOTECH désire informatiser la gestion de ses fournisseurs et de ses
clients ainsi que des commandes de produits qu'elle passe avec chacun des deux types de
tiers.
→
Déterminez combien de concepts complexes sont en présence.
→
Faites la liste et le schéma des dépendances fonctionnelles entre ces concepts, en
ajoutant les données nécessaires.
→
Imaginez une série d'informations élémentaires pour chaque concept
→
Construisez un schéma conceptuel de cette organisation
1.6.3
Exo MCD ♥
L'entreprise ECOTECH désire modifier son mode de production et effectuer le
reconditionnement des produits vendus. Pour cela, elle s'est dotée de machines de
conditionnement. A cet effet, pour un article M, il est nécessaire d'ajouter un emballage E
pour en faire un produit fini F.
Dans certains cas l'article M pourra figurer en plusieurs exemplaires dans le produit F. Il est
même possible qu'un produit F soit le résultat de l'emballage de différents M en nombre
d'exemplaires multiples
Il est évident qu'un article emballage ne peut être vendu seul et qu'un article de type M non
plus
→
Complétez le modèle conceptuel (DD, GDF, SCD) de l'exercice précédent.
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 5 sur 11
1.6.4
Exo MCD, MR ♦
L'entreprise PersoTECH gère un parc informatique et le personnel qui y accède. Dans cette
organisation, le réseau offre l'accès à une base de données sensible.
Il devient nécessaire de rationaliser cette gestion en mémorisant les information relatives
aux postes informatiques (n° du poste, n° de série, localisation – publique, production,
interne, labo informatique –, utilisateur habituel), aux utilisateurs (nom, prénom), aux
groupes ou sous groupes auxquels ils appartiennent et aux droits qui leurs sont conférés.
Il y a plusieurs possibilités de restrictions de l'accès aux données (/ex. : accès complet,
consultation complète, modification structurelle, modification des données, écriture
seulement, accès en consultation superficielle)
Les utilisateurs peuvent être regroupés en groupe d'utilisateurs. Chaque groupe appartient à
un groupe de niveau supérieur.
Il existe 3 groupes de plus haut niveau : "Administrateur", "gestionnaire" et "Utilisateur". Les
autres groupes sont toujours rattachés à un groupe de niveau supérieur.
Un groupe ne peut pas appartenir à lui-même.
Exemple :
Administrateur
Gestionnaire
Utilisateur
->
->
->
->
->
(aucun)
Sauvegarde
Architecte
Invité
Standard
->
Gestion
->
->
->
->
->
Std-Comptable
Std-Production
Ges-Achat
Ges-Comptable
Ges-Personnel
Chaque groupe définit un ensemble de droits.
Les règles de droit sont analysées dans l'ordre suivant :
droits de groupe et sous-groupes
droits particuliers de l'utilisateur
droits de la localisation du poste informatique
Les règles d'attribution des droits peuvent ajouter ou supprimer des droits.
Si un droit n'est pas nommément refusé ou offert, il est autorisé.
On doit pouvoir parvenir à un résultat tel qu'un utilisateur qui possède peu de droits n'en
aura pas plus s'il se connecte sur le poste de l'administrateur. De même, l'administrateur
n'aura que peu de droits s'il se connecte sur un poste situé dans un espace public.
Toutes les personnes faisant partie d'un même groupe et n'ayant pas de modifications
particulières en fonction de leur qualification ou localisation auront les mêmes droits.
→
Construisez le modèle relationnel de la base de gestion des droits des utilisateurs.
1.6.5
Exo MCD, MR ♦
Un passionné de la bande dessinée de Tintin (tintinophile) désire mettre en ligne la liste des
jurons prononcés dans les albums de cette série de BD.
Pour cela, il relève les informations suivantes :
les titres, description et dates de 1ère parution des albums,
les nom, prénom, fonction, sexe et rôle (gentil ou non) de chaque personnage et
leur participation à l'un ou l'autre album,
les jurons ("noms" des jurons) ainsi que le personnage et la page où ils sont
prononcés dans un album,
les pays (nom du pays) où se déroulent chaque album.
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 6 sur 11
Modélisez cette situation :
a) Relevez toutes les données nécessaires à cette gestion dans un dictionnaire des
données (DD) puis construisez le graphe des dépendances fonctionnelles (GDF).
b) Dessinez le schéma conceptuel des données,
c) Rédigez le schéma des relations (MR).
d) Vérifiez qu'il n'y ai aucune possibilité d'erreur dans le schéma
1.6.6
Exo MCD, MR ♦
En association à cette base, le collectionneur décide de vendre différents exemplaires de
chaque tome de Tintin.
Chaque album possède une cote. Cette cote dépend de l'année de réédition voire du n° de
réédition dans l’année.
Cette cote est attribuée par le vendeur en fonction de l’édition du livre.
Il est bien évident qu’un livre neuf n’a pas la même valeur de vente qu’un livre en état
moyen ou ayant des défauts ou dégradé. Selon les années, le prix de vente peut même
dépasser la cote si l’état est exceptionnel (livre ancien et neuf).
Le vendeur peut donc décider de vendre l’ouvrage à la cote ou à un autre prix, arbitraire.
Rédigez la nouvelle mouture ou les compléments au MR précédent.
1.6.7
Exo MCD, MR ♦
Vous êtes chargés de développer une application de gestion de pannes sur un parc
informatique. Lors d'un incident, on désire avoir des informations sur le matériel en jeu
(clavier, écran, imprimante, PC, logiciel, numéro interne, nom, numéro de série, marque,
modèle), sur sa localisation dans l’entreprise. L’auteur de la déclaration de panne indiquera
aussi son nom puis un titre succinct et une description plus longue du dysfonctionnement.
Lorsqu’une panne est traitée par un technicien, celui-ci indique son nom et déclare la panne
résolue (ou non). Auquel cas, de l’état "en cours", l'incident passe à l’état "résolue" ou en
attente si le traitement doit être long (plus d’une intervention ou prestataire externe).
Modélisez cette situation
2
Langage de requête : SQL
Il sert à exploiter, à extraire des données d’une base.
Principe : c’est un langage exécuté sur le serveur et lancé par le client.
Il se compose de quartes parties : le LID (interrogation) le LMD (Modification des données),
le LDD (définition, modification de la structure) et le LCD (contrôle d’accès aux données).
Note sur la présentation. Même si il est possible d’écrire des requêtes en minuscules (et c’est
ce que nous faisons dans les requêtes directes), lorsque SQL est inséré dans le langage
client, on écrira les requêtes en majuscule afin de bien distinguer, visuellement, les deux
langages.
2.1
LID
2.1.1
Commandes de base du LID (Rappels ?)
Le langage d'interrogation des données (LID) est le plus complexe des langages du SQL. La
bonne maîtrise de celui-ci permet de comprendre la philosophie du SQL.
Dans tous les exemples, je ferais un parallèle entre le SQL et le français
Le principe de base est le suivant :
Sélectionner des données de table, données calculées ou constantes
De tables
Où les données d'origine répondent aux conditions exprimées
Groupées par nom de données sélectionnées
Qui répondent aux conditions additionnelles suivantes
Triées selon les noms de champ d'origine ou sélectionnés avec le sens du tri
En anglais
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 7 sur 11
SELECT liste de champs (originaux ou calculés)
FROM table ou liste de tables
WHERE condition (=expression bouléenne)
GROUP BY liste de champs du select, obligatoire en cas d'agrégats
HAVING condition de type 2
ORDER BY liste de champs avec le sens de tri (asc ou desc)
Contraintes :
Les listes sont une suite d'objets séparés par des virgules : a, b, c, d, …
La liste de champ du select peu contenir des champs des tables citées, des calculs, des
constantes, des fonctions d'agrégats d'enregistrement (somme, comptage, min, max, …)
La liste de champs du group by ne peut avoir que des champs nommés pris parmi la liste
des champs du select, a l'exclusion des champs agrégés. Elle sert à indique les critères de
regroupement des champs agrégés.
La liste des champs de tri est libre. Elle contient le nom d'un champ suivi du sens de tri (asc
ou desc). Le sens asc (ascendant) est le sens par défaut et peut être omis.
Algèbre relationnelle (Initiation)
Projection : sélection de certains champs de la relation, mais pas de tous.
Select CliNum, CliNom from client ;
Restriction : sélection de quelques enregistrements de la relation, mais pas tous.
Select * from Client where CliNum <> ‘C1’ ;
Union : assemblage de deux relations (ensemble d’enregistrements) de forme identique pour
en faire un nouvel ensemble.
Select * from Client where CliCP= 68000
Union
Select * from client where cliVille = ‘Strasbourg’ ;
Différence : intersection entre deux ensembles d’enregistrement de même forme pour en
faire un nouvel ensemble (plus petit ou égal au plus grand des deux).
Select * from Client where CliCP>= 68000
Minus
Select * from client where cliVille ‘Bergheim’ ;
Jointure : assemblage de deux relations de forme différentes en associant le champ de
référence d’une table avec le champ identifiant référencé dan l’autre table.
Exemple :
Client et commande. Le champ cliNum de commande référence le champ CliNum identifiant
de Client. On pourra créer la jointure entre commande et client :
Exemple :
Relation client :
cliNum
C1
C45d
VEBBU2O34
…
Relation Commande
cliRaisonSociale
Toto
Titi
GRRRR
cdeNum
1
24
345
Table jointe :
cdeNum cdeDate
1
23/12/2005
24
01/01/2009
345
01/01/2009
cliNum
C1
C1
VEBBU2O34
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
cliZip
68000
67000
68750
cdeDate
23/12/2005
01/01/2009
01/01/2009
cliNum
C1
C1
VEBBU2O34
Francois Kieffer
cliVille
Colmar
Strasbourg
Bergheim
cliadr1
Ici
La-bas
Quelque-part
cliNum
C1
C1
VEBBU2O34
cliRaisonSociale
Toto
Toto
GRRRR
cliZip
68000
68000
68750
cliVille
Colmar
Colmar
Bergheim
cliadr1
Ici
Ici
Quelque-part
Page 8 sur 11
Conditions et expressions
Les conditions sont une suite d'opérations booléennes (qui rendent un résultat vrai ou faux)
reliées par des connecteurs logiques (and, or, not and, not or, not) :
Champ1<10 or champ2=champ3 and champ4>=champ5*(3+champ6)
Une opération booléenne est une expression contenant un opérateur booléen :
comparaison (=, <, >, <=, >=, <>) entre deux expressions
in : recherche dans une liste : a in ("v1", "v2", …)
between : "entre", comparaison multiple : exp between exp1 and exp2
Exemples : Soit la base de données Tintin (voir l'exercice concerné)
Liste des titre des albums triés par ordre alphabétique décroissant (de z à a):
Select albTitre from album order by albTitre desc;
Liste des albums datant de 1950 ou plus tôt :
Select albTitre from album where albDate<=1950 ;
Nombre de pays par album
Select albtitre, count(paysNum) from album, seDerouler
where album.albNum=seDerouler.albNum group by albTitre ;
Valeur de la date de parution de l'album le plus ancien
Select min(albDate) from album;
Remarque importante : Toute requête de type Select renvoie une table, une liste ou une
valeur. Ceci est très important car on peut réutiliser une requête dans une autre expression.
Exemple :
Liste des albums antérieurs à "Tintin au Tibet"
Select * from album
Where albDate < (
Select albDate from album where albTitre = "Tintin au Tibet"
)
;
La sous-requête retourne une valeur
Liste des personnages qui ne prononcent pas de juron
Select noPers from personnages
where noPers not in (select distinct noPers from prononcer)
;
La sous-requête retourne une liste
Les groupements (agrégats)
Il est possible de regrouper des lignes pour effectuer des calculs ou des sélection parmi ces
lignes.
On retiendra :
• count(*), compter : select count(*) from article = nombre d'articles de la table
• sum(champ), total, somme :
o select numCommande, sum(prixHT) from commande group by numCde ;
= liste des commande et du total HT de chacune
• avg(champ), moyenne : s'utilise comme sum()
• max(champ), min(champ), maximum et minimum : renvoie la valeur maxi ou mini
du champ indiqué : select max(prix) from article = prix maxi rencontré parmi les
articles, select max(date) from commande = date de la dernière commande.
Note : ces fonctions d'agrégats ne peuvent être utilisées que dans les clauses select et
having, pas dans le where !
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 9 sur 11
2.2
LMD
Langage de manipulation de données : modification des enregistrements
Ici (et plus loin) plus de concepts ensemblistes (sauf…).
Suppression :
Delete from table
[Where conditions] ;
Ne pas mettre de condition revient à vider la table.
Exemple : delete form Client where cliNum=’C2’ ;
Mise à jour
:
Update table set champ1=expression1[, champ2=expression2]
[Where conditions] ;
Une expression peut être un calcul, un champ, une valeur, le résultat d'une requête
retournant une valeur.
Exemple : update client set cliAdr1="A changé" where cliNum=C1 ;
Insertion
:
Insert into table [(champ1 [, champ2 *])]
Values (valeur1[, valeur2 *]) ;
ou
:
Insert into table [(champ1 [, champ2 *])]
Requête sélection ;
Les valeurs indiquées ou les champs de la requête sélection doivent correspondre aux
champs de la table ou aux champs indiqués, dans l'ordre exact.
Certains langages acceptent de mettre plusieurs listes de valeurs afin d'insérer plusieurs
enregistrements en une seule requête. Ceci n'est pas standard.
Exemple : insert into Client Values (‘C3’, ‘Gros Minet’, 67390, ‘Marckolsheim’, ‘A la niche’) ;
2.3
LDD,
Langage de définition des données : création, modification, destruction des tables, vues et
autres …
Suppression :
Drop
Drop
Drop
Drop
Drop
Création
objet nom-objet ;
trigger nom-objet ;
view nom-objet ;
table nom-objet ;
database nom-objet ;
//
//
//
//
suppression
suppression
suppression
suppression
d'une
d'une
d'une
d'une
procédure automatique
vue dynamique
table
base de données
:
Create objet nom-objet … ;
Create table nom-table (
Liste de champs avec leur définition
[, definition de la clé primaire]
[, liste de contraintes]
) ;
Create view nom-vue as requête sélection ;
Create database nom-base-de-données ;
Create trigger nom-trigger (
Définition de la procédure (voir chapitre spécifique)
);
Modification :
Alter objet … ;
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 10 sur 11
2.4
LCD
Langage de contrôle des données : définition des utilisateurs, attribution/révocation des
droits. Voir chapitre suivant : la gestion des privilèges et droits.
2.5
Exo
♥=facile, ♦=moyen, ♠=difficile, ♣=expert, $=rusé, sioux, *=squelette de source fourni.
2.5.1
Exo LID ♥ à ♣$
Rédigez les requêtes qui permettent de répondre aux questions suivantes :
Facile
a)
Année de réalisation de TINTIN au CONGO
b)
Prénom du Capitaine HADDOCK
c)
Liste des personnages féminins.
Un peu moins facile
a)
Dans quel(s) pays se déroule l’album ON A MARCHE SUR LA LUNE
b)
La Castafiore prononce t-elle des jurons ? (répondre combien)
c)
Nom des albums dans lesquels TINTIN voyage en Chine.
d)
Numéro(s) de(s) l'album(s) et N° de la (des) page(s) dans lequel on peut lire le
juron suivant : « REVOLUTIONNAIRE EN PEAU DE LAPIN »
e)
Liste des pays visités par le professeur TOURNESOL
f)
Nom et prénom des méchants dans l’album « LE LOTUS BLEU »
g)
Liste des jurons prononcés par MILOU
Difficile
a)
Milou accompagne-t-il TINTIN dans chaque aventure ?
b)
Dans quel album le capitaine HADDOCK fait-il son apparition ?
c)
Classement des personnages par nombre de jurons prononcés ?
2.5.2
Exo LDD ♥
a) Vous êtes chargé de construire la base de données Tintin. Rédigez les requêtes
nécessaires.
b) Il faut gérer le résumé dans la table Album et un commentaire, attaché à chaque
exemplaire.
2.5.3
Exo LMD ♥ ,♦
♦
Le tintinophile possède différents exemplaires des albums, de numéro d'édition variable.
Il souhaite pouvoir enregistrer ses exemplaires dans la base de données et, à l'aide d'une
requête, connaître la valeur cotée de sa collection.
Rédigez le MCD, le MR, les requêtes qui effectuent la modification de la structure de la base
de données.
Rédigez la requête qui permet d'enregistrer l'album 01 (Tintin au Congo) de l'édition n° 8
2.5.4
Exo SQL ♥ ,♦
♦
Reprenez l’exercice sur la gestion de pannes et rédigez les requêtes de création des tables et
des contraintes de références (clés étrangères).
Vous rédigerez aussi les requêtes qui répondent aux questions suivantes :
a) Listez toutes les pannes
b) Listez les pannes non résolues
c) Insérez la panne suivante :
d) Modifiez l’état de la panne XXX de l’état en cours à l’état résolu.
e) Listez et comptez les pannes similaires
f) Supprimez les pannes de plus d’un an
g) Supprimez les pannes du matériel n° XXX
h) Faites la liste des pannes qui ne dépendent pas d’un matériel
i) Listez les matériels qui sont sujet à plus de dix pannes
E:\francois\education\2009-2010\ASUR\ASUR_2010 - contenu1.doc
Francois Kieffer
Page 11 sur 11
Téléchargement