Le Mod - PowerPoint PPT Presentation

About This Presentation
Title:

Le Mod

Description:

Il est observer que le type (domaine) de chaque attribue est sp cifi et fait respecter par le SGBD chaque fois que des uplets sont ajout s ou modifi s. ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 39
Provided by: RaghuRamak246
Category:
Tags: attribue | mod

less

Transcript and Presenter's Notes

Title: Le Mod


1
Le Modèle Relationnel
  • Chapitre 3

2
Objectifs
  • ReprĂ©senter les donnĂ©es en utilisant le modèle
    relationnel.
  • Exprimer les contraintes dintĂ©gritĂ© sur les
    données.
  • CrĂ©er, modifier, dĂ©truire, altĂ©rer, et poser des
    requĂŞtes sur les relations.
  • CrĂ©er, modifier, dĂ©truire, altĂ©rer, et poser des
    requĂŞtes sur les relations en utilisant SQL.
  • Obtenir une base de donnĂ©es relationnelle Ă 
    partir dun diagramme ER.
  • Introduction aux vues.

3
Pourquoi Étudier le Modèle Relationnel?
  • Le modèle le plus largement utilisĂ©.
  • Vendeurs IBM, Informix, Microsoft, Oracle,
    Sybase, etc.
  • Legacy systems en place dans les vieux modèles.
  • P.ex., IBM IMS
  • RĂ©cent compĂ©titeur modèle orientĂ©-objet.
  • ObjectStore, Versant, Ontos
  • Une synthèse Ă©merge modèle relationnel-objet
  • Informix Universal Server, UniSQL, O2, Oracle, DB2

4
Concepts des Bases de Donnees Relationnelles
  • Relation fait de 2 composantes
  • Instance une table, avec lignes et colonnes.
    lignes cardinalité, colonnes degré /
    arité.
  • SchĂ©ma spĂ©cifie le nom de la relation, plus le
    nom et le domaine (type) de chaque colonne
    (attribut).
  • P. ex., Students(sid string, name string,
    login string,
  • age integer,
    gpa real).
  • On peut concevoir une relation comme Ă©tant un
    ensemble de lignes ou uplets (tuples) (i.e.,
    toutes les lignes sont distinctes) chaque uplet
    a la même arité que le schéma de la relation.
  • Base de donnĂ©es relationnelles un ensemble de
    relations, chacune ayant un nom distinct.
  • SchĂ©ma relationnel dune BD ensemble de schĂ©mas
    des relations dans la BD.
  • SchĂ©ma relationnel dune instance de la BD
    ensemble des instances relationnelles de la BD.

5
Exemple dInstance de la Relation Students
  • CardinalitĂ© 3, aritĂ© 5, toutes les lignes
    sont distinctes.
  • Les systèmes commerciaux permettent des
    duplicata.
  • Lordre des attributs peut ou peut ne pas jouer
    un rĂ´le!
  • Toutes les colonnes dune instance relationnelle
    ont-elles Ă  ĂŞtre
  • distinctes? DĂ©pend de la prĂ©sence ou non dun
    ordre.

6
Langages de RequĂŞtes Relationnels
  • Un avantage majeur du modèle relationnel est
    quil supporte de simple et puissantes requĂŞtes
    sur les données.
  • Les requĂŞtes peuvent ĂŞtre Ă©crit de manière
    intuitive (i.e. déclarative), et le SGBD est
    responsable de leur Ă©valuation efficiente.
  • Lutilisateur dit au SGBD quoi faire et le
    système cherche comment faire ce quil y a à
    faire de manière efficiente!
  • La clĂ© du succès sĂ©mantique prĂ©cise des
    requĂŞtes.
  • Permet Ă  loptimisateur de rĂ©ordonner les
    opérations tout en garantissant que la réponse ne
    change pas.

7
Language des RequĂŞtes SQL
  • DĂ©veloppĂ© par IBM (system R) dans les annĂ©es
    1970s.
  • Besoin dun standard car utilisĂ© par beaucoup de
    vendeurs.
  • Standards
  • SQL-86
  • SQL-89 (rĂ©vision mineure)
  • SQL-92 (rĂ©vision majeure)
  • SQL-99 (extensions majeures, standard courrant)

8
Création des Relations en SQL
  • CrĂ©e la relation Students. Il est Ă  observer que
    le type (domaine) de chaque attribue est
    spécifié et fait respecter par le SGBD chaque
    fois que des uplets sont ajoutés ou modifiés.
  • Autre exemple La table Enrolled enregistrent des
    infos sur les cours que les Ă©tudiants prennent.

CREATE TABLE Students (sid CHAR(20), name
CHAR(20), login CHAR(10), age INTEGER,
gpa REAL)
CREATE TABLE Enrolled (sid CHAR(20), cid
CHAR(20), grade CHAR(2))
9
Destruction et Altération des Relations
DROP TABLE Students
  • dĂ©truit la relation Students. Le schĂ©ma et les
    uplets sont effacés.

ALTER TABLE Students ADD COLUMN firstYear
integer
  • Le schĂ©ma de Students est altĂ©rĂ© par lajout dun
    nouvel attribut chaque uplet dans linstance
    courrante est augmenté par une valeur null pour
    le nouvel attribut.

10
Ajout et Effacement des uplets
  • Un seul uplet est ajoutĂ© de la manière suivante

INSERT INTO Students (sid, name, login, age,
gpa) VALUES (53688, Smith, smith_at_ee, 18, 3.2)
  • Tous les uplets satisfaisant une certaine
    condition peuvent être effacés (e.g., name
    Smith)

DELETE FROM Students S WHERE S.name Smith
  • De puissantes variantes de ces commandes seront
    vues plutard!

11
Contraintes dIntégrité (ICs)
  • IC condition qui doit ĂŞtre satisfaite dans
    nimporte quelle instance de la base de données
    p. ex., contraines du domaine.
  • Les ICs sont spĂ©cifiĂ©es lorsque le schĂ©ma est
    défini.
  • Les ICs sont vĂ©rifiĂ©es lorsque les relations sont
    modifiées.
  • Une instance lĂ©gale dune relation est une
    instance qui satisfait toutes les ICs spécifiées.
  • Un SGBD ne doit pas permettre des instances
    illégales.
  • Si le SGBD vĂ©rifie les ICs, les donnĂ©es stockĂ©es
    reflètent mieux la signification du monde réel.
  • Évite les erreurs dentrĂ©e de donnĂ©es aussi!

12
Contraintes de Clé Primaire
  • Un ensemble dattributs est une clĂ© pour une
    relation si
  • 1. Deux uplets distincts ne peuvent pas avoir les
    mêmes valeurs pour tous les attributs de la clé,
    et
  • 2. Cela nest pas vrai pour un quelconque
    sous-ensemble de la clé.
  • Si la partie 2 est fausse, on a une superclĂ©.
  • Sil y a plus dune clĂ© pour la relation, une
    delles est choisie (par le DBA) comme clé
    primaire.
  • P. ex., sid est une clĂ© pour Students, alors que
    name nen est pas une. Lensemble sid, gpa
    est une superclé.

13
Clé Primaire et Candidates Clé en SQL
  • Plusieurs candidates clĂ© (spĂ©cifiĂ©es par
    UNIQUE) une delles est choisie comme clé
    primaire.
  • Pour un Ă©tudiant et un cours donnĂ©, il y a une
    seule note. vs. Les Ă©tudiants ne peuvent
    prendre quun seul cours et navoir quune seule
    note pour ce cours et deux Ă©tudiants ne peuvent
    recevoir la mĂŞme note.
  • Une IC utilisĂ©e imprudemment peut empĂŞcher le
    stockage dinstances de base de données qui
    apparaissent dans la réalité!

CREATE TABLE Enrolled (sid CHAR(20) cid
CHAR(20), grade CHAR(2), PRIMARY KEY
(sid,cid) )
CREATE TABLE Enrolled (sid CHAR(20) cid
CHAR(20), grade CHAR(2), PRIMARY KEY
(sid), UNIQUE (cid, grade) )
14
Clés Étrangères et Intégrité Référentielle
  • ClĂ© Ă©trangère Ensemble dattributs dune
    relation qui est utilisé pour référer aux uplets
    dune autre relation. (Doit correspondre Ă  la
    clé primaire de la seconde relation.) Ressemble
    Ă  un pointeur logique.
  • P. ex. sid est une clĂ© Ă©trangère referant Ă 
    Students
  • Enrolled(sid string, cid string, grade string)
  • Si toutes les contraintes de clĂ© Ă©trangère sont
    respectées, on atteint une intégrité
    référentielle, i.e., il ny a aucune référence
    pendante.
  • Les liens ( links ) en HTML sont un exemple de
    modèle de données sans intégrité référentielle.

15
Clés Étrangère en SQL
  • Seuls les Ă©tudiants listĂ©s dans la relation
    Students devraient ĂŞtre permis de senregistrer
    pour les cours.

CREATE TABLE Enrolled (sid CHAR(20), cid
CHAR(20), grade CHAR(2), PRIMARY KEY
(sid,cid), FOREIGN KEY (sid) REFERENCES
Students )
Enrolled
Students
16
Exécution ( Enforcing ) de lIntégrité
Référentielle
  • Considerez Students and Enrolled sid dans
    Enrolled est une clé étrangère referant à
    Students.
  • Que devrait-on faire si un uplet de Enrolled
    ayant un étudiant non-existent est inseré?
    (Rejetez le!)
  • Que devrait-on faire si un uplet de Students est
    effacé?
  • Effacer Ă©galement tous les uplets de Enrolled
    qui réfèrent à lui.
  • Ne pas permettre un effacement dun uplet auquel
    il est fait référence.
  • Donner une valeur  default  au sid des uplets
    de Enrolled qui réfèrent à lui.
  • (En SQL, on utilise un  default  spĂ©cial pour
    les uplets de Enrolled appelé null, qui signifie
    inconnu ou nonapplicable.)
  • Traitement similaire si la clĂ© primaire dun
    uplet de Students est modifié.

17
Intégrité Référentielle en SQL
  • SQL/92 et SQL1999 supportent toutes les 4
    options deffacement et de modification
    examinées.
  • Defaut NO ACTION (delete/update est rejetĂ©)
  • CASCADE (effacer aussi tous les uplets qui
    réfèrent à luplet effacé)
  • SET NULL / SET DEFAULT (donner une valeur dĂ©faut
    à la clé étrangère de luplet référant)

CREATE TABLE Enrolled (sid CHAR(20), cid
CHAR(20), grade CHAR(2), PRIMARY KEY
(sid,cid), FOREIGN KEY (sid) REFERENCES
Students ON DELETE CASCADE ON UPDATE SET
DEFAULT )
18
DoĂą viennent les ICs?
  • Les ICs proviennent de la sĂ©mantique de
    lentreprise à modéliser.
  • Nous pouvons contrĂ´ler une instance de base de
    données pour voir si une IC est violée, mais nous
    ne pourrons jamais déduire que une IC est
    satisfaite juste Ă  partir dune instance.
  • Une IC est dĂ©claration au sujet de toutes les
    instances possibles!
  • De notre exemple, nous savonsque name nest pas
    une clé, mais lassertion que sid est une clé
    nous est donnée.
  • ClĂ© et clĂ© Ă©trangère sont les ICs les plus
    courants cependant des ICs plus généraux
    existent aussi.

19
Transactions et Contraintes
  • Un programme de transaction est une sĂ©quence de
    requĂŞtes, insertions, effacements, etc qui
    accèdent à la base de données.
  • Quand est-ce que des contraintes devraient etre
    contrôlées dans une transaction?
  • ImmĂ©diatement après la dĂ©claration
  • DiffĂ©rer le contrĂ´le Ă  plutard
  • SQL permet deux modes de contrainte.
  • SET CONSTRAINT MyConstraint IMMEDIATE
  • SET CONSTRAINT MyConstraint DEFERRED
  • Les ICs sont immĂ©diats par dĂ©faut les ICs
    différées sont controlées lors de la validation
    ( Commit time ).

20
Requêtes sur Données Relationnelles en SQL
  • Trouver tous les Ă©tudiants ayant 18 ans

SELECT FROM Students S WHERE S.age18
  • Pour trouver juste les noms et logins, remplacer
    la
  • 1ère ligne par

SELECT S.name, S.login
21
Requêtes sur Données Relationnelles en SQLn
(Suite)
  • Nous pouvons aussi combiner des infos de
    plusieurs relations

SELECT S.name, E.cid FROM Students S, Enrolled
E WHERE S.sidE.sid AND E.gradeA
Étant donnée linstance suivante de Enrolled
Nous obtenons
22
Design Logique du Modèle ER au Relationnel
  • Le modèle reprĂ©sente le design initial et
     high-level  de la base de données.
  • La tâche est de gĂ©nĂ©rer un schĂ©ma relationnel qui
    soit le plus proche possible du modèle ER.
  • La traduction est approximative car il est
    difficile de traduire toutes les contraintes du
    modèle ER en un modèle logique efficient.

23
De lEnsemble dEntités à une Table
  • Lensemble dentitĂ©s devient une table.
  • Chaque attribut de lensemble dentitĂ©s devient
    un attribut de la table.
  • Les contraintes de domaine deviennent des types
    appropriés de SQL.
  • La clĂ© primaire de lensemble dentitĂ©s devient
    la clé primaire de la table.

CREATE TABLE Employees
(ssn CHAR(11), name
CHAR(20), lot INTEGER,
PRIMARY KEY (ssn))
24
De lEnsemble des Relations Ă  une Table
  • Un ensemble de relations (sans contraintes) est
    traduit en une table.
  • Les attributs de la relation doivent inclure
  • ClĂ©s pour chaque ensemble dentitĂ©s participant
    (clés étrangères).
  • Cet ensemble dattributs forme une superclĂ© pour
    la nouvelle table.
  • Tous les attributs descriptifs.

CREATE TABLE Works_In( ssn CHAR(1), did
INTEGER, since DATE, PRIMARY KEY (ssn,
did), FOREIGN KEY (ssn) REFERENCES
Employees, FOREIGN KEY (did)
REFERENCES Departments)
25
De lEnsemble des Relations Ă  une Table (Suite)
  • La traduction dun ensemble de relations
    circulaires (sans contraintes) en une table doit
    inclure les attributs suivants
  • ClĂ©s construites en concatĂ©nant les indicateurs
    de rôle avec la clé primaire de lensemble
    dentités participant (clés étrangères).
  • Cet ensemble dattributs forme une superclĂ© pour
    la nouvelle table.
  • Tous les attributs descriptifs.
  • Une dĂ©nomination explicite de la clĂ© rĂ©fĂ©rencĂ©e.

CREATE TABLE Reports_to( supervisor_ssn
CHAR(11), subordinate_ssn CHAR(11), PRIMARY
KEY (supervisor_ssn,
subordinate_ssn), FOREIGN KEY (supervisor_ssn)
REFERENCES Employees(ssn), FOREIGN KEY
(subordinate_ssn) REFERENCES
Employees(ssn))
26
Rappel Contraintes de Clé
  • Chaque dept a au plus un manager en vertu de la
    constrainte de clé sur Manages.

budget
did
Departments
Comment traduire Tout ceci en modèle
relationnel?
Many-to-Many
1-to-1
1-to Many
Many-to-1
27
Traduction des Diagrammes ER avec Contraintes de
Clé
CREATE TABLE Manages( ssn CHAR(11), did
INTEGER, since DATE, PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees,
FOREIGN KEY (did) REFERENCES Departments)
  • Traduire la relation en une table
  • Notez que le did est la clĂ© maintenant!
  • Tables separĂ©es pour Employees et Departments.
  • Puisque chaque dĂ©partement a un manager unique,
    nous pourrions aussi combiner Manages et
    Departments.

CREATE TABLE Dept_Mgr( did INTEGER, dname
CHAR(20), budget REAL, ssn CHAR(11),
since DATE, PRIMARY KEY (did), FOREIGN
KEY (ssn) REFERENCES Employees)
28
Rappel Contraintes de Participation
  • Chaque dĂ©partement a-t-il un manager?
  • Si cest le cas, on a une contrainte de
    participation la participation de Departments
    dans lassociation Manages est dite ĂŞtre totale
    (vs. partielle).
  • Chaque valeur did dans la table Departments doit
    apparaître dans une ligne de la table Manages
    (avec une valeur de ssn qui nest pas nulle!)

since
since
name
name
dname
dname
lot
budget
did
budget
did
ssn
Departments
Employees
Manages
Works_In
since
29
Contraintes de Participation en SQL
  • Nous pouvons capturer les contraintes de
    participation impliquant un ensemble dentités
    participant Ă  une relation binaire, mais rien
    dautre (sans ressortir aux contraintes CHECK
    de SQL).

CREATE TABLE Dept_Mgr( did INTEGER, dname
CHAR(20), budget REAL, ssn CHAR(11) NOT
NULL, since DATE, PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees, ON
DELETE NO ACTION)
30
Rappel Entités Faibles
  • Une entitĂ© faible ne peut ĂŞtre identifiĂ© que par
    lentremise dune clé primaire dune autre entité
    (propriétaire) .
  • Lensemble des propriĂ©taires et celui des entitĂ©s
    faibles doivent participer dans un ensemble de
    relations  one-to-many  (1 propriétaire,
    beaucoup dentités faibles).
  • Un ensemble dentitĂ©s faibles doit avoir une
    participation totale dans cette ensemble de
    relations identifiantes.

name
cost
pname
age
ssn
lot
Dependents
Policy
Employees
31
Traduction dEnsemble dEntités Faibles
  • Une ensemble dentitĂ©s faible ainsi que son
    ensemble de relations identifiantes sont traduits
    en une SEULE table.
  • Lorsque lentitĂ© propriĂ©taire est effacĂ©e, toutes
    les entités faibles possédées par elle doivent
    aussi être effacées.

CREATE TABLE Dep_Policy ( pname CHAR(20),
age INTEGER, cost REAL, ssn CHAR(11) NOT
NULL, PRIMARY KEY (pname, ssn), FOREIGN
KEY (ssn) REFERENCES Employees, ON DELETE
CASCADE)
32
Rappel Hiérarchies ISA
name
ssn
lot
Employees
hours_worked
hourly_wages
ISA
  • Une dĂ©claration A ISA B signifie que chaque
    entité de A est aussi à considérer comme une
    entité de B.

contractid
Contract_Emps
Hourly_Emps
  • Contraintes de superposition Joe peut-il ĂŞtre Ă 
    la fois dans Hourly_Emps et dans Contract_Emps?
  • Contraintes de couverture Y a-t-il des employĂ©s
    qui ne sont ni dans Hourly_Emps ni dans
    Contract_Emps?

33
Traduction des Hiérarchies ISA en Relations
  • Approche gĂ©nĂ©rale
  • 3 relations Employees, Hourly_Emps and
    Contract_Emps.
  • Hourly_Emps Chaque employĂ© est enregistrĂ© dans
    Employees. Pour les employés journaliers, de
    linfo supplémentaire est enregistré dans
    Hourly_Emps (hourly_wages, hours_worked, ssn) un
    uplet de Hourly_Emps doit être effacé si sa
    référence dans Employees est effacée.
  • Les requĂŞtes impliquants tous les employĂ©s sont
    faciles, mais celles impliquant juste les uplets
    de Hourly_Emps requièrent un join pour accéder à
    des attributs supplémentaires.
  • Alternative utiliser exactement Hourly_Emps et
    Contract_Emps.
  • Hourly_Emps ssn, name, lot, hourly_wages,
    hours_worked.
  • Chaque employĂ© doit ĂŞtre exactement dans lune de
    ces 2 sous-classes.
  • Les contraintes de superposition et de couverture
    sont exprimées en SQL par des assertions que nous
    verrons plutard.

34
Rappel Relation Binaire vs. Ternaire
pname
age
Dependents
Covers
  • Notez les contraintes additionnelles introduites
    dans le 2ème diagramnme.

Mauvais design
pname
age
Dependents
Purchaser
Meilleur design
35
Relation Binaire vs. Ternaire (Suite)
CREATE TABLE Policies ( policyid INTEGER,
cost REAL, ssn CHAR(11) NOT NULL,
PRIMARY KEY (policyid). FOREIGN KEY (ssn)
REFERENCES Employees, ON DELETE CASCADE)
  • La contrainte de clĂ© nous permets de combiner
    Purchaser avec Policies ainsi que Beneficiary
    avec Dependents.
  • Les contraintes de participation conduisent Ă  des
    contraintes NOT NULL.

CREATE TABLE Dependents ( pname CHAR(20),
age INTEGER, policyid INTEGER, PRIMARY
KEY (pname, policyid). FOREIGN KEY (policyid)
REFERENCES Policies, ON DELETE CASCADE)
36
Vues
  • Une vue est simplement une relation dont la
    définition est stockée plutôt que un ensemble de
    uplets.

CREATE VIEW YoungActiveStudents (name,
grade) AS SELECT S.name, E.grade FROM
Students S, Enrolled E WHERE S.sid E.sid and
S.agelt21
  • Les vues peuvent ĂŞtre dĂ©truites en utilisant la
    commande DROP VIEW.
  • Comment traiter DROP TABLE sil y a une vue sur
    la table?
  • La commande DROP TABLE a des options pour
    permettre à lusager de spécifier cela RESTRICT
    / CASCADE.

37
Vues et Sécurité
  • Les vues peuvent ĂŞtre utilisĂ©es pour prĂ©senter de
    linfo nécessaire à lusager tout en lui
    interdisant laccès aux relations sous-jacentes.
  • Étant donnĂ© la vue YoungStudents, avec les
    tables Students et Enrolled cachées, nous pouvons
    trouver les Ă©tudiants qui sont inscrits, mais pas
    les cids des cours auxquels ils sont inscrits!

38
Résumé
  • Le modèle relationnel est une prĂ©sentation
    tabulaire ses données.
  • Simple et intuitif prĂ©sentement largement
    utilisé.
  • Les contraintes dintĂ©gritĂ© peuvent ĂŞtre
    spécifiées par le DBA sur base de la sémantique
    de lapplication. Le SGBD en contrĂ´le les
    violations.
  • Deux ICs importants clĂ© primaire et clĂ©s
    étrangères
  • De plus, on a toujours les contraintes du domaine
  • Un langage de requĂŞtes puissant et naturel
    existe.
  • Il existe des règles pour traduire les diagramme
    ER en un modèle relationnel.
Write a Comment
User Comments (0)
About PowerShow.com