1. Introduction. Introduction au langage SQL3 (SQL 99) Plan. Sources du cours. 1. Introduction La norme SQL3 et ses composants



Documents pareils
Les Bases de Données et l Objet Introduction

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

A QUOI SERVENT LES BASES DE DONNÉES?

TP Contraintes - Triggers

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Hala Skaf-Molli. Nancy-Université 14 mai 2007

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données avancées

Bases de Données relationnelles et leurs systèmes de Gestion

Intégrité des données

Panorama des Bases de Données

Intégrité sémantique dans les bases de données relationnelles

Le Langage SQL version Oracle

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Le langage SQL (première partie) c Olivier Caron

Cours Bases de données 2ème année IUT

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Bases de données et sites WEB

OpenPaaS Le réseau social d'entreprise

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Olivier Mondet

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Panorama des Bases de Données

Le Langage De Description De Données(LDD)

Quelques aspects du Relationnel-Objet du SGBD Oracle

CREATION WEB DYNAMIQUE

1. Introduction. Bases de données Réparties, Fédérées et Réplication. Plan. Bibliographie du cours

Bases de données relationnelles

Gestion de base de données

Bases de données et sites WEB Licence d informatique LI345

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Notes de cours : bases de données distribuées et repliquées

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

PHP 5. La base de données MySql. A. Belaïd 1

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Bases de Données Avancées PL/SQL

INTEGRITE ET BD ACTIVES

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Les bases de données

Création et Gestion des tables

Cours Bases de données 2ème année IUT

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Bases de Données Avancées

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

//////////////////////////////////////////////////////////////////// Administration bases de données

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

I4 : Bases de Données

Java et les bases de données

Programmation d application Bases de données avec Java

Administration des bases de données. Jean-Yves Antoine

LE LANGAGE SQL2 1. INTRODUCTION

Corrigés détaillés des exercices

Langage SQL : créer et interroger une base

IFT3030 Base de données. Chapitre 1 Introduction

SQL Historique

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Bases de données relationnelles : Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Java DataBaseConnectivity

Le langage procédural PL-PGSQL

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Exercices sur SQL server 2000

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Historisation des données

Module BD et sites WEB

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Les BASES de DONNEES dans WampServer

TP11 - Administration/Tuning

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Programmer en JAVA. par Tama

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

UML et les Bases de Données

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

FileMaker 13. Guide de référence SQL

Introduction au Système de Gestion de Base de Données et aux Base de Données

Application web de gestion de comptes en banques

as Architecture des Systèmes d Information

Compétences Business Objects

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

Bases de données Cours 1 : Généralités sur les bases de données

Pour les débutants. langage de définition des données

1/ Présentation de SQL Server :

Présentation du PL/SQL

Rappel sur les bases de données

Génie Logiciel avec Ada. 4 février 2013

Bases de Données Réparties

Transcription:

Introduction au langage SQL3 (SQL 99) Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Avril 2013 La norme SQL3 Les triggers : normalisation Procédures stockées (PSM) Lʼobjet dans SQL3 Constructeurs de types et fonctions de SQL3 Conclusion Plan 1. Introduction La norme SQL3 et ses composants Les triggers : normalisation Spécifications de procédures stockées (PSM) 2. Lʼobjet dans SQL3 Les types abstraits (ADTs) Types tuple (ROW type) Les tables et lʼhéritage dans SQL3 3. Les types et fonctions de SQL3 Les types BLOBs et CLOBs Les constructeurs de types dans SQL3 Les types abstraits (ADTs) Tables imbriquées 4. Conclusion Bernard ESPINASSE Introduction à SQL3 1 Bernard ESPINASSE Introduction à SQL3 2 Sources du cours Livres : Gardarin G., «Bases de données objet et relationnel», Ed. Eyrolles, 1999 (ISBN : 2-212-09060-9). Cours de : Georges Gardarin Didier Donsez Christophides Vassilis 1. Introduction La norme SQL3 et ses composants Vue dʼensemble de SQL3 Les triggers : normalisation Spécifications de procédures stockées (PSM) Bernard ESPINASSE Introduction à SQL3 3 Bernard ESPINASSE Introduction à SQL3 4

SQL : quelques dates... 1970: invention du modèle relationnel (CODD) 1981: début des projets Système R et Ingres 1986: normalisation de SQL1 1990: extentions aux objets et règles 1990: normes SQL2 1999: normes SQL3 (SQL 99) Normalisation de SQL3 Un groupe international : ISO/IEC JTC1/SC 21/WG3 DBL Pays impliqués : Australia, Brazil, Canada, France, Germany, Japan Korea, The Netherlands, United Kingdom, United States ANSI X3H2 (http://www.ansi.org) Documents : ISO/IEC 9075:1992, "Database Languages - SQL" ANSI X3.135-1992, "Database Language SQL" Validation par le NIST (http://ncsl.nist.gov): En cours Bernard ESPINASSE Introduction à SQL3 5 Bernard ESPINASSE Introduction à SQL3 6 Les composants de SQL3 Part 1: Framework : description de la structure du document Part 2: Foundation : noyau de spécification, incluant les types de données abstraits (ADTs) (SQL Foundation 846p) Part 3: SQL/CLI : lʼinterface dʼappel client (Call Level Interface-SQL/CLI 181p) Part 4: SQL/PSM : le langage de spécifications de procédures stockées (Persistent SQL Module - SQL/PSM 143p) Part 5: SQL/Bindings : les liens SQL dynamique et embedded SQL repris de SQL-92 (Host Language Bindings -SQL Bindings 209p) Part 6: SQL/XA : Une spécification de lʼinterface XA pour moniteur transactionnel (Transaction monitor XA Interface SQL/XA 51p) Part 7: SQL/Temporal : Le support du temps dans SQL3 (Temporal Extension SQL/Temporal) Autres spécifications : ADTs multimédia (SQL/MM), RDA protocol (SQL/RDA) Bernard ESPINASSE Introduction à SQL3 7 Vue d ensemble de SQL3 SQL3 présente de multiples facettes en étant un langage : de définition de types de programmation de requêtes temporel... SQL3 est adapté à la gestion de données complexes dans des SGBD Objet-Relationnel : Nouveaux :! Illustra, UniSQL, ODB II, Versant, Relationnels étendus ("universels") :! Ingres, Oracle, DB2 UDB, Informix, Bernard ESPINASSE Introduction à SQL3 8

SQL3 : le modèle objet Types de données utilisateurs : Types abstraits de données (ADTs) avec ou sans OID (encapsulation structure de données + comportement) Type tuples nommés avec implicite OID (pas dʼencapsulation) Types distincts (types scalaires) Support dʼobjets complexes : constructeurs de type pour des types «collection» (set, lists et multisets) pour des types «tuples» (Row) et types «références» (REF) Héritage : Définition de sous-types et sous-tables Héritage multiple supporté Fonction et procédures définies par lʼutilisateur : Interne (dans SQL3) et externe (dans un langage de programmation) Support de large objets : BLOBs et CLOBs) La base de SQL3 Capacités de base (SQL/CLI) : Capacités de base SQL/PSM Triggers Types de données abstraits (ADT) Capacité orientées objet Capacité prérequises aux objets (SQL/PSM) : De définition dʼopérations complexes De stockage de procédures dans la base Dʼappels de procédures externes Bernard ESPINASSE Introduction à SQL3 9 Bernard ESPINASSE Introduction à SQL3 10 Les triggers : normalisation Création des triggers événement = INSERT, UPDATE, DELETE possibilité de déclencher avant ou après l'événement action = opération sur table avec éventuelle condition possibilité de référencer les valeurs avant ou après mise à jour Exemple : EMPLOYE (ID int, ancienneté int, salaire float) CUMUL (ID int, Augmentation float) CREATE TRIGGER AFTER UPDATE OF salaire ON employé /* événement */ REFERENCING OLD AS ancien_salaire, NEW AS nouveau_salaire WHEN (ancienneté > 5) /* condition */ UPDATE CUMUL /* action */ SET Augmentation = Augmentation + nouveau_salaire - ancien_salaire WHERE ID = employé.id Spécifications de procédures stockées (PSM) Langage de programmation de procédures : déclaration de variables assignation CALL and RETURN statements for SQL procedures conditionnels CASE, IF LOOP, WHILE and REPEAT statements for repeated execution of a block of SQL statements exceptions SIGNAL, RESIGNAL possibilité de procédures et fonctions externes Bernard ESPINASSE Introduction à SQL3 11 Bernard ESPINASSE Introduction à SQL3 12

2. Les objets dans SQL3 Les types abstraits (ADTs) Types tuple (ROW type) Les tables et lʼhéritage dans SQL3 Les objets dans SQL3 Extensibilité des types de données : les ADTs Définition de types abstraits (ADT) ADT avec ou sans référence (avec ou sans OID) Support dʼobjets complexes : Constructeurs de types (tuples, set, list, ) Utilisation de référence (OID) Héritage : Définition de sous-types Définition de sous-tables Bernard ESPINASSE Introduction à SQL3 13 Bernard ESPINASSE Introduction à SQL3 14 Les types abstraits (ADTs) Définition : types créés par lʼutilisateur Syntaxe : CREATE TYPE <nom ADT> <corps de lʼadt> <corps de lʼadt>! <OID option> ::= WITH OID [NOT] VISIBLE! objets sans OID par défaut! les OID peuvent être vus par les requêtes, contraintes et autres ADTs <subtype clause> ::= UNDER <supertype clause>! possibilité dʼhéritage multiple avec résolution de conflits explicite <member list>! <attribute definition> : attributs publics ou privés! <function declaration> : opérations publiques! <operator name list> : opérateurs surchargés! <ordering definition> : ordre (Equals, less, than, relative, hash)! <cast clause> : fonction de conversion de types! <procedure clause> : procedure avec corps défini dans SQL3 ou externe Bernard ESPINASSE Introduction à SQL3 15 Exemples d ADT Un type avec référence (avec OID) : CREATE TYPE WITH OID VISIBLE Address ( PUBLIC num INT, street CHAR(20), city CHAR(15), country CHAR(10), EQUALS DEFAULT, LESS THAN NONE, PUBLIC FUNCTION distance(a Address,b Address) RETURNS FLOAT PUBLIC FUNCTION fulladdr(a Address) RETURNS CHAR(45) Un type sans référence (sans OID) : CREATE TYPE Person ( PUBLIC name CHAR(50), address: Address, Nationality: VARCHAR, PRIVATE birth-date DATE, PUBLIC FUNCTION age (DATE, DATE) RETURNS INT) Domains of Attributes Un sous-type : CREATE TYPE Student UNDER Person (PUBLIC style VARCHAR) Bernard ESPINASSE Introduction à SQL3 16

Types tuple (ROW type) Types tuple CREATE TABLE employees (name CHAR(40), address ROW(street CHAR(30), city CHAR(20), zip ROW(original CHAR(5), plus4 CHAR(4)))); INSERT INTO employees VALUES('John Doe', ('2225 Coral Drive', 'San Jose', ('95124', '2347')))); Permet de stocker des tuples complets en variable et de les passer en argument à des fonctions (ici adresse) Types tuple nommé CREATE ROW TYPE account_t (acctno INT, cust REF(customer_t), type CHAR(1), opened DATE, rate DOUBLE PRECISION, balance DOUBLE PRECISION, ); CREATE TABLE account OF account_t (PRIMARY KEY acctno ); Un type tuple nommé peut être utilisé pour définir un type référence Les tables dans SQL3 Les tables peuvent avoir des attributs : de type ADT avec des valeurs complexes (SET, MULTISET, LIST, ROW) de type référence (REF <type> ou avec OID) Possibilité d'utiliser un type prédéfini : ADTs ou ROW types CREATE TABLE cars OF car ; Possibilité de définir un nouveau type : le type est celui des tuples de la table CREATE TABLE Customers OF NEW TYPE Customer (name VARCHAR, Chiffre_affaire MONEY) ; Possibilité de définir des sous-tables : CREATE TABLE Paintings UNDER Artifacts (Location REF(Museum)) Note : Location REF fait référence à un type tuple nommé Bernard ESPINASSE Introduction à SQL3 17 Bernard ESPINASSE Introduction à SQL3 18 Héritage dans SQL3 Au niveau des types : sous-types CREATE TYPE Student UNDER Person (PUBLIC style VARCHAR) Au niveau des classes : sous-classes CREATE TABLE person (name CHAR(20), sex CHAR(1), age INTEGER); CREATE TABLE employee UNDER person (salary FLOAT); CREATE TABLE customer UNDER person (account INTEGER); 3. Types et fonctions dans SQL3 Les types BLOBs et CLOBs Les constructeurs de types dans SQL3 Les fonctions de SQL3 Le parcours de référence Les tables imbriquées Bernard ESPINASSE Introduction à SQL3 19 Bernard ESPINASSE Introduction à SQL3 20

Support de large objets : Les types BLOBs et CLOBs)!Type BLOB (Binary Large Object)!Type CLOB (Character Large Object) Sont des types définis pour supporter des très gros objets Les instances de ces types sont stockées directement dans la BD CREATE TABLE employees... (id INTEGER, name VARCHAR(30), salary us_dollar, resume CLOB(75K), signature BLOB(1M), picture BLOB(12M)); Bernard ESPINASSE Introduction à SQL3 21 Les constructeurs de types de SQL3 Les constructeurs de base : collections SET(T), MULTISET(T), LIST(T) CREATE TYPE person (, prénoms LIST(varchar), tel SET(phone)) Les références dʼobjets : possibilité de référencer un objet créé sans OID CREATE TYPE car (number CHAR(9), color VARCHAR, owner REF(person)) Types tuples nommé ou non possibilité de référencer un objet créé sans OID! CREATE TYPE Artist UNDER Person (..., influences SET (ROW (name: CHAR(50), date DATE)));! CREATE ROW TYPE Museum(denomination VARCHAR, addr Address); Types distincts : déclare que 2 types équivalents doivent être traités comme 2 types se données différents! CREATE DISTINCT TYPE US_dollar AS DECIMAL(9,2)! CREATE DISTINCT TYPE Canadian_dollar AS DECIMAL(9,2) Constructeurs additionnels : stack, queue, array, insertable array (ex : texte) non intégrés dans le langage mais peuvent être ajoutés Les types paramétrés : possibilité de types paramétrés (TEMPLATE) Bernard ESPINASSE Introduction à SQL3 22 Les fonctions de SQL3 Définies par lʼutilisateur, associées à une base, un type, une table, Syntaxe : FUNCTION <function name> <parameter list> RETURNS <type> AS <F body> END FUNCTION <F body> = <SQL procedure> <file name> Exemple : FUNCTION fulladdr (a Address) RETURNS CHAR(45) AS BEGIN :z = findzip (a.street, a.city); RETURN (a.street a.city z); END ; END FUNCTION FUNCTION findzip (CHAR(20), CHAR(15)) RETURNS CHAR(10) AS EXTERNAL NAME ʻ./findzip.soʼ LANGUAGE C; END FUNCTION Les fonctions de SQL3 (suite) Langage de programmation : SQL et SQL3 PSM, Langage externe Appel de fonctions : SELECT r.name FROM emp j, emp r WHERE j.name = 'Joe' and distance (j.location,r.location) < 1 ; Nom de lʼemployé le plus proche de Joe - appel de la fonction «distance «Note : Address Column est un ADT Bernard ESPINASSE Introduction à SQL3 23 Bernard ESPINASSE Introduction à SQL3 24

Le parcours de référence Possibilité d'appliquer les fonctions Ref et DeRef (implicite) CREATE TABLE cars OF TYPE car SELECT c.owner.name FROM cars c WHERE color = 'red' Possibilité de cascader la notation pointée SELECT dname FROM dept WHERE 1985 IN auto.years Généralisation possible aux chemins multiples SELECT dname FROM dept WHERE autos.(year=1985 and name = 'Ford') Toute collection peut être utilisée en place d'une table Tables imbriquées Services N Chef Adresse Employés Dépenses 24 Paul Versailles 25 Patrick Paris Nom Pierre Marie Nom Eric Julie Age 45 37 Age 42 51 NDep NDep Montant 1 2600134 Livres 2219 8700 Mission Montant Motif 3037 15400 Portable Motif 5 3000 Livres 7185 4000 Mission Bernard ESPINASSE Introduction à SQL3 25 Bernard ESPINASSE Introduction à SQL3 26 Comparaison avec le relationnel 4. Conclusion Comparaison avec le relationnel Exemple d'application aux Systèmes dʼinformation Géographiques Conclusion Accès en relationnel : SELECT effdate, name, vehicleyr FROM policy, customers, vehicles WHERE policy.custno = customers.custno AND policy.vehicleno = vehicles.vehicleno AND model = ʻferrariʼ Accès en objet-relationnel : SELECT p.effdate, p.name, p.vehicleyr FROM policy p WHERE p.carmodel.make = ʻferrariʼ Bernard ESPINASSE Introduction à SQL3 27 Bernard ESPINASSE Introduction à SQL3 28

Exemple d'application aux Systèmes d Information Geographiques (Gardarin) Type Geométrie : Point, ligne, polygone, chemin, rectangle, ellipse,... Fonctions : distance(geom,geom) returns real contained(geom,geom) returns bool overlaps(geom,geom) returns bool intersection(geom,geom) returns geom union(geom,geom) returns geom... Exemple d'application aux SIG (suite) (Gardarin) Images Type Library Différents formats : TIFF,GIF,FAX,CD,JPEG Fonctions : rotate(image,angle) returns image transpose(image) returns image flip(image) returns image enhance(image), oil_painting(image) plus(image,image), minus(image,image) intersection(image,image), union(image,image) histogram(image) returns(table) similarity(image,image) Bernard ESPINASSE Introduction à SQL3 29 Bernard ESPINASSE Introduction à SQL3 30 Conclusion : SQL3 un standard en évolution Proposition concurrence de lʼodmg : OQL Accord entre constructeurs de SGBD Objets Support du modèle pur objet de l'omg Variation de SQL traitant des collections imbriquées Accord ANSI X3 H2 et ODMG : Définition d'un langage d'interrogation intégrant relationnel et objet Convergence relationnel-objet vers SQL3 De nombreux points restent à fixer : Visibilité des OID? Identité des ROW type? Chemins multivalués? Intégrité référentielle? Bernard ESPINASSE Introduction à SQL3 31