La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Bases de données avancées

Présentations similaires


Présentation au sujet: "Bases de données avancées"— Transcription de la présentation:

1 Bases de données avancées
Madjid Meziane

2 Objectifs du cours BD relationnelles BD objet BD Relationnel Objet
XML et les BDs (Web) Entrepôts de données, fouilles de données

3 Bases de données et SGBD relationnels (1)
Une base de données représente un ensemble de données d’entreprise, mémorisé par un ordinateur, organisé selon un modèle de données accessible à de nombreuses personnes. Un Système de Gestion de Bases de Données (SGBD) représente un ensemble coordonné de logiciels permettant de décrire, mémoriser, manipuler, traiter, interroger les ensembles de données constituant la base.

4 Bases de données et SGBD relationnels (2)
Un SGBD doit satisfaire 5 conditions : être une bonne représentation du monde réel, fiable et à jour : des contraintes d’intégrité doivent assurer un état cohérent de la base. assurer la non-redondance de l’information : une information doit être implantée une et une seule fois. maintenir l’indépendance des programmes par rapport aux données, permettant aux applications de partager les mêmes données.

5 Bases de données et SGBD relationnels (3)
assurer la sécurité et la confidentialité des données : les données doivent être protégées contre les accès non autorisés et contre les pannes intempestives. autoriser le partage des données, permettant à plusieurs utilisateurs de modifier des données quasiment en même temps tout en assurant un résultat cohérent pour un utilisateur consultant la base.

6 Modules d’un SGBD Module d’implantation physique
Dictionnaire de données Administration Langage d ’interrogation et de manipulation Utilisation Module d’optimisation de requêtes Module d’intégrité et de confidentialité SGBD BASE DE DONNEES

7 Métiers associés aux BD

8 Historique des SGBD (1) Première génération (années 70) : modèle hiérarchique ou modèle en réseau. Modèle hiérarchique : les données sont représentées sous forme d’une hiérarchie arborescente à plusieurs niveaux. Chaque niveau est constitué d’un ou de plusieurs groupes de données pouvant se décomposer à leur tour. Modèle en réseau : extension du précédent, où les liens entre objets peuvent exister sans restrictions, indépendamment de la structure de l’arbre.

9 Historique des SGBD (2) Deuxième génération (années 80) : modèle relationnel. Les données sont représentées sous forme tabulaire, avec indépendance totale entre les logiciels et le support de stockage. Langages spécifiques permettant d’accéder aux données de manière assez naturelle : QBE, SQL. Quelques SGBD relationnels : ORACLE, INGRES, SYBASE, DBASE2, ACCESS, mySQL. Troisième génération (fin des années 90) : modèle objets. SGBD objets : O2, ORACLE.

10 Objectifs d’un modèle relationnel
Les principaux objectifs d’un modèle relationnel sont : utiliser des structures de données simples  une table relationnelle est un tableau proposer des langages permettant d’accéder aux données de manière assez naturelle  QBE, SQL proposer l’indépendance entre les données et les traitements exécutés sur ces données permettre à chaque utilisateur d’avoir une vue de la base de données appropriée à ses besoins.

11 Le modèle relationnel (1)
Le concept de base du modèle relationnel est la relation, de structure tabulaire Une relation a plusieurs attributs  Le degré de la relation est le nombre de ces attributs Exemple : la relation PRODUIT, de degré 3, comporte les attributs : num_produit, nom_produit et stock

12 Le modèle relationnel (2)
Occurrence : chaque ligne du tableau (un n-uplet) correspond à une occurrence de la relation. Cardinalité : nombre d’occurrences de la relation dans la base. La relation PRODUIT est donc de cardinalité 4. Clé : chaque relation contient un attribut particulier (ou un ensemble d’attributs) appelé clé, dont la valeur permet de distinguer une occurrence de toutes les autres. Pour la relation PRODUIT, l’attribut clé est num_produit.

13 Le modèle relationnel (3)
On représente symboliquement une relation R par un schéma SR de la forme : R(clé, attribut 2, attribut 3, …, attribut n). On aura donc : PRODUIT(num_produit, nom_produit, stock).

14 Exemple de base de données relationnelle (1)
Relation VOL (numvol, depart, arrivee, numav, numpil, jdep, hdep, jarr, harr) numvol : numéro du vol (clé) depart : ville de départ arrivee : ville d’arrivée numav : numéro d’avion numpil : numéro du pilote jdep : jour de départ (clé) hdep : heure de départ jarr : jour d’arrivée harr : heure d’arrivée

15 Exemple de base de données relationnelle (2)
Relation PILOTE(numpilote, nom, prenom) numpilote : numéro du pilote (clé) nom : nom du pilote prenom : prénom du pilote Relation AVION(numavion, type, cap) numavion : numéro de l’avion (clé) type : type de l’avion cap : capacité de l’avion

16 Exemple de base de données relationnelle (3)
Les liens entre ces relations sont appelés des jointures : l’attribut NUMAV de VOL représente le même type d’information que l’attribut NUMAVION de AVION. On écrira : VOL.NUMAV = AVION.NUMAVION l’attribut NUMPIL de VOL représente le même type d’information que l’attribut NUMPILOTE de PILOTE. On écrira : VOL.NUMPIL = PILOTE.NUMPILOTE

17 Éléments de SQL, le langage relationnel

18 Éléments de SQL, le langage relationnel (1)
Le langage SQL (Structured Query Language) est le langage d’interrogation le plus utilisé. Il permet de déclarer les relations, de créer les occurrences, de les modifier, d’interroger et de manipuler les SGBD relationnelles. La forme générale d’une interrogation SQL (appelée une requête) est : SELECT liste d’attributs FROM noms de relations WHERE conditions ; Dans les conditions de la clause optionnelle WHERE, on peut utiliser les opérateurs AND et OR.

19 Éléments de SQL, le langage relationnel (2)
Recherche des noms et prénoms des pilotes SELECT NOM, PRENOM FROM PILOTE  réalise une projection, c’est-à-dire ne prend qu’un sous-ensemble des attributs de la relation PILOTE.

20 Éléments de SQL, le langage relationnel (3)
Recherche des attributs des pilotes de prénom Georges SELECT * FROM PILOTE WHERE PRENOM= 'Georges' ; réalise une sélection, c’est-à-dire affiche tous les attributs de la relation PILOTE mais ne prend qu’une partie des occurrences, celles vérifiant la condition : prenom= 'Georges'.

21 Éléments de SQL, le langage relationnel (4)
Attributs croisés de tous les pilotes et de tous les vols SELECT * FROM VOL, PILOTE ; réalise le produit cartésien de la relation VOL par la relation PILOTE, en combinant toutes les occurrences de VOL avec toutes les occurrences de PILOTE.

22 Éléments de SQL, le langage relationnel (5)
Recherche sur les vols et sur les pilotes effectifs de ces vols SELECT * FROM PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL réalise une jointure naturelle, c’est-à-dire une sélection sur le produit cartésien de la relation VOL par la relation PILOTE, sélection réalisée par l’égalité d’attributs identiques : PILOTE.NUMPILOTE = VOL.NUMPIL.

23 Éléments de SQL, le langage relationnel (6)
Numéro des vols et noms des pilotes de ces vols SELECT VOL.NUMVOL, PILOTE.NOM FROM PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL réalise une projection à partir d’une jointure naturelle.

24 Éléments de SQL, le langage relationnel (7)
Numéro des vols sur l’avion de numéro ‘A0006’ et noms des pilotes de ces vols SELECT VOL.NUMVOL, PILOTE.NOM FROM VOL, PILOTE WHERE VOL.NUMPIL = PILOTE.NUMPILOTE AND VOL.NUMAV='A0006' ; réalise une projection d’une sélection sur une jointure naturelle, sélection réalisée par une condition sur un attribut : VOL.NUMAV='A0006'.

25 Éléments de SQL, le langage relationnel (8)
Numéros de vols, types d’avion, capacités et noms des pilotes de ces vols SELECT VOL.NUMVOL, AVION.TYPE, AVION.CAP, PILOTE.NOM FROM AVION, PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND VOL.NUMAV = AVION.NUMAVION réalise une projection sur le résultat de deux jointures naturelles entre trois relations.

26 Éléments de SQL, le langage relationnel (9)
Numéros de vols, types d’avion, capacités et noms des pilotes des vols de capacité comprise entre 200 et 350 Deux formulations possibles : 1) SELECT VOL.NUMVOL, AVION.TYPE, AVION.CAP, PILOTE.NOM FROM AVION, PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND VOL.NUMAV = AVION.NUMAVION AND (AVION.CAP BETWEEN 200 AND 350)

27 Éléments de SQL, le langage relationnel (10)
2) SELECT VOL.NUMVOL, AVION.TYPE, AVION.CAP, PILOTE.NOM FROM AVION, PILOTE , VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND VOL.NUMAV = AVION.NUMAVION AND AVION.NUMAVION IN (SELECT AVION1.NUMAVION FROM AVION AVION1 WHERE (AVION1.CAP BETWEEN 200 AND 350))

28 Éléments de SQL, le langage relationnel (11)
Les fonctions ensemblistes MAX fournit la valeur maximale d’un attribut Capacité de l’avion de capacité maximale SELECT MAX(AVION.CAP) FROM AVION Capacité maximale des avions allant à Madrid SELECT MAX(AVION.CAP) FROM AVION, VOL WHERE AVION.NUMAVION = VOL.NUMAV AND (VOL.ARRIVEE='Madrid')

29 Éléments de SQL, le langage relationnel (12)
MIN fournit la valeur minimale d’un attribut Capacité de l’avion de capacité minimale SELECT MIN(AVION.CAP) FROM AVION Heure de départ du premier vol du 15/5/2004 SELECT MIN(VOL.HDEP) FROM VOL WHERE (VOL.JDEP={d ' '})

30 Éléments de SQL, le langage relationnel (13)
COUNT permet de compter le nombre d’occurrences Nombre d’avions au départ de Paris SELECT COUNT(VOL.DEPART) FROM VOL WHERE (VOL.DEPART='Paris') Nombre de Boeing 747 SELECT COUNT(AVION.NUMAVION) FROM AVION WHERE (AVION.TYPE='Boeing 747')

31 Éléments de SQL, le langage relationnel (14)
SUM permet d’additionner des attributs Capacité totale des avions SELECT SUM(AVION.CAP) FROM AVION Capacité totale des avions au départ de Paris FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION AND (VOL.DEPART='Paris')

32 Éléments de SQL, le langage relationnel (15)
AVG permet de calculer des moyennes d’attributs Moyenne des capacités des Boeing 747 SELECT AVG(AVION.CAP) FROM AVION WHERE (AVION.TYPE='Boeing 747') Moyenne des capacités des avions à destination d’Amsterdam SELECT AVG(AVION.CAP) FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION AND (VOL.ARRIVEE='Amsterdam')

33 Éléments de SQL, le langage relationnel (16)
VAR permet de calculer des variances d’attributs Variance des capacités des avions SELECT VAR(AVION.CAP) FROM AVION Variance des capacités des Boeing 747 WHERE (AVION.TYPE='Boeing 747')

34 Éléments de SQL, le langage relationnel (17)
Autres fonctions DISTINCT permet de n’obtenir qu’une seule fois chaque occurrence Types des avions SELECT DISTINCT AVION.TYPE FROM AVION Différentes capacités des avions SELECT DISTINCT AVION.CAP

35 Éléments de SQL, le langage relationnel (18)
ORDER BY permet d’ordonner par ordre croissant ou décroissant (DESC) Type et capacité des avions par type croissant (ordre alphabétique) SELECT DISTINCT AVION.TYPE, AVION.CAP FROM AVION ORDER BY AVION.TYPE Liste des pilotes par ordre alphabétique décroissant SELECT DISTINCT PILOTE.NOM FROM PILOTE ORDER BY PILOTE.NOM DESC

36 Éléments de SQL, le langage relationnel (19)
LIKE permet d’utiliser des jokers dans les chaînes de caractères _ veut dire un caractère quelconque % veut dire un nombre quelconque de caractères Numéros des vols dont le nom du pilote a pour deuxième lettre la lettre “ r ” SELECT VOL.NUMVOL FROM PILOTE, VOL WHERE PILOTE.NUMPILOTE = VOL.NUMPIL AND (PILOTE.NOM LIKE '_r%')

37 Éléments de SQL, le langage relationnel (20)
Villes de départ dont la deuxième lettre est la lettre “ o ” SELECT DISTINCT VOL.DEPART FROM VOL WHERE VOL.DEPART LIKE '_o%')

38 Éléments de SQL, le langage relationnel (21)
GROUP BY permet d’effectuer des groupements Sommes des capacités des avions, groupés par ville de départ SELECT VOL.DEPART, SUM(AVION.CAP) FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION GROUP BY VOL.DEPART

39 Éléments de SQL, le langage relationnel (22)
GROUP BY est souvent utilisé avec la clause HAVING pour spécifier des caractéristiques du groupement : Heure de départ, ville de départ et d’arrivée du premier vol du 15/5/2004 SELECT VOL1.HDEP, VOL1.DEPART, VOL1.ARRIVEE FROM VOL, VOL VOL1 WHERE (VOL.JDEP={d ' '}) AND (VOL1.JDEP={d ' '}) GROUP BY VOL1.HDEP, VOL1.DEPART, VOL1.ARRIVEE HAVING (VOL1.HDEP=MIN(VOL.HDEP))

40 Éléments de SQL, le langage relationnel (24)
BETWEEN a AND b teste un intervalle Départ et arrivée des vols partant entre 10 h et 14 h 30 SELECT DISTINCT VOL.DEPART, VOL.ARRIVEE FROM VOL WHERE (VOL.HDEP BETWEEN '10:00' AND '14:30')

41 Éléments de SQL, le langage relationnel (25)
Départ et arrivée des vols de capacité comprise entre 250 et 410 SELECT VOL.DEPART, VOL.ARRIVEE, AVION.CAP FROM AVION, VOL WHERE VOL.NUMAV = AVION.NUMAVION AND (AVION.CAP BETWEEN 250 AND 410)

42 Éléments de SQL, le langage relationnel (26)
IS NULL et IS NOT NULL permettent de vérifier si l’attribut est renseigné ou pas Numéros des vols auxquels sont affectés des pilotes SELECT VOL.NUMVOL FROM VOL WHERE (VOL.NUMPIL IS NOT NULL)

43 Fonctionnalités des SGBD relationnels

44 Fonctionnalités des SGBD relationnels (1)
Un SGBD est dit relationnel s’il respecte une norme composée de trois conditions : toutes les informations sont représentées par des valeurs contenues dans des relations (tables). l’utilisateur n’a pas à établir des pointeurs entre les relations (les jointures établissent ces relations). le SGBD permet la sélection d’occurrences (sélection), la sélection d’attributs (projection) et l’opération de jointure.

45 Fonctionnalités des SGBD relationnels (2)
Un SGBD relationnel est dit totalement relationnel s’il respecte en outre les deux conditions suivantes : il permet d’utiliser les (autres) opérateurs de l’algèbre relationnelle (excepté la division). il permet de prendre en compte la contrainte d’unicité des clés et l’intégrité référentielle. Query est un SGBD relationnel, mais pas totalement relationnel car il ne gère pas les clés et ne respecte pas l’intégrité référentielle. ACCESS est totalement relationnel (problème d’unicité des clefs et d’intégrité référentielle à gérer).

46 Base et métabase Une base de données comporte des relations, dont les descriptions sont elles-mêmes mémorisées dans une base de données appelée métabase. Si on crée une nouvelle relation, on agit sur la métabase ; si on crée une occurrence d’une relation, on agit sur la base. Des mots différents sont employés par SQL pour différencier la base destinataire : ainsi, CREATE crée une relation et agit donc sur la métabase, tandis qu’INSERT crée une occurrence et agit sur la base.

47 Gestion de la métabase : création de relations
La plupart des SGBD permettent de créer les relations de manière interactive à l’aide de fenêtres de dialogue et d’assistants (Query, Access). La création d’une relation est cependant prévue en SQL via l’instruction CREATE TABLE (mySQL). Lors de la création d’une relation, de nombreux SGBD imposent de préciser le (les) attribut(s) clé (Access, mySQL). Une relation peut avoir une clé principale (un ou plusieurs attributs) et d’autres clés secondaires. La clé principale assure qu’il est impossible de donner la même clé à deux occurrences différentes de la même relation.

48 Gestion de la métabase : : gestion des clés
Si la déclaration de la relation est faite directement en SQL (mySQL), la clé principale est signalée par PRIMARY KEY et les clés secondaires par UNIQUE : CREATE TABLE Etudiant num_etudiant NUMBER(6) NOT NULL, PRIMARY KEY, nom CHAR(20), adresse CHAR(30), date_naissance DATE, code_diplôme NUMBER(3), num_ss NUMBER(13) UNIQUE ;

49 Gestion de la métabase : gestion des clés
Si l’on souhaite que la clé principale soit composée de plusieurs attributs, elle doit alors être définie à la fin de l’instruction de la manière suivante : CREATE TABLE Etudiant num_etudiant NUMBER(6) NOT NULL, nom CHAR(20), adresse CHAR(30), date_naissance DATE, code_diplôme NUMBER(3), num_ss NUMBER(13) NOT NULL, PRIMARY KEY(num_etudiant, num_ss) ;

50 Gestion de la métabase : intégrité référentielle
Lorsque les relations sont créées, les jointures naturelles entre ces relations doivent être déclarées - avant d’effectuer une requête (Access) ou dans la requête (Query, mySQL). L’intégrité référentielle est respectée si, lors de la création d’une occurrence d’une relation dont un attribut fait référence à un attribut clé d’une autre relation, la valeur correspondante de ce dernier attribut est déjà définie. Exemple : puisqu’une occurrence de la relation VOL  comporte les attributs numav et numpil, cette occurrence ne peut être créée que si les occurrences de PILOTE et AVION auxquelles elle fait référence existent déjà.

51 Gestion de la métabase : intégrité référentielle
Il faut donc (par exemple) que l’occurrence de PILOTE et que l’occurrence de AVION existent avant que l’on puisse créer l’occurrence de VOL.

52 Gestion de la métabase : modification de relations
On peut généralement modifier une relation par des fenêtres de dialogue (manière graphique). Mais SQL permet de modifier une relation par l’instruction ALTER, suivie d’une spécification de l’opération à effectuer. L’ajout d’un attribut est déclaré par le mot-clé ADD, la modification d’un attribut par MODIFY : ALTER TABLE Etudiant ADD (moyenne NUMBER(2)) ; ALTER TABLE Etudiant MODIFY adresse CHAR(100) ; La suppression d’une relation se fait par DROP TABLE Exemple : DROP TABLE Etudiant ;

53 Insertion, suppression et modification d’occurrences
Gestion de la base Insertion, suppression et modification d’occurrences L’insertion d’une occurrence par SQL se fait grâce à INSERT : INSERT INTO TABLE Etudiant VALUES (.., …,…,…) La suppression d’une occurrence se fait par DELETE : DELETE FROM TABLE Etudiant WHERE num_etudiant = … (valeur de la clé précisée) La modification d’une occurrence se fait par UPDATE : UPDATE Etudiant SET adresse=… WHERE num_etudiant = … FIN COURS 1


Télécharger ppt "Bases de données avancées"

Présentations similaires


Annonces Google