|
A free membership is required to access uploaded content. Login or Register.
BD Bases de Donnees.docx
|
Uploaded: 7 years ago
Category: Computer Science
Type: Other
Rating:
N/A
|
Filename: BD Bases de Donnees.docx
(719.24 kB)
Page Count: 57
Credit Cost: 2
Views: 150
Last Download: N/A
|
Transcript
COURS DE BASES DE DONNÉES
Introduction
La base de données est une collection d’information (pouvant être très grosse) + un mode d’organisation et de gestion
Le système gérant l’ensemble est appelé système de gestion de la base de données SGBD
(DBMS Date Base Management Systeme)
Un SGBD est un ensemble coordonné de logiciels qui permet :
Spécifier un modèle de BD et de le gérer.
Créer une BD (en déchargeant l’utilisateur des problèmes d’implantation physiques des données).
Interroger la BD (on parle de requête, query) et manipuler les données en optimisant les coûts.
Assurer la cohérence de la base (on dit aussi intégrité) alors que plusieurs utilisateurs peuvent y accéder simultanément.
Assurer sécurité et confidentialité.
Dans ce cours on étudiera le modèle relationnel, et l’on utilisera le langage SQL (qui est à la fois un langage de requête et capable de gérer le modèle lui-même).
« Modèle relationnel »: c’est un modèle de l’implantation des données.
Avant de passer à un modèle relationnel on cherche à comprendre et visualiser l’organisation fonctionnelle des données.
Il faut spécifier un modèle sémantique :
Nous utiliserons le modèle Entité/relation (ou Entité/Association) modèle proposé par
I.Chen en 1977
Chapitre 1. Le modèle Entité/Relation (ou Entité/Association)
Les objets du modèle Entité/Relation
les entités (objets de base)
Pour I.Chen ce sont des objets que l’on peut identifier distinctement.
Par exemple : l’élève Dupond, le professeur Durand, l’amphi X1,le cours de BD.
Les types d’entités (ou ensemble d’entités)
Ce sont des groupes d’entités ayant quelque similarité
Les associations
Donnons un exemple :
« l’étudiant E étudie la matière M », cette phrase exprime le type d’association « étudie » entre les types d’entités « étudiant » et « matière ».
Les attributs
Un attribut est une propriété qui associe à chaque entité d’un type d’entités, ou d’une association de types d’entités, une valeur dans un certain domaine (nombres / chaînes de caractères).
Exemples :
25749257175500 Nom
257492595885002574925958850025749259588400Le type d’entités « étudiant » a pour attributs Numéro d’étudiant
Adresse
Diplôme préparé
L’association « le fournisseur F fournit l’article A » peut avoir comme attribut le prix.
Les clés
Une clé est un attribut ou un groupe d’attributs dont la valeur doit identifier de façon unique une entité. On distingue une clé principale (ex. le numéro de sécurité sociale qui permet d’identifier totalement un individu)
Attention : Déclarer un attribut comme clé est une décision du concepteur de la base de données et non pas le constat fait sur un état à un moment de la BD.
Cette décision est une contrainte.
Les sous-types
Un sous-type hérite automatiquement des attributs du sur-type et il peut avoir des attributs spécifiques qui n’ont pas de sens pour les autres entités du sur-type.
Par exemple : garçon est un sous type d’individu et peut avoir comme attribut « état vis à vis du service militaire » dont les valeurs sont : dégagé, sursitaire, exempté, réformé.
La fonctionnalité des associations
L’association entre E1, E2 ,……, En est fonctionnelle de E1, E2 , …, Ei-1, Ei+1,……, En vers Ei si :
Quelque soient x1E1,……, xnEn (x1,……,xn) associés
y1E1,……, ynEn (y1,……,yn) associés
Si x1=y1et …… et xi-1= yi-1 et xi+1= yi+1 et …… et xn= yn alors xi = yi
Attention : Déclarer un attribut comme clé est une décision du concepteur de la base de données.
Diagramme Entité/Relation
Conventions :
Types d’entités rectangle
Attribut ovale
Association losange + traits le reliant aux types en jeu
On souligne les attributs constituant la clé principale.
Lorsqu’il y a fonctionnalité d’une association on met une flèche orienté vers Ei
Exemple :
422084520427950044951652225675adresse
00adresse
42208451677035003032125204279400422084521399500449516531115nom
00nom
4220845488315004403725579755adresse
00adresse
2849245488314001111885121983500111188567119500380365854075004718051311275008375651311275007461258540750044951651494155nom
00nom
3580765305435Acteur
00Acteur
35807651859915Studio
00Studio
20262851585595
Appartient
00
Appartient
2117725122555Joue
dans
00Joue
dans
8375651494155titre
00titre
146051494155année
00année
837565488315durée
00durée
14605488315genre
00genre
4718051036955Film
00Film
On a l’association fonctionnelle Film, Studio (un film est produit par un seul studio).
Exemple d’association ternaire :
495236536830durée
00durée
394652536830durée
00durée
220916559055
Contracte
00
Contracte
4860925622300042208456223000
471805103505Acteur
00Acteur
4403725103505Film
00Film
3123565342890011118853428900
486092556515004312285565150047180556515009290055651500
26663645969000
929005100965adresse
00adresse
106045100965nom
00nom
49523659525année
00année
39465259525titre
00titre
Studio de production
2392045130810Studio
00Studio
248348510287000284924510287000
28492454445adresse
00adresse
19348454445nom
00nom
Exemple d’association quaternaire :
495236536830durée
00durée
394652536830durée
00durée
220916559055
Contracte
00
Contracte
4860925622300042208456223000
471805103505Acteur
00Acteur
4403725103505Film
00Film
3032125107950002026285107950003123565342890011118853428900
486092556515004312285565150047180556515009290055651500
929005100965adresse
00adresse
106045100965nom
00nom
49523659525année
00année
39465259525titre
00titre
3306444139700020262841397000
Studio de Studio de l’acteur production
2392045130810Studio
00Studio
3032125-6351002026285-635100248348510287000284924510287000
28492454445adresse
00adresse
19348454445nom
00nom
Exemple d’un supermarché :
495236536830FAdresse
00FAdresse
74612536830Salaire
00Salaire
-7683536830Enom
00Enom
394652536830Fnom
00Fnom
513524562230004220845622300065468562230001974856223000
440372584455Fournisseur
00Fournisseur
10604584455Employé
00Employé
193484517589400266636584455Chef de rayon
00Chef de rayon
166052584455 est
00 est
8375651523900
422084537465004718043746500330644437465001294765128905Inclusion de type
00Inclusion de type
257492581915
Responsable
00
Responsable
167005-247650
Travaille
00
Travaille
220916539370005632453937000
380365153035Rnom
00Rnom
156908583820Rayon
00Rayon
12033251060450010204451460500
18434043683000288925128270Rnuméro
00Rnuméro
3672205-467360
Fournit
00
Fournit
20262858128000
1477645125730
contient
00
contient
440372554610Cnuméro
00Cnuméro
540956554610Cnom
00Cnom
18434045461000
5775324990600048609259906000
2392045121285
Constitué
de
00
Constitué
de
2392045121285
Constitué
de
00
Constitué
de
28892529845Anom
00Anom
4312285143510
passe
00
passe
10204455207000
348932574295Ordre
d’achat
00Ordre
d’achat
156908574295Article
00Article
5226685-86360Client
00Client
486092596519004129405965190032150059651900220916596519001203325965200028892596520Anuméro
00Anuméro
5592445273050048609252730500239204511874500
3946525495300033064454953000
531812571755Compte
00Compte
202628571755quantité
00quantité
4769485116205CAdresse
00CAdresse
3855085116205Date
00Date
2849245116205Onuméro
00Onuméro
Type faible ou dépendant d’entités
Ce sont des types qui n’ont pas de clé propre mais une clé obtenue comme suit :
des attributs du type faible E
les attributs constituant les clés de types qui sont chacun associés de façon fonctionnelle à E
Soit l’entité faible E
Soient :
Les entités F1, ……, Fn
Les relations :
R1 fonctionnelle de E vers F1
R2 fonctionnelle de E vers F2
Rn fonctionnelle de E vers Fn
Les clé de F1,……Fn
4952365125730Adresse
00Adresse
3855085125730Nom
00Nom
654685125730Numéro
00Numéro
239204514795500
248348578740
Travaille
00
Travaille
467804595250042208459525001111884952500
4312285123190Studio
00Studio
6546853175000746125123190Equipe
00Equipe
3580765539740015690855397400
Une clé pour l’entité faible « Equipe » est Numéro, Nom
Convention :
On double les traits du rectangle de l’entité faible et des losanges des associations fournissant la clé.
Cours de Base de données
14.02.2000
Rappel du cours précédent :
Type T d’entités faible : il n’a pas de clé propre, il faut prendre des clés d’autres types T1, ……, Tn pour lesquels il existe des associations fonctionnelles de T vers les Ti.
De telle entités faible s’introduisent quand on veut éclater une association d’arité (nombre de composants) 3 en une famille d’associations binaires fonctionnelles.
Exemple d’association ternaire :
38036585407500471805131127500837565131127500746125854075008375651494155titre
00titre
146051494155année
00année
837565488315durée
00durée
14605488315genre
00genre
4718051036955Film
00Film
2300605117475salaire
00salaire
4678045139700adresse
00adresse
3763645139700nom
00nom
2666364127000211772592710
Contracte
00
Contracte
4586605234950040379652349500
422084545720Acteur
00Acteur
3215005679440011118856794400
26663644318000266636513461900422084543180Studio
00Studio
4037965-3810004586605-381000
4586605109855adresse
00adresse
3672205109855nom
00nom
Cette association se traduit en :
23920451587500348932515875salaire
00salaire
2483485107315Contrat
00Contrat
32150055270400
929005895350032150058953500
28492443492500
422084571755
Film
Contractant
00
Film
Contractant
220916571755
Studio
Contractant
00
Studio
Contractant
28892571755
Acteur
Contractant
00
Acteur
Contractant
43122851714500230060517145003803651714500
48609243746500284924437465009290043746500
531812519685année
00année
385508519685genre
00genre
458660519685Film
00Film
56324519685Acteur
00Acteur
248348519685Studio
00Studio
5226685565140044951655651400
5043805254000458660525400029406852540002392045254000380365254000929005254000
4220845130810durée
00durée
5043805130810titre
00titre
2849245130810adresse
00adresse
2117725130810nom
00nom
837565130810nom
00nom
14605130810adresse
00adresse
Chapitre 2. Le modèle relationnel (E.F. Codd 1970 IBM)
Buts de ce modèle:
Indépendance des programmes d’applications et des sessions interactives vis à vis de la représentation interne des données.
Base théorique solide pour traiter des problèmes de cohérence et de redondance.
Les tables ou le modèle relationnel tel qu’il apparaît à l’utilisateur
Pour un SGBD relationnel on a les propriétés suivantes :
Il n’y a que des tables
Un table consiste en un schéma relationnel qui comporte :
- Le nom de la table,.
- Un nom (appelé aussi attribut de la table) et un type (scalaire) pour chaque colonne.
Des contraintes de fonctionnalité, on décrète que tel attribut ou groupe d’attributs G est clé de la table. On déclare les clés candidates et les clés principales.
Un contenu : des lignes pour lesquels l’élément contenu en colonne A est dit type associé à l’attribut A.
Exemple de table :
Voie_Publique
Nom
Max_impair
Max_pair
Quartier
Arrondissement
Rue Jussieu
45
4
Saint Victor
5
Rue Linné
45
24
Saint Victor
5
Rue Chevaleret
199
148
Gare
13
Rue Montaigne
63
60
Champs Elysées
8
Rue de Tournon
33
20
Odéon
6
Les nom des colonnes sont deux à deux distincts.
L’ordre des lignes et celui des colonnes est ignoré
Ordre des colonnes
C’est un ordre sur les attributs qui n’est pas pertinent. On ne peut référencer une colonne que par son nom (attribut).
Ordre des lignes
Il traduit une évolution temporelle de la table donc cet ordre n’est pas pertinent.
On voit donc qu’il n’est pas possible de référencer une ligne.
Mais 2 lignes distinctes doivent différer sur au moins un attribut.
Il y a des opérateurs
Il sont à disposition de l’utilisateur, ils génèrent des tables à partir d’autres tables.
Création d’une table en SQL (Structured Query Language)
CREATE TABLE Voix_Publique
( Nom VARCHAR
Max_impair INTEGER
Max_pair INTEGER
Quartier VARCHAR
Arrondissement INTEGER
PRIMARY KEY(Nom) )
INSERT INTO Voix_Publique VALUES (‘rue jussieu’,45,4,‘Saint Victor’,5)
Modélisation mathématique des tables par les relations
C’est à dire les sous ensemble de produit cartésiens ou encore les ensembles de listes toutes de même taille.
Soit T une table avec des attributs A1, ……, An de domaines associés D1, ……, Dn .
On lui associe une relation R D1D2……Dn .
R est l’ensemble des n-uplet (x1, ……, xn) tels que la table T contienne une ligne ayant :
en colonne A1 la valeur x1.
en colonne An la valeur xn.
Les lignes de T sont des n-uplets de R
Les colonnes de T sont des composantes de R (projection de R sur ces composantes)
Un groupe d’attributs G={Ai1, ……Aik} de T est une clé de T, si et seulement si la relation R est fonctionnelle par rapport aux composantes i1, ……,ik .
Formalisme simple sur une théorie mathématique riche.
L’ordre (contingent à la représentation tabulaire) sur les lignes de T a disparu dans cette formalisation car il n’y a pas d’ordre intrinsèque sur les n-uplets de R.
Hélas l’ordre des colonnes lui reste bien présent et intrinsèque, ce qui est fâcheux.
Soit X,Y deux ensembles.
XY YX sauf si X=Y ou X=? ou Y=?
(a,b) a,bR (a,b) (b,a)
R XX
{(a,b) XX (a,b) R} {(b,a) XX (a, b) R}
Modélisation mathématique par les ensembles de fonctions de même domaine
Soit T une table avec des attributs A1, ……, An de domaines associés D1, ……, Dn .
On lui associe un ensemble F de fonctions toutes de domaine { A1, ……, An }.
Toutes les fonctions de fF vérifient f(A1)D1 …… f(An)Dn .
En fait :
fF il existe une ligne de la table T dont :
l’élément en colonne A1 est exactement f(A1)
l’élément en colonne An est exactement f(An)
- Les lignes de T sont exactement les f de F (vues de façon déroulés) on écrit f(Ai) en colonne Ai, l’ordre des lignes de T a donc disparu car il n’y a pas d’ordre intrinsèque sur l’ensemble F.
- La colonne Ai de T correspond aux f(Ai), f variant dans F. Les colonnes T correspondent donc aux éléments du domaine (ensemble sans ordre intrinsèque) commun des fonctions dans F.
On a perdu l’ordre sur les colonnes.
traduction d’un diagramme Entité/Relation dans le modèle relationnel
Un type d’entités (pas faible) se représente par une table, les attributs de la table sont les attributs du type d’entités, les domaines associés sont les types scalaires associés à ces attributs dans le diagramme E/R.
74612536830Salaire
00Salaire
-7683536830Enom
00Enom
65468562230001974856223000
10604584455Employé
00Employé
193484517589400266636584455Chef de rayon
00Chef de rayon
166052584455 est
00 est
8375651523900
330644437465004718043746500
257492513335
Responsable
00
Responsable
19748513335
Travaille
00
Travaille
22091651022350056324510223500
38036584455Rnom
00Rnom
156908584455Rayon
00Rayon
102044510668000
1843404374650012033253746500
147764559690
contient
00
contient
28892559690Rnuméro
00Rnuméro
184340414859000
38036579375Anom
00Anom
111188510160000
156908532385Article
00Article
12033255461000288925146050Anuméro
00Anuméro
Tables associés :
Employé(ENom, salaire)
Chef de Rayon (ENom)
Rayon (RNom, RNuméro)
Article (ANom, ANuméro)
2. un sous type E d’un type F se traduit par une table dont les attributs sont ceux du type E et ceux de la clé principale du type F. Par exemple :Chef de Rayon
Cours de Base de données
21.02.2000
Reprenons l’exemple du supermarché dont le diagramme Entité/Relation est le suivant :
-16827536830ENom
00ENom
403796545085CAdresse
00CAdresse
522668545085CNom
00CNom
74612536830Salaire
00Salaire
513524570485004495165704850065468562230001974856223000
540956592710Solde
00Solde
467804592710Client
00Client
10604584455Employé
00Employé
193484517589400266636584455Chef de rayon
00Chef de rayon
166052584455 est
00 est
5318125114934008375652349400
486092445720004718043746500330644445720001294765128905Inclusion de type
00Inclusion de type
467804567945
Emane
De
00
Emane
De
403796565405002574925-400050Est
Responsable
De
00Est
Responsable
De
167005-247650
Travaille
à
00
Travaille
à
220916539370005632453937000
288925153035RNom
00RNom
4769485635CoNuméro
00CoNuméro
156908583820Rayon
00Rayon
4586605228600012033251060450010204451460500
4586605136525004860925136525Date
00Date
3580765-46355Commande
00Commande
18434043683000288925128270RNuméro
00RNuméro
33978856731000
1477645125730
Présent
00
Présent
3946525156845quantité
00quantité
2666365-347345
Comprend
00
Comprend
35807651841400
202628513208000
18434045461000
2757805129540
Fournit
00
Fournit
28892529845ANom
00ANom
4403725151765Fournisseur
00Fournisseur
10204455207000
156908574295Article
00Article
49523651047750043122851047750034893251333400220916513334001203325965200028892596520ANuméro
00ANuméro
4037965127000FNom
00FNom
294068435560004952365127000FAdresse
00FAdresse
2666365149225Prix
00Prix
Traduction d’un diagramme Entité/Relation dans le modèle relationnel.
Type d’entité (non faible)
Pour un type d’entité (non faible) on associe une table qui possède les propriétés suivantes :
Les attributs de la table sont les noms des attributs du type d’entités.
Le domaine d’un attribut de la table est celui associé à l’attribut correspondant du type d’entités.
Exemple :
Employé(ENom, Salaire)
Rayon(RNom, RNuméro)
Article(ANom, ANuméro) ANuméro signifie que c’est une clé potentiel
Fournisseur(FNom, FAdresse)
Commande(CoNuméro, Date)
Client(CNom, CAdresse, Solde)
Sous type E d’un type F
On lui associe une table dont les attributs sont les noms des attributs de E et ceux des attributs de la clé principale de F, les domaines sont ce qu’on pense.
Exemple :
Chef de rayon(ENom)
Type d’entité faible de E
Exemple de diagramme Entité/Relation contenant un type d’entité faible :
4769485135890Adresse
00Adresse
3855085125730Nom
00Nom
654685125730Numéro
00Numéro
239204514795500
248348578740
Travaille
00
Travaille
46780456350042208459525001111884952500
4312285123190Studio
00Studio
6546853175000746125123190Equipe
00Equipe
3580765355590015690855397400
On associe au type d’entité faible une table d’attributs contenant tous ceux de E, ainsi que ceux des clés principales des types E1, ……, En auquel E est relié de façon relationnelle.
Association
On lui associe une table dont les attributs sont ceux des clés principales de F1, ……, Fk (après un renommage éventuel), et les attributs de l’association elle-même.
Exemple :
Travaille à(ENom, RNom)
Est Responsable De(ENom, RNom)
Présent(ANom, RNom)
Fournit(FNom, ANom, Prix) Ici il n’y a pas de relation fonctionnelle et la clé a 2 attributs
Comprend(CoNuméro, ANom, Quantité) Ici il n’y a pas de relation fonctionnelle et la clé a 2 attributs
Emane De(CoNuméro, CNom)
Pour obtenir une clé de cette table on considère une clé pour chacun d’entre les F1, ……, Fk et les attributs de l’association elle-même. Si l’association est fonctionnelle vers Fi, la clé de Fi est inutile, de même tous les attributs fonctionnels de l’association sont aussi inutiles.
Relations avec une clé commune.
Il y a une simplification possible d’une BD :
Si deux tables ont une clé commune alors il est préférable de les joindre en une seule table (jointure) dont les attributs sont la réunion des attributs des deux tables.
La table ainsi obtenue est calculable à partir des deux tables de départ.
Elle permet de retrouver les deux tables de départ.
Elle est en général de volume moindre que le total du volumes des 2 tables.
Exemple (avec les 13 relations vues précédemment) :
1. et 8.
175196524765Employé Travaille à(ENom, Salaire, RNom)
00Employé Travaille à(ENom, Salaire, RNom)
15690852476500
Employé(ENom, Salaire)
Travaille à(ENom, RNom)
2. et 9.
220916522225Rayon Resp(RNom, RNuméro, ENom)
00Rayon Resp(RNom, RNuméro, ENom)
20262852222500Rayon(RNom, RNuméro)
3855085135890Que l’on peut aussi appeler ChefRayonNom
00Que l’on peut aussi appeler ChefRayonNom
43122844445000Est Responsable De(ENom, RNom)
3. et 10.
175196524765ArticlePrésent(ANom, RNom, ANuméro)
00ArticlePrésent(ANom, RNom, ANuméro)
15690852476500Article(ANom, ANuméro)
Présent(ANom, RNom)
5. et 13.
202628562230Commande Emane De(CoNuméro, Date, CNom)
00Commande Emane De(CoNuméro, Date, CNom)
18434056223000Commande(CoNuméro, Date)
Emane De(CoNuméro, CNom)
La nouvelle BD va avoir comme tables
, , , , 4. , 6. , 7. , 11. , 12.
Attention : Il n’est pas intéressant d’associé 4 et 11 car il n’y a seulement inclusion des clés et pas égalité. La table obtenue par jointure peut être beaucoup plus grande que les deux tables de départ. Par exemple, pour chaque article fournit par un fournisseur il faudra donner l’adresse de celui-ci, d’où des répétitions malvenues.
La table 7. Est une projection de , donc cette table est inutile.
On a donc finalement une BD à 8 relations seulement.
Attention :
Dans cette simplification de deux tables ayant une clé commune en une seule table il peut y avoir un problème car les projections sur la clé commune des ces 2 tables doivent être égales (il ne peut pas y avoir d’attribut vide )
Il existe deux solutions :
Interdire cette chose la par une contrainte.
Compléter les u-plets sur les attributs non définit par la valeur « null » ()
Les 5 opérations fondamentales de l’algèbre relationnelle.
Une opération qui rajoute des lignes : La réunion
Si T1 et T2 ont les mêmes attributs on a la réunion T1T2 .
Une opération qui rajoute des colonnes (et multiplie les lignes) : Le produit cartésien
Si T1 et T2 sont sans attribut commun
T1T2 : on prend une ligne de T1 et une ligne de T2 de toutes les façon possibles.
Exemple :
3032125186690T1T2
A1
A2
B1
B2
B3
a
a
c
c
e
e
b
b
d
d
f
f
i
l
i
l
i
l
j
m
j
m
j
m
k
n
k
n
k
n
00T1T2
A1
A2
B1
B2
B3
a
a
c
c
e
e
b
b
d
d
f
f
i
l
i
l
i
l
j
m
j
m
j
m
k
n
k
n
k
n
1386205186690T2
B1
B2
B3
i
l
j
m
k
n
00T2
B1
B2
B3
i
l
j
m
k
n
14605186690T1
A1
A2
a
c
e
b
d
f
00T1
A1
A2
a
c
e
b
d
f
On a les propriétés suivantes :
nb colonnes(T1T2) = nb colonnes(T1) + nb colonnes(T2)
nb lignes(T1T2) = nb lignes(T1) * nb lignes(T2)
Si R D1D2 et S E1E2E3
RS = {(x, y, z, t, u) | (x, y)R et (z, t, u)S)}
En terme de fonction, si :
F1 est l’ensemble de fonctions de {A1,A2} qui envoient A1 dans D1 et A2 dans D2
F2 est l’ensemble de fonctions de {B1,B2,B3} qui envoient B1 dans E1, B2 dans E2 et B3 dans E3
F1F2 = les fonctions de domaine {A1,A2,B1,B2,B3} dont la restriction à {A1,A2} est dans F1 et
dont la restriction à {B1,B2,B3} est dans F2 .
Les attributs de T1T2 sont ceux de la réunion des attributs de T1 et de T2.
Une opération qui enlève des colonnes : La projection
Soit T une table, et soient A1, ……, An les attributs de la table.
Soient Ai1, ……, Aik tels que 1 i1……ikn on a :
=les lignes de T dont on retient que les valeurs dans les colonnes i1……ik .
Exemple :
257492593980
B
C
j
o
t
k
p
u
00
B
C
j
o
t
k
p
u
10604593980T
A
B
C
D
E
i
n
s
j
o
t
k
p
u
l
q
v
m
r
w
00T
A
B
C
D
E
i
n
s
j
o
t
k
p
u
l
q
v
m
r
w
Une première opération qui enlève des lignes : La différence
On suppose T1 et T2 ont les mêmes attributs.
T1 \ T2 sont les lignes de T1 qui n’apparaissent pas dans T2 .
Une deuxième opération qui enlève des lignes : La sélection
C’est en fait une famille d’opérations paramétrée par des formules.
Soient A1, ……, An les attributs de T.
Formules atomiques :
$A = $B
$A < $B
$A = a (où a est dans le domaine associé à l’attribut A)
$A > a
$A< a
On considère les formules obtenues à partir des atomiques à l’aide des connecteurs , , (négation, conjonction, disjonction)
A chaque formule on associe un opérateur de sélection ().
() prend une table (d’attributs A1, ……, An) et renvoie une sous-table (on a sélectionné certaines lignes de T)
Construction des () par récurrence sur
Cas ou est $A = $B
($A = $B)(T) = les lignes de T dont les éléments des colonnes A et B sont égaux.
Cas ou est $A = a
($A = a)(T) = les lignes de T dont l’élément en colonne A vaut a.
Cas ou est $A < $B
($A < $B)(T) = les lignes de T dont l’élément en colonne A est plus petit que l’élément de colonne B.
Cas ou est $A < a
($A < a)(T) = les lignes de T dont l’élément en colonne A est plus petit que l’élément a.
Cas ou est $A > a
($A > a)(T) = les lignes de T dont l’élément en colonne A est plus grand que l’élément a.
Cas ou est G
(G)(T) = T \ (G)(T) = les lignes de T non sélectionnées par (G).
Cas ou est GH
(GH)(T) = (G)(T) (H)(T) = les lignes de T sélectionnées par l’un au moins de (G) ou (H).
Cas ou est GH
(GH)(T) = (G)(T) (H)(T) = les lignes de T sélectionnées par à la fois (G) et (H).
Cours de Base de données
28.02.2000
Rappel :
Les 5 opérations fondamentales sont les suivantes :
L’union, qui rajoute des lignes.
Le produit cartésien, qui rajoute des colonnes et des lignes
La différence, qui enlève des lignes.
La sélection, qui enlève des lignes.
La projection, qui enlève des colonnes.
La projection
Si T a n attributs {A1, ……, An } à chaque partie X{A1, ……, An } est associé une projection :
3582670388620
Restriction f X de f à X
00
Restriction f X de f à X
175196448006000175196557149900197485205740f fonction de
domaine
{A1, ……, An }
00f fonction de
domaine
{A1, ……, An }
Cas X={A1, ……, An } alors projx est l’identité.
Cas X=? f X est une fonction de domaine ?, il existe une et une seule fonction de domaine vide, celle dont le graphe est vide.
Combien y a t-il d’ensembles de fonctions de domaine vide ?
Il y en a deux : ? et {?} :
? est la table vide d’arité 0 (en terme de réponse à une requête, la réponse est non)
{?} est la table non vide d’arité 0 qui ne comporte qu’une ligne laquelle est vide (en terme de réponse à une requête, la réponse est oui)
Exemple :
Soit R(x,y)
On demande les x tels que R(x,x)
On fait une sélection : {x=y}(R) = {(a,b) table de R | a=b}
Ensuite on projette : proj{1}({x=y}(R)) = {a | (a, a) table de R}
On refait une projection indexé par l’ensemble vide d’attributs.
proj?(proj{1}({x=y}(R))).
Si proj?(proj{1}({x=y}(R))) = {[ ]} singleton contenant seulement liste vide alors il existe x tel que R(x,x).
Si proj?(proj{1}({x=y}(R))) = ? alors il n’existe pas x tel que R(x,x).
D’autres opérations de l’algèbre relationnelle
Toutes ces opérations vont être obtenues en composant les 5 opérations fondamentales.
Opérations booléennes :
L’union et la différence \ ont déjà été mises explicitement.
L’intersection est définie par A B = A \ (A \ B)
Jointure naturelle :
Soit R d’attributs {A1, ……, An, C1, ……, Cp } et S d’attributs {B1, ……, Bm, C1, ……, Cp }
{C1, ……, Cp } sont les attributs communs à R et S.
On a la jointure naturelle de R et S :
R ? S = {(a1, …, an, b1, …, bm, c1, …, cp) | (a1, …, an, c1, …, cp)R et (b1, …, bm, c1, …, cp)S
Par analogie avec les fonctions on a :
R ? S = {fg | f fonction de domaine {A1, …, An, C1, …, Cp) dans R
g fonction de domaine {B1, …, Bm, C1, …, Cp) dans S
telles que f{C1, …, Cp} = g{C1, …, Cp}}
Exemple :
Soit :
1843404148590001460414859000111188567309001974856730900X Y Z
146051015900
graphe() = {(a, b) | aX, bY (a)=b}
graphe() = {(b, c) | bY, cZ (b)=c}
graphe() = {(a, c) | aX, cZ ((a))=c}
mais (a, c)graphe() si et seulement si il existe bY tel que :
(a, b)graphe()
(b, c)graphe()
c’est à dire si (a, b, c)(graphe() ? graphe())
d’ou graphe() =proj{X, Z}(graphe() ? graphe())
Cas particuliers :
p=0
R d’attributs {A1, ……, An} et S d’attributs {B1, ……, Bm}, il n’y a pas d’attribut commun.
Alors R?S coïncide avec le produit cartésien RS.
m=n=0
R et S ont pour attributs {C1, ……, Cp}, tous les attributs sont commun à R et S.
Alors R?S coïncide avec l’intersection RS.
On peut obtenir la jointure naturelle à partir des 5 opérations fondamentales :
R?S =
R est d’attributs {A1, ……, An, C1, ……, Cp }
S est d’attributs {B1, ……, Bm, C1’,……, Cp’} on a renommé les Ci en Ci’ pour faire le produit cartésien.
F est la formule , ,………,
-jointure
On a les -relation : =, , >, , <,
-76835207010
AB
00
AB
Soient R d’attributs {A1, ……, An} et S d’attributs {B1, ……, Bm} R?S= c’est une sélection dans RS
Semi-jointure R?S
R?S est la projection de R?S sur les attributs de R
Exemple :
Reprenons l’exemple de la base de données du supermarché.
On pose la requête : Quels sont les clients ayant commandé du Brie ?
Rappelons qu’on avait les tables :
Comprend(CoNuméro, ANom, Quantité)
394652564135
La liste (en colonne) des clients ayant commandé du Brie
00
La liste (en colonne) des clients ayant commandé du Brie
Commande Emane De(CoNuméro, CNom)
((Anom= ‘Brie’)( Commande Emane De ? Comprend)) =
Chapitre 3. Les calculs relationnels
Rappel :
Logique du 1er ordre d’un langage relationnel :
On se donne un langage comprenant une famille de symboles de constantes et une famille de symboles
de relations de diverses arités.
Avec cela on construit des formules atomiques
Soit R un symbole de relation d’arité k
R(x1,……, xk) est une formule atomique si x1,……, xk sont des variables.
On peut aussi dans une formule atomique substitué une occurrence de variable par une autre variable ou une constante.
Exemple :
Si R est ternaire R(x, y, z), R(x, z, z), R(x, a, y) sont des formules atomiques.
Formules :
Les formules atomiques sont des formules
Si F est une formule alors ¬F est une formule.
Si F et G sont des formules alors FG, FG et FG sont des formules.
Si F est une formule et x est une variable alors xF et xF sont des formules
Toutes les formules sont obtenues de cette façon.
Occurrences liées et occurrences libres d’une variables :
Dans une formule atomique toutes les occurrences de variables sont libres.
Les occurrences libres de variables dans F, FG, FG, FG sont celles de F et G.
Les occurrences liées de variables dans F, FG, FG, FG sont celles de F et G.
Toutes les occurrences de x dans xF et xF sont liées.
Les occurrences libres des autres variables que x dans xF et xF sont celles de F.
Sémantique des formules :
On se donne :
Un ensemble non vide D dit domaine.
Un élément de D pour chaque constante du langage logique .
Une relation d’arité k pour chaque symbole de relation d’arité k du langage logique.
On a la structure du langage :
(D, c, …, R, …) = M
c D pour chaque constante c.
R Dk pour chaque symbole R d’arité k.
Sémantique d’une formule dans une telle structure :
On fait la construction par récurrence sur les formules
Si F comporte k variables libres x1,……, xk alors Sém(F, M)Dk.
Cas particuliers :
Cas k=0
Sém(F, M)Dk = {?}
Si Sém(F, M)Dk = {?} F est vraie dans M.
Si Sém(F, M)Dk = ? F est fausse dans M.
Cas F atomique
R(x1,……, xk) alors Sém(F, M)= R.
Cas F atomique obtenue par substitution de a à x dans G atomique
On a Sém(F, M)=
Cas F atomique obtenue par substitution de xj à xi dans G atomique
On a Sém(F, M)=
Si F est GH
Sém(F, M) = {(a1,……, ak) | la restriction de (a1,……, ak) aux composantes correspondantes aux variables de G est dans Sém(G, M) ou
la restriction de (a1,……, ak) aux composantes correspondantes aux variables de H est dans Sém(H, M)}
Si F est GH
Sém(F, M) = {(a1,……, ak) | la restriction de (a1,……, ak) aux composantes correspondantes aux variables de G est dans Sém(G, M) et
la restriction de (a1,……, ak) aux composantes correspondantes aux variables de H est dans Sém(H, M)}
Si F est GH
Sém(F, M) = {(a1,……, ak) | la restriction de (a1,……, ak) aux composantes correspondantes aux variables de G est dans Sém(G, M) implique
la restriction de (a1,……, ak) aux composantes correspondantes aux variables de H est dans Sém(H, M)}
Si F est G
Sém(F, M)=Dk \ Sém(G, M)
Théorème de complétude (Gödel 1930)
F est vraie dans tous les modèles si et seulement si F est prouvable.
Calculs relationnels = de la logique adaptée aux BD relationnelles
Il y a plusieurs façons de présenter :
Calculs relationnels à variables domaine
Calculs relationnels à variables t-uplets
Problème :
Mettre ou pas l’égalité
Mettre ou pas les comparaisons <, >,
Richesse des formules qu’on se permet.
Calcul relationnel purement conjonctif à variables domaine
On prend un schéma relationnel fixé R1, ……, Rn d’une BD, chaque Ri à des attributs.
A chaque attribut A est associé un certain domaine (infini) D(A)
Nous fixons un domaine D qui contient tous les D(A)
Définition :
Les formules du calcul purement conjonctif associé au schéma relationnel et au domaine D fixé sont les formules n’utilisant que et de la logique dont les constantes sont tous les éléments de D et dont les relations sont les Ri.
Ri(V1(A1), ……, Vk(Ak)) est une formule atomique si Ri a pour attributs A1, ……, Ak et si Vi(Ai) est une variable ou un élément de D.
Cours de Base de données
06.03.2000
Calcul relationnel purement conjonctif à variables domaine
Définition :
On utilise des formules utilisant uniquement le connecteur et la quantification .
On part : - du schéma relationnel d’une BD
- de la BD elle-même (c’est à dire de son contenu)
On considère un domaine D qui contient les domaines des attributs de la BD
On a les formules atomiques (définies par le schéma relationnel de la BD) utilisant des constantes prises dans D.
On fait des conjonctions et des .
Sémantique de telles formules (cas particulier de la définition générale):
Sém(R(x1, ……, xn), D) = la relation associé à R dans l’état de la BD
Sém(R(v(x1), ……, v(xn) ), D) =
v(xi) est une variable ou un élément de D
est la conjonction des $i=$j si v(xi)= v(xj) $i=a si v(xi)=a
Exemple : Sém(R(x, x, a), D) =
Sém(FG, D) = Sém(F, D) ? Sém(G, D) car
Sém(F(x1, ……, xk, z1, ……, zp) G(y1, ……, yl, z1, ……, zp), D)
= {(x1, ……, xk, y1, ……, yl, z1, ……, zp) | (x1, ……, xk, z1, ……, zp) Sém(F, D) et
(y1, ……, yl, z1, ……, zp) Sém(G, D)}
= Sém(F, D) ? Sém(G, D)
Notation :
Etant donné l’état I de la BD on note le domaine actif :
adom(I) = les constantes figurant dans les tables
adom(F) = les constantes figurant dans F.
Théorème d’indépendance de la sémantique (des formules purement conjonctive) vis à vis du domaine :
Si F(x1, ……, xk) est purement conjonctive et si s :{x1, ……, xk} D est une assignation de valeurs telle que (s(x1), ……, s(xk))Sém(F, D) alors tous les éléments s(x1), ……, s(xk) sont dans adom(I) adom(F).
En d’autre termes, la domaine D n’intervient pas réellement ce qui est très rassurant
puisque ce domaine D est arbitraire.
Preuve (Par récurrence):
Cas F atomique R(x1, ……, xk)
La sémantique est la valeur de la table associé à R donc tous les éléments sont dans adom(I).
Cas F atomique R(v(x1), ……, v(xk))
Ou v(xi) est une variable ou un élément de D. La sémantique s’obtient par la projection d’une sélection de la sémantique de R(x1, ……, xk). Laquelle sélection ne fait intervenir que des constantes de adom(F) donc tous les éléments sont dans adom(F).
Cas FG
Les éléments des uplets de Sém(F, D) ? Sém(G, D) sont les uplets de Sém(F, D) ou de Sém(G, D).
Donc tous les éléments sont dans adom(F).
Cas xF
Ce cas est évident puisque Sém(x F, D) = projles variables autres que x(Sém(F, D))
Définition :
Une formule purement conjonctive est sous forme normale si elle est de la forme :
y1, ……, yl F(x1, ……, xl, y1, ……, yl) où F est une conjonction sans quantification.
Fait :
Toute formule purement conjonctive équivaut à une formule en forme normale.
« équivaut » veut dire « avoir la même sémantique ».
Preuve :
Soit F(,,) G(,,)
On renomme les variables en de sorte qu’elles soient différentes de variables .
On regroupe les en (F(,,) G(,,))
Exemple :
y1 y2 F(y1, y2, x, t) y1 z G(y1, z, u1, u2, t) on renomme :
y1 y2 F(y1, y2, x, t) y1’ z G(y1’, z, u1, u2, t) on obtient donc :
y1 y2 y1’ z (F(y1, y2, x, t) G(y1’, z, u1, u2, t))
Exemple (avec une BD de cinéma) :
Film(Titre, Réalisateur, Acteur) table à 3 attributs de domaine les chaînes de caractères
Salle(Cinéma, Adresse, Téléphone)
Programme(Cinéma, Titre, Horaire)
On a les requêtes suivantes :
Qui est le réalisateur de « Cris et chuchotements »
Dans quel cinéma passe « Cris et chuchotements »
Quel est l’adresse et le téléphone du St André des Arts
Donner les noms et adresses des cinémas passant un film de Bergman
Y a t-il un film de Bergman à l’affiche ?
Suite page suivante……
Les réponses sont les suivantes :
Y Film(« Cris et chuchotements », X, Y)
H Programme(X, « Cris et chuchotements », H)
Salle(« St André des Arts », X, Y)
X Y H T (Film(X, « Bergman », Y) Programme(C, X, H) Salle(C, A, T))
X Y H C (Film(X, « Bergman », Y) Programme(C, X, H))
Revenons sur la requête numéro 5. La relation naturelle pour 5 est la suivante :
Quels films de Bergman passent où et quand ? On a la requête :
197485105410 titre
00 titre
2483485102235 horaire
00 horaire
2026285102235 salle
00 salle
1111885102235 acteur
00 acteur
(Film(X, « Bergman », Y) Programme(C , X, H ))
C’est une relation en X, Y, C, H, il y a deux cas possibles :
Cette relation n’est pas vide (si on oublie pour chaque ligne de cette relation les 4 éléments de la ligne, on obtient la liste vide) alors la réponse à la requête 5 est OUI.
Ce qui veut dire que :
Cette relation est vide alors la réponse à la requête 5 est NON
Ce qui veut dire que :
Calcul relationnel purement conjonctif et algèbre relationnelle.
Pour l’algèbre relationnelle on a les opérateurs , , proj, diff, sélection.
Définition :
Algèbre Relationnelle S.P.C. (Sélection, Projection, Produit cartésien) on compose ces 3 opérations appliquées aux relations associés aux tables de l’état de la BD et aux relations unaires singleton {(a)} où a D.
Pour la sélection on se restreindra à xi = xj identifier deux arguments et xi = a fixer un argument.
Définition :
Une expression sous forme normale est une expression sous la forme :
ou {a1}D … {ap}D
Proposition :
Toute expression peut se mettre sous forme normale.
Preuve :
On met les proj tout au début car :
Exemple :
Soit S = (a, b, c, d) des quadruplets
proj{1, 2, 3}(S) = les (a, b, c) tels que d (a, b, c, d)S
$1=$2(proj(S)) = les (a, a, c) tels que d (a, a, c, d)S
= proj{1, 2, 3}(l’ensembles des quadruplets (a, a, c, d) de S)
= proj{1, 2, 3}($1=$2(S))
ou S est d’arité m
ou I J
Avec 1. et 2. On met toutes les projections en tête et on les réduit à une seule.
Après la proj initiale on ne trouve que des sélections et des produits.
On peut ramener les sélections avant les produits car :
S(T) = (ST) et (S)T = (ST) où s’obtient en changeant dans les $i par $i+n si n est l’arité de S.
On sort les singletons car ({a}S) = {a}(S) car :
(S){a} = (Sa) et {a}(S) = ({a}S) où s’obtient en changeant dans les $i par $i+1.
Théorème d’équivalence :
Les expressions relationnelles définissent les mêmes relations que les requêtes purement conjonctives.
Remarques :
Une expression relationnelle peut être toujours vide ( on dit « non satisfaisable ») par exemple :
$x=a($x=b(R)) où a et b sont différents, constantes de adom(I).
En revanche, une requête purement conjonctive qui ne fait intervenir que des constantes des tables est toujours satisfaite. Pour avoir une relation vide il faut utiliser des constantes hors de la table.
Film(X, 1999, Y) est vide car 1999 n’est jamais le nom du réalisateur quelque soit l’état de la BD.
Cours de Base de données
13.03.2000
Calcul relationnel purement conjonctif à variables domaine
Rappel :
On utilise des formules utilisant uniquement la conjonction et la quantification .
On considère un domaine D qui contient les domaines des attributs de la BD
On a les formules atomiques (R(v(x1), ……, v(xn) ) où v(xi) est une variable ou une constante prise dans D.
On utilise également les formules x = a où a est un élément de D
Remarque :
x=b x=a n’est jamais satisfaisable (alors que sans ces formules atomiques il y a toujours un état de la BD qui rend une formule conjonctive satisfaisable).
Calcul relationnel purement conjonctif et algèbre relationnelle.
Algèbre SCP
On utilise les 3 opérations suivantes :
14776453492500La sélection $i=$j, $i=a à partir des tables de la BD et des
La projection relation unaires {(a)} pour aD
Le produit cartésien
On a vu que :
Toute formule purement conjonctive équivaut à une formule
x1, ……, xk (conjonction de formules atomiques et de formules x=a)
Toute expression de SCP équivaut à une expression :
Théorème d’équivalence :
A toute formule purement conjonctive on peut associer une expression SCP qui à la même sémantique.
Réciproquement à toute expression SCP on peut associer une formule purement conjonctive ayant la même sémantique (à une duplication près d'arguments).
2849245145415Une nouvelle table
00Une nouvelle table
1569085145415 Expression
00 Expression
288925145415Les tables de
La BD
+
domaine D
00Les tables de
La BD
+
domaine D
2849245441960Une nouvelle table
00Une nouvelle table
1569085441960 Formule
00 Formule
147764562483900147764516763900
Preuve :
1er partie
Cas d’une formule atomique (R(v(x1), ……, v(xn) ) où v(xi) est une variable ou une constante prise dans D.
L’expression associée est la suivante :
Exemple : Si on a R(x, x, a, y) on fait proj1,4($1=$2, $3=a)(R)
A la formule x=a on associe l’expression {(a)}
Cas d’une formule FG si à F et G on sait déjà associer EF et EG.
F(x1, ……, xn, z1, ……, zp) G(y1, ……, ym, z1, ……, zp)
L’expression associée est la suivante :
EFEG est d’arité n+p+m+p
Cas d’une formule x F(x, x1, ……, xn) si à F on sait associer EF,
on associe à xF l’expression
2eme partie
A {(a)} on associe la formule x=a
A R on associe la formule R(x1, ……, xn)
Soit E - On considère projX(E), si on sait déjà associer une formule FE à E on associe à
projX(E) la formule x1, ……, xk FE où les xi correspondent aux variables de F,
c’est à dire aux positions dans la relation E qui sont hors de X.
Exemple : Si S à 3 arguments F(x, y, z)
Proj{2,3}(S)x F(x, y, z)
Si $i=$j(E) à E on associe F(x1, ……, xn)
Si $i=$j(E) à E on associe F(où on remplace xj par xi)
La relation associée à F comporte donc un argument de moins, d'où la nécessité de dupliquer cet argument)
Si $i=a(E) à E on associe F(où on remplace xi par a)
Exemple : Si S à 3 arguments F(x, y, z)
$1=$3(S)F(x, y, x)
Si à E1 et E2 on sait associer F1(x1, ……, xn) et F2(y1, ……, xp) à E1 E2 on associe :
1020445132715On renomme les variables pour qu’elles soient différentes des variables de F1
00On renomme les variables pour qu’elles soient différentes des variables de F1
F1(x1, ……, xn) F2(y1’, ……, xp’)
Exemples :
Reprenons la BD de cinéma suivante :
Film(titre, réalisateur, acteur)
Salle(cinéma, adresse, téléphone)
Programme(cinéma, titre, horaire)
Quelles sont les paires d’acteurs ayant chacun dirigé l’autre ?
Formule purement conjonctive : t1 t2(Film(t1, x, y) Film(t2, y, x))
Algèbre relationnelle : proj{2, 3} ($2=$6, $3=$5(Film Film))
Quels sont les acteurs qui ont joué dans un film qu’ils ont réalisé eux-mêmes ?
Formule purement conjonctive : t Film(t, x, x)
Algèbre relationnelle : proj{2} ($2=$3(Film))
Quels sont les acteurs ayant joué ensemble ?
Formule purement conjonctive : t z (Film(t, z, x) Film(t, z, y))
Algèbre relationnelle : proj{3, 6} ($1=$4, $2=$5 (Film Film))
Donner la réponse (« Apocalypse Now », « Coppola ») quel que soit l’état de la BD
Formule purement conjonctive : x = « Apocalypse Now » y = « Coppola »)
Algèbre relationnelle : {(« Apocalypse Now »)} {(« Coppola »)}
Calcul relationnel conjonctif avec comparaisons et égalité
On rajoute les formules atomiques suivantes :
x=y, x y, x<=y, xy
x=a xa, x>=a, xa
Attention :
Le théorème d’indépendance vis à vis du domaine (qui était vrai avec le calcul conjonctif, même avec les x=a) devient faux.
Exemple :
x=y a pour solution les (d, d) avec d dans D, or d peut ne pas être dans le domaine actif de la BD adom(I) = constantes de l’état actuel I de la BD.
Idem pour xy, x<=y, xy, xa, x>=a, xa. Il y a des solutions d dans D qui peuvent être différentes de a et différentes des constantes de la BD.
Solution à ce problème :
Définition :
Une variable x est saine dans la formule conjonctive F si
elle figure dans un prédicat de base R (comme l’un des arguments)
elle figure dans une égalité x=a
elle figure dans une égalité x=y et on sait déjà que y est saine (ça veut dire que la formule comprend une chaîne d’égalités figure dans un prédicat de base R ou bien dans une égalité
Une formule conjonctive est saine si toutes ses variable sont saines
Théorème :
La sémantique des formules saines est indépendante du domaine D choisi.
Théorème d’équivalence :
Les formules saines conjonctives avec comparaisons et les expressions de SCP dans lesquelles on s’autorise des sélections par comparaisons donnent des sémantiques qui se correspondent.
Preuve :
1er partie
$i<$j(S) si S se traduit par la formule F alors
$i<$j se traduit par F1(x1, ……, xk) xia , $ia, $i=j .
2eme partie
Réciproquement, si F correspond à E alors
F xi10)
proj{3} ($1=$4, $6>10(Ordre Emane De Comprend))
Calcul relationnel à variables domaine le plus général.
On s’autorise les comparaisons comme les formules atomiques.
On s’autorise également les négations, disjonctions, et quantifications universelles.
Hélas, les catastrophes pullulent (pas d’indépendance vis à vis du domaine) :
Problème de disjonction :
p(a, a) p(x, x) si (a,a) vérifie p alors tout x de D est solution de cette requète.
y (p(x, y) p(y, z)) avec p={(a, b) (c, d)}, q={(e, f)} et D={a, b, c, d, e, f, g} ou g est une constante hors de la tables de la BD. Donc le couple (a, g) satisfait la requète
Problème avec :
y p(x, y, y) si p=EEE alors si D=E les solutions sont les éléments de E,
mais si il n’y a aucune solution.
Définitions:
La variable x est saine dans une conjonction F1 …… Fk si :
elle figure dans l’une des formules Fi qui n’est pas une négation ni une comparaison.
elle figure dans l’une des formules Fi qui est une égalité x=a.
elle figure dans l’une des formules Fi qui est une égalité x=y où y a déjà été reconnue saine dans cette conjonction.
Une formule est saine si :
elle n’utilise pas (Rappel : (x P(x)) (x P(x)) )
toute sous formule de la forme GH est telle que toute les formules G et H ont exactement les mêmes variables libres.
Toute sous formule qui est une conjonction maximale a toutes ses variables libres saines (cette clause s’applique en particulier aux formules atomiques qui ne sont pas conjointes dans la grande formule)
Une négation ne peut apparaître que dans l’un des composants d’une conjonction maximale comprenant au moins une formule non niée qui n’est pas une comparaison.
Théorème :
La sémantique des formules saines est indépendante du domaine D choisi.
Cours de Base de données
20.03.2000
Calcul relationnel à variables domaine le plus général.
Théorème d’équivalence :
A toute expression du calcul de l'algèbre relationnelle on peut associer une formule saine de même sémantique.
A toute formule saine on peut associer une expression de l'algèbre relationnelle.
Preuve:
Le produit cartésien se traduit par la conjonction.
La projection se traduit par le
projX se traduit par y1……yk (Fr) où les yi sont les variables correspondant aux attributs non dans X.
La sélection se traduit en conjoignant avec des comparaisons
La réunion RS se traduit par la disjonction: FrFs traduit RS si Fr et Fs traduisent R et S
Comme R et S ont les mêmes attributs, les formules FrFs ont les mêmes variables libres, et donc leur disjonction est saine.
La différence R\S se traduit par Fr Fs
R et S ont les mêmes attributs donc Fr et Fs ont les mêmes variables libres, donc Fr Fs est une formule saine.
Récurrence sur la formule:
Le cas atomique à déjà été vu avec le calcul conjonctif
Cas d'une disjonction:
On peut utiliser la réunion car si F et G ont les mêmes variables libres alors les expressions associés EF, EG ont les mêmes attributs.
Cas d'une quantification :
On utilise la projection
Cas d'une conjonction maximale:
De la forme F1……FnG1……Gpcomparaisons
On sait que n1. Toutes les variables libres figurent dans au moins l'un des Fi, on suppose déjà associés des relations RFi, RGj aux Fi et Gj.
On fait la jointure des RFi : ??……?
On sélectionne dans cet jointure pour traduire les comparaisons.
On observe que les variables libres des Gj sont ou bien fixées à une certaine valeur par les comparaisons ou bien (modulo des égalités des comparaisons) figurent parmi les variables libres de Fi.
On se ramène donc au cas où toutes les variables des Gj figurent parmi celles de Fi.
Donc les attributs des RGj sont tous des attributs de la jointure des RFi.
A chaque attribut X de l'un des Fi on associe une expression Ex : si X est le k-ième argument de Fi alors Ex=proj{k}( RFi)
Pour chaque j on considère le produit cartésien de RGj avec tous les Ex ou X est une variable libre des Fi qui ne figure pas dans Gj, ce produit R'Gj a alors exactement les mêmes attributs que la jointure des RFi.
On fait alors les différences successives de la sélection de la jointure des RFi avec R'G1
puis R'G2 …… puis R'Gp.
On obtient l'expression désirée.
Remarque:
Que faire avec les :
On transforme x F en x F
Pour qu'une sous formule x F d'une grande formule laisse cette formule saine il faut que :
x F apparaisse au sein d'une conjonction faisant intervenir au moins un terme non nié et qui ne soit pas une comparaison.
F doit (à équivalence logique près) être une conjonction avec au moins un terme non nié et qui ne soit pas une comparaison. Donc (à équivalence près) F doit être une disjonction dont au moins un terme nié n'est pas une comparaison.
Exemple:
On considère la BD de cinéma:
Film(titre, réalisateur, acteur)
Salle(cinéma, adresse, téléphone)
Programme(cinéma, titre, horaire)
On notera FR pour formule relationnelle et AR pour algèbre relationnelle.
Ou peut-on voir "Annie Hall" ou "Manhattan" ?
FR : H (Programme(X, "Annie Hall", H) ou Programme(X, "Manhattan", H))
AR : proj{1} ($2="Annie Hall"(Programme) $2="Manhattan"(Programme))
Quels sont les films réalisés par Woody Allen ou dans lesquels il a joué ?
FR : A Film(T, " Woody Allen ", A) ou D Film(T,D, "Woody Allen")
AR : proj{1}($2="Woody Allen"(Film)) proj{1}($3="Woody Allen"(Film))
Regardons maintenant la formule suivante:
D A (Film(T, " Woody Allen ", A) ou Film(T,D, "Woody Allen"))
Les variables libres sont respectivement T, A et T, D. Donc bien que cette formule soit équivalente à la formule saine ci dessus cette formule n'est pas saine.
Films réalisés par Woody Allen dans lesquels il n'a pas joué ?
FR : A (Film(T, " Woody Allen ", A) et non D Film(T, "Woody Allen", "Woody Allen"))
AR : proj{1}( proj{1,3}($2="Woody Allen"(Film)) \ proj{1}($2=$3="Woody Allen"(Film)) proj{3}(Film)))
Films dont tous les acteurs ont tourné sous la direction de Hitchcock
1er essai:
FR : A (Film(X, D, A) X Film(X, " Hitchcock ", A))
Problème: "tout" titre T est solution (car faux vrai)
Implicite dans la requête: le film existe dans la BD.
2eme essai:
FR : D (A (Film(T, D, A) et A' (Film(T, D, A') X Film(X, " Hitchcock ", A')))
Ici T est borné ,il faut que ce soit un élément de la table, car T est un élément positif alors qu'avant il était négatif.
Par contre la formule n'est pas saine à cause du , la formule saine correspondante est la suivante:
FR : D (A (Film(T, D, A) et non A' (Film(T, D, A') et non X Film(X, " Hitchcock ", A')))
7461243810000550100438100005409564381000024834851295390024834843810000
Cette formule est saine car A' apparaît bien comme terme non nié
74612511175900
Cette formule est saine car T, D apparaissent bien comme terme non niés
AR : proj{1}( proj{1,2}(Film) \ proj{1,2}(Film \ proj{2,3}($2="Hitchcock"(Film)) proj{1}(Film))))
Chapitre 4. Dépendances fonctionnelles et formes normales
Soient: R une table
X, Y un ensemble d'attributs
La dépendance fonctionnelle XY signifie que si 2 lignes de la table coïncident sur les éléments des colonnes de X alors elles coïncident aussi sur les éléments des colonnes de Y.
Exemple:
FournisseurNom FournisseurAdresse
FournisseurNom, Article Prix
Ville, Rue Code Postal
Code Postal Ville
Une dépendance fonctionnelle est un choix énoncé par le concepteur de la BD. C'est donc une contrainte que vérifie le SGBD pour tout les tables de la BD.
Cours de Base de données
27.03.2000
Chapitre 4. Dépendances fonctionnelles et formes normales
Soient: X, Y des ensembles d'attributs
La dépendance fonctionnelle XY signifie que si 2 lignes de la table coïncident sur tous les attributs de X alors elles coïncident aussi sur tous les attributs de Y.
Dans la conception d'une BD on fixe un ensemble F de dépendances fonctionnelles.
Question naturelle:
quelles sont les dépendances fonctionnelles conséquences des dépendances dans F ?
Axiomes d'Armstrong des dépendances fonctionnelles:
Axiomes de réflexivité:
476948567945Notation:
XZ=XZ
A1…An = { A1,…,An }
00Notation:
XZ=XZ
A1…An = { A1,…,An }
XY si X Y
Règle d'accroissement:
De l'hypothèse XY on déduit la conclusion
XZYZ pour tout ensemble Z
Règle de transitivité:
Des hypothèses XY et YZ on déduit XZ
Définition:
On note F+ l'ensemble des conséquences de F par les axiomes d'Armstrong: c'est à dire le plus petit ensemble de dépendances contenant F et les axiomes de réflexivité, et stable pour les règles
2. et 3.
Si X est un ensemble d'attributs, on note X+ l'ensemble des attributs A tels que:
XA soit dans F+
Proposition:
Les axiomes et règles suivantes se déduisent des axiomes d'Armstrong:
Réunion: De XY et XZ on déduit XYZ
Pseudo transitivité: Si XY et WYZ on déduit WXZ
Décomposition: De XY on déduit XZ pour tout Z Y
Preuve:
On a XY et XZ, par accroissement on en déduit:
XXXY mais XX=X
XYZY
Par transitivité on en déduit XZY
De XY on déduit WXWY si on a aussi WYZ on en déduit par transitivité WXZ
On a YZ par réflexivité (si ZY) de XY on déduit alors par transitivité XZ
Théorème:
(Cohérence des axiomes d'Armstrong):
Si une relation satisfait les dépendances de F alors elle satisfait aussi les dépendances
de F+.
(Complétude des axiomes d'Armstrong):
Si une dépendance XY est vraie dans toutes les relations qui satisfont toutes les dépendances de F alors XF F+.
Preuve:
La démonstration est triviale.
On montre que si XY F+ alors il y a une relation qui satisfait les dépendances de F mais pas la dépendance XY.
On suppose que XY F+.
Soit R la relation (= table) avec deux lignes:
Ligne 1: tous les attributs valent 1
Ligne 2: les attributs de X+ valent 1, les autres valent 0. Il est clair que R ne satisfait pas XY
(ni même X+Y)
Montrons que R vérifie toutes les dépendances ZT de F
1er cas ZX+
Alors les lignes 1 et 2 ne coïncident pas sur Z, la dépendance ZT est trivialement vérifiée.
2eme cas TX+
Alors les lignes 1 et 2 coïncident sur T et la dépendance est trivialement vérifiée.
3eme cas ZX+
Alors XZ se déduit des axiomes d'armstrong
Comme ZT F (par hypothèse) on en déduit par transitivité que XT est dans F+, d'ou TX+ par définition de X+, et donc on est ramené au 2eme cas.
Remarque:
Le calcul de F+ est coûteux car F+ est de taille exponentielle en le nombre des attributs (à cause de l'axiome 1.)
En revanche, le calcul de X+ est raisonnable:
X0=X
Xi+1=Xi {les A tels qu'il existe YZ dans F pour laquelle Y Xi et AZ}
X0 X1 X2…… cette suite est de la forme:
X0 X1X2…… Xm= Xm+1= Xm+2=……
Exemple:
Soit F={1ABC 5DEG
2CA 6BEC
3BCD 7CGBD
4DB 8CEAG}
On regarde X=BD
X0=BD
X1=BDEG grâce à 5
X2=BDEGC grâce à 6
X3=BDEGCA grâce à 2 ou 8
X4= X3.
Recouvrement minimum des dépendances
On peut avoir FG et F+=G+.
Remarque:
{XA | A attribut et XAF+}+=F+
{XA | A attribut et il existe Y tel que XAF+}+=F+
Définition:
Ensemble minimal de dépendances:
Il est formé de dépendance XA ou A est un attribut
Si XAF alors XA(F \ {XA})+
Si XAF et X'X alors XA( (F \ {XA}) {X'A} )+
Proposition:
Pour tout ensemble de dépendance F il existe F' minimal tel que F'+=F+
Exemple:
Soit F={1ABC 5DEG
2CA 6BEC
3BCD 7CGBD
4DB 8CEAG}
On atomise les membres droits:
ABC
CA
BCD
3ACDB simplifié en CDB car on a CA
DE
DG
1460515811500BEC
2CGB on a CGD CA ACDB donc on oublie CGB
CGD
146051079500CEA on l'oublie
1CEG
1460512573000
ABC Il peut y avoir plusieurs couvertures minimales:
CA si on élimine CEA, puis CGD, puis ACDB
BCD on obtient:
376364591440Autre couverture
minimal
00Autre couverture
minimal
22091650ADC DG
CA BEC
BCD CGB
DE CEG
00ADC DG
CA BEC
BCD CGB
DE CEG
CDB
DE Couverture
DG minimal
BEC
CGD
CEG
Décomposition par jointure conservant l'information
Soit la relation R avec les attributs A1 ……Ak.
On considère:
Des ensembles d'attributs X1,X2,……, Xn tels que X1X2……Xn = { A1,……,Ak }
Les projections de R sur X1, ……, Xn. projX1(R),……, projXn(R)
On veut remplacer R par ses n projections.
Une condition importante est de pouvoir retrouver R à partir de ses projections.
La seule façon de faire est de considérer la jointure :
??……?
1460514160500La condition importante est donc que:
R= on dit alors que l'on a décomposé R sans perte d'information.
Remarque:
On a toujours:
R
On verra plus tard un test efficace pour savoir si R= compte tenu des seules dépendances connues.
Problème:
Une décomposition peut préserver l'information mais pas les dépendances:
Soit F un ensemble de dépendances explicitées pour R on en déduit:
= les XYF+ telles que XYXi.
On considère:
(……)+ = ?F+
Si oui, on dit que la décomposition préserve les dépendances
Exemple:
Soient les relations:
V Ville
R Rue
C Code postal
On a F={CV, VRC}
Soit une table T d'attributs V,R,C
On veux décomposer VRC en RC et VC, on a bien:
?= T
On a :
= les dépendances triviales RCR, RCR, RR, CC
= les dépendances triviales et CV
Donc ()+ ne contient pas VRC
Cours de Base de données
17.04.2000
Chapitre 4. Dépendances fonctionnelles et formes normales (suite)
Soit un schéma relationnel avec les attributs A1 ……Ak.
La décomposition d’une relation par jointure qui conserve l’information est de la forme :
E1 E2 …… Ep = {A1, … , An }
La jointure projE1(R)? …… ? projEn(R) R.
Et s’il y a égalité chaque fois que R vérifie les dépendances fonctionnelles de F, on dit que la décomposition conserve l’information relativement à F.
Test pour savoir si une décomposition conserve l’info.
Construire une table de k colonnes (des attributs) et p lignes (les projections)
Mettre dans la colonne j de la ligne i la valeur aj si l'attribut j est dans Ej, sinon mettre bij
Répéter jusqu'à stabilité de la table :
- Choisir une dépendance XY de F telles que 2 lignes i1 et i2 coïncident sur Y et égales leurs valeurs sur Y
La décomposition est sans perte d'information si à la fin il y a une ligne avec a1 ……ak
Décomposition d’une relation par jointure qui préserve les dépendances fonctionnelles de F
E1(F) = les X F de F+ ou X Y E1
Ep(F) = les X F de F+ ou X Y Ep
On a toujours :
E1(F) E2(F) …… Ep(F) F+
Mais s’il y a égalité alors la décomposition conserve les dépendances.
Exemple :
Soient les relations :
V Ville, R Rue, C Code postal.
Et les dépendances fonctionnelles : F={CV, VRC}.
1460529845
V
R
C
E1=RC
b1,1 a1
a2
a3
E2=VC
a1
b2,2
a3
00
V
R
C
E1=RC
b1,1 a1
a2
a3
E2=VC
a1
b2,2
a3
Quelle décomposition E1=RC, E2=VC conserve l’info ?
294068552070On regarde les dépendances fonctionnelles.
00On regarde les dépendances fonctionnelles.
Les deux lignes sont égales sous C, on égale donc les éléments de la colonne V ; on obtient une ligne avec que des a.
D’après le test, cela veut dire que l’on conserve l’information.
! !Mais on ne préserve pas les dépendances.
En effet : RC(F) = + (= les trivialités du style : X X ou encore Y X {R,C} )
VC(F) = {C V}+
mais RC(F) VC(F) = {CV}+ VRC
Exemple d’état des tables :
14605139700V
R
C
Paris
10 rue Machin
75010
Paris
10 rue
Machin
75011
00V
R
C
Paris
10 rue Machin
75010
Paris
10 rue
Machin
75011
284924511430Ne vérifie pas VR C
00Ne vérifie pas VR C
-7683578740R
C
10 rue Machin
75010
10 rue
Mochin
75011
00R
C
10 rue Machin
75010
10 rue
Mochin
75011
257492531750V
C
Paris
75010
Paris
75011
00V
C
Paris
75010
Paris
75011
Satisfait RC(F). Satisfait VC(F).
Problématique des formes normales.
Soient les donnée suivantes :
Relation, Fournisseur(Nom, Adresse, Article, Prix ).
F = {Nom, Ar Pr, Nom Ad }
Cette relation présente des redondances ; l’adresse du fournisseur est répétée pour chaque article qu’il livre.
Gaspillage de mémoire, augmentation du temps d’accès !
De plus risque d’anomalies lors de mise à jour ; le fournisseur change d’adresse, innovation dans le catalogue, suppression d’un article ou d’un fournisseur.
Solution : Eclater la relation en deux.
(Nom, Adresse) et (Nom, Article, Prix).
Mais que deviennent les dépendances et l’info ?
321500550800F
00F
31235655080000(R1) Nom, Ad(F) = {Nom Adresse }+
(R2) Nom, Art,Prix(F) = {Nom, Art Prix }+
Nom
Adresse
Article
Prix
R1
a1
a2
b1,3
b1,4
R2
a1
B2,2 a2
a3
a4
Pour tester si les dépendances sont conservées :
1ere façon : Calculer ( E1(F) … Ep(F) )+ Mauvais car s’exécute en temps exponentiel.
2eme façon : Pour chaque X Y de F calculer X+ au sens de E1(F) … Ep(F) et tester si Y X+
Chapitre 5. Forme normale de Boyce-Codd.
Définition :
Le schéma relationnel est en forme normale de B-C si :
Pour toute dépendance fonctionnelle XA de F+ ou AX, les prémisses forment une super clé de la relation.
(c'est à dire que X tout attribut est dans F+)
Dans ce cas, il n’y plus de redondances.
En effet supposons XA une redondance ;
16605252540En cas de forme normale de B-C on aurait (XY)F+ et donc y1= y2.
00En cas de forme normale de B-C on aurait (XY)F+ et donc y1= y2.
X
Y
A
x
y1
a
x
y2
a
Algorithme de décomposition en forme normale de B-C conservant l’information :
Hélas on ne pourra pas conserver les dépendances.
Lemme1 :
Si la décomposition (E1,… ,Ep) de {A1, … ,An } conserve l’information ( bien sur relativement à un ensemble de dépendances), et si la décomposition (S1, S2) de E1 conserve l’information relative à E1(F) alors la décomposition (S1, S2, E2, …, Ep) de {A1, …, An} conserve l’information relative à F.
Preuve : Associativité des produits de jointures.
projE1(R)? … ? projEn(R) = R.
De plus :
projS1(projE1(R)) = projS1(R) et
projS2(projE1(R)) = projS2(R)
D’où :
projS1(projE1(R)) ? projS2(projE1(R)) = projE1(R)
Lemme2 :
Toute relation à deux attributs est en FNBC.
Si R={A1, …, An} n’est pas en FNBC, alors il existe des attributs A,B tels que :
(R \ AB A) F+.
Preuve :
R=A1, A2 si (X A1)F+ et A1X alors X=A2
donc (A2 A1)F+ => A2 est une clé.
Si R non FNBC, il existe (X a)F+, AX, X ne contient pas de clé, donc X R \ A.
Soit B X,A => R\AXX et => R \ AB A
Remarque :
La réciproque du 2. est fausse.
par exemple soient : R=ABC, F={C A, C B}, C une clé
R est en FNBC mais RAB=C A.
Algo1 :
entrée : R, dépendances fonctionnelles F telles que A,B (R \ AB A) F+.
sortie : décomposition conservant l’info de la forme : R \ A, XA avec XA en FNBC.
Corps de l’algo : (pseudo PASCAL)
init : Z :=R
loop : tant que ( une paire A,B | (Z \ AB A) F+ )
faire Z :=Z\B
fin : A= le dernier A obtenu dans la boucle
X= le dernier Z auquel on enlève A.
À la fin, on a :
Z \ A A avec Z :=Z \ B c'est à dire (nouveau Z) \ A A.
On pose (nouveau Z) = Z \ B = X : donc,
X A, Z = XA est en FNBC car le lemme2 ne s’applique plus.
(R \ A) (XA) = X A = ( ((R \ A) \ XA) (XA \ ( R \ A ) )
Algo. de décomposition avec conservation de l’info en relations toutes en FNBC :
init : Z :=R
loop : tant que ( l’algo1 appliqué à Z)
faire ( appliquer l’algo1 pour sortir Z\A et XA, ajouter XA à la liste, poser Z :=Z\A )
fin : rajouter Z à la liste.
Cette liste donne la décomposition recherchée.
Les XA rajoutés à la liste lors de la boucle sont tous en FNBC.
Les Z rajoutés à la liste lors de la boucle sont tous en FNBC.
Car la boucle ne pouvant continuer c’est que l’hypothèse du lemme2 est fausse et donc que Z est en FNBC.
Le fait que cette décomposition conserve l’info. vient de ce que l’algo1 conserve l’info., et que le lemme1 permet de voir qu’a chaque étape la décomposition de liste + Z conserve l’info.
Chapitre 6. La 3éme Forme normale.
Définition :
R est en 3eme Forme Normale si (XA) de F+ avec AX :
- ou bien X est une super-clé,
- ou bien A est un élément d’une clé de R.
Algo. de décomposition :
Considérer une couverture minimale de F.
1er cas : L’une des dépendances est de la forme R \ A A alors R ok.
2eme cas : Sinon, la décomposition est formée des XA ou X A est dans la couverture minimale et d’une clé de R.
Proposition :
La décomposition ainsi obtenue préserve l’information ET conserve les dépendances.
Cours de Base de données
15.05.2000
Chapitre 4. Dépendances fonctionnelles et formes normales (fin)
Soit XY, avec X, Y des ensembles d'attributs, la relation R vérifie la dépendance fonctionnelle XY si 2 lignes quelconques qui coïncident sur les colonnes de X coïncident aussi sur celles deY.
En pratique on postule un certain nombre de dépendances fonctionnelles, d'où une famille F de dépendances fonctionnelles.
Il s'agit de contraintes qu'on impose à tous les états de la BD.
De F on déduit F+=toutes les dépendances fonctionnelles que l'on peut "déduire" (2 sens) de F.
1er sens de déduire:
une dépendance fonctionnelle ZT se déduit de F si toute relation qui satisfait toutes les dépendances de F satisfait aussi ZT.
2eme sens de déduire:
Une dépendance fonctionnelle ZT se déduit de F s'il existe une preuve de ZT à partir des dépendances fonctionnelles de F utilisant les axiomes et règles d'Armstrong.
Rappel:
Axiome de réflexivité: Si YX alors XY
Règle d'accroissement : De XY on déduit XZYZ pour tout Z
Règle de transitivité: De XY et YZ on déduit XZ
Théorème
Ces 2 sens sont en fait identique
X+(par rapport à F)= {A: XA est dans F+} en pratique, c'est toujours les X+ qu'on calcule
Recouvrement minimal des dépendances:
540956566040Ce n'est pas unique en général mais pour tout F il existe G tel que G minimal et G+=F+
00Ce n'est pas unique en général mais pour tout F il existe G tel que G minimal et G+=F+
531812515748000F un ensemble de dépendances fonctionnelles est minimal si:
Toute dépendance fonctionnelle de F est de la forme XA, avec A attribut et X ensemble d'attributs.
Si XA est dans f alors XA(F\ {XA})+ en d'autre termes (F\{XA})+F+
Si XA est dans F alors XA[(F\{XA}) {X'A}]+ si X'X
En d'autre terme ( (F\{XA}) {X'A})+F+
Décomposition d'un schéma relationnel
Données: ensemble d'attributs {A1, ……, An}, famille F
On cherche une famille E1, ……, Ep de parties de {A1, ……, An} telle que : si R est une relation d'attributs A1, ……, An qui vérifie les dépendances fonctionnelles de F alors
R=projE1(R)? projE2(R)?…… projEp(R)
On dit alors que la décomposition est sans perte d'information et, si possible
(E1(F) E2(F) …… Ep(F))+=F+
E(F)= les XY de F+ tels que XYE = les dépendances fonctionnelles de F+ portant sur les seuls attributs dans E
Algo pour tester si une décomposition préserve l'information relativement à F
On construit une table de colonnes indexées par les attributs
avec p ligne
Sur la ligne i on écrit aj en colonne j si l'attribut Aj est dans Ei
bij en colonne j si l'attribut AjEi
Répéter sur la table les opérations suivantes :
Pour chaque dépendances fonctionnelles XY de F choisir 2 lignes qui coïncident sur les colonnes de X et égaler les coefficient de ces lignes sur les colonnes de Y.
La décomposition est sans perte d'information i et seulement si la table finale contient la ligne
(a1, ……an)
Algo pour tester si une décomposition préserve les dépendances
Ne pas chercher à calculer (E1(F) E2(F) …… Ep(F))+=F+
Pour chaque XY de F calculer le X+ relativement à E1(F) E2(F) …… Ep(F)
et tester si X+Y
Cas particulier où p=2
Fait (E1, E2) est sans perte d'information (relativement à f) si et seulement si :
E1E2 E1E2 est dans F+
E1E2 = les attributs qui sont dans exactement dans un seul d'entre E1 et E2
= (E1\E2) (E2\E1)
= différence symétrique
Chapitre 5. Forme normale de Boyce-Codd.
1751965160655attributs
00attributs
1569085252094003215005160655XA donc X est une superclé si XA donc XY donc les 2lignes sont égales
00XA donc X est une superclé si XA donc XY donc les 2lignes sont égales
X
Y
A
175196563500
C'est nécessairement a
00
C'est nécessairement a
x
y1
a
15690857937400x
y2
?
On peut avoir intérêt à casser la relation en 2 relations, l'une avec les attributs X et Y l'autre avec les attributs X etA
Définition:
{A1, ……, An} , F ensemble de dépendance fonctionnelle. Ce schéma est en forma normale de
Boyce-Codd (BCNF) si toute dépendance XA de F+ ou AX alors X est une superclé
(X{A1, ……, An}F+)
Lemme 1:
Si E1, ……, Ep est sans perte d'information relativement à F
Si S1, S2 est sans perte d'information relativement à E1(F)
Alors S1, S2, E1, ……, Ep est sans perte d'information relativement à F
Lemme 2:
Tout schema à 2 attributs est en FNBC
Si ({A1, ……, An}, F) n'est pas en FNBC alors il existe A, B tels que {A1, ……, An}\{A, B}A
Algo de décomposition d'un schémas ({A1, ……, An}, F) en schéma satisfaisant la FNBC
Ceci sans perte d'information (mais les dépendances fonctionnelles ne sont pas toujours préservables)
Algo 1:
Décompose sans perte d'information d'un schéma ({A1, ……, An}, F) non en FNBC en 2 schémas {A1, ……, An}\{A} et XA tels que XAF+ et XA est en FNBC (relativement à XA(F) )
Initialisation Z=E1(F)
Boucle Tant qu'il existe une paire A, B de Z telle que Z\ABAF+ poser Z=Z\B
Terminaison Poser A= le dernier A obtenu, X = (le dernier Z obtenu)\A
Preuve de correction:
Ca se termine en au plus n étape car Z décroît
A la fin on a XA par construction et Z=XA est en FNBC à cause du lemme 2
Pas de perte d'information car
{A1, ……, An}\{A} XA = X et
({A1, ……, An}\A) XA = A et XAF+
Algo 2:
Décomposition sans perte d'information de ({A1, ……, An}, F) en une suite de schémas en FNBC
Initialisation Z={A1, ……, An}, L = liste vide
Boucle tant que Z n'est pas en FNBC appliquer l'algo 1
Rajouter XA à L et poser Z=Z\A
Fin Rajouter Z à L, la liste L est la décomposition cherchée
Exemple:
{Cours, Professeur, Heure, Salle, Diplôme, Etudiant}
F={CP, HSC, HPS, CED, HES}
Algo 2
380364190500 Z=CPHSDE AB=CP HSDEC (car HSC dans F)
Z=CHSDE AB=SC HDES (car HES est dans F
Z=HSDE terminé décomposition sans perte (HSE, CPHDE) en FNBC
3803645905500 Z=CPHDE AB=PH CDEP (car CP est dans F)
Z=CPDE AB=PE CDD (car CP est dans F)
Z=CPD AB=PD CP (car CP est dans F)
Z=CP terminédécomposition sans perte de CPHDE en (CP, CHDE) en FNBC
3803643683000 Z=CHDE AB=DH CED
Z=CDE terminédécomposition sans perte de CHDE en 5CDE, CHE)
38036415176500
Z=CHE terminé d'ou
(HSE, CP, CDE, CHE) = décomposition en FNBC
3eme Forme Normale
({A1, ……, An}, F) est en 3eme Forme Normale si pour toute dépendance fonctionnelle XA, de F+ ou bien X est une superclé ou bien A est élément d'au moins une clé
Algo de décomposition en 3eme Forme Normale
déterminer une couverture minimale G
déterminer une clé
considéré la décomposition forme des XA où (XA)G et de la clé
Cette décomposition est sans perte d'information et préserve les dépendances
|
|
Comments (0)
|
Post your homework questions and get free online help from our incredible volunteers
|