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



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

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

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

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

Intégrité des données

TP Contraintes - Triggers

Bases de données avancées

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

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Langage SQL : créer et interroger une base

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

Le Langage De Description De Données(LDD)

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

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

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

TP3 : Creation de tables 1 seance

Bases de Données Avancées PL/SQL

Gestion de base de données

Bases de données relationnelles

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

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

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

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

Corrigés détaillés des exercices

Présentation du PL/SQL

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

Les bases de données

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

Bases de données et sites WEB

Historisation des données

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

Bases de Données Réparties

Les déclencheurs. Version 1.0. Grégory CASANOVA

Devoir Data WareHouse

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

Configurer la supervision pour une base MS SQL Server Viadéis Services

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

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

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

Cours SQL. Base du langage SQL et des bases de données

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

CREATION WEB DYNAMIQUE

CATALOGUE FORMATIONS DOMAINE Bases de données

AGRÉGATION «ÉCONOMIE ET GESTION»

Introduction au PL/SQL Oracle. Alexandre Meslé

[BASE DE DONNEES MULTIMEDIA]

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Auto-évaluation Oracle: cours de base

OpenPaaS Le réseau social d'entreprise

Introduction aux Bases de Données 2004/2005

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

INTEGRITE ET BD ACTIVES

Quelques aspects du Relationnel-Objet du SGBD Oracle

BASES DE DONNEES TP POSTGRESQL

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

16H Cours / 18H TD / 20H TP

Le langage procédural PL-PGSQL

Systèmes de Gestion de Bases de Données

Mysql. Les requêtes préparées Prepared statements

Chapitre 10. Architectures des systèmes de gestion de bases de données

Paginer les données côté serveur, mettre en cache côté client

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)

Olivier Mondet

I4 : Bases de Données

MS SQL Express 2005 Sauvegarde des données

Compétences Business Objects

Partie II Cours 3 (suite) : Sécurité de bases de données

Support de cours «SGBD»

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

BTS/CGO P10 SYSTEME INFORMATION Année

Attaques applicatives

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

Création et Gestion des tables

Les bases de l optimisation SQL avec DB2 for i

1 Position du problème

Encryptions, compression et partitionnement des données

FileMaker 13. Guide de référence SQL

Les bases fondamentales du langage Transact SQL

APIs de table pour SQL Server

La présente publication est protégée par les droits d auteur. Tous droits réservés.

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

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

Support de Cours REQUÊTES TRANSACT-SQL DANS MICROSOFT SQL SERVER Stéphane N GUESSAN Groupe Pigier Abidjan Version 1.

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Présentation Windows Azure Hadoop Big Data - BI

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

Bases de Données Avancées

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

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

1. Base de données SQLite

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Transcription:

Cours Bases de données 2ème année IUT Cours 11 : Les tables comme objets (3ème partie) Anne Vilnat http://www.limsi.fr/individu/anne/cours

Plan 1 Tables objet Rappels Exemple d insertion Sélection 2 Vues Objet Définition Création Modifications et clause INSTEAD OF Modifications et vues objet...

Rappel sur les différents types d utilisation des objets Des objets pour : Définir un nouveau type d objet utilisé pour décrire un attribut d une table. Par exemple : une adresse constituée d un nom de rue, de ville,... pour décrire une personne une personne (qui a une adresse) intervenant dans une table d employés Définir une table dont toutes les lignes sont des objets d un type défini par l utilisateur. Par exemple : une table de personnes, dont toutes les lignes sont des objets de type personne Définir un type tableau qui intervient dans la définition d un attribut. Par exemple : un tableau d acteurs à donner comme type à l attribut acteur d une table Film Définir des tables imbriquées...

Rappel : Table dans une table Définition Il est possible d inclure des attributs de type table dans la structure d une table. Comment? En ayant dans la table principale une colonne qui soit une table. Pour une ligne de la table principale, il y a un nombre quelconque de lignes dans la table imbriquée. 2 étapes : création d un type table pour la table imbriquée création de la table principale (maître) contenant la table imbriquée.

Table dans une table : syntaxe Création du type table CREATE [OR REPLACE] TYPE nomtype AS TABLE OF déclaration de type; Création de la table maître CREATE TABLE nomtable ( nomcolonne 1 type 1, nomcolonne 2 type 2,... nomcolonne n type n ) NESTED TABLE nomcolonne i STORE AS nomtablebis; nomcolonne i est une colonne de type table qui fait le lien entre la table maître et la table imbriquée; nomtablebis est le nom de la table qui contient les lignes de la table imbriquée

Table dans une table : Exemple nomtable col 1 col 2 col i col n col 1 col 2 col i col n col 1 col 2 col i col n

Table dans une table : Exemple Exemple CREATE [OR REPLACE] TYPE listeacteursty AS TABLE OF ObIndividuTy; Exemple CREATE TABLE obfilmbis ( numfilm NUMBER(5), titre VARCHAR2(50), realisateur REF obindividuty. acteurs listeacteursty) NESTED TABLE acteurs STORE AS distributiontab;

Table dans une table : Exemple obindividu obfilmbis 43 Le mari de la coiffeuse 84 La liste de Schindler 18 César 1996 LECONTE PATRICE 2871 SPIELBERG STEVEN 2987 PAGNOL MARCEL 1064 ROCHEFORT JEAN 1040 GALIENA ANNA 2812 NEESON LIAM 2045 DEMAZIS ORANE 2132 RAIMU JULES 2045 FRESNAY PIERRE

Table dans une table : Exemple d insertion Exemple INSERT INTO obfilmbis SELECT 43, LE MARI DE LA COIFFEUSE, REF(a), listeacteursty(ref(b), REF(c)) FROM obindividu a, obindividu b, obindividu c WHERE a.numindividu=1996 AND b.numindividu=1064 AND c.numindividu=1040;

Table dans une table : Exemple d insertion (suite) Exemple INSERT INTO obfilmbis SELECT 84, LA LISTE DE SCHINDLER, REF(a), listeacteursty(ref(b)) FROM obindividu a, obindividu b WHERE a.numindividu=2871 AND b.numindividu=2812 ; INSERT INTO obfilmbis SELECT 18, CESAR, REF(a), listeacteursty(ref(b), REF(c), REF(d)) FROM obindividu a, obindividu b, obindividu c, obindividu d WHERE a.numindividu=2987 AND b.numindividu=2045 AND c.numindividu=2132 AND d.numindividu=2048;

Table dans une table : Exemple d insertion Ajout d une ligne dans une table imbriquée : Syntaxe INSERT INTO THE (sous interrogation) VALUES (...) Si Jean Rochefort (1064) jouait dans la liste de Schindler (84) : Exemple INSERT INTO THE (SELECT acteurs FROM obfilmbis WHERE NumFilm=84) SELECT REF(a) FROM obindividu a WHERE a.numindividu=1064;

Insertion dans la table imbriquée : Exemple Si Jean Rochefort jouait dans la liste de Schindler... obindividu obfilmbis 43 Le mari de la coiffeuse 84 La liste de Schindler 18 César 1996 LECONTE PATRICE 2871 SPIELBERG STEVEN 2987 PAGNOL MARCEL 1064 ROCHEFORT JEAN 1040 GALIENA ANNA 2812 NEESON LIAM 2045 DEMAZIS ORANE 2132 RAIMU JULES 2045 FRESNAY PIERRE

Table dans une table : Exemple de sélection Exemple SELECT * FROM obfilmbis; 43, LE MARI DE LA COIFFEUSE,?????? ListeActeursTy(???????????????) 84, LA LISTE DE SCHINDLER,??????, ListeActeursTy(????????????????) 18, CESAR,?????? ListeActeursTy(?????????????????)

Table dans une table : mise à jour et sélection Modification d une colonne dans une table imbriquée : Syntaxe UPDATE THE (sous interrogation) SET (...) [WHERE prédicat]; Sélection sur les colonnes de la table imbriquée Sélection SELECT liste attributs FROM THE (sous interrogation) [WHERE prédicat];

Vues objet Définition Pour créer une abstraction objet au-dessus de l organisation relationnelle : vue objet. Création en 3 étapes : 1 considérer un type objet qui décrit la structure de la vue objet 2 dans la requête : quels attributs de quelles tables relationnelles inclure 3 un identificateur d objet construit avec les attributs de tables relationnelles.

Vues objet : Création Syntaxe CREATE OR REPLACE VIEW nomvue OF nomtypeobjet WITH OBJET OID ( nomcolonne [, nomcolonne,... ] ) AS requête; Rappel CREATE TYPE obindividuty AS OBJECT ( NumIndividu NUMBER(5), Nom VARCHAR2(30), Prenom VARCHAR2(30) ); CREATE TYPE obfilmbisty AS OBJECT ( NumFilm NUMBER(5), Titre VARCHAR2(50), realisateur obindividuty );

Vues objet : Création Syntaxe CREATE OR REPLACE VIEW filmvue OF obfilmbisty WITH OBJET OID (numfilm ) AS SELECT f.numfilm, f.titre, obindividuty(i.numindividu, i.nom, i.prenom) FROM ens2004.film f, ens2004.individu i WHERE f.realisateur=i.numindividu;

Vues objet : Sélection Syntaxe SELECT * FROM filmvue WHERE ROWNUM <10; 43, LE MARI DE LA COIFFEUSE, ObIndividuTy(1996, LECONTE, PATRICE ) 84, LA LISTE DE SCHINDLER, ObIndividuTy(2871, SPIELBERG, STEVEN ) 18, CESAR, ObIndividuTy(2987 PAGNOL, MARCEL )

Clause INSTEAD OF et triggers Petit retour en arrière... Vues et triggers... Le déclencheur INSTEAD OF permet d effectuer des mises à jour sur les tables qui entrent dans la construction d une vue objet ou non. Il remplace un INSERT, UPDATE ou DELETE exécuté sur la vue. Si une vue a un trigger INSTEAD OF, toutes les vues construites à partir de cette vue doivent avoir des triggers INSTEAD OF. Par défaut une clause INSTEAD OF est associée à la clause FOR EACH ROW

Clause INSTEAD OF et triggers Syntaxe CREATE OR REPLACE TRIGGER nomdeclencheur INSTEAD OF événement [OR événement] ON nomvue FOR EACH ROW bloc PL/SQL;

Clause INSTEAD OF et triggers : Modifications, exemple Exemple CREATE OR REPLACE TRIGGER trfilm INSTEAD OF INSERT ON filmvue FOR EACH ROW BEGIN INSERT INTO ens2004.film VALUES(:NEW.numfilm, :NEW.titre, :NEW.realisateur.numindividu); INSERT INTO ens2004.individu VALUES(:NEW.realisateur.numindividu, :NEW.realisateur.nomindividu, :NEW.realisateur.prenomindividu); END;

Clause INSTEAD OF et triggers : Modifications, autre exemple Exemple CREATE TABLE clientsparis ( client NUMBER(6), adresse VARCHAR2(50), credit NUMBER(9,2) ); CREATE TABLE clientslyon ( client NUMBER(6), adresse VARCHAR2(50), credit NUMBER(9,2) ); CREATE TYPE clientty AS OBJECT ( client NUMBER(6), adresse VARCHAR2(50), credit NUMBER(9,2), lieu VARCHAR2(20) );

Clause INSTEAD OF et triggers : Modifications, autre exemple Exemple CREATE VIEW touslesclients (cli) AS (SELECT clientty (client, adresse, credit, Paris ) FROM clientsparis UNION ALL SELECT clientty (client, adresse, credit, Lyon ) FROM clientslyon

Clause INSTEAD OF et triggers : Modifications, autre exemple Exemple CREATE OR REPLACE TRIGGER InsertCli INSTEAD OF INSERT ON tousleslients FOR EACH ROW BEGIN IF (:NEW.client.lieu= Paris THEN INSERT INTO clientsparis VALUES(:NEW.cli.client,:NEW.cli.adresse, NEW:cli.credit ELSE INSERT INTO clientslyon VALUES(:NEW.cli.client,:NEW.cli.adresse, NEW:cli.credit END IF; END;

Clause INSTEAD OF et triggers : conclusion partielle Vues (non objet!) et triggers... en résumé La clause INSTEAD OF permet : de se débarasser des constraintes de modifiabilité des vues (on va directement faire les modifications sur les tables) de se débarasser des contraintes de tables en mutation...

Vues objet : Modifications Revenons aux vues objet... Vues objet et référence Dans un contexte objet, où des vues sont construites sur des tables relationnelles, il faut rétablir la liaison entre les instances de ces vues par la notion de référence. La fonction MAKE REFERENCE ( ) crée une référence sur une instance d une vue objet. Syntaxe MAKE REFERENCE (nomvue, nomattribut [, nomattribut])

Vues objet : Exemple de modifications Exemple vue objet CREATE VIEW obindividubisvue AS OF obindividuty WITH OBJECT OID (numindividu) AS SELECT numindividu, nomindividu, prenomindividu FROM ens2004.individu; CREATE OR REPLACE VIEW filmvue AS SELECT numfilm, titre, MAKE REFERENCE (obindividuty, realisateur) FROM ens2004.film f; SELECT numfilm, titre, DEREF(realisateur) FROM filmvue;