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

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

TP Contraintes - Triggers

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

Devoir Data WareHouse

Intégrité des données

Bases de données avancées

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

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

Création et Gestion des tables

Corrigés détaillés des exercices

CREATION WEB DYNAMIQUE

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

Langage SQL : créer et interroger une base

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

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

TP3 : Creation de tables 1 seance

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Bases de données relationnelles

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

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

Le Langage De Description De Données(LDD)

Les bases de données

Olivier Mondet

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

BTS/CGO P10 SYSTEME INFORMATION Année

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

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

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

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

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

Les BASES de DONNEES dans WampServer

SQL Historique

Chapitre 5 : Les procédures stockées PL/SQL

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

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

I4 : Bases de Données

Introduction au PL/SQL Oracle. Alexandre Meslé

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

[BASE DE DONNEES MULTIMEDIA]

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

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

Compétences Business Objects

Bases de Données Avancées PL/SQL

Gestion de base de données

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Introduction aux Bases de Données 2004/2005

1. Base de données SQLite

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

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

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

FileMaker 13. Guide de référence SQL

Historisation des données

Auto-évaluation Oracle: cours de base

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

Bases de Données Réparties

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

Présentation Windows Azure Hadoop Big Data - BI

Quelques aspects du Relationnel-Objet du SGBD Oracle

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

Comprendre les bases de données

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)

I. MySQL : Serveur et SGBD

Partie 0 : Gestion des tablespace et des utilisateurs... 3

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Systèmes de Gestion de Bases de Données

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

OpenPaaS Le réseau social d'entreprise

Le Langage SQL version Oracle

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

Présentation du PL/SQL

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Support de cours «SGBD»

TD n 10 : Ma première Base de Données

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

Les bases fondamentales du langage Transact SQL

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

Vincent Augusto

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Objectifs du TP : Initiation à Access

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

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Le langage procédural PL-PGSQL

BASES DE DONNEES TP POSTGRESQL

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Transcription:

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

Plan 1 Table objet ne contenant qu un type d objet Définition Insertion Requête Suppression partielle 2 Tableau dans une table Définition Insertion requête 3 Tables imbriquées Définition exemple

Table ne contenant qu un type d objets Définition Définir une table ne contenant qu un type d objet unique. Une ligne = une instance du type. Les colonnes = les attributs de premier niveau du type. Syntaxe CREATE TABLE nomtable OF nomtypeobjet;

de table objet Un type individu, et une table d individus... CREATE TYPE obindividuty AS OBJECT ( NumIndividu NUMBER(5), Nom VARCHAR2(30), Prenom VARCHAR2(30) ); CREATE TABLE obindividu OF obindividuty (NumIndividu PRIMARY KEY); À noter : pour préciser les contraintes, on reprend les attributs à spécifier, comme la clé primaire ici.

de table objet (2) Un film, et une table de films... CREATE TYPE obfilmty AS OBJECT ( NumFilm NUMBER(5), Titre VARCHAR2(50), realisateur REF obindividuty ); CREATE TABLE obfilm OF obfilmty (NumFilm PRIMARY KEY); À noter : on peut imbriquer les types (un type entre dans la description d un autre type). En fait realisateur fait référence (REF) à un objet du type obindividuty.

d insertion (1) Et on insère des lignes dans la table Individu... INSERT INTO obindividu VALUES (1996, LECONTE, PATRICE ); INSERT INTO obindividu VALUES (2871, SPIELBERG, STEVEN ); INSERT INTO obindividu VALUES (2987, PAGNOL, MARCEL ); À noter : ici, on crée indirectement des instances d individus...

d insertion (2) puis dans la table film INSERT INTO obfilm SELECT 43, LE MARI DE LA COIFFEUSE, REF(b) FROM obindividu b WHERE NumIndividu=1996; INSERT INTO obfilm SELECT 84, LA LISTE DE SCHINDLER, REF(a) FROM obindividu a WHERE NumIndividu=2871; INSERT INTO obfilm SELECT 18, CESAR, REF(c) FROM obindividu c WHERE NumIndividu=2987;

d insertion : en schéma obfilm 43, LE MARI DE LA COIFFEUSE 84 LA LISTE DE SCHINDLER 18 CESAR Référence vers un objet de type individu de la table obindividu obindividu 1996 LECONTE PATRICE 2871 SPIELBERG STEVEN 2987 PAGNOL MARCEL

de requête Dans la table film SELECT a.numfilm, a.titre, a.realisateur.prenomindividu, a.realisateur.nomindividu FROM obfilm a; 43, LE MARI DE LA COIFFEUSE, PATRICE, LECONTE 84, LA LISTE DE SCHINDLER, STEVEN, SPIELBERG 18, CESAR, MARCEL, PAGNOL

de requête (2) dans la table film SELECT titre, DEREF realisateur FROM obfilm; LE MARI DE LA COIFFEUSE, ObIndividuTy(1996, PATRICE, LECONTE ) LA LISTE DE SCHINDLER, ObIndividuTy(2871, STEVEN, SPIELBERG ) CESAR, ObIndividuTy(2987, MARCEL, PAGNOL ) Ici on parcourt le lien de référence à l envers...

Suppression Si on supprime un individu... DELETE FROM obindividu WHERE NumIndividu=2987 il disparaît des tables où il apparaissait : SELECT titre, DEREF realisateur FROM obfilm; LE MARI DE LA COIFFEUSE, ObIndividuTy( PATRICE, LECONTE ) LA LISTE DE SCHINDLER, ObIndividuTy( STEVEN, SPIELBERG ) CESAR

Tableau dans une table Définition Il est possible d inclure des attributs de type tableau dans la structure d une table. Comment? En déclarant un type tableau qui précise le type des éléments du tableau et le nombre maximal d éléments dans le tableau Syntaxe CREATE TYPE nomtype AS VARRAY (limite) OF type; Le type peut être : un type prédéfini (NUMBER, VARCHAR2, DATE,...), une référence REF, un type objet incluant éventuellement lui aussi des attributs de type tableau

On crée une liste d acteurs : CREATE TYPE acteursty AS VARRAY(10) OF obindividuty; et on modifie le type obfilmty : CREATE OR REPLACE TYPE obfilmty AS OBJECT ( NumFilm NUMBER(5), Titre VARCHAR2(50), realisateur REF obindividuty ), acteurs acteursty); et on peut créer une nouvelle table Film : CREATE TABLE obfilm OF obfilmty (NumFilm PRIMARY KEY);

À noter : ici, on crée indirectement des instances d individus... d insertion (1) Et on insère des lignes dans la table Individu... INSERT INTO obindividu VALUES (1064, ROCHEFORT, JEAN ); INSERT INTO obindividu VALUES (1040, GALIENA, ANNA ); INSERT INTO obindividu VALUES (2812, NEESON, LIAM ); INSERT INTO obindividu VALUES (2045, DEMAZIS, ORANE ); INSERT INTO obindividu VALUES (2132, RAIMU, JULES ); INSERT INTO obindividu VALUES (2045, FRESNAY, PIERRE );

d insertion : en schéma obindividu 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

d insertion (2) INSERT INTO obfilm SELECT 43, LE MARI DE LA COIFFEUSE, REF(a), acteursty(ref(b), REF(c)) FROM obindividu a, obindividu b, obindividu c WHERE a.numindividu=1996 AND b.numindividu=1064 AND c.numindividu=1040; INSERT INTO obfilm SELECT 84, LA LISTE DE SCHINDLER, REF(a), acteursty(ref(b)) FROM obindividu a, obindividu b WHERE a.numindividu=2871 AND b.numindividu=2812 ; INSERT INTO obfilm SELECT 18, CESAR, REF(a) acteursty(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=2045;

d insertion : en schéma obfilm 43, LE MARI DE LA COIFFEUSE obindividu 1996 LECONTE PATRICE 2871 SPIELBERG STEVEN 84 LA LISTE DE SCHINDLER 2987 PAGNOL MARCEL 1064 ROCHEFORT JEAN 18 CESAR 1040 GALIENA ANNA 2812 NEESON LIAM 2045 DEMAZIS ORANE 2132 RAIMU JULES 2045 FRESNAY PIERRE

de requête Dans la table film SELECT a.numfilm, a.titre, a.realisateur.prenomindividu, a.realisateur.nomindividu, a.acteurs FROM obfilm a; 43, LE MARI DE LA COIFFEUSE, PATRICE, LECONTE ActeursTy(???????????????) 84, LA LISTE DE SCHINDLER, STEVEN, SPIELBERG ActeursTy(????????????????) 18, CESAR, MARCEL, PAGNOL, ActeursTy(?????????????????)

Requête Problème Avec SQL : impossible de manipuler directement les éléments d un tableau. passer par un module PL/SQL pour : charger le contenu de la variable de type Tableau dans une variable PL/SQL de type Tableau modifier le contenu de la variable PL/SQL renvoyer le contenu de la variable PL/SQL dans la colonne de type Tableau par un UPDATE

Requête DECLARE stock acteursty; i BINARY INTEGER; p REF obindividuty; reali obindividuty ; nom varchar2(30); CURSOR c IS SELECT numfilm, titre, DEREF(realisateur) r, acteurs FROM obfilm; BEGIN DBMS OUTPUT.ENABLE(10000); DBMS OUTPUT.PUT LINE( - ); FOR s IN c LOOP stock:=s.acteurs; i:=1; BEGIN LOOP p:=stock(i); SELECT a.nomindividu INTO nom FROM obindividu a WHERE REF(a)=p; DBMS OUTPUT.PUT LINE(TO CHAR(s.numfilm) ** s.titre ** s.r.nomindividu ** nom); i:=i+1; END LOOP; EXCEPTION WHEN SUBSCRIPT OUTSIDE LIMIT OR SUBSCRIPT BEYOND COUNT THEN DBMS OUTPUT.PUT LINE( * ); END; END LOOP; END;

Résultats 43 ** LE MARI DE LA COIFFEUSE ** LECONTE ** ROCHEFORT 43 ** LE MARI DE LA COIFFEUSE ** LECONTE ** GALIENA * 84 ** LA LISTE DE SCHINDLER ** NEESON * 18 ** CESAR ** PAGNOL ** RAIMU 18 ** CESAR ** PAGNOL ** DEMAZIS 18 ** CESAR ** PAGNOL ** FRESNAY *

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 colonnequi 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 : Syntaxe création d un type table pour la table imbriquée création de la table principale (maître) contenant la table imbriquée. CREATE [OR REPLACE] TYPE nomtype AS TABLE OF déclaration de type;

Table dans une table Table maître : Syntaxe 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 : CREATE [OR REPLACE] TYPE listeacteursty AS TABLE OF ObIndividuTy; CREATE TABLE obfilmbis ( numfilm NUMBER(38), titre VARCHAR2(50), realisateur REF obindividuty. acteurs listeacteursty) NESTED TABLE acteurs STORE AS distributiontab;