Programme Introduction aux BD et aux SGBD Le modèle relationnel Le langage de requête SQL La conception d’une BD relationnelle Protection des informations Perspectives des BD
Le modèle relationnel Inventé par E. F. Codd Laboratoire de recherche IBM à San José Publication ACM 1970 "A Relational Model of Data for Large Shared Data Banks"
Les concepts descriptifs Notion de domaine Produit cartésien Relation Attribut Exemples de relations Clé Schéma de relation Clé étrangère Métabase Résumé des notions
Notion de domaine Définition Exemples Ensemble de valeurs Entier, réel, chaîne de caractères, booléen Salaire = 4000...100000 Couleur = {bleu, blanc, rouge} Point = [X: entier, Y: entier] Triangle = [P1, P2, P3: Point] Polygone = {Point}
Produit cartésien Définition Notation Le produit cartésien de D1, ...., Dn est l'ensemble des n-uplets (Tuples) <V1, ...., Vn> tel que Vi Di. Notation D1 X ....X Dn
Produit cartésien (suite) Exemple D1 = {Cadre, Ouvrier, Directeur} D2 = {5000, 15000, 30000}
Relation Définition Exemple sous-ensemble du produit cartésien d'une liste de domaines caractérisée par un nom. Exemple D1 = Fonction D2 = Salaire
Relation (suite) Plus simplement, une relation est un tableau à deux dimensions. Une ligne est un n-uplet (tuple). On associe un nom à chaque colonne afin de la repérer indépendamment de l'ordre.
Attribut Définition Exemple nom donné à une colonne d'une relation prend ses valeurs dans un domaine Exemple Fonction
Exemples de relations
Clé Définition Exemple Contrainte d'intégrité Une clé est un groupe d'attributs minimum qui détermine un n-uplet unique dans une relation (à tout instant). Exemple Clé de salaire_moyen ? Clé de départements ? Contrainte d'intégrité Toute relation doit posséder une clé renseignée (sans valeur inconnue).
Schéma de relation Définition Exemple Le schéma d'une relation décrit: son nom la liste des attributs qu'elle comporte et des domaines associés la liste des attributs composant la clé (la clé est soulignée) Exemple Départements(Nom: texte, Région: texte, Directeur: texte, Nb_employés: entier)
Schéma de relation (suite) Intention Un schéma de relation: intention de la relation table: extension Le schéma d'une BD relationnelle: ensemble des schémas des relations
Clé étrangère Définition Rôle Une clé étrangère est un groupe d'attributs qui apparaît comme clé dans une autre relation R1(A1, A2, .... , Ap, Ap+1, ...., An) R2(B1, B2, ......, Bn) Rôle Les clés étrangères définissent des contraintes d'intégrités référentielles entre relations
Mises à jour et clés étrangères Insertion: la valeur des attributs doit exister dans la relation référencée. Insertion de (R&D4, 2222) ? Suppression dans la relation référencée, les n-uplets référençant doivent disparaître. Suppression de l'employé 5678 Les clés étrangères définissent les liens entités-associations.
Clé étrangère Exemples Département(No_départ, Libellé, Région) Employé(No_emp, Nom, Prénom, Adresse) Travaille_dans(No_dept, No_emp, Date_embauche) Clés étrangères: No_dept dans Travaille_dans référence No_départ dans Département; No_emp dans Travaille_dans référence No_emp dans Employé.
Métabase Définition Principe base de données contenant l'ensemble des schémas et des règles de correspondances associées à une base de données Principe Une base décrivant les autres bases, c'est-à-dire: les relations + les attributs + les domaines + les clés ..... Notion de dictionnaire de données Base particulière, système, gérée par l'administrateur de BD
Résumé des notions
Les opérateurs de manipulation Tout résultat d'une opération est une relation; celui-ci peut donc être réutilisé en entrée d'un nouvel opérateur. Les opérateurs peuvent être classifiés en : opérateurs ensemblistes / opérateurs relationnels opérateurs unaires / opérateurs binaires opérateurs de base / opérateurs dérivés Base: union, différence, restriction, projection, produit cartésien dérivés: intersection, jointure, division
Union But Contraintes Permet de fusionner deux relations Binaire Même schéma
Union (suite) Exemple
Union (suite) Notation Notation textuelle: T = R S Notation graphique: R S T
Différence But Contraintes Conserver les tuples d'une relation ne figurant pas dans une autre Contraintes Binaire Même schéma Non commutatif
Différence (suite) Exemple
Différence (suite) Notation Notation textuelle: T = R - S Notation graphique: R S T
Restriction But Contraintes Permet de "sélectionner" des tuples La restriction réduit la taille de la relation verticalement Contraintes Unaire Spécifier une condition
Restriction (suite) Exemple Restriction telle que salaire 15000 Restriction telle que Nom > 'Le Blanc'
Restriction (suite) Notation Notation textuelle: T = cond (R) Notation graphique: R Cond T
Projection But Contraintes Permet de "sélectionner" des attributs La projection réduit la taille de la relation horizontalement Contraintes Unaire Spécifier une liste d'attributs
Projection (suite) Exemple Projection sur Nom Projection sur No_emp Projection sur Nom Projection sur No_emp et salaire
Projection (suite) Notation Notation textuelle: T = liste d'attributs (R) Notation graphique: R Attributs T
Produit cartésien But Contraintes Ensemble de tous les tuples obtenus par concaténation de chaque tuple de R avec chaque tuple de S Relation X Relation Relation Contraintes Binaire Schéma du résultat: R(a1, a2, ...., an), S(b1, b2, ..., bp) T = R X S T(a1, a2, ...., an, b1, b2, ..., bp) Card (R X S) = Card (R) * Card (S)
Produit cartésien (suite) Exemple
Produit cartésien (suite) Notation Notation textuelle: T = R X S Notation graphique: R S X T
Intersection But Contraintes Permet d’obtenir l’ensemble des tuples appartenant à deux relations Contraintes Binaire Même schéma
Intersection (suite) Exemple
Intersection (suite) Notation Dérivation Notation textuelle: T = R S Notation graphique: R S T Dérivation T = R - (R - S) T = S - (S - R)
Jointure But Contraintes Permet d’établir le lien sémantique entre les relations Contraintes Binaire Schéma du résultat: R(a1, a2, ...., an) S(b1, b2, ..., bp) T = R X S T(a1, a2, ...., an, b1, b2, ..., bp)
Jointure (suite) Exemple
Jointure (suite) Notation Dérivation Notation textuelle: T = R >< S Critère de jointure Notation graphique : R S T Dérivation Produit cartésien + restriction
Division But Contraintes Répondre aux requêtes de type « tous les » Un tuple t est dans T si et seulement si pour tout tuple s de S, le tuple <t,s> est dans R Contraintes Binaire Schéma du résultat: R(a1, a2, ...., an, b1, b2, ..., bp) S(b1, b2, ..., bp) T = R ¸ S T(a1, a2, ...., an)
Division (suite) Exemple Quels sont les employés qui travaillent sur tous les projets ?
Division (suite) Exemple Construire R: ensemble de toutes les informations dont on a besoin Construire S: ensemble correspondant à "tous les" (projets)
Division (suite) Notation Dérivation Notation textuelle: T = R S Notation graphique: R S T Dérivation Projection + Produit cartésien + Différence. R S = T1 - T2 avec: T1 = schéma(R) - schéma(S) (R) T2 = schéma(R) - schéma(S) (( schéma(R) - schéma(S) (R) X (S) - R)
Bilan
Exemples de requêtes en algèbre relationnelle Base de données Employé(Nom_emp, Prénom_emp, No_ss, Date_naiss, Adresse_emp, Sexe, Salaire, No_chef, Nod) Département(Nom_d, No_dept, No_dir, Date_affect) Dept_local(Num_dept, Id_loc) Projet(Nom, No_proj, Local_proj, Nod) Travaille_sur(No_ss, No_projet, Nb_heures)
Requête 1 Nom et adresse de tous les employés travaillant pour le département "R&D" Solution textuelle DEPT_RECH <- Nom_d="R&D" (Département) EMP_DE_RECH <- DEPT_RECH >< Employé No_dept = Nod RESULTAT <- Nom_emp, Prénom_emp, Adresse_emp (EMP_DE_RECH)
Arbre algébrique (Requête 1)
Requête 2 Pour chaque projet situé à Paris, donner le numéro du projet, le numéro du département correspondant, et le nom, l'adresse et la date de naissance du directeur Solution textuelle PROJ_PARIS <- Local_proj="Paris" (Projet) DEPT_DE_PROJ_PARIS <- PROJ_PARIS >< Département Nod= No_dept DIR_DE_PROJ_PARIS <- DEPT_DE_PROJ_PARIS >< Employé No_dir= No_ss RESULTAT <- No_proj, No_dept, Nom_emp, Adresse_emp, Date_naiss (DIR_DE_PROJ_PARIS)
Arbre algébrique (Requête 2)
Requête 3 Donner le nom des employés qui travaillent sur tous les projets du departement Solution textuelle PROJ_DE_DEPT5 <- No_proj ( Nod=5 (Projet)) EMP_PROJ <- No_ss, No_projet(Travaille_sur) EMP_PROJETS_DEPT5 <- EMP_PROJ PROJ_DE_DEPT5 RESULTAT <- Nom_emp (EMP_PROJETS_DEPT5 >< Employé) No_ss = No_ss
Arbre algébrique (Requête 3)
Requête 4 Donner la liste des numéro de projets sur lesquels travaille "Karl", soit en tant que directeur soit en tant qu'exécutant Solution textuelle EMP_KARL <- Prénom_emp="Karl" (Employé) TRAVAILLEUR_KARL No_projet (EMP_KARL >< Travaille_sur) No_ss = No_ss DEPT_DIRIGES_KARL No_dept (EMP_KARL >< Département) No_ss = No_dir PROJ_DIR_KARL <- No_projet (DEPT_DIRIGES_KARL >< Projets) No_dept = No_d RESULTAT <- TRAVAILLEUR_KARL PROJ_DIR_KARL
Arbre algébrique (Requête 4)
Requête 5 Donner le nom des employés qui ne travaillent sur aucun projet Solution textuelle TOUS_EMP <- No_ss (Employé) EMP_SUR_PROJ <- No_ss (Travaille_sur) EMP_SANS_PROJ <- TOUS_EMP - EMP_SUR_PROJ RESULTAT <- Nom_emp (EMP_SANS_PROJ >< Employé) No_ss = No_ss
Arbre algébrique (Requête 5)
Requête 6 Donner le nom des directeurs qui travaillent au moins sur un projet Solution textuelle DIREC <- No_dir (Département) TRAV <- No_ss (Travaille_sur) RESULTAT <- Nom_emp ((DIREC TRAV) >< Employé) No_ss = No_ss
Arbre algébrique (Requête 6)
Optimisation de requêtes On peut répondre de diverses façon à une même requête Optimiser = choisir la meilleure façon
Exemple: Requête 1
Facteurs déterminants Ordre d'exécution des opérations algébriques Algorithme implantant les opérations algébriques Placement des données sur le disque Taille des relations intermédiaires
Restructuration Règles Propriétés Exécuter les opérateurs unaires le plus tôt possible (restriction, projection) => diminution de la taille des relations Exécuter les jointures le plus tard possible Propriétés Associativité des jointures Commutativité restriction / projection Commutativité restriction / jointure Commutativité projection / jointure