Bases de données avancées Jacques Le Maitre Université du Sud Toulon-Var Ce cou
Bases de données avancées Jacques Le Maitre Université du Sud Toulon-Var Ce cours est mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Pas de Modification 2.0 France Nouvelles architectures Jacques Le Maitre Bases de données avancées 3 Architecture 3/3 pour le Web Serveur Web Serveur d’application (2) BD SGBD (3) Navigateur présentation Navigateur présentation (Clients) (1) Jacques Le Maitre Bases de données avancées 4 Entrepôt de données Entrepôt Intégrateur Source 1 Extracteur Source 2 Extracteur Jacques Le Maitre Bases de données avancées 5 Médiateur Médiateur Source 1 Adaptateur Source 2 Adaptateur requête réponse Jacques Le Maitre Bases de données avancées 6 Architecture pair à pair (P2P) pair pair pair pair pair pair requête réponse Du relationnel à l’objet relationnel Référence : Jim Melton, Advanced SQL:1999 – Understanding Object- Relational and Other Advanced Features, Morgan Kaufmann Publishers, 2003. Jacques Le Maitre Bases de données avancées 8 Sommaire Atouts du modèle relationnel Limites du modèle relationnel Une solution : l’approche objet SGBD objet purs Un compromis : l’objet-relationnel Etude de cas : PostgresQL Jacques Le Maitre Bases de données avancées 9 Atouts du modèle relationnel Un modèle simple pour l’utilisateur BD = ensemble de tables Un modèle formellement bien fondé algèbre → implantation et optimisation calcul → BD logique Une méthode de conception de schéma normalisation Un langage de manipulation de données universel SQL Un modèle de transactions sûr sérialisabilité et verrouillage à 2 phases Des SGBD commerciaux ou libres performants Access, DB2, Oracle, MySQL, PostgreSQL, SQL Server, Sybase… Jacques Le Maitre Bases de données avancées 10 Limites du modèle relationnel Structures de données limitées : table → ensemble de n-uplets de valeurs atomiques (nombres, chaînes de caractères…) Opérations sur les données exclues du modèle Sémantique insuffisante Jacques Le Maitre Bases de données avancées 11 Exemple BD décrivant un ensemble de personnes. Chaque personne a : un nom, une liste de prénoms, une date de naissance, une adresse personnelle, une adresse professionnelle, des amis dont chacun est une personne Une adresse est composée d'une rue, d'une ville et d'un code postale, Un ami est une personne, Un nom, un prénom, une rue, une ville et un code postal sont des chaînes de caractères. L'âge d'une personne est égal à la date courante moins sa date de naissance. Jacques Le Maitre Bases de données avancées 12 Une solution : l’approche objet Principaux concepts : objet classe héritage polymorphisme persistance Jacques Le Maitre Bases de données avancées 13 Sémantique de l’héritage Substitution Un étudiant est une personne car tout programme qui s’applique à une personne peut être appliqué à un étudiant. Spécialisation Un étudiant est une personne car il a toutes les propriétés (attributs et opérations) d’une personne plus des propriétés spécifiques. Restriction Un adolescent est une personne dont l’âge est compris entre 12 et 18 ans. Inclusion Un étudiant est une personne car l’ensemble des étudiants de la BD est un sous-ensemble de celui des personnes. Jacques Le Maitre Bases de données avancées 14 SGBD objets purs Un standard défini par l’ODMG (Object Data Management Group) : ODL → langage de définition de données OQL → langage de requêtes à la SQL Des prototypes : GemStone, O2, ObjectStore… Inconvénients : complexes à implanter peu compatibles avec les SGBD relationnels Jacques Le Maitre Bases de données avancées 15 Un compromis : l’objet-relationnel Principe : on ajoute au relationnel un certain nombre des concepts de l’approche objet, on conserve la notion de table et on étend SQL. Une nouvelle version de SQL : SQL:1999 qui étend et intègre SQL 92. Disponible partiellement sur DB2, Oracle, PostgreSQL, SQL Server, Sybase… Jacques Le Maitre Bases de données avancées 16 SQL:1999 Types distincts Types utilisateurs (UDT) Tables typées Héritage : hiérarchie de types hiérarchie de tables Méthodes associées aux UDT Jacques Le Maitre Bases de données avancées 17 SQL:1999 : types distincts CREATE TYPE taille AS INTEGER FINAL; CREATE TYPE poids AS INTEGER FINAL; Les valeurs d’attributs de type taille et celles de type poids ne sont pas comparables. Pour les rendre comparables, il faut les convertir en un type commun, par exemple : integer. Jacques Le Maitre Bases de données avancées 18 SQL:1999 : types définis par l’utilisateur (UDT) CREATE TYPE adresse AS ( rue ROW( nom CHARACTER VARYING(35), type CHARACTER VARYING(35)), ville CHARACTER VARYING(35), cp CHARACTER(5)) NOT FINAL; CREATE TABLE personnes AS ( nom CHARACTER VARYING(35), adr adresse); SELECT p.nom, p.adr.rue.nom FROM personnes p; Jacques Le Maitre Bases de données avancées 19 SQL:1999 : tables typées CREATE TYPE film AS ( titre CHARACTER VARYING(100), description CHARACTER VARYING(100), durée INTEGER) INSTANTIABLE NOT FINAL REF IS SYSTEM GENERATED INSTANCE METHOD note() RETURNS DECIMAL(2,1); CREATE TYPE acteur AS ( nom CHARACTER VARYING(100), role CHARACTER VARYING(100), film REF(film)) INSTANTIABLE NOT FINAL REF IS SYSTEM GENERATED; Jacques Le Maitre Bases de données avancées 20 SQL:1999 : tables typées CREATE TABLE films OF film (REF IS id_film SYSTEM GENERATED); CREATE TABLE acteurs OF acteur (REF IS id_acteur SYSTEM GENERATED film WITH OPTIONS SCOPE films); CREATE TABLE films_courts OF film (REF IS id_film SYSTEM GENERATED duree WITH OPTIONS CONSTRAINT CHECK (durée < 90)); Jacques Le Maitre Bases de données avancées 21 SQL:1999 : tables typées SELECT film->durée FROM acteurs WHERE acteur.nom = 'Audrey Tautou'; SELECT film->note() FROM acteurs WHERE acteur.nom = 'Audrey Tautou'; SELECT DEREF(film) FROM acteurs WHERE acteur.nom = 'Audrey Tautou'; Jacques Le Maitre Bases de données avancées 22 SQL:1999 : héritage CREATE TYPE dvd UNDER film AS ( editeur CHARACTER VARYING(35), bonus ROW( nom CHARACTER VARYING(35), durée CHARACTER VARYING(35)) ARRAY[10])) INSTANTIABLE NOT FINAL); CREATE TABLE dvds OF dvd UNDER films; Jacques Le Maitre Bases de données avancées 23 Etude de cas : PostgreSQL Constructeurs de n-uplets et de tableaux Types composites définis par l’utilisateur Fonctions définies par l’utilisateur Héritage de tables Types géométriques Règles Jacques Le Maitre Bases de données avancées 24 Types composites : définition CREATE TYPE adresse AS ( rue text, ville text, cp integer); CREATE TABLE personne ( nom text PRIMARY KEY, prenom text[], adr_perso adresse, adr_pro adresse); INSERT INTO personne VALUES ('Dupont', ARRAY ['Jean', 'Robert'], ROW ('rue des Amandiers', 'Toulon', 83100), ROW ('rue des Mimosas', 'Marseille', 13009)); Jacques Le Maitre Bases de données avancées 25 Types composites : accès SELECT (adr_pro).ville FROM personne WHERE nom = 'Dupont'; SELECT (p.adr_pro).ville FROM personne p WHERE p.nom='Dupont'; SELECT nom, prenom[1] FROM personne p WHERE (p.adr_perso).ville = 'Toulon'; Jacques Le Maitre Bases de données avancées 26 Types composites : modification UPDATE personne SET adr_perso = ROW ('rue des Mimosas', 'Marseille', 13009) WHERE nom = 'Dupont'; UPDATE personne SET adr_pro.ville = 'Toulon', adr_pro.cp = 83100 WHERE nom = 'Dupont'; Jacques Le Maitre Bases de données avancées 27 Fonctions : définition et appel CREATE FUNCTION no_dept(adresse) RETURNS integer AS 'SELECT $1.cp / 1000' LANGUAGE SQL; SELECT nom, no_dept((p).adr_perso) FROM personne p; Jacques Le Maitre Bases de données avancées 28 Héritage de tables CREATE TABLE document ( titre text, auteur text, annee integer); CREATE TABLE livre ( nb_pages integer) INHERITS (document); CREATE TABLE dvd ( duree interval) INHERITS (document); Jacques Le Maitre Bases de données avancées 29 Héritage de tables INSERT INTO dvd VALUES ('L\'equipier', 'Philippe Lioret', 2004, '94 min'); INSERT INTO livre VALUES ('Le lievre de Vatanen', 'Arto Paasilina', 1975, 236); Jacques Le Maitre Bases de données avancées 30 Héritage de tables SELECT titre FROM document; titre -------------------- Le lievre de Vatanen L'equipier SELECT p.relname, titre FROM document d, pg_class p WHERE d.tableoid = p.oid; relname | titre --------+--------------------- livre | Le lievre de Vatanen dvd | L'equipier Jacques Le Maitre Bases de données avancées 31 Types géométriques Points (x, y) Segments de droite ((x1, y1), (x2, y2)) Boîte ((x1, y1), (x2, y2)) Chemins ((x1, y1), ..., (xn, yn)) Polygones Chemin fermé Cercle ((x, y), r) Jacques Le Maitre Bases de données avancées 32 Types géométriques CREATE TABLE figure ( nom text PRIMARY KEY); CREATE TABLE rectangle ( representation box) INHERITS (figure); CREATE TABLE cercle ( representation circle) INHERITS (figure); Jacques Le Maitre Bases de données avancées 33 Types géométriques INSERT INTO rectangle VALUES ('R1', '((3, 2), (8, 5))'); INSERT INTO rectangle VALUES ('R2', '((6, 4), (9, 6))'); INSERT INTO cercle VALUES ('C1', '<(4, 9), 2>'); SELECT nom FROM figure; R1 R2 C1 Jacques Le Maitre Bases de données avancées 34 Types géométriques CREATE FUNCTION recouvre(text, text) RETURNS boolean AS 'SELECT (SELECT representation FROM rectangle WHERE nom = $1) && (SELECT representation FROM rectangle WHERE nom = $2)' LANGUAGE SQL; SELECT recouvre('R1', 'R2'); Jacques Le Maitre Bases de données avancées 35 Types géométriques CREATE FUNCTION surface(figure) RETURNS double precision AS '(SELECT area(c.representation) FROM rectangle c WHERE c.nom = $1.nom) UNION (SELECT area(c.representation) FROM cercle c WHERE c.nom = $1.nom)' LANGUAGE SQL; SELECT nom, surface(f) FROM figure f; Jacques Le Maitre Bases de données avancées 36 Règles CREATE TABLE societe ( nom text PRIMARY KEY, sigle text) CREATE TABLE employe ( nom text PRIMARY KEY, nom_societe text REFERENCES societe(nom), salaire float) CREATE TABLE localisation ( nom_societe text REFERENCES societe (nom), pays text) Jacques Le Maitre Bases de données avancées 37 Règles CREATE VIEW emp_soc_australienne( nom, sigle_societe, salaire) AS SELECT uploads/Ingenierie_Lourd/ bd-avancees.pdf
Documents similaires










-
43
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 03, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 1.0613MB