Modèle Objet (Oracle) Modèle pour les Données non Normalisées. Passage à la Technologie Objet de Oracle

Dimension: px
Commencer à balayer dès la page:

Download "Modèle Objet (Oracle) Modèle pour les Données non Normalisées. Passage à la Technologie Objet de Oracle"

Transcription

1 Modèle Objet (Oracle) Modèle pour les Données non Normalisées Passage à la Technologie Objet de Oracle André Gamache, professeur associé Département d'informatique et de génie logiciel Faculté des sciences et de génie Université Laval. Québec, Qc, Canada, G1K 7P4 Courriel: Modèle Objet page 1 La définition de l objet: une complexité parfois déroutante! Publiée sur le web : Avec cette définition «ésotérique», le traitement informatique de type objet est pour le moins dubitatif! En BD, la réification de l objet, matériel ou pas, est une prémisse au traitement informatique. Modèle Objet page 2 2 Page 1

2 Modèle objet de Oracle Le modèle géré par Oracle est dit Objet-Relationnel parce qu'il peut faire cohabiter les deux modèles: relationnel et objet. Il est hybride!! Seule la partie exclusivement objet sera utilisée dans ce cours. Caractéristiques de l objet-relationnel: Gère les nombreuses bases relationnelles Oracle déjà en service (le data legacy ); Conserve les notions de tables comme containeur d objets. Permet l'encapsulation des données : implémentation de l interface (des méthodes) Implémente les mécanismes associés à l'objet : héritage, redéfinition et surcharge. Normalise les accès sécurisés à la BD via les méthodes. Capitalise sur les acquis (applications) permettant une migration évolutive du SGBD relationnel vers l objet. Bémols et limites: L objet fait appel à des structures complexes et doit s appuyer sur les structures disponibles dans les applications (langages de développement): usage d outils de mapping des objets (JPublisher, ) N'implémente pas l'héritage multiple. Idem pour Java sauf pour C++. Est-ce vraiment un inconvénient?? N'est pas 100% conforme à la norme ODMG: ex. les structures d ensemble limitées à 2 niveaux. Utilise la notion explicite de REF qui est en quelque sorte un pointeur logique lequel devrait être normalement être transparent au traitement. Modèle Objet page 3 Objet et Attribut Dans l univers des bases de données objets, Rappel sur les quelques concepts clés: L objet a un nom et est concrétisé par la création d une structure (dorénavant appelée classe et type d objet). Un objet est donc à l image d une classe et cette dernière est munie d une interface. En Oracle : la classe est synonyme du type d un objet de table. Cette notion est aussi le pendant de celle d objet UML. ** L objet imbriqué dans un autre est nommé un objet-colonne (référence au conceptuel de table et sous-table) L attribut (propriété) a un nom et est utilisé pour représenter un aspect de l objet réel. Le type: L attribut et l objet auront un type ( i.e. une structure de données) de manière à pouvoir stocker les données simples et complexes et en permettre des traitements subséquents. Containeur: Les objets sont regroupés dans un containeur d objets. Avec Oracle, c est la table. Dans d autres systèmes objets, cela peut être une liste ou un set ou un bag. Les méthodes sont associées aux classes pour manipuler correctement les objets. Elles sont partagées entre les applications et peuvent être certifiées pour le maintien de la cohérence et de l efficacité. Elles ne sont pas physiquement stockées avec les structures d objets mais elles y sont fortement reliées via le dictionnaire de données (strong coupling). Modèle Objet page 4 Page 2

3 Taille d un objet: petit ou gros? Dans un contexte objet deux propriétés s imposent: 1- Maximum de cohérence: les objets doivent véhiculer autant que possible que les données propres à sa nature et qu il ne peut obtenir de d autres objets. 2- Minimum de couplage: avoir le moins d interactions pour obtenir les données nécessaires à son traitement. A ce titre, les gros objets sont recherchés. Compromis essentiel Le maximum de cohérence avec le minimum de couplage est antinomique. Un compromis est toujours nécessaire! Objet de démarrage: En programmation objet, il est celui nécessaire pour démarrer l application. En procédural PLSQL, cet objet ne sera pas nécessaire. En BD objet, le stockage des objets ne se fera pas sur la base de différents fichiers (ex. Java), mais seront regroupés dans des pages de fichiers paginés. Modèle Objet Module 3 page page 5 5 Hiérarchie des types d objets (Oracle) TYPE User-Defined Build-In Scalar Collection Relationship CHAR(N), NCHAR(N) CHAR VARYING(N) NCHAR VARYING(N) RAW(N) NUMBER DECIMAL INTEGER SMALLINT FLOAT REAL DOUBLE PRECISION DATE BLOB CLOB tuple [ ] NCLOB BFILE VARRAY NESTED TABLE Set() Bag() List() Modèle Objet page 6 REF Reference: JP Perez Object Database using Oracle Page 3

4 Types Oracle: atomique, complexe et d usager 1. Atomique ou de base : int, number, string, char(), varchar(), Date,... (15 types en R). 2. Complexe : structure de tuple d ensemble, liste, bag,... identifiée par un nom Ex.: tuple := [A 1 :t 1, A 2 :t 2, ] où A 1 est un attribut et t 1 un type primitif (ou d usager). 3. Type défini par l usager: Exemple : Sans faire référence à un SGBD objet particulier, le type pour un objet :employé est défini comme un tuple: employe_t := [mat: int, nom: varchar(50), adresse : varchar(50)] structure de tuple Convention d écriture pour le type Le type d un objet a par convention, le même nom que celui de l objet suffixé par _t et débutant par une lettre minuscule. C est une convention d écriture et non une syntaxe du DDL du SGBD objet. Modèle Objet page 7 Oracle : Classe externe et Classe interne Une classe externe ou interne a un type généralement défini par l usager* Ex. Personne : personne_t lequel est le type de la classe externe Personne. N.B. Dans le Mnav ci-dessous: un lien simple interne vers une classe interne est instanciée par un seul objet interne par instance d objet externe ou par une suite de valeurs sans interface. Personne: personne_t mat int nom varchar(40) adresse adresse: adresse_t no int nom varchar(40) Le lien simple est implémenté par imbrication de la classe interne dans la classe externe. La classe interne peut avoir une interface au même titre que la classe externe. L objet interne est physiquement imbriqué dans l objet de la classe externe. * Les concepts de base sont extraits du modèle navigationnel proposé par C. Soutou. Modèle Objet page 8 Page 4

5 Schéma implicite des objets d une classe Dans une BD objets interrogée par SQL, les objets d une même classe partagent un même type. Ils ont donc tous la même structure et ainsi que les mêmes méthodes. Plusieurs types dans la BD, soit autant qu il y a de classes distinctes. Les types sont définis et stockés dans le dictionnaire de données. BD NoSQL Dans certaines bases objets dites NoSQL, le type de chaque objet est défini autrement et certaines en format JSON. Chaque objet peut donc être distinct des autres de sa classe en raison de la structure qui est spécifiée avec l objet. EX. Une valeur de clé donne accès à un objet dont la structure est explitement définie avec chaque objet. Un exemple est illustré au module 1. Modèle Objet page 9 Classe interne et type Usager En Oracle objet, le type d une classe interne est créé ainsi: (création d un type via l application SQLPlus) (voir Toad et SQLDeveloper) Create type adresse_t as Object (no int, nom varchar(50)) Un type déjà défini pour une classe interne peut être aussi utilisé dans la définition du type d une autre classe, externe ou interne ( i.e. le partage des types). Create type personne_t as Object (mat int, nom varchar(50), adresse adresse_t) *** Pas de shadowing : un type ne peut pas référencer un type non créer totalement ou partiellement i.e. nommé! Modèle Objet page 10 Page 5

6 Interdépendance des types IMPORTANT : un type peut-être partagé entre plusieurs classes d objets créant ainsi une dépendance dont il faudra tenir compte par la suite lors de la suppression ou la modification du type existant. Le dictionnaire du SGBD signale cette dépendance entre les types. Supprimer un type partagé est possible si la suppression se répercute aussi sur les autres types dépendants: Drop type adress_t; -- type non supprimé s il y a interdépendance Drop type adresse_t CASCADE; -- erreur Drop type adresse_t FORCE ; -- pour supprimer malgré la dépendance et les attributs typés sont marqués «unused» Alter type adresse_t ADD codepostal varchar(20) CASCADE ; Partage d un type entre plusieurs utilisateurs: Possible que si le compte-propriétaire du type, par exemple Louise accorde le privilège EXECUTE aux autres utilisateurs: Grant EXECUTE ANY TYPE TO Pierre; -- permission donnée par Louise -- Pierre peut maintenant utiliser les types de Louise en le préfixant : Louise.employe_t Modèle Objet page 11 Privilèges du DBA sur les types «System Privileges for Object Types» CREATE TYPE enables you to create object types in your own schema CREATE ANY TYPE enables you to create object types in any schema ALTER ANY TYPE enables you to alter object types in any schema DROP ANY TYPE enables you to drop named types in any schema EXECUTE ANY TYPE enables you to use and reference named types in any schema EXECUTE ON type1 TO user1 autorise l exécution du type1 par l usager user1 UNDER ANY TYPE enables you to create subtypes under any non-final object types UNDER ANY VIEW enables you to create subviews under any object view GRANT EXECUTE ON type1 TO user2; GRANT EXECUTE ON type2 TO user2 WITH GRANT OPTION; Modèle Objet page Page 6

7 Partage des droits sur les types Grant EXECUTE ON type1 to user3 with grant option; DBA type1 type2 Tous les types propriété du DBA user1 user2 user3 dba.type1 user4 user3.dba.type1 DBA => Grant EXECUTE ANY TYPE TO user3; -- user3 peut utiliser les types 1 et 2 en les préfixant correctement page 13 Modèle Objet page 13 Utilisation d un type partagé entre utilisateurs et DBA Pierre veut créer un type gerant_t en utilisant dans sa définition le type créé par Louise : Compte de Louise Create type gerant_t as Object ( nogerant int, personne Louise.employe_t ) Describe Louise.employe_t; Pour créer des types, Pierre doit avoir l autorisation ou le privilège du DBA : Grant create type to Pierre; -- accordé par le DBA ou avoir les privilèges du DBA. N.B. Dans un cours vous avez normalement que le premier privilège. Modèle Objet page 14 Page 7

8 Validation des types Lors de la création ou de la modification d un type, le système doit vérifier que cette modification ne fait pas une action qui invalide les autres types ou autres entités de la base qui l aurait en partage: ALTER TYPE personne_t DROP ATTRIBUTE (adresse) CASCADE; Exemple : un type est modifié en supprimant un attribut CASCADE: Le système doit vérifier que cette suppression ne se répercute pas sur un autre type qui l utilise comme attribut indexé ou utilisé par ex. pour le partitionnement ou le clustering des tables, *** Si le test passe alors le type est modifié, sinon refus du système. INVALIDATE (pas de vérification à faire) : le test est supprimé et les changements sont imposés quitte à ce que le clustering par exemple soit rendu inopérant. Pour le redevenir, il faudra réinstaller le type initialement supprimé! Modèle Objet page 15 Partage en cascade des types Le partage d un type: un type a_t déjà défini par plusiuers types b i _t est probable et Est mal modélisé dans le Mnav. Il y a alors dépendance du type a_t avec b i _t. Create type adr_t as Object ( norue int, rue varchar(50), ville varchar(50), codepostal varchar(6)) Create type etudiant_t as Object (mate int, adr adr_t) Create type prof_t as Object (matp int, assistant etudiant_t) Le partage d un type est pris en compte dans son évolution : CASCADE et INVALIDATE Alter type etudiant_t ADD tel varchar(8) CASCADE ; -- ajout aux autres types utilisant le type modifié Alter type etudiant_t MODIFY CPostal char(6) VALIDATE ; -- le type du code est modifié après vérification pour éviter d invalider un attribut hérité (substitution de type) Modèle Objet page 16 Page 8

9 Oracle: objet de table et objet-colonne Le lien multiple permet de représenter un objet personne avec plusieurs adresses. Personne: personne_t mat int nom varchar(40) lesadresses adresse: adresse_t no int nom varchar(40) Chaque adresse correspond à un objet interne, physiquement intégré à l objet externe Personne. Un objet d une classe interne est appelé objets-colonnes dans la terminologie Oracle. Il n a pas de oid. Un objet de type personne_t est un objet de table ayant un oid. Modèle Objet page 17 Collection imbriquée en Oracle (set) L attribut lesadresses est un ensemble dont chaque élément est un objet-colonne (OC). Autres types d ensemble : list(), bag() mais non disponibles en Oracle: (Formulation linéaire du type) ou employe_t := [mat : int, nom: varchar(50), lesadresses : lesadresses_t)] employe_t := [mat : int, nom: string, lesadresses : list(adresse_t)] (non Oracle) L attribut d ensemble lesadresses peut-être ordonné (struct varray) ou pas (set) par la nature du type choisi. Chaque adresse est un objet-colonne inclu dans l ensemble lesadresses: avec adresse_t := [no int, rue varchar(50), ville varchar(50)] N.B. Un type est défini en utilisant que des types déjà définis. Modèle Objet page 18 Page 9

10 Mnav avec une structure interne implémentée avec le VARRAY() Avec Oracle, la déclaration de l ensemble correspond à un ensemble non ordonné ou à un ensemble ordonné du genre varray. Pour les OC ordonnés: lesadresses la spécification sera la suivante: Create employe_t as Object (mat int, nom varchar(30), lesadresses lesadresses_t) Avec un ensemble ordonné: Create type lesadresses_t as VARRAY(4) of adresse_t --ens. Ordonné Create type adresse_t as Object (no int, rue varchar(50), ville varchar(50)) Avec un ensemble non ordonné: Create type lesadresses_t as table of adresse_t --ens. non ordonné Les objets seront rangés par imbrication dans l objet externe et ce dernier place dans son containeur. Modèle Objet page 19 Les attributs de Varray ( 10) Le type Varray a plusieurs pseudo-fonctions prédéfinies et disponibles pour le traitement avec PLSQL. Le PLSQL peut manipuler et traiter la struct du varray. Ce n est pas le cas pour SQL. Ce type d ensemble ordonné et fini s utilise avec des valeurs stables et peu nombreuses. Count : le nombre actuel d éléments dans l ensemble dont la structure est VARRAY : Les fonctions facilitent la gestion des objets du varray: (count pour dénombrer le nombre d objets dans le varray) Declare -Applicatif v_lesadresses lesadresses_t ; nb int; v_lesadresses (1) :=... ; nb := v_lesadresses.count End; count : nombre d éléments dans l ensemble ordonné. + autres méthodes specialisées décrites dans la documentation sur PLSQL. NB Impossible de supprimer directement avec SQL un objet rangé dans un varray. Modèle Objet page 20 Page 10

11 Constructeur d objet (rappel de convention d écriture) Tout objet typé sera «structuré» par un constructeur (implicite ou explicite) dont le nom est formé avec le nom du type suffixé par _t. Cette convention d écriture permet de distinguer plus facilement les types d avec le nom des attributs et des tables. Il existe plusieurs constructeurs d objets. Persistance et oid Chaque objet est construit et inséré dans une table-objet. Il acquiert de ce fait un oid unique et non réutilisable par un autre objet (persistance). La table est son extensioncontaineur (ou «container»). Cet oid est à la base de la REF. Cet oid est une sorte de référence ou d identificateur unique et persistant pour chaque objet. Il entre dans la composition de la REF. Modèle Objet page 21 Insertion d objets dans un ensemble Varray L insertion d un objet avec 2 objets de la classe interne se fera en construisant l objet à insérer et en l ajoutant dans la base par la clause DML Insert. Employe: employe_t mat : int Insert into Employe values (employe_t (150, Robert, lesadresses_t( adresse_t (5, St-Louis, Québec ), nom : string adresse_t(8, despins, Sorel ) lesadresses ))); - ajout de l objet Employe avec ses adresses V=2 Insertion suivante sera rejettée car il dépasse la capacité du Varray: Insert into Employe values (employe_t (225, Lucie, lesadresses_t ( adresse_t (23, Concorde, Québec ), adresse_t (78, des Lis, Neuville ), adresse_t (12, Fleury, Lévis ) ) ); dépassement de la capacité Varray de capacité 2 L insertion d une 3e adresse génère une erreur à moins d étendre au préalable le varray, ce que le PLSQL peut faire dans un applicatif. Modèle Objet page 22 Page 11

12 Différences entre le VARRAY et le Set (NESTED TABLE) Ces deux types sont du genre ensemble et peuvent avoir comme éléments des références, des valeurs ou des objet-colonnes. (i.e. sans oid) VARRAY Ensemble trié Objets indicés (0rig. 1) Nombre limité d objets Pas de SELECT sur les attributs du varray Accessible avec PLSQL (non accessible avec SQL) Objets du même type (set) NESTED TABLE Ensemble non trié Objets non indicés ( recherche ou indexation) Nombre illimité d objets SELECT possible sur les attributs des objets-colonnes Accessible avec SQL et PLSQL Objets du même type ou d un sous-type du type déclaré L insertion, mise à jour, suppression et autres opérations avec ces types complexes exigent l emploi de méthodes qui seront étudiées dans un chapitre ultérieur. Modèle Objet page 23 Le type REF pour un attribut Un attribut peut avoir le type REF ce qui signifie qu il est valué avec une référence ciblant un autre objet. La REF permet aussi d associer les objets de classes différentes. Le REF permet d implanter le lien externe du Mnav. La valeur de type REF est construite par le système en incluant l oid et quelques autres métadonnées de la table-objet (exemple le oid de la structure de la table-objet: - Oid de l objet référencé (16 octets si généré automatiquement sinon basé sur la clé primaire) - Oid de la table-objet (16 octets) - Le rowid caché (10 octets) Total pour une Ref: 42 octets ou 64 hexa Index: mécanisme d accès aux objets via un index Avec une référence, un objet est obtenu via la consultation par le noyau du SGBD de l index créé (automatiquement) sur les oids de chaque containeur (table-objet) et maintenu par le SGBD. N.B. dans la technologie relationnelle: Le ROWID joue un rôle similaire au OID dans Oracle-Objet mais il n est pas un vrai oid ne serait-ce par le fait qu il est visible, réutilisable et manipulable directement. (mais non modifiable directement). Modèle Objet page 24 Page 12

13 Type REF Une valeur de type REF réfère seulement à un seul type d objet soit de table (OT) via l'oid de l'objet cible. L objet-colonne n a pas de oid donc ne pas être référencé par indexation de son oid! Sa persistance et son accès passent par ceux de l objet hôte! Dans ce cours et par convention volontairement abusive : La valeur Ref sera considérée idem à l'oid du moins en ce qui a trait à son rôle. Le rôle dévolu au type REF est de permettre l association entre objets pour en permettre l exploitation rapide avec le langage de requête SQL. Le oid (son identité) est de préférence (ou devrait être) non visible et obligatoirement non modifiable par programmation; (variable selon les implémentations) Modèle Objet page 25 Lien multiple externe Employe: employe_t matricule *: int nom: varchar lessalnet LesSalnet est un attribut d ensemble dont les éléments sont des références à la classe externe salnet: lessalnet := { oid de salnet_t}. Ce lien multiple peut être réalisé avec une classe interne pour les références. SalNet: salnet_t annee: int montant: int Le lien multiple externe est une représentation raccourcie d une table interne, composé des oids des objets référés par le lien externe. Une représentation plus précise est donnée par une classe interne explicite avec comme seule valeur le oid soit le type REF. Modèle Objet page 26 Page 13

14 Lien externe multiple et sa représentation dans le Mnav Employe: employe_t Lorsque l attribut multiple n a pas d autres attributs propres alors cet attribut correspond à un ensemble de oids seulement (type REF) SalNet: salnet_t annee: int montant : int matricule *: int nom: varchar lessalnet Oid_SalNet oid1 oid3 oid4 Lorsque le lien interne est simple, il y a alors une seule valeur de oid pour un employé. Le type est toujours le REF. page 22 Modèle Objet page 27 Fonction REF() et DEREF() Cette fonction a comme argument un objet i.e. une variable objet et fournit son oid. Select REF(s) FROM Service s Where s.noms = ''analyse''; Le DEREF() fournit l objet correspondant à un oid. Select DEREF(REF(s) FROM Service s WHERE s.noms = ' noservice') INTO v_serv From Dual; --v_serv est une variable PLSQL objet du -- type Service Modèle Objet Module Module 3 page 3 page Page 14

15 Référence à un autre objet par l oid obtenu par la fonction REF() Employe: employe_t nome*: varchar Service: service_t noms*: varchar refservice Create type service_t as object (noms varchar(50)) Create table Service of service_t; Insert into Service values(service_t(''analyse'')); Create Type employe_t AS Object (nome varchar(50), refservice REF service_t ) Create Table Employe OF employe_t; INSERT Into Employe values ( employe_t ('Jacques', NULL)); Insert Into Employe values(employe_t ( Louise', (select REF(s) FROM Service s WHERE s.noms = ''analyse'')); Select e.* From Employe e Where e.nome = ' Louise''; Louise E801067C2EABBE040578CE70A E801067C1EABBE040578CE70A0707 Modèle Objet page 29 REF et l association UML L attribut de type REF est utilisé pour implémenter l association de la classe UML. Cet attribut a une valeur particulière incluant l OID de l objet référé. Clé étrangère et clé primaire d une table-objet: - La clé primaire en objet n est pas essentielle pour concrétiser l unicité de l objet car l oid distingue tout objet entre eux. Elle est cependant utile pour la recherche d un objet particulier puisque l oid est non accessible ou inconnu pour la recherche. - La clé spécifiée est une contrainte d entité i.e. qui contraint l unicité de l objet sur la base des valeurs d attribut. La contrainte formulée par la clé étrangère est implémentée via le lien de référence défini en objet par REFERENCES: Tout objet de la table enfant réfère à un objet de la table parent Modèle Objet page 30 Page 15

16 Classe et table-objet Classe: structure typée e ses instances ont un oid. Ex: La classe Employe impose le type à ses objets soit employe_t 2 sortes de tables 1- Table-objet dont les éléments sont des objets pouvant contenir d autres objets dits objets-colonnes. 2- Table-objet-relationnel dont les tuples peuvent contenir des objets et des tuples en cohabitation avec un SGBD OR. (Ignorée dans ce cours) Une table-objet est physiquement placée dans un TableSpace (TS) lequel regroupe des pages de même taille fixe: 8K, 16K, 32K, La BD est un immense fichier paginé avec ou sans extensions (de 8K, 16K, ) Modèle Objet page 31 Containeur d objets : table-objet Les objets sont stockés dans des containeurs (ou container) i.e des tables construites selon la la technologie relationnelle de Oracle: Containeur Table OR (environnement Oracle) Une table-objet est associée à une classe i.e. à un type généralement complexe qui façonne les objets du conteneur. Rappel de la convention d écriture: Le nom d'une table débute par une lettre majuscule et son type généralement complexe est composé de son nom débutant par une lettre minuscule et suffixé par _t Exemple: La classe externe Employe a le type employe_t: employe_t := tuple (nom: string, age :int, salaire: real) Modèle Objet page 32 Page 16

17 Type Opaque Type Opaque de Oracle (undocumented type ou type auto descriptif) C est une suite d octets dont la représentation interne cachée est fournie par Oracle. Ce type n est pas implémenté par l utilisateur. Il a ses propres méthodes de type STATIC pour donner accès à la valeur du type opaque. Quelques uns de ces types: le XML (avec ses méthodes spécialisées), sys.anydata, sys.anytype, sys.anydataset, et leurs propres méthodes. create type tempo_t as object ( a number not null, b sys.anydata ) --pour convertir un nombre : la méthode convertnumber du type opaque sys.anydata: Create table Tempo of tempo_t; insert into Tempo values temp_t (1, sys.anydata.convertnumber(1)) insert into Tempo values temp_t (2, sys.anydata.convertdate(sysdate)) Select * from Temp A B type méthode 1 ANYDATA() --- la donnée est accessible que par la méthode du type opaque 2 ANYDATA() -- convertnumber du type sys.anydata Modèle Objet page Méthodes de l interface de types opaques select Tempo.*, sys.anydata.gettypename (Tempo.b) typename from Tempo ; A B() TYPENAME 1 ANYDATA() SYS.NUMBER 2 ANYDATA() SYS.DATE 3 ANYDATA() SYS.VARCHAR2 Voici quelques méthodes des types: function getnumber (anydata_p in sys.anydata) return number; function getdate (anydata_p in sys.anydata) return date; function getvarchar (anydata_p in sys.anydata) return varchar; Modèle Objet page Page 17

18 SQL> desc roman_t; Name Null? Type nor Integer NOM VARCHAR2(50) DateR SYS.ANYDATA Select * from Roman; Type Opaque suite Type sys.anydata C est un type d objet contenant des données accompagnées de méthodes (des procédures PLSQL) prédéfinies et spécifiques. Ce type est utilisé pour stocker des valeurs sans mentionner leur type. Create type titre_roman_t as object (nor int, nom varchar(50), dater sys.anydata) Create table Roman of roman_t; insert into Roman values (235, Merci pour ce Moment, sys.anydata.convertdate(sysdate); -- le type de la valeur est sans utilité! Un type ANYDATA contient une instance de donnée d un type plus une description du type. C est ainsi que l on qualifie ce type d auto-descriptif. Modèle Objet page Affichage avec le type opaque Ex. Affichage des données sur les romans publiés il y a 90 jours. Select r.nor, sys.anydata.convertdate((r.dater) From Roman r Where sys.anydate.convertdate(dater) < sysdate -90; Modèle Objet page Page 18

19 Aperçu du stockage des objets Oracle sur disque? Modèle Objet page TableSpace: page et objet Tablespace x + 1 page objet 6 objetspage 9 objetspage 6 objetspage 9 objetspage 6 objetspage Tablespace x 4 objetspage 4 objetspage Plus il y a d objets dans une page, plus rapide est la recherche des dits objets. Le tablespace est l unité de gestion de l espace physique: base objets <===> tablespaces <===> fichier(s) paginés <===> fichiers OS Modèle Objet page 38 Page 19

20 Rappel sur les tablespaces de Oracle (TS) tables, index, <==> fichier(s) physique(s) paginé(s) <==> pages de 4Ko, 8Ko, 16Ko = tablespace(s) <==> fichier(s) paginé(s) A la création, la base a quelques tablespaces : System, Temp, User, D autres sont créés au besoin et nommées par le DBA: Ex: Create tablespace ts_employeactuels datafile 'dbf1ts_sth.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local; System: pour le traitement, Temp : pour les tris, User: pour tables utilisateurs A la création d une table: Aucune mention du TS : Avec mention d un TS: le tablespace User par défaut les objets sont créés dans celui-ci Create table T1 of type T1_t (tablespace User); Alter table T1 Move tablespace espace_de table_t1; Create table Inscription of inscription_t (TableSpace TS_Registraire) ; (table créée dans le tablespace TS_Registraire) Modèle Objet page 39 Ensemble imbriqué dans une classe (classe interne) Un attribut ensembliste est spécifié avec Oracle comme (non pas comme un set) mais comme une Nested Table stockée par défaut dans le même tablespace que celui de la table hôte. Etudiant: matricule: varcher() nom: varchar() lescours : lescours_t Placement d un containeur dans un tablespace: CREATE TABLE Etudiant of etudiant_t NESTED TABLE lescours STORE AS Table_lesCours (TABLESPACE TS_Registraire2013); (La table-objet Etudiant et la collection imbriquée lescours sont créés dans le TS Registraire2013) Une nested table bien que stockée comme une table physique séparée, cohabite par défaut avec sa table mère dans le même tablespace (mais pas dans la même page) Plus de détails à venir sur la table imbriquée Modèle Objet page 40 Page 20

21 Gestion des tables physiques au regard des TS Déplacement d une TS vers une autre TS: ALTER TABLE Etudiant MOVE TABLESPACE Registraire A2013 Déplacement d une collection imbriquée (sous-table) vers une autre TS: Ce déplacement est possible car l ensemble imbriqué est physiquement séparé de la tableobjet. Il faut utiliser le nom de la nested table (physique) assigné par la clause STORE AS: ALTER TABLE Table_Les Cours MOVE TABLESPACE Cours2014; Les étudiant: Objets externes Les cours: Objets internes clés internes Modèle Objet page 41 Signature associée aux types de classes (externes et internes) L interface est spécifiée intégralement et solidairement ( important) dans le type Un type a des procédures (méthodes) pour manipuler les données du type. Les types (avec leurs méthodes) peuvent être partagés entre plusieurs classes. Solidairement: à chaque ajout ou suppression d une méthode, toute l interface doit être recréée pour qu elle soit modifiée! Pas de mise à jour sélective (ou piecewise) Chaque méthode a une signature définie dans le type: Signature := nom de la méthode + les paramètres typés, incluant celui de retour Exemple: Calcul de la marge sur un produit: (une fonction est utilisée) marge (cout IN real, facteur IN int, lieu IN varchar) : real (syntaxe théorique Modèle Objet page 42 Page 21

22 Imbrication des types: Describe En objet les types complexes sont extensibles: Create type adresse_t as Object (no int, rue varchar(50)) --sans signatures Create type coordonnees_t as Object ( no int, adr1 adresse_t) Create type localisation_t as Object ( coordgps int, region coordonnees_t) dépendance: localisation_t coordonnees_t adr_t -- pour obtenir une description avec les types imbriqués. SET describe depth 3 Name Null? Type COORDGPS NUMBER(38) REGION COORDONNEES_T NO NUMBER(38) ADR1 ADRESSE_T NO NUMBER(38) RUE VARCHAR2(50) Imbrication des types et des tables: (Oracle 8, limitée à 1, illimitée avec les versions récentes: 11g et +. Modèle Objet page 43 Actions combinées sur le type et leurs effets sur les objets stockés 2 ajouts et 1 suppression: ALTER TYPE t1_t ADD ATTRIBUTE attr1 NUMBER, DROP ATTRIBUTE attr2, ADD ATTRIBUTE attr4 NUMBER, MODIFY ATTRIBUTE attr5 char(6) CASCADE option ; Un attribut peut être modifié qu une seule fois dans un même ALTER TYPE Un attribut hérité ne peut pas être supprimé sauf dans sa classe source. Options: INCLUDING TABLE DATA : conversion des objets déjà créés. (le défaut) NOT INCLUDING TABLE DATA : La colonne modifiée de l attribut de l objet est marquée UNUSED. Idem pour les données de la table ou celles stockées à l extérieur. Suppression des colonnes dont le type a été modifié (marqué unused) : ALTER TABLE DROP UNUSED COLUMNS Modèle Objet page 44 Page 22

23 Opérations avec les types: création, suppression, Création d'un type: Create or Replace type.. as Object ( ) Aucun type à définir avec les types primitifs : Boolean, rowid, Long, Long Raw, Description d'un type : Directive Describe fournit les attributs et leur type Desc [ribe] personne_t ; Suppression d'un type: Drop type personne_t [FORCE VALIDATE]; Synonyme du type : Create Synonym inventaire_t FOR stock_t; Modèle Objet page 45 Rappel: objet de table (OT) et objet colonne (OC) Oracle gère 2 types d objets : Objet de table : objet typé à l image du containeur et ayant un oid Objet-colonne (sans oid): un objet d une classe interne correspond à un objet-colonne logiquement incorporé dans un objet de table. Ex. adresse adresse_t Un attribut de type ensemble regroupe des objets-colonnes. Si l étudiant a plusieurs adresses : l attribut lesadresses est un objet d ensemble (classe interne) regroupant les objets-colonnes adresse_t Ex: Create type etudiant_t as object ( mat int, nom varchar(50), lesadresses lesadresses_t); Modèle Objet page 46 Page 23

24 Définition du type ensemble avec le système objet O2 Avec le système objet O2 : (autorisant le shadowing) Create class Etudiant as object ( mat int, nom varchar(50), lesadresses Set of (adresse_t)); Où adresse_t est un type à créer dans O2. Comparaison avec Oracle: Create type etudiant_t as object ( mat int, nom varchar(50), lesadresses lesadresses_t); où lesadresses_t est un type d ensemble qui DOIT ÊTRE DÉFINI. C est une table imbriquée spécifiée par une syntaxe detable Of (syntaxe à venir) Modèle Objet page 47 Description des types inscrits dans le DD SET describe depth ALL -- pour contrôler le niveau de lecture de la structure Describe employe_t -- avec un adresse complexe NOM Null type MAT NUMBER(32) NOM varchar(40) ADRESSE ADRESSE_T NO NUMBER(38) RUE varchar(40) VILLE varchar(40) Modèle Objet page 48 Page 24

25 Objet persistant (objet non persistant) Objet persistant := une paire (oid, valeur ou objet typé) oid est l'identifiant unique d'un objet (Object Identifier); Le oid est généré par le système (auto) ou généré selon des contraintes formulées par le DBA (ex. Sur la base de la clé primaire). L oid ne change pas durant le cycle de vie d'un objet. Il est aussi inscrit dans la structure de l objet. L oid limite donc le nombre total d objets dans la base. oid Valeur typée Interfaces Objet persistant Objet (non persistant) n a pas de oid; c est alors un objet transitoire. Valeur typée Interfaces Un objet créé par le NEW de PLSQL est transitoire et devient persistant seulement lorsque inséré dans un containeur i.e. dans une table ou dans un autre objet persistant. N.B. L oid est affiché uniquement avec l application SQLPlus. empl := NEW employe_t ( Gilles, 22) -- avec empl une variable objet de type employe_t Modèle Objet page 49 Objet transitoire sans oid Create type moteur_t as object(no varchar(10), puiss int, poids int) Create table Moteur of moteur_t; Declare --applicatif v_moteur moteur_t; -- type d un objet Begin v_moteur := NEW moteur_t('fg45s', 300, 1); -- oid absent,donc objet non persistant Insert into Moteur values(v_moteur); -- objet rendu persistant avec un oid v_moteur := NEW moteur_t('fg45s', 300, 1); -- disparition de l objet avec la fin de la procédure End; 2 objets créés dont un seul, le premier rendu permanent (et stocké) avec son oid. Modèle Objet page 50 Page 25

26 Oid rangé comme un attribut caché Où est stocké l oid d un objet? Il est stocké comme un attribut «caché» de l objet. Son nom est SYS_NC_OID$. C est une valeur binaire de 16 octets (32 hex). Exemple avec SqlPlus: Select SYS_NC_OID$ From Moteur m Where m.puiss < 500; SYS_NC_OID$. 0627D6A9CEC34BEAB03D7F9D9B6F0D3B ( 32 hex 16 octets) Impossible cependant de le manipuler et de l Imprimer avec une variable objet! Modèle Objet page 51 Mutation des oid : oid logique (la ref) et physique L oid de l objet est augmenté pour devenir le oid-l au sens qu il ne correspond pas à une adresse physique de la RAM, ni sur disque. Nous l identifierons comme oid-l (logique) ou une REF. L oid-l est transformé par le noyau du SGBD pour y associer l oid-p dès la 1ère lecture de l objet (swizzling) et son placement dans la cache RAM du serveur. La table de correspondance entre l oid-l (persistent) et l oid physique (oid_p) est gérée dans la cache du noyau du SGBD (pour un serveur de pages ou un serveur d objets). Oid-L: oid + no de fichier, no page et un déplacement dans la page + oid du type de la classe. Une table est construite avec les oid-l. Oid-L: oid vol page Offset oid type classe Oid-P 3A6F FB2 FE245 REF Modèle Objet page 52 Oid-P FE245 L oid-l est donc une REF qui a une taille plus importante que celle du oid-p. Dans la RAM: Données de l objet données de l objet L oid-p doit demeurer inchangé aussi longtemps que l objet n est pas rapatrié de la cache vers le disque. Ce qui signifie que les pages d objets dans la RAM sont clouées (pinned pages)! Page 26

27 Oid physique et swizzling (mutation) Tous les objets transférés en RAM (du serveur) ont leur oid-l mutés (swizzled) immédiatement. La structure d un objet sur disque est différente de celle en RAM afin de tenir compte des structures physiques particulières de chaque langage et de chaque machine (machine dependant object structure) Lorsqu un objet est ré-écrit sur disque, la dé-mutation n est pas nécessaire car le oid-l est toujours intact dans l objet. CAS SPÉCIAL: Partage du même type dans 2 bases distinctes (sur une même machine) Chaque type est aussi un objet qui a son propre oid. Pour le partager entre 2 bases, il faut recréer le type avec le même oid dans les 2 bases: Génération d un oid pour le type dans une base: SELECT SYS_OP_GUID() FROM DUAL; SYS_OP_GUID() 19A57209ECB73F91E B40BBE3 Création du type personne_t dans les 2 bases: CREATE TYPE personne_t OID '19A57209ECB73F91E B40BBE3' AS OBJECT (attrib1 NUMBER); (dans chaque base) Modèle Objet page 53 Vue schématique du swizzling :Transfert de l objet en RAM 1- La page de l objet oid8 sur disque est transférée vers la cache RAM du serveur. L adresse RAM de chaque objet de la page est inscrite dans une table OP. 2- Par la suite, la table OP est consultée pour trouver l adresse RAM de l oid-l oid8. L écriture se fait via la page vers le disque. oid obtenu de la REF oid4 oid8 (1) Objet Page sur disque Page transférée en RAM (2) OP (objet persistant) Oid-L oid-p oid2 FB234A oid4 4AF2233 oid FF oid8 F3B255 x.attrib1 Pointeur RAM Pour accéder à une valeur de oid8 avec la variable objet x, il y a consultation delatableopetaccèsà l objet via l adresse RAM (oid-p) et finalement à la valeur attrib1. Il y a en quelque sorte une indirection dans l accès via la table OP. La table OP s agrandit et se rétrécit avec le va-et-vient des pages d objets. Modèle Objet page 54 (3) oid8 Dans la cache RAM du serveur Page 27

28 Génération de l oid L oid peut être généré par le système ou dérivé de la clé de l objet inséré dans la table. L'oid peut être aussi dérivé des données selon la spécification définie pour chaque tableobjet (à la génération de la BD). Nombre fini de oid? Mot de 64 bits ou 128 bits -- la création d un type génère un objet ayant son propre oid référant à la description du type. La REF est donc construite ainsi: REF := oid + metadonnées. (total 42 octets) avec une machine de 32 bits Les métadonnées permettent au système d identifier rapidement à quelle classe d objets un oid appartient et cela en incorporant le oid du type de son containeur sans accéder au conteneur. NB: Une table relationnelle n'a pas de oid pour les tuples, mais un rowid réutilisable puisque les trous créés dans une page par la suppression de tuples sont réutilisables. Modèle Objet page 55 Génération de l OID Oracle : système et dérivé Implémentation de l'oid: Ex: variable selon le système: nombre sur 32 bits ou mieux sur 64 bits ( max objets objets) ou +; ORACLE: (oid seulement généré:16 octets = 128bits soit 2 mots de 64 bits par oid). Choix fait lors de la création de la table-objet: Create Table Employe of employe_t ( contraintes...) Object Identifier is {SYSTEM GENERATED PRIMARY KEY}; Indexation automatique des oids générés et des oid dérivés de la clé. Oid jamais réutilisé (dans la même base) : oid ne devrait pas être un pointeur physique sur un objet (sauf par swizzling lorsque les objets sont dans la RAM) dont l'espace peut être réutilisé par un autre objet après suppression du premier. Finitude de l'espace objet! Modèle Objet page 56 Page 28

29 Affichage de l'oid d'un objet: fonction REF( ) Oid (Ref) visualisé (codé en hexadécimal); ne peut pas être modifié par programmation. Affichage exceptionnel que par SQLPlus. Affichage de l'oid d'un objet de la table Employe ( avec d autres données d accompagnement): Select Ref(e) En objet, l alias est nécessaire From EmployeP e Where e.mat = 350; Strictement exigé si la table Employe est déclarée avec un oid SYSTEM GENERATED BC6FCA 7654DD687DDAC (32 car. Hex ou 16 octets) Affichage de l'objet sans son oid (sa valeur) : Select Value (e) transitoire From EmployeP e Where e.noe = 350; Idem à un objet non persistant! -- l'objet fournit sa valeur typée (sans oid ) = objet Modèle Objet page 57 REF à portée contrainte (scopée) Une référence peut occuper au total 42 octets (plus encombrant que le oid (16 oc)!) Il est possible de définir des références de 32 octets en définissant une référence dite SCOPÉE. Une telle référence ne cible que des objets d une table particulière pré-identifiée dans le oid (scopé). C est une contrainte qui se définit au niveau du containeur: Table-objet: Create table Departement OF departement_t (refchef REF SCOPE IS Ouvrier-spec, ); Avantage de la REF scopée: Une REF «scopée» référence obligatoirement un objet de la table cible dite «scopée». Attribuer une ref correspondant à une autre classe génére une erreur. **** Un attribut de type REF SCOPE peut-être indexé (par un Create INDEX ) Modèle Objet page 58 Page 29

30 Constructeur d objet Création et insertion d un objet dans son containeur: la table ** Le nom du constructeur est le type de la table. Un objet est créé avec SQL au moyen de la clause INSERT INTO utilise un constructeur d objet dit implicite exigeant une valeur pour chaque attribut (ou le marqueur null): Insert into Employe values (employe_t ('Picard', 24, 'des Lilas', 'Québec') ); L objet créé est inséré dans une table, le rendant persistant i.e. ayant un oid permanent. Un objet peut se définir avec un type comprenant une classe interne pour les objets-colonnes (avec 3 attributs): Insert into Employe values (employe_t ('Picard', adresse_t( 24, 'des Lilas', 'Québec') )); Modèle Objet page 59 Création d un objet transitoire en PLSQL Un objet est aussi créé avec un type lorsque le constructeur de type est appelé par le NEW de PLSQL suivi du constructeur de type. Création et initialisation d un objet transitoire : ex. : NEW employe_t ('Picard', 24, 'des Lilas', 'Québec'); L objet-transitoire: employe devient persistant lorsqu inséré dans une table-objet. Les objets sont manipulés en PLSQL par des variables de même type que ceux de la BDO: v_employe_t : = NEW employe_t ('Picard', 24, 'des Lilas', 'Québec'); *** Couplage fort entre PLSQL et le DD du SGBD Oracle. Idem avec un attribut de type ensemble (pour la classe interne) : v_employe_t := NEW employe_t ('Picard', 24, adresse_t( 'des Lilas', 'Québec')); N.B. Il en est autrement avec les autres langages: la struct de l objet est implémenté avec une struct du langage hôte et qui est généralement beaucoup plus complexe. Modèle Objet page 60 Page 30

31 Pseudo shadowing (type incomplet) Création de type incomplet et d'une référence inverse Avec Oracle, un type peut utiliser un autre type que s il est déjà existant dans le DD. Aucune définition anticipée, aucun shadowing de type. La référence inverse est cependant possible en c_t ( c1: int, c2: ref) utilisant un type incomplet. Create type c_t -- type nommé mais incomplet d_t ( d1:int, d2: ref) Create type d_t as Object ( d1 int, d2 REF c_t) -- le type d_t est créé complet -- mise à jour du type incomplet par un Create : Create type c_t as Object ( c1 int, c2 REF d_t) -- type complété Utile pour les références circulaires. Modèle Objet page 61 Type incomplet avec un lien multiple c_t ( c1: int, c2: ref) d_t ( d1:int, d2: ref) Un type avec une référence multiple ou lien multiple ne peut pas être défini en utilisant un type incomplet. Si le type d_t (avec lien multiple) ne peut pas faire référence à un type complet, le type d_t ne peut pas être défini. Règle pratique Si dans le Mnav il y a une boucle de liens dont un est de type multiple, le modèle ne peut pas être implémenté. Modèle Objet page Page 31

32 Exemple d un type mutuellement dépendant CREATE TYPE employe_t AS OBJECT ( nome varchar(20), dep REF dep_t) -- le type dep_t est absent de la base ** ERREUR *** CREATE or REPLACE TYPE dep_t AS OBJECT ( nod int, gerant REF employe_t) -- le type employe_t est absent de la base ** ERREUR *** Le type employe_t ne peut pas être créé car le type dép_t n existe pas. Idem pour le type dep_t La solution est d utiliser un type incomplet: Create type employe_t -- un type incomplet n a aucun attribut Par la suite il faudra le compléter par un Create (et non un update) Create type dep_t as Object (nod int, gerant REF employe_t) Modèle Objet page 63 Visibilité des attributs et Encapsulation Encapsulation des objets : Les données sont manipulées que par les méthodes sans notion de visibilité explicite pour les attributs et les méthodes contrairement à la visibilité implantée dans les L3G objet ou avec les SGBD objets qui adhèrent à la norme ODMG. *En Oracle, le droit d'accès est accordé à un usager via le type. L'utilisateur voit tout : les attributs et méthodes du type sur lequel il a les droits d usage. Les méthodes sont présumées toujours présentes dans le diagramme de classe, même si elles sont absentes dans les exemples UML et Mnav et cela, pour des raisons pratiques d allégement des figures. En principe, un objet de table-objet devrait se comporter comme un véritable objet de classe et être accessible que par son interface. (Rappel de bloquer l usage des DML) -Une signature est la liste typée de ses paramètres incluant s il y a lieu, celui de retour. - L interface de classe est l'ensemble de ses signatures. Modèle Objet page 64 Page 32

33 Comparaison entre les modèles Relationnel et Objet Le nombre de types dans le Relationnel est environ 15. En objet, nombre illimité (car il y a les TAD ou les UDT). Le R est basé que sur les valeurs pour implémenter les associations entre tables : partage d'attributs ayant un même domaine. L objet utilise les REF pour la navigation entre les classes et parcourir les associations. La jointure par valeur n est cependant pas interdite. En R, la contrainte référentielle peut être implémentée par la clé étrangère FK; en objet pas de FK obligatoire, la contrainte est remplacée par une contrainte de REFERENCES. A la création d'un objet et son insertion dans une table (typée et avec oid), la persistance est assurée. Le oid est muté en pointeur physique dans la RAM : le swizzling accélère l'accès aux objets. Cette transformation est gérée par le SGBD. * Une référence perdue est une référence dangling (danger d incohérence) Elle pointe sur un emplacement ne correspondant pas à un objet. Modèle Objet page 65 Implémentations de quelques modèles navigationnels avec la technologie de l objet Modèle Objet page 66 Page 33

34 Du diagramme de classe UML au Mnav (Rappel) Transposition du navigationnel à l'objet: Essentiellement la création des types et des containeurs Instantiation d objet: La classe externe instantie un objet qui sera stockée avec son oid dans une table-objet, tandis que la classe interne instantie des objets-colonnes (OC) sans oid. Les contraintes de multiplicité ne sont pas toutes renforcées par le Mnav (objet). Il faut avoir recours à la logique propre des méthodes pour compléter la validation notamment celles des multiplicités. Modèle Objet page 67 Implémentation de l association ( ) en Objet Exemple: implantation d un modèle UML simple avec des multiplicités contraignantes: EmployeP: noe*: int nome: varchar(50) 1..1 A_un > 1..1 n.b. 1,1 1 Domicile: nod*: int rued : varchar(50) teld : varchar(8) En raison des multiplicités 1..1 L ajout d un domicile est possible que si les contraintes du modèle sont vérifiées à la fin de la transaction logique d ajout. Modèle Objet page 68 Page 34

35 Mnav: implantation des associations avec REF (OR) REF : une référence vers un ou des objets d une classe. EmployeP : employep_t noe*: int nome: varchar(50) refadresse Domicile : domicile_t no*: int rued : varchar(50) teld : varchar(8) Create type employep_t as Object (noe int, nome varchar(50), refadresse REF domicile_t) Create table EmployeP of employep_t -- création du containeur d objets (de la table) La contrainte (not null) sur refadresse reste à définir ou sera renforcée par la méthode d ajout. *** La REF doit toujours avoir un valeur valide pour renforcer la multiplicité. Modèle Objet page 69 Définition des contraintes sur les groupes d attributs Les contraintes sur les attributs et celles définies avec plusieurs attributs se définissent au niveau de la table i.e. du containeur. Modèle Objet page 70 Page 35

36 Les contraintes sont définies au niveau des tables Une contrainte est toujours définie via la table et non au niveau du type. Ce dernier est partageable avec d'autres tables qui n'ont pas nécessairement les mêmes contraintes même si elles partagent le même type. Contraintes de table: clé primaire, clé étrangère, Unicité, Check, Create table Employe of employe_t (Constraint pkemploye Primary Key (noe), Constraint c_noemploye Check(noE > 100 and noe< 999) ); Rappel: La définition de clé est INTERDITE via le type. (contrainte définie au niveau de la table) Create type employe_t (mat int, salaire number (8,2), Constraint pkemploye Primary Key (noe) Modèle Objet page 71 Création de la table-objet avec plusieurs contraintes REF : une référence vers un objet est construite avec l'oid. EmployeP : employep_t noe*: int nome: varchar(50) refadresse Create table EmployeP of type employep_t ( constraint pk_noe primary key (noe), constraint c_nome check ( length (nome) <= 50), constraint c_refadresse check ( refadresse is not null), constraint c_verifempl check (noe > 99 and refadresse.nod ) > 50)); Domicile : domicile_t nod*: int rued : varchar(50) teld : varchar(8) Contrainte d attribut vérifiée dès la mise à jour de l attribut Contrainte de table vérifiée en dernier Create table Domicile of type domicile_t ; -- aucune contrainte définie La multiplicité (1,1) du côté employep n est donc pas renforcée avec ce Mnav Modèle Objet page 72 Page 36

37 Insertion en violation de multiplicité d un objet de type Domicile Insert into Domicile values ( domicile_t(500, "des Lilas ", ' ' )); -- sans vérification du côté Employe Le commit implicite (le défaut) à la fin du DML fait en sorte que l ajout de cet objet se fera en violation de la multiplicité i.e. que le domicile ne sera pas associé à un employé comme l exige le diagramme de classe! Il faudra le faire avec un update de l attribut de refadresse sans avoir garantir l atomicité des actions: Insert + insert Solutions : A- Faire l insertion de l employé et de son domicile avec deux DML Insert mais dans la même transaction définie dans l application avec report de la vérification des contraintes par le noyau. B- Faire l ajout du domicile et de l employé par une seule méthode exigeant aussi la définition d une transaction au sein de la méthode. Modèle Objet page 73 Association: Interrogation avec navigation par le REF Navigation possible entre les tables en utilisant le type REF: formulation d'une requête plus simple et calcul plus rapide. EmployeP : employe_t noe*: int nome: varchar(50) refadresse Domicile : domicile_t nod: int rued : varchar(50) teld : varchar(8) Select E.nomE, E.refAdresse.telD From EmployeP E Chemin de navigation Where E.refAdresse.rue = 'despignes ; Multiplicité 1..1 du côté Domicile: La contrainte sur refadresse exige de référer à un et un seul objet de Domicile. Une contrainte IS NOT NULL étant définie sur l attribut refadresse. L ajout d un employé doit se faire obligatoirement avec un domicile! Modèle Objet page 74 Page 37

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? 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

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? 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

Plus en détail

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

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

Hala Skaf-Molli. Nancy-Université skaf@loria.fr 14 mai 2007

Hala Skaf-Molli. Nancy-Université skaf@loria.fr 14 mai 2007 Bases de données avancées Hala Skaf-Molli Maître de Conférence Nancy-Université skaf@loria.fr 14 mai 2007 1 Introduction Dans ce cours, nous allons étudier les bases de données Orienté objets, bases de

Plus en détail

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

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)

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) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

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

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Techniques de stockage, P. Rigaux p.1/43 Techniques de stockage Contenu de ce cours : 1. Stockage de données. Supports, fonctionnement d un disque, technologie RAID 2. Organisation

Plus en détail

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

Master Exploration Informatique des données DataWareHouse

Master Exploration Informatique des données DataWareHouse Master Exploration Informatique des données DataWareHouse Binôme Ahmed BENSI Enseignant tahar ARIB SOMMAIRE I. Conception...1 1. Contexte des contrats...1 2. Contexte des factures...1 II. Modèle physique...2

Plus en détail

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

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

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

Quelques aspects du Relationnel-Objet du SGBD Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD

Plus en détail

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

Partie 0 : Gestion des tablespace et des utilisateurs... 3 Sommaire Partie 0 : Gestion des tablespace et des utilisateurs... 3 1- Créer deux TableSpaces votre_nom-tbs et Votre_nom-TempTBS :... 3 2. Créer un utilisateur qui porte votre nom :... 3 3. Attribuer à

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 13 : Organisation d une base de données, ou comment soulever (un peu) le voile Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Les clusters de table

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

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

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Introduction aux SGBDR

Introduction aux SGBDR 1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux

Plus en détail

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent

Plus en détail

I4 : Bases de Données

I4 : Bases de Données I4 : Bases de Données Passage de UML au modèle relationnel Georges LOUIS Département Réseaux et Télécommunications Université de La Rochelle Module I4 2008-2009 1 G.Louis Sommaire 1 Des classes aux tables

Plus en détail

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

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub pierre-andre.sunier@he-arc.ch http://lgl.isnetne.ch/

Plus en détail

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : cinzia.digiusto@gmail.com webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

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

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

Historisation des données

Historisation des données Historisation des données Partie 1 : mode colonne par Frédéric Brouard, alias SQLpro MVP SQL Server Expert langage SQL, SGBDR, modélisation de données Auteur de : SQLpro http://sqlpro.developpez.com/ "SQL",

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

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

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

Corrigés détaillés des exercices

Corrigés détaillés des exercices Corrigés détaillés des exercices Diagramme des tables objet La figure suivante vous aidera dans la compréhension des manipulations des objets de la base. Client_type Client num nom adresse {telephone_vry}

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

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

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

UML et les Bases de Données

UML et les Bases de Données CNAM UML et les Bases de Données UML et les Bases de Données. Diagramme de classes / diagramme d objets (UML)...2.. Premier niveau de modélisation des données d une application...2.2. Les éléments de modélisation...2.2..

Plus en détail

Compétences Business Objects - 2014

Compétences Business Objects - 2014 Compétences Business Objects - 2014 «Mars-Juin 2014. Réf : Version 1 Page 1 sur 34 Sommaire CONTEXTE DE LA REMISE A NIVEAU EN AUTOFORMATION... 3 1. MODELISATION... 4 1.1 DESCRIPTION FONCTIONNEL DE L'APPLICATION

Plus en détail

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

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

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

Pour les débutants. langage de définition des données Pour les débutants SQL : langage de définition des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

IFT3030 Base de données. Chapitre 2 Architecture d une base de données IFT3030 Base de données Chapitre 2 Architecture d une base de données Plan du cours Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées

Plus en détail

Architectures, modèles et langages de données

Architectures, modèles et langages de données Architectures, modèles et langages de données OLAP Hypercube Ingénierie des bases de données Fascicule 3 c,d Volume I Langage SQL, indexation et vue relationnelle André Gamache 2005 Architectures, Modèles

Plus en détail

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

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Devoir Data WareHouse

Devoir Data WareHouse Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 2013 SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 Table des matières Signalétique... 2 1 Les bases du SQL... 3 2 SQL server... 6 2 Références des exercices...21 DEHECQ Olivier

Plus en détail

Du 10 Fév. au 14 Mars 2014

Du 10 Fév. au 14 Mars 2014 Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN

Plus en détail

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

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet Anne.Doucet@lip6.fr http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

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

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

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

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 Plan Bases de Données L3 Info Céline Rouveirol 2010-2011 Bases de Données 1 / 77 Sources des transparents Bases de Données 2 / 77 Bases de SQL - M.P. Dorville/F. Goasdoué, LRI, Université Paris Sud - V.

Plus en détail

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

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours Jean-Yves.Antoine@univ-tours.fr UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

TP11 - Administration/Tuning

TP11 - Administration/Tuning TP11 - Administration/Tuning MIAGE #3-2006/2007 January 9, 2007 1 Architecture physique d une base Oracle 1.1 La structure physique Une base de données Oracle est composé de fichiers (au sens du système

Plus en détail

Cours: Administration d'une Base de Données

Cours: Administration d'une Base de Données Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/62 Bases de Données Avancées Introduction & Rappel Conception et Modélisation Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR

Plus en détail

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

BASES DE DONNEES ORIENTEES OBJETS BDA10.1 BASES DE DONNEES ORIENTEES OBJETS BDA10.1 Trois chapitres Principes et modèles 2 approches : langage de programmation OO => nouveaux SGBD "purs orientés-objets" norme ODMG extension des bd relationnelles

Plus en détail

Optimisations des SGBDR. Étude de cas : MySQL

Optimisations des SGBDR. Étude de cas : MySQL Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique

Plus en détail

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

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

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

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

Bases de Données. Plan

Bases de Données. Plan Université Mohammed V- Agdal Ecole Mohammadia d'ingénieurs Rabat Bases de Données Mr N.EL FADDOULI 2014-2015 Plan Généralités: Définition de Bases de Données Le modèle relationnel Algèbre relationnelle

Plus en détail

TP3 : Creation de tables 1 seance

TP3 : Creation de tables 1 seance Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer

Plus en détail

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

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

Bases de données cours 1

Bases de données cours 1 Bases de données cours 1 Introduction Catalin Dima Objectifs du cours Modèle relationnel et logique des bases de données. Langage SQL. Conception de bases de données. SQL et PHP. Cours essentiel pour votre

Plus en détail

Gestion de base de données

Gestion de base de données Université Libre de Bruxelles Faculté de Philosophie et Lettres Département des Sciences de l Information et de la Communication Gestion de base de données Projet : Take Off ASBL Cours de M. A. Clève STIC-B-505

Plus en détail

IFT3030 Base de données. Chapitre 1 Introduction

IFT3030 Base de données. Chapitre 1 Introduction IFT3030 Chapitre 1 Introduction Plan du cours Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancés Modèle des objets

Plus en détail

TP Bases de données réparties

TP Bases de données réparties page 1 TP Bases de données réparties requêtes réparties Version corrigée Auteur : Hubert Naacke, révision 5 mars 2003 Mots-clés: bases de données réparties, fragmentation, schéma de placement, lien, jointure

Plus en détail

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers Programme détaillé Objectifs de la formation Les systèmes de gestion de bases de données prennent aujourd'hui une importance considérable au regard des données qu'ils hébergent. Véritable épine dorsale

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

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

Bases de données Cours 1 : Généralités sur les bases de données Cours 1 : Généralités sur les bases de données POLYTECH Université d Aix-Marseille odile.papini@univ-amu.fr http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 1 Qu est ce qu une

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Modélisation et Gestion des bases de données avec mysql workbench

Modélisation et Gestion des bases de données avec mysql workbench Modélisation et Gestion des bases de données avec mysql workbench par novembre 2011 Table des matières 1 Installation 3 1.1 Ecran de chargement 3 1.2 Page d accueil 3 2 Réalisation d une base de données

Plus en détail

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

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

420-PK6-SL Banques de données Avancées UTILISATEURS

420-PK6-SL Banques de données Avancées UTILISATEURS 420-PK6-SL Banques de données Avancées Gestion des UTILISATEURS RÈGLES DE NOMENCLATURE Un UTILISATEUR Oracle est : Une connexion à Oracle Un nom de connexion"login" Un détenteur de droits et privilèges

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

Plus en détail

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

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW Groupe : 322 Exploitation des Banques de données 420-PK6-SL (1-2-1) Étape : 3 Professeur Nom: Marcel Aubin Courriel : maubin@cegep-st-laurent.qc.ca

Plus en détail

Cours Bases de données

Cours Bases de données Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine antoine.cornuejols@agroparistech.fr Transparents Disponibles

Plus en détail