Title: Bases de donnes
1Bases de données
2I. Aperçu de larchitecture de Bases de données
et des SGBD
- SGBD (système de gestion de bases de données)
permet aux utilisateurs de - définir, créer, maintenir une BD avec accès
contrôlé aux données - BD ensemble cohérent de données liées entre
elles - SGBD peut contenir
- matériel, logiciels (utilitaires), données,
utilisateurs, procédures - matériel constitué du système d informations
(SI) pour disposer de la base de données et y
accéder
31. Introduction aux SGBD
- Matériel est constitué dun réseau avec un
serveur central et des clients - serveur central contient physiquement la BD
- clients sur PC sont des programmes qui
interagissent avec le SGBD - Un SGBD peut être
- mono-utilisateur serveur et clients sur un seul
ordinateur (accès possible de plusieurs
utilisateurs à différents moments) - multi-utilisateurs
41. Introduction aux SGBD
- BD contient toutes les données nécessaires à
lorganisation - Il est essentiel de séparer entre la
- BD effective
- programmes qui la gèrent
- BD est conçue est chargé pour un public
particulier et dans un but précis. - Chaque client peut disposer de différents niveaux
daccès aux informations - modifier la structure, les données, seulement
consulter
51. Introduction aux SGBD
- Dans une application il est important de relever
que seule une partie du monde réel peut être
représentée par un SGBD - Objet entité élément significatif pour lequel
on dispose dinformations - Les caractéristiques qui décrivent ou qualifie
une entité sappellent ses attributs
61. Introduction aux SGBD
- Exemple
- BD relative à des étudiants
- entité étudiant
- attributs (nom, prénom, spécialité, diplôme,
date de naissance, adresse, niveau de formation)
on ne s intéresse pas aux amis vêtements etc. - ensemble des valeurs de chaque attribut domaine
- Exemple
- date de naissance ne doit pas être du XVIIIème
siècle - formation ?Deust, Deug, Licence, Maîtrise, Dea,
Doctorat
71. Introduction aux SGBD
- Chaque utilisateur nécessite des possibilités
logicielles différents - administrateur de la BD personne ou groupe en
charge d implémenter le système de BD dans
lorganisation. Possède tous les privilèges
système autorisés par le SGBD. Assigne et
supprime des niveaux daccès aux utilisateurs - utilisateurs finales personnes qui
interagissent directement avec le système - répondent aux requêtes extérieurs
- répondent aux questions de leur supérieurs
hiérarchiques - autorisation de modifier ou seulement la
possibilité d afficher les données - programmes dapplications (autre type
d utilisateurs) interagissant avec la BD de
manière différentes - accèdent aux données depuis des programmes de
haut niveau (C, VB etc.) - programmeurs conçoivent des programmes qui
accèdent aux données en les modifiant
81. Introduction aux SGBD
- Ensemble des procédures contrôlant le
comportement du système i.e. les pratiques
suivies par les users pour obtenir des données - entrer de nouvelles données
- maintenir
- récupérer
- Exemple dans un système de paie
- comment les heures travaillées sont elles
fournies à lopérateur? - comment elles sont introduites dans le système?
- quand exactement sont générés les états
mensuelles et à qui les envoyer?
9Exercice
- Indiquer quel type dutilisateur doit exécuter
les fonctions suivantes - écrire un programme dapplication pour générer et
imprimer les chèques - changer dans la base de données ladresse d un
employé qui a déménagé - créer un nouveau compte d utilisateur pour un
employé nouvellement embauché
10Solution
- Un programmeur d application ou une équipe de
programmeurs vont concevoir et implémenter un tel
programme d application - Un utilisateur final peut recueillir au téléphone
les informations concernant un employé et accéder
directement à la base de données pour les
modifier. Toutefois, changer de telles
informations à partir de communications
téléphoniques peut générer des erreurs
typographiques ou de mauvaise compréhension. Dans
le but de vérifier si les mises à jour sont
réalisées correctement, de nombreuses
organisations exigent que les modifications
soient demandées par écrit. - Cest ladministrateur de la BD ou son assistant
qui doivent créer l identifiant du nouvel
employé. Dans une petite organisation une seule
personne peut se charger de la BD dans une grande
les tâches sont partagées.
111.1. Données
- Données sont le noyau du SGBD ensemble
d informations nécessaires à lorganisme - Métadonnées information relatives à la BD
- dictionnaire des données ou catalogue, il
contient - informations sur les utilisateurs
- les privilèges
- la structure interne
- Il est essentiel de gérer avec soins les données
pour que les informations restent fiables, à jour
et précises
121.1. Données
- Base de données peut être centralisée ou
distribuée (2 à 3 niveaux)
131.1. Données
- Système peut être
- mono-user serveur client sur un seul ordinateur
- multi-user grande quantité de données
- données intégrées
- une seule informations enregistrées
- accès à différentes parties de la BD
- adresse se trouvant dans un seul endroit ?
différents niveaux d accès ? privilèges - données partagées garantit que les users ne
modifient pas en même temps les données - exemple
- département de comptabilité et département
d expéditions besoin de ladresse du client
141.2. Pourquoi avons-nous besoin d une Base de
données
- Conserver correctement les données
- précisions des données
- actualisation
- éviter incohérence, redondance ? contraintes
dintégrité - Fournir laccès aux données
- stockage et accès faciles et rapides
- maintenance sans gêner laccès
- Maintenir la sécurité des données
- différents niveaux dautorisations
- gérer laccès en même temps ? privilège
- SGBD vs fichier
15Exercice
- Considérant la base de données dun
câble-opérateur, contenant des noms
d utilisateurs, des adresses, des catégories de
services (abonnement minimal, abonnement à toutes
les chaînes, paiement à l émission, etc.) et des
informations de facturation. Indiquez pour chaque
utilisateur un employé de facturation, une
personne de la maintenance et un représentant du
service commercial, à quels éléments cet
utilisateur doit pouvoir accéder et auxquels il
peut accéder en vue de procéder à des
modifications
16solution
17Exercices
- Décrivez comment un groupe médical comprenant 3
médecins dans deux cabinets médicaux distincts
conserve la base de ses patients si elle est
centralisée. Comment peut-elle être modifiée pour
en faire un système distribué? - Dressez une liste de toutes les bases de données
où vous pensez que figurent votre nom et des
informations financières vous concernant. Comment
pouvez-vous vérifier lexactitude des données?
18Solutions
- Dans un système centralisé, toute la BD réside
sur un serveur. Chaque machine cliente accède à
la BD centrale pour disposer des informations sur
les patients. Si le système central est hors
service, il ne serait plus possible daccéder aux
informations. Par contre dans un système
distribué. Il y aura deux serveurs pour les
patients du cabinet 1 et cabinet 2. Le SGBD se
charge de trouver les informations sur chaque
patient. Si l un tombe en panne lautre reste
disponible. - Employeurs, établissement d enseignement,
organisation religieuse, administrations ou
établissements bancaires ou de crédit. Les lois
exigent que vous ayez le droit de connaître et
corriger les informations vous concernant.
192. Modèles de données
- Un modèle de données est un moyen dexpliquer la
disposition logique des données et les relations
entre les différentes parties de chaque élément
de lensemble. (maquette permettant aux personnes
de conceptualiser plus facilement une idée
abstraite) - modèles existant avant
- tables à 2 dimensions
- simple fichier texte (accès séquentiel)
- sur gros système
- hiérarchique (arborescence)
- réseau avec des liens entre différents éléments,
accès par des cheminements
202. Modèles de données
- Aux années 70 (3ème génération)
- SGBD relationnel développé par CODD, tables ou
relations avec accès rapide et facile - Modèle orienté objet
- en pratique une impasse
- Retour au relationnel
- évolution probable de tout SGBD relationnel
(SGBDR)
21Exercice
1. Étant le modèle de données suivant d une
entreprise de jardinerie, doit-il être
hiérarchique, réseau ou relationnel
2. Comment les mêmes données seraient-elles
organisées dans un SGBDR?
22Solutions
- 1. Ce doit être un modèle hiérarchique, car
chaque niveau na quun nud qui pointe sur lui.
Pour déterminer la quantité de lumière il faut
connaître la plante ainsi de suite - 2.
233. Architecture du système de base de données
- Séparation entre BD et ses langages ? au
concept de lorganisation (schéma) d une BD
243.1. Schémas et langages
- Modèle décrit les données et leurs relations à un
niveau abstrait - Schéma de BD décrit lorganisation conceptuelle
du SBD. - Définit pendant la conception au moyen dun
langage de définition de données (DDL) - Lorganisation des données se définit à 2 niveaux
- logique (lorganisation) est le modèle
conceptuel de données - physique la façon dont les données sont
stockées sur le disque
253.1. Schémas et langages
- DDL permet au user de définir lorganisation des
données au niveau logique - Le logiciel SGDB prend en charge lorganisation
physique en correspondant le physique et logique - DDL permet de créer des tables et décrire les
champs de chaque table (voir exemple ci-après) - Le remplissage dune base de données se fait par
un langage de manipulation de données (DML) - SQL, ACCESS (interaction graphique cachant les
opérations réalisées en back-ground)
263.1. Schémas et langages
- Exemple pas dinformations sur lorganisation
logique
27Exercices
- 1. Concevez un schéma possible pour un cabinet
médical. Les médecins veulent un accès immédiat
aux informations médicales du patient.
Lopération de saisie doit être sûr que toutes
les mutuelles ont été facturées et que chaque
patient sest acquitté du solde - 2. Lutilisateur doit-il faire appel au DML ou au
DDL pour accomplir chacune des tâches suivantes? - Changer ladresse d un client
- définir une table dinventaire
- entrer les renseignements sur un nouvel employé
28Solution
1.
29solution
- 2.
- a) Mettre à jour une adresse d un client et
entrer des renseignements sur un nouveau client
se réalise par le DML - b) définir une nouvelle table implique
l utilisation du DDL. Créer la table et établir
les attributs font partie de la définition des
données. - c) Réponse a)
303.2. Architecture à 3 niveaux
- Méthode acceptée en 75 et développée en 78 connue
sous le nom darchitecture ANSI/SPARC (American
National Standard Institute) - 3 niveaux
- interne stockage physique (bits, SGBD sen
charge) - conceptuel définition logique, modèle et schéma
du point de vue conceptuel (concerne
ladministrateur et son groupe) - externe concerne les utilisateurs
313.2. Architecture à 3 niveaux
323.2. Architecture à 3 niveaux
333.3. Indépendance des données
- Données différentes du SGBD
- Au niveau physique les données doivent être
indépendantes dun modèle particulier ou de
larchitecture - Lorganisation aux 3 niveaux doit être modifiable
sans interférer avec le niveau élevé
343.4. Regrouper les modules
- Différents modules
- Le SGBD offre une protection complète grâce au
dictionnaire - des données
- gestionnaire d exécution
- de la BD
- gestionnaire des données stockées
- Le SGBD vérifie de façon cohérente au
dictionnaire des données - que les accès sont légaux
- traite ces commandes
353.4. Regrouper les modules
36Exercice
- Examiner lorganisation de lexemple médical.
Quest-ce qui doit être la vue interne, la vue de
la communauté et la vue externe de cette base de
données?
37Solution
- Les tables et le contenu réel de chaque objet
constituent la vue de la BD par la communauté.
Elle contient des informations telles que - la vue interne doit être lemplacement physique
de chaque élément sur le disque du serveur ainsi
que le nombre doctets nécessités pour son
stockage. La vue externe dépend de lutilisateur
qui accède à la base de données. Le médecin veut
voir lhistorique du patient, lemployé de la
facturation souhaite voir les informations de
facturation.
38II. Concepts des BD relationnelle
391. SGBDR
- Un SGBDR les informations sont représentées
sous forme d un ensemble de relations, il se
définit comme un ensemble de relations - Représentation des relations par des tables à 2
dimensions satisfaisant certaine conditions - Vue logique table
401. SGBDR
- Table se définit par
- un nom unique,
- nb de colonnes ou attributs,
- chaque colonne porte un nom unique
- nb de colonnes degré de la table
- données représente une ligne (un n-uplet ou
tuplet) - cardinalité nb de lignes à un moment donnée
- champ attribut
- enregistrement ligne
Nom de la table ou de la relation
411. SGBDR
- Instance de la table contenu de la table à un
moment particulier - table sans ligne table vide
- Insérer des tuples charger une table
- Dans chaque colonne les valeurs ? ensemble de
valeurs possibles appelé domaine
Dom(nom colonne)
422. Définition mathématique d une relation
- R relation de n attributs R(A1, A2, , An)
- Chaque attribut Ai, domaine Dom(Ai)Di
- On définit le domaine DD1 xx Dn
- Une relation r sur un schéma R sera définie par
ces k tuples (t1,..,tk) de R sur D, avec
tit(Ai)?Dom(Ai)
433. Schéma d'une relation
- Représentation symbolique de la relation
- Exemples
- Produit (nProduit, nom, qtéEnStock)
- LigneComm (ncommande,narticle, quantité)
- Vehicule (nImmatriculation, modèle, nmoteur)
Attribut clé (souligné)
Attributs non clé
Nom de la relation
Clé composée de 2 attributs
2 clés potentielles
444. Clé candidate et clé primaire
- Un attribut (ou un ensemble dattributs) dont
deux occurrences différentes ne prennent jamais
la même valeur - Il sagit donc dun identifiant des occurrences
- Exemple dans une relation voiture, le numéro
minéralogique est une clé - clé primaire (attribut souligné) joue le rôle de
mécanisme d adressage de la relation, elle doit
être unique, ou composée de plusieurs attributs
45Exercice
- Soit la table DEPT
- Les lignes suivantes peuvent être insérer ou pas
465. Clés extérieures
- Concept clé extérieure permet au SGBDR de
maintenir la cohérence des lignes de deux
relations ou des lignes de la même relation - Une clé est extérieure de la relation r1 par
rapport à la relation r2 si cette clé est une clé
primaire pour la relation r2. - Une clé extérieur peut être NULL
47Exercice
- Soit les tables suivantes
- Département
- Personnel
- Dire si on peut insérer ces lignes dans la table
Personnel
48III. SQL
491. SQL
- Standard de fait normalisé
- pour la gestion des données (Langage de
Manipulation de Données, LMD), - et aussi pour la gestion du schéma (Langage de
Définition des Données, LDD) - 1. Gestion des données
- Implante les opérateurs principaux de l'algèbre
relationnelle - Fonctions ensemblistes et "spéciales"
- 2. Gestion du schéma
- Création, modification de tables, index...
502. Forme d'une requête SQL
- Select Liste dattributs
- From Noms de Relations
- Where Conditions
- Clause Where optionnelle, peut être multiple
- Where agegt18 and sexe1
- Résultat de la requête une relation
- Aucune modification dans la base
- la relation résultat n'est pas mémorisée dans la
base - les relations initiales ne sont en aucun cas
modifiées
513. Algèbre relationnelle
- Elle définit des opérations sur les relations
- Dans la plupart des systèmes relationnels, la
réponse à une requête sobtient par lutilisation
dun ou plusieurs opérateurs relationnels - Ces opérateurs sont définis par une algèbre
relationnelle formalisée
524. Opérateurs relationnels
- Deux grandes classes
- Les opérateurs unaires portent sur une unique
relation - sélection
- complément
- projection
- Les opérateurs binaires portent sur deux
relations - union
- intersection
- différence
- division
- plusieurs produits
53Sélection (ou restriction)
- Construire une relation contenant seulement les
occurrences correspondant à un critère - (enlever des lignes)
- La condition peut contenir plusieurs critères
- Représentation algébrique
- Représentation graphique
54Sélection - Exemple
- Donnez les commandes passées après le mois
dOctobre
sdategtoctobre(commande)
select ncom, date, montant from commande where
date gt"octobre"
55Projection
- Construire une relation contenant seulement les
attributs choisis - (enlever des colonnes)
- Représentation algébrique
- Représentation graphique
56Projection - Exemple
pNom,Dpt(Etudiant)
select distinct nom, Dpt from Etudiant
Nom, Dpt
Dpt, _at_Dpt
select distinct Dpt, _at_Dpt from Etudiant
pDpt,_at_Dpt(Etudiant)
57Complément
- Construire une relation qui contient toutes les
occurrences qui nexistent pas dans la relation - (exprime le FAUX)
- Représentation graphique
58Complément - Exemple
- relation EnseigneA(professeur, élève)
- Le complément relation " n'enseigne pas à"
C
59Complément en SQL
- Pas implanté dans la plupart des SGBD
- D'où combinaison d'opérateurs relationnels
(utilise d'autres présentés plus loin) - Reprenons la relation résultant de l'exemple sur
l'opérateur complément, que nous appellerons R - 1) faire une projection sur l'attribut
"professeur" et obtenir la relation R1 - 2) faire une projection sur l'attribut "élève" et
obtenir la relation R2 - 3) faire le produit cartésien R1 ? R2
- 4) faire la différence (R1 ? R2) - R
60Union
- Construire une relation contenant la fusion de
deux relations - possible uniquement sur des relations ayant les
mêmes attributs - Représentation algébrique
- relation1 ? relation2
- Représentation graphique
61Union - Exemple
U
Ouvrier ?Cadre
select nEmploye, nom from Ouvrier Union select
nEmploye, nom from Cadre NB pas toujours
implanté!
62Intersection
- Fournit les occurrences présentes dans 2
relations - possible uniquement sur des relations ayant les
mêmes attributs - Représentation algébrique
- relation1 ? relation2
- Représentation graphique
63Intersection - Exemple
- Donnez les numéros et noms des chefs de service
qui sont ingénieurs .
Ingénieur?ChefDeService
U
select nEmploye, nom from Ingenieur intersect se
lect nEmploye, nom from ChefDeService NB pas
toujours implanté!
64Différence
- Obtenir les occurrences de la relation1 qui
nappartiennent pas à la relation2 - Les deux relations doivent avoir les mêmes
attributs. Cette opération nest pas commutative. - Représentation algébrique
- Relation 1 - Relation 2
- Représentation graphique
65Différence - Exemple
- Donnez le nom des étudiants qui sont collés à
au moins une U.V.
-
select nomId, UV from Inscrit minus select
nomId, UV from Recus NB pas toujours implanté!
66Remarque
- Union, intersection et différence nécessitent
d'avoir des relations qui possèdent les mêmes
domaines, ce qui est peu courant dans la réalité.
- On utilise fréquemment ces opérateurs après des
projections gt permettent d'obtenir des relations
ayant même domaine
67Division
- Déterminer les occurrences de la première
relation qui sont associées à toutes les
occurrences de la seconde. - Représentation algébrique
- relation1 relation2
- Représentation graphique
68Division - Exemple
- Donnez le nom des professeurs qui enseignent
conjointement aux élèves figurent dans la
deuxième relation .
?
Pas de transcription SQL
69Produits
- Ces opérations consistent à former une relation
contenant les attributs des deux relations
opérantes. - Plusieurs produits
- produit cartésien
- thêta-produit
- jointure naturelle
- jointure extérieure
- Semi-jointure
70Produit cartésien
- Le produit cartésien se construit en combinant
toutes les possibilités de "liaison" des deux
relations - Représentation algébrique
- relation1 ? relation2
- Représentation graphique
Relation résultante
relation1
relation2
71Produit cartésien - Exemple
select from Livre, Présentation
72Thêta-produit
- Produit cartésien doublé dune sélection.
- Ne retient que les occurrences qui vérifient une
condition logique thêta ? ?, ?, , ? - Représentation algébrique
- relation1 relation2
- Représentation graphique
?
73Thêta-produit - Exemple
- Employés qui gagnent plus quun chef
- 1 - produit cartésien
- 2- sélection employé.salairegtchef.salaire
employé.salaire gt chef.salaire
Select Employé.nomId, Employé.salaire,
Chef.nomId, Chef.salaire from Employé, chef where
Employé.salairegtChef.salaire
74Jointure naturelle
- Thêta produit avec
- Thêta est l'égalité
- Et légalité porte sur des attributs identiques.
- Représentation algébrique
- relation1 relation2
- Représentation graphique
75Jointure naturelle - Exemple
- Donnez le nom des employés et de leur service
- Rmq service ventes pas dans la jointure
Select Employe.n, Employe.nom, Employe.nservice
, Service.nom from Employe, Service where
Employe.nservice Service.n
nserviceN
76Semi-jointure
- Jointure faisant apparaître en totalité les
occurrences de la première relation, mais
seulement celles "liées" de la seconde - Opération non commutative
- Représentation algébrique
- relation1 relation2
- Représentation graphique
Relation résultante
relation1
relation2
77Semi-jointure - Exemple
Select Employe.n, Employe.nom, Bureau.N,
Bureau.bâtiment from Employe, Bureau where
Employe.nbureau Bureau.n() ou, selon le SGBD
Select Employe.n, Employe.nom, Bureau.N,
Bureau.bâtiment from Employe LEFT JOIN Bureau ON
Employe.nbureau Bureau.n
employé
bureau
78Jointure extérieure
- Jointure naturelle qui fait figurer les
occurrences qui nont pas dassociées dans
lautre relation. - On leur associe alors la valeur nulle (symbole
?). - Représentation algébrique
- relation1 relation2
- Représentation graphique
79Jointure extérieure - Exemple
employé
bureau
80Arbre syntaxique
- Deux objectifs
- Représentation graphique d'une requête complexe
- décompose le traitement dune requête en étapes
(interne au SGBD) - Utilise un arbre liant les différentes étapes
unitaires de traitement d'une requête complexe
81Arbre syntaxique - Exemple
- Donnez les renseignements sur les sports
pratiqués par les étudiants de IF - Etudiant (nom, prénom, Dpt, nsport)
- Sport (nsport, libellé, horaires, prof)
82SQL les plus par rapport à l'algèbre
- Pour la modification des données
- insertion
- modification (mise à jour)
- suppression
- Pour la manipulation des données
- valeur NULL
- opérateurs arithmétiques - /
- fonctions ensemblistes max min count sum avg
- distinct
- order by
- group by et having
- between
- like
83SQL modification des données
- Chargement d'une nouvelle occurrence
- Insert into Etudiant Values (265096582955569,
"Dupont Anne", "4 Rue du Bois, 69001 Lyon") - Modification d'une occurrence
- Update Etudiant
- Set adresse "10 Rue de Pix, 69001 Lyon"
- Where nom "Dupont Anne"
- Suppression d'une occurrence
- Delete From Etudiant
- Where No-SS 265096582955569
84SQL recherche des valeurs nulles
- Is Not Null permet de vérifier si l'attribut
est renseigné ou non pour une occurrence - "Donner les nSS et Nom des étudiants dont on ne
connaît pas le domicile" - Select NSS-Et, Nom
- From Etudiant
- Where Adresse Is Null
85SQL opérateurs arithmétiques et fonctions
ensemblistes
- Opérateurs arithmétiques
- addition
- soustraction -
- multiplication
- division /
- Fonctions ensemblistes
- Max Fournit la valeur maximale
- Min Fournit la valeur minimale
- Count Fournit la cardinalité dun ensemble
- Sum Somme de toutes les valeurs
- Avg Moyenne de toutes les valeurs
86SQL autres opérateurs
- Distinct
- élimine les valeurs dupliquées - select distinct
nom from... - Order by
- présente les résultats triés par ordre ascendant
(Asc) par défaut ou descendant (Desc) -
select... From... Where... order by nom desc - Group by
- Partitionne la relation en parties distinctes sur
un critère donné -select fromwhere group by
couleur - Having
- donne un critère de sélection sur chaque
sous-groupe de la relation (sous-groupe défini
par group by) - select fromwhere group by
couleur having count(x)gt1 - Between
- donne un intervalle de valeurs - where age
between 10 and 15 - Like
- donne une forme pour une chaîne de caractères -
where nom like 'D'
87SQL pour la gestion du schéma
- Dictionnaire
- contient la déclaration des relations et une
description - est stocké sous forme d'une base de données
métabase - Des instructions SQL spécifiques
- déclaration du types des données
- définition de contraintes
- création/suppression/modification de relations
- index et clusters
- relations dérivées vues et photographies
- contrôle d'accès
88Types des données
- Types de base
- number
- number(taillemax)
- number (taillemax, nbdecimales) //taillemaxlt38
- char(longueur) //longueurlt255
- varchar2(longueur) //longueurlt2000
(Oracle) - date //plusieurs formats dont JJ/MM/AA
- Valeur NULL
- élément non renseigné
- Types nouveaux
- Large OBject BLOB (binary LOB), CLOB
(character LOB), CFILE(liste de pointeurs sur
fichiers binaires)
89Création d'une table - Exemple
- Version de base
- Create Table Etudiant
- (
- nSS-ET Number (14),
- Nom Char (20),
- Adresse Varchar2 (300)
- )
90Contraintes
- Peuvent être mises sur la ligne de l'attribut
concerné ou en fin d'instruction create - Not Null
- l'attribut concerné doit toujours être renseigné
- Primary Key
- clé primaire de la relation (identifiant)
- Unique
- la valeur de l'attribut concerné est différente
pour toutes les occurrences (cas de clés
concurrentes) - References tab(att)
- col prend ses valeurs parmi les valeurs de la clé
att de la relation tab - et bien d'autres...
91Contraintes nommées
- Constraint nom_contrainte contrainte
- ajoute des contraintes nommées sur les valeurs
- Permet de les enlever / les réactiver par
programmation - Alter table Disable / Enable Oracle
- Set constraints Deferred / Immediate norme SQL2
92Création d'une table - Exemple
- Create Table Etudiant
- (
- nSS-ET Number (14) Not Null Primary Key,
- Nom Char (20) Not Null,
- Adresse Varchar2 (300),
- Constraint Maj Check (Nomupper(Nom))
- )
Contrainte non nommée Valeur
obligatoirement renseignée
Contrainte non nommée Clé de la relation
Contrainte nommée Maj nom en majuscule
93Création d'une table - Exemple
- Create Table Inscription (
- NSS number(14) Not Null References
Etudiant(nSS-ET), - NUV number(2) Not Null,
- Foreign Key (NUV) References Unité-Valeur(NUV),
- Constraint cle Primary key(NSS, NUV)
- )
Contrainte non nommée, sur ligne indépendante
référence à une clé d'une autre table
Contrainte nommée cle Clé composée
94Création d'une table - Exemple
- Create Table Employe (
- matr number(5) Primary Key,
- nom Char(9) Unique,
- dept number(2),
- Check (Nomupper(Nom)),
- Foreign Key(dept) References Departement(dept),
- Check (dept In (10, 20, 30))
- )
95Création d'une table et remplissage en passant
- Remplissage en passant
- Create Table minidepartement (
- cle number primary key,
- data char(20))
- as select dept, nom from Departement)
- crée la table et la remplit en prenant les
valeurs de 2 colonnes de la table Département
96Modification et suppression d'une table
- Ajouter une colonne à une table existante
- Alter table Etudiant
- add (NEtud number(5))
- Modifier une colonne existante d'une table
- Alter Table Etudiant
- modify (Adresse Char(100))
- Supprimer une table
- Drop table Etudiant
97Contrôle d'accès
- But protection des données
- Donner des privilèges à certains utilisateurs
- lecture Select
- insertion Insert
- modification Update ou Update ltnom attributgt
- Un utilisateur peut
- donner un privilège à un autre,
- en même temps l'autoriser à transmettre ce
privilège - gt arbre des privilèges transmis
- Les privilèges qu'un utilisateur donne sont un
sous-ensemble de ses droits propres
98Allocation et révocation de droits
- Grant Select, Insert On Etudiant To André
- donne à André le droit de sélectionner et
dinsérer des lignes dans la relation Etudiant - Grant Select On Etudiant To André With Grant
Option Identified By mot-de-passe - André pourra autoriser un autre utilisateur à
lire la table Etudiant - Grant Select On Etudiant To Public
- Tout utilisateur peut lire la table Etudiant
99Exemple SQL (1/25)
- Etudiant (NEt, Nom, Adresse)
- UV (NUV, Titre, Responsable)
- Enseignant (NEns, Nom, Grade, Salaire)
- Inscrit (NEt, NUV)
- Diplôme (NEt, NUV)
- Enseigne (NEns, NUV)
100Les occurrences de l'exemple (2/25)
101Les occurrences de l'exemple (3/25)
102Projection (4/25)
- "Donnez les noms et adresses des étudiants"
- Select nom, adresse // attributs projetés
- From Etudiant
- Les autres colonnes de la relation napparaîtront
pas.
103Sélection (5/25)
- "Donnez tous les renseignements concernant les
étudiants dont le nom est Dupont" - Select
- From Etudiant
- Where nom "Dupont"
104Sélection projection (6/25)
- Dans la grande majorité des cas, la projection et
la sélection sont associées - "Donnez les noms des étudiants habitant Lyon"
- Select nom
- From Etudiant
- Where adresse "Lyon"
105Intersection (7/25)
- "Quels sont les n et les noms des étudiants qui
sont aussi enseignants ?" - (Fournir les n SS identiques)
- (Select NEt, nom From Etudiant)
- INTERSECT
- (Select NEns, nom From Enseignant)
106Différence (8/25)
- "Liste des nSS des étudiants et des n UV quils
ont échouées" - (Select From Inscrit)
- MINUS
- (Select From Diplôme)
107Union (9/25)
- "Liste des n des gens participant aux UV"
- (Select nEt From Inscrit)
- UNION
- (Select nEns From Enseigne)
108Produit cartésien (10/25)
- Il suffit de citer les deux relations qui
participent - Select From UV, Etudiant
109Thêta-produit (11/25)
- "Quels sont les étudiants responsables d'une
UV?" - Select NEt, Nom, Adresse, NUV, Titre
- From Etudiant, UV
- Where NEt Responsable
110Jointure naturelle (12/25)
- "Donnez le nom des étudiants inscrits à lUV 10"
- Select Nom
- From Etudiant, Inscrit
- Where Etudiant.NEt Inscrit.nEt
- and NUV 10
Jonction des 2 relations
111Jointure naturelle (13/25)
- Autre formulation équivalente sous MySQL
- Select nom
- From Etudiant JOIN Inscrit
- Where Etudiant.NEt Inscrit.NEt
- and N UV10
Jonction des 2 relations
112Jointure naturelle (14/25)
- "Donnez le nom des étudiants inscrits dans l'UV
dont le responsable a le n 70 - Select Nom
- From Etudiant, Inscrit, UV
- Where Etudiant.NEt Inscrit.NEt
- and Inscrit.NUV UV.NUV
- and Responsable 70
113Auto-jointure (15/25)
- Quand les 2 relations n'en font qu'une
- "Donnez les noms des assistants qui gagnent plus
quun maître de conférence" - Select Y. nom
- From Enseignant Y, Enseignant X
- Where Y. salaire ? X. salaire
- And Y. grade "Assistant"
- And X. grade "Maître de Conférence"
114Semi-Jointure (16/25)
- "Donner pour chaque UV, le nresponsable et la
liste des nenseignants" - Select UV.NUV, Responsable, NEns
- From UV, Enseigne
- Where UV.NUV Enseigne.NUV ()
Semi-jointure
115Fonctions ensemblistes (17/25)
- "Salaire moyen des maîtres de conférences"
- Select Avg (Salaire)
- From Enseignant
- Where Grade 'Maître de Conférence'
116Fonctions ensemblistes (18/25)
- "Donnez le nom des maîtres de conférences qui
gagnent plus que la moyenne des salaires des
enseignants" - Select Nom From Enseignant
- Where Grade 'Maitre de Conference'
- And Salaire gt (Select Avg(Salaire) From
Enseignant) - NB sous Mysql, pas d'imbrication de select.
- Mais variables
- select _at_moySalavg(salaire) from Enseignant
- select nom from Enseignant
- where grade"Maitre de conf"
- and salaire gt_at_moySal
117Fonctions ensemblistes (19/25)
- "Donnez le nombre dUV auxquelles est inscrit
létudiant n 20" - Select Count (NUV)
- From Inscription
- Where NEt 20
118Distinct (20/25)
- "Combien y a-t-il de responsables dUV ?"
- Select Count (Distinct (Responsable))
- From UV
119Order by (21/25)
- "Noms des assistants par ordre alphabétique"
- Select Nom
- From Enseignant
- Where Grade 'Assistant'
- Order By Nom Asc
120Group by (22/25)
- "Donnez le salaire moyen des enseignants par
grade" - Select Grade, Avg (Salaire)
- From Enseignant
- Group By Grade
121Having (23/25)
- "Donnez le NSS des enseignants responsables de
plus de 1 UV" - Select Responsable From UV
- Group By Responsable
- Having Count (N UV) gt 1
122Between (24/25)
- "Donner les noms des enseignants dont le salaire
est entre 10100 et 11100" - Select Nom
- From Enseignant
- Where Salaire Between 10100 And 11100
123Like (25/25)
- "Donnez les noms des étudiants dont le nom
commence par D" - Select Nom
- From Etudiant
- Where Nom Like 'D'
124IV. Dépendances fonctionnelles
1251. Introduction
- Contrôle de redondance et préservation de la
cohérence des données - problème de stockage des données dans plusieurs
endroits - contraintes imposées ? dépendances fonctionnelles
(DF) - Contrainte exprimée par une règle que doivent
vérifier les données pour que la base de données
soit dans un état cohérent - contraintes sémantiques dépendent de la
signification ou de la compréhension des
attributs dune relation - contraintes daccord dépendent des valeurs
particulières des attributs dun tuple
126Exemple
- Sémantiques
- l attribut Age ne peut être une valeur négatif
- daccord
- dans la relation PERSONNEL, si on suppose que
chaque employé ne travaille que dans un seul
service et que chaque service admet un seul chef,
alors deux tuples (employés) avec un même service
ne peuvent avoir des chefs différents
1272. Définition formelle de DF
- Soit une relation R(A, B, )
- On dit que le(s) attribut(s) A détermine(nt)
fonctionnellement le(s) attribut(s) B
relativement à R (on note A?B) ssi pour 2 tuples
t1 et t2 de R alors t1(A)t2(A) ?t1(B)t2(B)
128Dépendance fonctionnelle (DF)
- Dans une relation, à une valeur d'une donnée, on
associe une valeur au plus d'une autre donnée, à
un instant considéré - Att1 ? Att2
- il y a une DF entre Att1 et Att2
- Att1 est la source de la DF, Att2 en est le but
- Lorsqu'une valeur est associée à une autre par
une DF, on ne peut pas introduire dans la base
d'autre couple ayant la même valeur pour source
sans supprimer le premier couple
129DF - Exemple
- Il y a une DF entre Client et Adresse
- IdClient ? Adresse (Un client n'a qu'une seule
adresse) - Si j'ai (Dupont, Lyon) dans la base, je ne peux
introduire (Dupont, Nice) que si je supprime
(Dupont, Lyon)
130Algorithme de satisfaction
- Soit une relation R et et une DF A?B
- Triez les tuples de la relation R sur le(s)
attribut(s) A - Vérifiez que les tuples avec des valeurs égales
pour le(s) attribut(s) A ont aussi des valeurs
égales pour le(s) attribut(s) B. - Si lun des deux tuples satisfait la condition 1
mais pas la condition 2, la sortie de
lalgorithme est Faux, sinon la sortie de
lalgorithme est Vrai
131Axiome de déduction des DF
- Soit U, V, W, X des ensembles dattributs
- Réflexivité
- Si V ? U alors U ? V
- Accroissement
- Si V? U alors VW ? U et/ou V W ? UW
- Transitivité
- Si U ? V et V ? W alors U ? W
- Union ou Additivité
- Si U ? V et U ? W alors U ? VW
- Pseudotransitivité
- Si U ? V et V W ? X alors U W ? X
- Projection ou Décomposition
- Si U ? V W alors U ? V et U ? W
132Formalisation de la clé d'une relation
- Lorsque, dans une relation,
- un attribut (ou un groupe dattributs)
- est source de dépendances fonctionnelles
- ayant respectivement pour but chacun des autres
attributs de la relation, - cet attribut (ou ce groupe dattributs) est
appelé - clé de la relation
133Exercices
- Soit FA ? B, C ? X, BX ? Z, déduisez que AC
?Z en appliquant les axiomes de déduction - Si AC ?Z on dira que F implique logiquement AC ?Z
et on note par F AC?Z - Soit FA ? B, C ? D, avec C ? B montrer que F
A ?D
134Solutions
- A?B et BX?Z alors AX?Z pseudotransitivité, AX?Z
et C?X alors AC?Z (pseudotransitivité) - C ? B, alors B?C (réflexivité), A?B et B?C alors
A?C (transitivité), de A?C et C?D alors A?D
(transitivité), donc F A?D
135DF élémentaire et directe
- On dit quune DF est élémentaire si aucun
sous-ensemble de la clé nest source de la
dépendance fonctionnelle - A, B, C ? D est élémentaire
- Si A, B -/? D A, C -/? D B, C -/? D
- et A -/? D B -/? D C -/? D
- A ? B est directe sil nexiste pas un autre
attribut C tel que A ? C et C ? B
136DF REDONDANTES
- Une DF A ?B est dite redondante pour les DF F ssi
A ?B peut découler de DF F-A ?B - Elles peuvent donc être éliminées
- Comment déterminer les DF redondantes
- Algorithme dappartenance
137Algorithme dappartenance
- Soit F ensemble de DF avec A?B?F
- Poser GF-A?B, si G?? alors aller à létape 2,
sinon arrêt de lalgorithme - Initialiser TA
- Dans G, rechercher les DF X?Y où X ?T
- Si X?Y existe ajouter Y à T TT?Y, si tous
les attributs de B sont dans T alors arrêt de
l algorithme (A?B est redondante), sinon
supprimer X?Y de G et aller à l étape 3 - si G? ou si aucune DF dans G na tous les
attributs de son déterminant dans T, alors A ? B
nest pas redondant - Si une DF A ? B est redondante dans F alors on
peut la supprimer
138Exercice
- Soit FX ? YW, XW ? Z, Z ? Y, XY ? Z,
déterminer si la DF XY ?Z est redondante dans F.
139Fermeture dun ensemble de DF
- Soit F un ensemble de DF dun schéma R
- On définit F la fermeture de F i.e. FX?Y /
FX ?Y, il satisfait les 2 conditions suivantes
- F est le plus petit ensemble qui contient F et
qui satisfait la propriété 2 - Toute application des axiomes de déduction aux DF
de F ne produit que des DF qui sont déjà dans F.
140Exemple
- FXY ?Z, déterminer F.
- FX?X, Y?Y, Z?Z, XY?X, XY?XY, XZ?X, XZ ?Z, XZ
?XZ, YZ ?Y, YZ ?Z, YZ?YZ, XYZ ?XY, XYZ ?XZ, XYZ
?YZ, XYZ ?XYZ - appliquer les axiomes de déduction à tous les
attributs pris isolément, appliquer les axiomes à
toutes les combinaisons de deux attributs et
faites aux DF de F, appliquer ensuite les axiomes
à toutes les combinaisons de 3 attributs, ainsi
de suite
141Fermeture dun ensemble d attributs
- Soit X un ensemble dattributs et F un ensemble
de DF, la fermeture de lensemble des attributs X
sous F, noté X est lensemble des attributs A
qui peuvent découler de X en appliquant les
axiomes de déduction aux DF de F. - intérêt
- si Y?X alors F X ?Y
142Algorithme de fermeture
- Soit X ensemble des attributs et F ens. des DF
- Initialiser GF
- initialiser TX
- dans G rechercher des DF X ?Y telles que tous les
attributs du déterminant X soient des éléments de
T, 2 cas - Si cette DF existe alors TT?Y, et retirer X ?Y
de G. Aller à 3 - Si G? ou pas de DF dans G avec tous les
attributs de leurs déterminants comme éléments de
T. Arrêt de lalgorithme - XT
143Exercice
- FA ?B, B ?C, BC ?D, DA ?B, chercher X où
XA, Quelle est la signification de cet
ensemble? Est-il vrai que A ?DA?
144Couverture et équivalence dun ensemble de DF
- Définitions
- F et G sont équivalents et on note F?G ssi FG,
on dit aussi que F couvre G et vice versa - Si G couvre F et si aucun sous-ensemble propre H
de G nest tel que HG, nous dirons que G est
une couverture non redondante de F. - Remarques
- Il peut y avoir plusieurs couvertures non
redondantes - problème de minimalité nest pas traité ici
145Algorithme de couverture non redondante
- Initialiser GF
- tester la redondance de chaque DF de G au moyen
de lalgorithme d appartenance jusqu à ce
qu il ny a plus - G est une couverture non redondante de F.
- Exemple trouver la couverture non redondante G
pour FX ?YZ, ZW ?P, P ?Z, W ?XPQ, XYQ ?YW, WQ
?YZ.
146Exercice
- Trouver une couverture non redondante G de
FX?YZ, ZW?P, P?Z, W?XPQ, XYQ?YW, WQ?YZ.
147Attributs accessoires
- Un attribut A1 est dit un attribut gauche
accessoire dans A1A2?B1B2 par rapport à F dans la
relation R ssi F?F-A1A2?B1B2?A2?B1B2 - Un attribut B1 est dit un attribut droit
accessoire dans A1A2?B1B2 par rapport à F dans la
relation R ssi F?F-A1A2?B1B2?A1A2?B2 - On ne considérera ici que la réduction gauche
148Algorithme de réduction à gauche
- Initialiser GF
- Pour chaque DF A1A2...An?Y de G
- Pour chaque Ai du déterminant de la DF
- Si tous les attributs Y?A1..Ai-1Ai1An sous G
alors supprimer Ai (gauche accessoire), sinon
garder Ai - fin de létape 3
- fin de létape 2
- A la fin de lalgorithme G est la couverture à
gauche de F
149Exercice
- Réduire lensemble FX?Z, XY?WP, XY?ZWQ, XZ?R
en supprimant les attributs gauches accessoires.
150Couverture canonique
- Pour un ensemble de DF F, une couverture
canonique Fc est un ensemble de DF où les
conditions suivantes sont simultanément
satisfaites - Chaque dépendance de Fc est simple (côté droit de
la DF ne contient quun seul attribut) - Fc est réduit à gauche
- Fc nest pas redondant
151Exercice
- Soit FX?Z, XY?WP, XY?ZWQ, XZ?R, trouver une
couverture canonique Fc.
152Le processus de normalisation
153Introduction
- La normalisation est un processus réversible dans
lequel un ensemble de relations est remplacé par
des groupes successifs de relations dont la
structure est progressivement plus simple et plus
régulière. - Dire qu une relation est dans une forme normale
particulière est une indication des conditions
qu une table doit remplire (ensemble de
critères) - réversible dans le sens où on retrouve les
relations originelles sans perte dinformations.
154Introduction
- Dans le processus de normalisation les groupes
de relations se restreignent de plus en plus - aux types de DF quils peuvent satisfaire
- aux anomalies de données quils peuvent
rencontrer. - Les objectifs du processus de normalisation sont
- permettre la représentation de toute relation
- obtenir des algorithmes relationnels dextraction
puissants (opérateurs relationnels) - éviter les relations danomalies indésirables
pour linsertion la mise à jour et la suppression - réduire la nécessité de restructuration
155Introduction
- Les règles de bonne forme des relations
- déclinées selon 5 formes normales
- la FNn1 rajoute des contraintes à la FNn
- déduites de dépendances entre les attributs des
relations
1FN
E.F. Codd propose 3 formes normales 1FN, 2FN,
3FN. Il existe la forme normale de Boyce-Codd FNBC
2FN
3FN
FNB
156Nécessité de la normalisation
- Seule clé possible (IdClient, IdProduit)
- Relation correcte pour le SGBD mais qui va
engendrer de nombreux problèmes de maintenance et
des anomalies
157Nécessité de la normalisation (suite)
- Adresse client répétée autant de fois que de
produits commandés - mise à jour adresse nécessite plusieurs
modifications - ou anomalies car plusieurs adresses pour le même
client - Si un client annule ses commandes, alors on perd
son nom et son adresse - Cette relation est coûteuse en place mémoire
(répétitions!)
158Relation normalisée
- Une relation est dite normalisée si
- Un même attribut de cette relation nest pas
représenté plusieurs fois - et
- un attribut nest pas décomposable en dautres
attributs - il nest donc pas lui-même une relation
159Relation non normalisée - Exemple
160Première forme normale
- Toute relation normalisée est en 1FN
- Commande (NCli, NArt, NomCli, NomArt)
- Problème de la 1FN
- Seules des DF NCli, NArt ? NomCli et NCli,
NArt ? NomArt sont prises en compte - On peut donc introduire des anomalies (insertion,
suppression, mise à jour) comme - ?23, A5, JEAN, CHAISE?
- ?23, A6, CAROLINE, TABLE?
- ?26, A5, CHRISTINE, TABLE?
161Inconvénient de la 1FN
- Ne permet pas de mettre en évidence toutes les DF
- Il faudrait décomposer la relation initiale en 3
relations - Client (NClient, nom client)
- Article (NArticle, nom article)
- Commande (N Article, N client)
1622eme forme normale
- Une relation est en 2FN si
- elle est en 1FN
- toutes les DF issues de la clé sont élémentaires.
A B C D
A D
A B C
Converti en
1632eme forme normale
- Client (NCli, NomCli, NRepr, NomRepr)
- Problème de la 2FN
- La DF NRepr ? NomRepr n'est pas prise en compte
- On peut donc introduire des anomalies comme
?92, MARLENE, R15, LOULOU? - ?156, PHILIPPE, R15, BABETTE?
164Inconvénient de la 2FN
- Ne permet pas de mettre en évidence les DF
directes - Il faudrait décomposer cette relation en deux
autres relations - Client (NCli, NomCli, NRepr)
- Représentant (NRepr, NomRepr)
1653eme forme normale
- Une relation est en troisième forme normale si
- elle est en 2FN
- toutes les DF issues de la clé sont directes
- Lorsquune relation est en 3 FN
- Aucune DF nest issue dun sous-ensemble de la
clé - Aucune DF nest issue dun attribut non clé vers
un autre attribut non clé. - Client (NCli, NomCli, AdresseCli)
- LigneCommande(NComm, NArt, qté)
1663eme forme normale
A B C
A B
B C
Converti en
167FN de Boyce-Codd (F.N.B.C.)
- Cest une forme spécifique de la 3FN
- Une relation en 3FN peut encore présenter
certaines anomalies - lorsquun attribut non clé de la relation est
source dune DF ayant pour but une partie (un
sous-ensemble) de la clé - Une relation est en FNBC si
- elle est en 3FN
- la source de chaque DF existant entre les
attributs de la relation est clé de la relation - LA FNBC est la forme normale la plus élaborée
fondée sur les dépendances fonctionnelles
168Exemple
FABRICANT
- 2 clés candidates (ID, No-article) et
(Nom,No-article) - relation en 3FN mais pas en FNBC (pb de mise à
jour) - décomposition en
- FABRICANT(ID, Nom)
- FABRICANT-PIECE(ID,No-article, Quantité)
- ou
- FABRICANT(ID, Nom)
- FABRICANT-PIECE(Nom,No-article, Quantité)
169Exemple de 3FN non FNBC
- Dans un lycée, on a relevé que
- Pour une matière donnée et un élève donné, on a
une note annuelle Elève, Matière ? Note - Pour une matière donnée et un élève donné, on a
un professeur Elève, Matière ? Professeur - Un professeur enseigne une seule matière
Professeur ? Matière - Résultat (Elève, Matière, Professeur, Note)
- Cette relation est en 3FN mais pas en FNBC
170Exemple de 3FN non FNBC
- On ne peut pas traduire le fait quun professeur
est associé à une unique matière. - Il est donc possible davoir dans la base
- ?TOTO, MATH, DUPONT?
- ?JOJO, ANGLAIS, DUPONT?
- alors quune contrainte est violée.
171Exemple de 3FN non FNBC