1 / 37

Bases de données avancées

Najib OURADI- Insea 2013-2014. Bases de données avancées. Rappel 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

josh
Download Presentation

Bases de données avancées

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Najib OURADI-Insea 2013-2014 Bases de données avancées

  2. Rappel 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…

  3. 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…) • Très bon support théorique mais Modèle « plat » • Difficile d ’exprimer des choses structurées (Première forme normale) • Difficile de naviguer dans la structure (Jointure) • Sémantique insuffisante

  4. Insuffisance sémantique du modèle relationnel • 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.

  5. Une solution : les approches objet

  6. Une solution : les approches objet • Adoption du modèle objet en BD deux approches : • Partir du modèle objet en programmation et rajouter les propriétés BD • Persistance, transactions, reprise, langage de requêtes • SGBD orienté objet • Partir du modèle relationnel et rajouter les propriétés objet • Structures complexes, identité, encapsulation, héritage, … • SGBD objet-relationnel

  7. Propriété RICE du modèle objet • Réutilisation : • Héritage Multiple • Identité : • OID • Complexité : • Collections (SET, BAG, LIST, ARRAY) • Pointeurs REF et INVERSE • Encapsulation : • Attributs SET_VALUE et GET_VALUE • Méthodes

  8. Le modèle objet pur • Alternative au SGBD relationnels • Nouveau modèle de données: ODMG • Nouveau langage de requête: OQL • ODMG : modèle de données pour SGBD orientés objet • Le correspondant du modèle relationnel • BD = ensemble de collections d'objets • Collection d'objets: correspond à une classe • Chaque objet a un identifiant (oid) unique • Classe: définit le schéma (interface) et la collection d'objets de cette classe (extent) • Attributs: atomiques ou composés (set, bag, list, array, struct) • Associations: références (ou ensembles de références) vers d'autres objets • Méthodes: fonctions applicables aux objets de la classe • Très proche du modèle conceptuel entité-association

  9. Langage OQL • Langage déclaratif d ’interrogation : • Compatibilité avec l ’ordre SELECT de SQL-92 • Proposé par O2 Technology • Fonctionnalités générales : • tous les types ODMG et identité d ’objet • requête select … from … where … • polymorphisme de collections sources • imbrication de requêtes, requêtes nommées • appel d ’opérateurs et de méthodes • opérateurs ensemblistes (union, intersect, except) • opérateur universel (for all) • quantifieur existentialiste (exists) • order by, group by, fonctions d ’agrégat (count, sum, min, max, avg)

  10. Le modèle relationnel objet • Extension des SGBD relationnels : • Ajout au relationnel des propriétés les plus utiles de l'objet • Basées sur des BD fiables et longuement optimisées ont gagné la "guerre de l'objet" contre les SGBD orientés objet • Principales extensions : • Possibilité de créer des types complexes et des tables de types complexes • Ajout des types LOB pour données texte, multimédia, etc. • Identifiants d'objet et types référence • Possibilité de définir des types abstraits et des méthodes sur ces types • Héritage entre types

  11. Les Types Atomiques (SQL-92) • Build-In Type : • SQL-92 • DECIMAL, FLOAT, (NUMBER), … VARCHAR, DATE • LOB Long Object • CLOB (Character LOB) • BLOB (Binary LOB) : Chaîne d ’octets, le noyau du SGBD ne connaît pas la structure du BLOB • Usage : Stockage Multimédia (MPEG2, MP3, …) • BFILE • Stockage externe • SGF Multimédia (QoS, …)

  12. Types Complexes • Types structurés : • ROW: n-uplet, ligne de table • ROW(nom1 type1, …, nomntypen) • Remarque: Oracle utilise le mot clé OBJECT • ARRAY: tableau de n'importe quel type • type ARRAY [taille] • Autres collections: MULTISET (utilisation: type MULTISET) • Remarque: dans Oracle on peut utiliser aussi TABLE OF type • Exemple : Acteurs et films CREATE TYPE Film AS OBJECT(titre VARCHAR(30), année INTEGER); CREATE TYPE FilmsActeur AS TABLE OF Film; CREATE TABLE Acteur(nom VARCHAR(20), pays VARCHAR(15), films FilmsActeur)

  13. Création et manipulation des tables objet • Création des types et liens entre types (héritage, références) • Création des « corps » de types à travers la définition du contenu des méthodes déclarées • Création des tables à partir des types objet • Manipulation des données à travers un SQL étendu dans le sens de traitement des structures complexes (champs composés, tables imbriquées …)

  14. Syntaxe de Création de types • CREATE [ OR REPLACE ] TYPE [ schema. ]type_name [ OID 'object_identifier' ] [ invoker_rights_clause ] { { IS | AS } OBJECT | UNDER [schema.]supertype } [ sqlj_object_type ] [ ( attributedatatype [ sqlj_object_type_attr ] [, attributedatatype [ sqlj_object_type_attr ]... [, element_spec [, element_spec ]... ] ) ] [ [ NOT ] FINAL ] [ [ NOT ] INSTANTIABLE ] ;

  15. Cas pratique simpleEtape 1/3 • Création des types : • CREATE TYPE ADDRESS AS OBJECT ( street VARCHAR(60), city VARCHAR(30), state CHAR(2), zip_code CHAR(5) ) • CREATE TYPE PERSON AS OBJECT ( name VARCHAR(30), ssn NUMBER, addr ADDRESS ) • Le type person utilise le type address précédementcréé

  16. Cas pratique simpleEtape 2/3 • Création des tables : • CREATE TABLE persons OF PERSON • Créationd’une table d’objets à partir d’un type • CREATE TABLE employees ( empnumber INTEGER PRIMARY KEY, person_data REF PERSON, manager REF PERSON, office_addr ADDRESS, salary NUMBER ) • La table employees et liée à la table persons. Les champs REF contiennent les OID des objetspointés

  17. Cas pratique simpleEtape 3/3 • Manipulation des données : • Insertion : • INSERT INTO persons VALUES ( PERSON('Wolfgang Amadeus Mozart', 123456, ADDRESS('Am Berg 100', 'Salzburg', 'AT','10424'))) • INSERT INTO persons VALUES ( PERSON('Ludwig van Beethoven', 234567, ADDRESS('Rheinallee', 'Bonn', 'DE', '69234'))) • INSERT INTO employees (empnumber, office_addr, salary) VALUES ( 1001, ADDRESS('500 Oracle Parkway', 'RedwoodShores', 'CA', '94065'), 50000) • Mise à jour (Update) • UPDATE employees SET manager = (SELECT REF(p) FROM persons p WHERE p.name = 'Wolfgang Amadeus Mozart‘) • UPDATE employees SET person_data = (SELECT REF(p) FROM persons p WHERE p.name = 'Ludwig van Beethoven’)

  18. Cas pratique élaboréEtape 1/3 • Création de type avec méthodes (spécification) : • SQL> createor replace type Address_Typeas object (  street_addr1   varchar2(25),street_addr2   varchar2(25),city           varchar2(30),state          varchar2(2),zip_codenumber,memberfunctiontoStringreturn varchar2,mapmemberfunctionmapping_functionreturn varchar2 10  )

  19. Cas pratique élaboréEtape 2/3 • Création de type avec méthodes (corps) : • SQL> create or replace type body Address_Type asmemberfunctiontoString return varchar2isbegin if ( street_addr2 is not NULL ) then return street_addr1 || ' ' || street_addr2 || ' '  || city || ', ' || state || ' ' || zip_code;else return street_addr1 || ' ' || city || ', ' || state || ' ' || zip_code; end if; end;mapmemberfunctionmapping_function return varchar2isbegin  return to_char( nvl(zip_code,0), 'fm00000' ) ||lpad( nvl(city,' '), 30 ) ||lpad( nvl(street_addr1,' '), 25 ) ||lpad( nvl(street_addr2,' '), 25 );end;end;

  20. Cas pratique élaboréEtape 3/3 • Manipulation des données : • SQL> createtable people ( name           varchar2(10),home_addressaddress_type,work_addressaddress_type)SQL> createor replace type Address_Array_Type as varray(25) of Address_TypeSQL> alter table people addprevious_addressesAddress_Array_Type SQL> set describedepth all SQL> desc people

  21. Bases de données XML • XML est utilisé dans : • un contexte d'utilisation documentaire (OOO, word...) • échange de donnée, parfois complexes • Question légitime XML est-il un SGBD. Réponse : partiellement : • contient données, structures, langage de requête • Manque un stockage efficace, l’indexation, le transactionnel … • Réponse au besoin de stockage XML au niveau d’un SGBD : • Extension de BD relationnelles existantes (cas Oracle, Informix…), avec stockage interne/externe dans la base de données • BD dédiées à XML ou XML natives

  22. XPATH • XPath Expressions • Une expression Xpathdésigne un modèleselonlesquelscertains “noeuds” XML sontextraits • Les noeudspeuventêtre de différents types : • Racine (Root) • Element • Texte • Attribut • Commentaire • Processing instruction • Espace de noms

  23. XPATH – Exemple d’accès • On va illustrer les exemples d’accès XPATH à travers le fichier de données XML suivant : • <?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book>  <title lang="eng">Harry Potter</title>  <price>29.99</price></book><book>  <title lang="eng">Learning XML</title>  <price>39.95</price></book></bookstore>

  24. Sélection des noeuds

  25. XML Query (XQuery) • XQuery 1.0 est un language décrit par le W3C pour l’interrogation des données XML • Similaire au SQL • XQuerydéfinit un nouveau modèle de donnéesnommé :séquences: le résultat de chaque expression XQueryestune sequence • Les séquencesressemblent aux ensembles ramenézs par les requêtes SQL, maispeuventcontenir des doublons • UneSéquenceXqueryconsiste en des items atomiques (scalaires) ou des noeuds XML

  26. Les expressions XQuery • Ce sont des expressions sensibles à la casse • Il peuvent inclure : • Des expressions primaires (littéraux, variables, fonctions …) • Une expression Xpath • L’expression FLOWR (for, let, where , order by, return) • Les séquencesXquery (par exemple(1, 2, (3, 4, (5), 6), 7)) qui peuvent être associées aux opérateurs union, intersect par exemple • Les constructions directes (<a>33</a> par exemple) • Les constructions XML dynamiques () : l’expression Xquery<foo>{attribute toto {2+3}, element bar {"tata", "titi"}, text {" why? "}</foo> construit la donnée XML <foototo="5"><bar>tatatiti</bar> why? </foo> • Les expressions conditionnelles • Les expressions arithmétiques ou logiques • Les expressions avec quantificateur (existentiel ou universel) : • every $foo in doc("bar.xml")//Whatever satisfies $foo/@bar > 42 • some $toto in (42, 5), $titi in ("xyz12", "abc", 5) satisfies $toto = $titi • Les expressions régulières

  27. XQUERY – Exemple 1 • SELECT XMLQuery('for $i in ora:view("REGIONS"), $j in ora:view("COUNTRIES") where $i/ROW/REGION_ID = $j/ROW/REGION_ID and $i/ROW/REGION_NAME = "Asia" return $j' RETURNING CONTENT) AS asian_countries FROM DUAL; • ASIAN_COUNTRIES ROW> <COUNTRY_ID>AU</COUNTRY_ID> <COUNTRY_NAME>Australia</COUNTRY_NAME> <REGION_ID>3</REGION_ID> </ROW> <ROW> <COUNTRY_ID>CN</COUNTRY_ID> <COUNTRY_NAME>China</COUNTRY_NAME> <REGION_ID>3</REGION_ID> </ROW>

  28. XQUERY – Exemple 2 • CONNECT HR/HR • GRANT SELECT ON LOCATIONS TO OE • CONNECT OE/OE • SELECT XMLQuery( 'for $i in ora:view("OE", "WAREHOUSES")/ROW return <Warehouse id="{$i/WAREHOUSE_ID}"> <Location> {for $j in ora:view("HR", "LOCATIONS")/ROW where $j/LOCATION_ID eq $i/LOCATION_ID return ($j/STREET_ADDRESS, $j/CITY, $j/STATE_PROVINCE)} </Location> </Warehouse>' RETURNING CONTENT) FROM DUAL;

  29. XQUERY – Exemple 2 - Résultat XMLQUERY('FOR$IINORA:VIEW("OE","WAREHOUSES")/ROWRETURN<WAREHOUSEID="{$I/WAREHOUS -------------------------------------------------------------------------------- <Warehouse id="1"> <Location> <STREET_ADDRESS>2014 Jabberwocky Rd</STREET_ADDRESS> <CITY>Southlake</CITY> <STATE_PROVINCE>Texas</STATE_PROVINCE> </Location> </Warehouse> <Warehouse id="2"> <Location> <STREET_ADDRESS>2011 Interiors Blvd</STREET_ADDRESS> <CITY>South San Francisco</CITY> <STATE_PROVINCE>California</STATE_PROVINCE> </Location> </Warehouse>

  30. XQUERY – Exemple 3 • SELECT * FROM XMLTable( 'for $i in ora:view("OE", "WAREHOUSES")/ROW return <Warehouse id="{$i/WAREHOUSE_ID}"> <Location> {for $j in ora:view("HR", "LOCATIONS")/ROW where $j/LOCATION_ID eq $i/LOCATION_ID return ($j/STREET_ADDRESS, $j/CITY, $j/STATE_PROVINCE)} </Location> </Warehouse>');

  31. XQUERY – Exemple 3 - Résultat <Warehouse id="1"> <Location> <STREET_ADDRESS>2014 Jabberwocky Rd</STREET_ADDRESS> <CITY>Southlake</CITY> <STATE_PROVINCE>Texas</STATE_PROVINCE> </Location> </Warehouse> <Warehouse id="2"> <Location> <STREET_ADDRESS>2011 Interiors Blvd</STREET_ADDRESS> <CITY>South San Francisco</CITY> <STATE_PROVINCE>California</STATE_PROVINCE> </Location> </Warehouse>

  32. XMLType • XMLTypeest un type abstrait pour la manipulation native des données XML dans la base de données • XMLTypeest un type objet possédant des méthodes pour créer, extraire et indexer les données XML de la base • XMLTypeoffre des possibilitésd’accès aux données XML à travers le langage SQL • La fonctionnalitéXMLTypeestaussiofferte à travers un ensemble d’APIs PLSQL ou Java

  33. XMLType : principales méthodes

  34. XMLType : Exemples 1/3 Create table some_xml_table of xmltype; insert intosome_xml_table values ( xmltype(' <things> <numbers><item>1</item><item>59</item></numbers> <animals><item>bird</item><item>cat</item><item>dog</item></animals> </things> ')); Set long 1000 select sxt.object_value.getClobVal() fromsome_xml_tablesxt;

  35. XMLType : Exemples 2/3 CREATE TABLE xmltypetab OF XMLTYPE;CREATE TABLE shopping_cart(cart_idNUMBER,cart_data XMLTYPE, upd_date  DATE); INSERT INTO xmltypetabVALUES('<?xml version="1.0" encoding="utf-8"?>       <ShoppingCartDataxmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">         <Id>Amazon.com</Id><SiteId>1</SiteId>         <ProductId>100</ProductId>         <Quantity>2</Quantity>       </ShoppingCartData>');COMMIT;SELECT COUNT(*)FROM xmltypetabwhereexistsNode(object_value,'/ShoppingCartData/SiteId') = 1;

  36. XMLType : Exemples 3/3 • CREATE TABLE xmldemo OF XMLType;create table some_things of xmltype;INSERT INTO xmldemoVALUES (XMLType('<things><numbers><item>1</item><item>59</item></numbers><animals>      <item>bird</item>      <item>cat</item>      <item>dog</item>    </animals>          </things>'));INSERT INTO xmldemoVALUES (XMLType('<things><countries><item>Canada</item><item>Russia</item><item>Finland</item></countries><numbers>  <item>42</item> <item>2012</item> </numbers> </things>'));INSERT INTO xmldemoVALUES (XMLType('<things><cities><item>Vancouver</item><item>St. Petersburg</item><item>Helsinki</item>    </cities> <animals><item>mongoose</item><item>greygoose</item> </animals> </things>'));SELECT extract(object_value,'/things/animals/item[position()=2]') "2nd Animal » FROM xmldemo;

  37. Sources • Cours de M. Jacques Lemaitre ( Université du Sud Toulon-Var) • Cours de Didier DONSEZ (Université Joseph Fourier - Grenoble 1) • Cours Dan VODISLAV (Université de Cergy-Pontoise) • Serge Miranda 97 • Cours miage université de nantes

More Related