A QUOI SERVENT LES BASES DE DONNÉES?



Documents pareils
A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données relationnelles

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

Les bases de données

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

TP Contraintes - Triggers

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

CREATION WEB DYNAMIQUE

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

I4 : Bases de Données

IFT3030 Base de données. Chapitre 1 Introduction

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

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

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

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

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

Présentation du module Base de données spatio-temporelles

Bases de données et sites WEB

Cours Base de données relationnelles. M. Boughanem, IUP STRI

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

SQL Historique

Compétences Business Objects

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

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

Le Langage De Description De Données(LDD)

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)

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

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

CESI Bases de données

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

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

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

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

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

Dossier I Découverte de Base d Open Office

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Structure fonctionnelle d un SGBD

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

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

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Bases de données avancées Introduction

Les bases de données Page 1 / 8

Information utiles. webpage : Google+ : digiusto/

1 Modélisation d une base de données pour une société de bourse

Application web de gestion de comptes en banques

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

Intégrité des données

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

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

Olivier Mondet

I. MySQL : Serveur et SGBD

Bases de Données Avancées

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

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

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

Rappel sur les bases de données

UML et les Bases de Données

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

CHAPITRE 1 ARCHITECTURE

1 Introduction et installation

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

Bases de données élémentaires Maude Manouvrier

Pratique et administration des systèmes

Devoir Data WareHouse

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

Le langage SQL Rappels

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

OpenPaaS Le réseau social d'entreprise

Introduction aux Bases de Données

Le Langage SQL version Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

Bases de Données Réparties

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Bases de données cours 1

Bases de données relationnelles : Introduction

1 Position du problème

CHAPITRE 1. Introduction aux bases de données

Gestion de base de données

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

BASES DE DONNEES TP POSTGRESQL

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Création et Gestion des tables

1. Base de données SQLite

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

Bases de données - Modèle relationnel

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Mysql avec EasyPhp. 1 er mars 2006

Implémentation des SGBD

Corrigés détaillés des exercices

PROJET 1 : BASE DE DONNÉES REPARTIES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Transcription:

BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr

A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès multi-utilisateurs Il faut donc : gérer de manière efficace les accès aux disques proposer une définition structurée des données éviter les redondances

UN SGBD. Le Système de Gestion des Bases de Données (SGBD) : simplifie la gestion des données avec : une représentation intuitive (modèle relationnel en général) un langage dédié (SQL) gère les aspects système : sécurité accès aux fichiers de données aspect multi-utilisateurs

HISTORIQUE RAPIDE DES SGBD Première génération (années 60) Séparation de la description des données et des programmes d application Traitement de fichiers reliés par des structures de graphe SGBD IDMS Deuxième génération (années 70) Simplification du SGBD externe Modèle relationnel Langage non procédural SGBD ORACLE, INFORMIX, Troisième génération (années 80) SGBD objet - SGBD Relationnel objet : ORACLE 8 - SGBD orienté objet : O2 Quatrième génération (années 90) Bases de données et internet Entrepôts de données (data warehouse) Fouille de données (data mining)

POURQUOI DES SGBD OBJET? Rappels sur le modèle relationnel le schéma définit la structure de la relation les n-uplets représentent les différents éléments Les tables respectent des propriétés définies sur les dépendances fonctionnelles ( en général, troisième forme normale (3NF) ) Avantages du modèle relationnel et des SGBD relationnels Organisation structurée des données Permanence des données Accessibilité par des utilisateurs concurrents Bien implanté dans le monde professionnel.

PHILOSOPHIE OBJET Faiblesses du modèle relationnel Absence de pointeurs visibles : pour lier des données qui se correspondent, on a besoin de faire des jointures (opérations coûteuses) Non support des domaines composés : on ne peut pas avoir pas exemple un attribut qui correspond à une adresse avec le numéro de la rue, le nom de la rue, la ville, Impossible à cause de la première forme normale, qui impose l atomicité des attributs Pas d opérations définies sur les données On veut donc un SGBD capable de traiter des éléments de structure complexe des opérations sur les éléments des pointeurs reliant les éléments (pour de l héritage par exemple) Ces notions correspondent à la philosophie objet : il nous faut des SGBD objet.

DEUX MANIÈRES D UTILISER L OBJET DANS LES SGBD On part des langages objet dans lesquels on intègre les notions des SGBD (persistance des données, aspect multi-utilisateurs, ). Ce sont les SGBD orientés objet : O2 (basé sur C++) On part des SGBD relationnels dans lesquels on insère des notions objet. Ce sont les SGBD relationnels objet : ORACLE 8 (SQL 3)

SGBDOO VS. SGBDRO On peut constater que les SGBDOO sont plus propres du point de vue objet et les mieux adaptés pour traiter les objets mais ils sont complètement absents du monde professionnel les SGBDRO sont basés sur des SGBD robustes et éprouvés répandus dans le monde professionnel mais qui ne sont pas prévus pour gérer l objet Jusqu à présent, les améliorations qui ont été développées pour les SGBD se sont fondus dans les SGBD existants. Dans le monde professionnel, les concepteurs et les utilisateurs de bases de données ne sont pas prêts à remettre en cause leurs savoirs et à redévelopper toutes leurs applications sur de nouveaux systèmes. On va privilégier les SGBDRO.

CARACTÉRISTIQUES DU MODÈLE RELATIONNEL OBJET On veut un modèle qui intègre des éléments de structure complexe Une relation sera en NF 2 (Non First Normal Form) et pourra contenir un attribut composé d une liste de valuers ou de plusieurs attributs. Exemple de table et de n-uplet (assurance d un véhicule)

DIFFERENCE AVEC LE RELATIONNEL STANDARD Par rapport au modèle relationnel standard : on a moins besoin d aplatir les données, ici on a une seule table avec des tables imbriquées au lieu de 3 tables on a moins besoin de faire des jointures pour on a moins besoin de faire des jointures pour récupérer les informations sur les accidents du contrat 1111, on accède simplement à l attribut accidents.

BASES DE DONNÉES OBJET Les types utilisés dans les BDO sont : les types standards existant dans les BD classiques : VARCHAR, NUMBER les types utilisateurs - définis par le concepteur de la base - utilisés comme des types standards On appelle aussi ces types utilisateurs des types objet car ils ont une structure complexe et peuvent contenir des opérations (méthodes).

CREATION DE TYPE OBJET CREATE TYPE t_adresse AS OBJECT ( num NUMBER, rue VARCHAR(30), ville VARCHAR(20), codepostal CHAR(5) ) ; On peut ensuite utiliser ce type objet (ou type utilisateur) soit pour définir une table relationnelle standard soit pour définir une table relationnelle objet (ou table objet relationnelle) soit pour définir d autres types objet qui contiennet cette structure.

OBJET DE TYPE ET REUTILISATION Exemple d objet de type t_adresse t_adresse (2, Bd Lavoisier, ANGERS, 49000 ) SYNTAXE : <constructeur de type> ( <valeurs des différents champs du type t_adresse>) Utilisation du type dans un autre type CREATE TYPE t_personne AS OBJECT ( nom VARCHAR(30), prenom VARCHAR(30), adresse t_adresse ) ;

UTILISATION D UN TYPE UTILISATEUR DANS UNE TABLE RELATIONNELLE STANDARD Dans une table relationnelle, on l utilise comme un type prédéfini standard. Exemple CREATE TABLE employes ( num NUMBER, dept NUMBER, salaire NUMBER, adresse t_adresse, -- type objet nom VARCHAR(30), PRIMARY KEY num -- on peut définir des contraintes habituelles sur la table ) ;

Insertion dans une table relationnelle (on procède comme habituellement) INSERT INTO employes VALUES (1000, 15, 2000, t_adresse (2, Bd Lavoisier, ANGERS, 49000 ), toto ) ; -- On utilise le constructeur d objet t_adresse pour écrire l adresse

INTERROGATION DANS UNE TABLE RELATIONNELLE Interrogation dans une table relationnelle (on procède aussi comme habituellement) SELECT * FROM employes ; -- On obtient la table suivante :

UTILISATION D ALIAS SELECT e.adresse FROM employes e ; -- Préciser un alias de table SELECT e.adresse.num FROM employes e ;

UTILISATION D UN TYPE OBJET DANS UNE TABLE RELATIONNELLE Un table objet relationnelle est une table qui contient des éléments de type objet. Chaque élément est identifié par un numéro appelé OID (Object Identifier). Exemple avec le type t_adresse CREATE TABLE adresses OF t_adressse ; On a une relation dont chaque élément est un objet de type t_adresse. On peut voir la relation de deux manières différentes :

VISION OBJET VS VISION RELATIONNELLE Remarque On peut écrire des contraintes comme en relationnel standard lors de la création de la table, on peut définir des clés, etc. CREATE TABLE adresses OF t_adresse (ville DEFAULT ANGERS ) ;

INSERTION DANS UNE TABLE OBJET RELATIONNELLE On a deux manières d insérer des n-uplets : soit avec le constructeur de type (vision objet) INSERT INTO adresses VALUES ( t_adresse(30, Bd Foch, ANGERS, 49000 ) ) ; -- on insère un objet avec constructeur de type et valeurs des champs du type objet soit en précisant chacun des champs (vision relationnelle) INSERT INTO adresses VALUES (30, Bd Foch, ANGERS, 49000 ) ; -- on précise les valeurs des différents attributs de la table relationnelle Les deux requêtes sont équivalentes : on insère un n-uplet un OID lui est attribué lors de l insertion

INTERROGATION DANS UNE TABLE OBJET RELATIONNELLE On peut accéder aux valeurs comme dans le cas du relationnel standard. SELECT * FROM adresses ; SELECT a.num, a.rue, a.ville, a.cp FROM adresses a ; -- a est un alias de table On peut accéder aux objets. SELECT VALUE(a) FROM adresse a ; -- a est un alias de table et VALUE est un mot clé pour récupérer les objets On peut accéder aux OID SELECT REF(a) FROM adresse a ; -- a est un alias de table et REF est un mot clé pour récupérer les OID Qu obtient on comme relations avec ces requêtes?

ACCÉDER AUX OID En accédant aux OID, on obtient une relation de référence où chaque référence correspond à un code assez long fait de chiffres et de lettres. Remarque Dans le cas d une table relationnelle standard utilisant des types objets, on n aura pas d OID pour les n-uplets donc pas de SELECT REF( ) ou de SELECT VALUE( )

UTILISATION DES RÉFÉRENCES POUR REPRÉSENTER LES INFORMATIONS DANS LES RELATIONS Exemple TABLE employes Plutôt que cette représentation qui pose des problèmes de redondance, de maintien de cohérence lors des mises à jours, on préfèrera la représentation suivante : TABLE employes ( avec des OID d objets de la table adresses )

UTILISATION DES RÉFÉRENCES POUR REPRÉSENTER LES INFORMATIONS DANS LES RELATIONS Plutôt que cette représentation qui pose des problèmes de redondance, de maintien de cohérence lors des mises à jours, on préfèrera la représentation suivante : ( avec des OID d objets de la table adresses ) TABLE employes

TABLE adresses table objet relationnelle Pas de changement pour l interrogation des relations. Par contre, en terme de représentation, un objet est conservé en un seul exemplaire dans une autre table et non pas à l intérieur de chaque n-uplet qui l utilise.

EXEMPLE : DÉFINITION DE TYPES UTILISANT DES RÉFÉRENCES (OU POINTEURS) CREATE TYPE t_ville AS OBJECT ( nom VARCHAR(10), population NUMBER ) ; CREATE TABLE pays ( nom VARCHAR(30), capitale REF t_ville, population NUMBER ) ; Ou en créant un autre type objet : CREATE TYPE t_pays AS OBJECT ( nom VARCHAR(30), capitale REF t_ville, population NUMBER ); CREATE TABLE pays OF t_pays ; CREATE TABLE villes OF t_ville ; Un objet tout seul n a pas d OID, c est un objet d une table objet relationnelle qui possède un OID!!!

INSERTION DE RÉFÉRENCES DANS LES TABLES OBJET RELATIONNELLES TABLE pays INSERT INTO villes VALUES ( Paris, 2000000 ) ; INSERT INTO villes VALUES ( Rome, 2700000 ) ; INSERT INTO pays (nom, population) VALUES ( FRANCE, 60000000 ) ; Pour modifier le n-uplet correspondant à la France : UPDATE pays SET capitale = ( SELECT REF(v) FROM villes v WHERE v.nom = Paris ) WHERE nom = FRANCE ; Pour insérer le n-uplet correspondant à l Italie : INSERT INTO pays SELECT ITALIE, REF(v), 57000000 FROM villes v WHERE v.nom = Rome ;

INTERROGATION DE TABLES UTILISANT DES RÉFÉRENCES Les données sont interrogées comme si elles étaient physiquement dans la table. Exemples SELECT * FROM pays ; -- le résultat est la table pays ci-dessus SELECT p.nom, p.capitale.nom, p.population FROM pays p ;

FONCTION DEREF ET VALUE Autre fonction sur les objets : DEREF qui renvoie un objet à partir de sa référence. SELECT DEREF ( p.capitale ) FROM pays p ; -- le résultat est t_ville( Paris, 2 000 000), t_ville( Rome, 2 700 000) SELECT DEREF ( REF(v) ) FROM villes v ; -- on obtient les objets de la table villes. C est équivalent à la requête suivante : SELECT VALUE ( v ) FROM villes v ;

DÉCLARATION DE TYPES INCOMPLETS On ne peut pas créer un type qui utilise un type qui n a pas encore été créé. Que faire quand on a des références croisées (par exemple, un type ville qui pointe vers un type pays et un type pays qui pointe sur un type ville)? On déclare un type incomplet puis on le mettra à jour plus tard. Exemple CREATE TYPE t_ville ; -- création du type incomplet CREATE TYPE t_pays AS OBJECT (,, ville REF t_ville, ) ; CREATE OR REPLACE t_ville AS OBJECT -- modification du type incomplet (,,, pays REF t_pays,, ) ;

SIMULATION DE L HÉRITAGE DANS LES BDRO Comme les BD relationnelles ne sont pas initialement prévues pour gérer les objets, il faut mimer les propriétés comme l héritage. Exemple CREATE TYPE t_personne AS OBJECT ( nom VARCHAR(30), prenom VARCHAR(30), datenaiss DATE ); CREATE TYPE t_etudiant AS OBJECT ( num_ine VARCHAR(10), pers REF t_personne ) ; Pour simuler l héritage, on utilise des requêtes utilisant, par exemple, e.pers.nom : e est un alias de table, pers un pointeur qui simule l héritage et nom le champ hérité de personne.