Modèle relationnel Création et modification des relations en SQL



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

Olivier Mondet

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

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

I4 : Bases de Données

Bases de données relationnelles

Le Langage De Description De Données(LDD)

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

Langage SQL : créer et interroger une base

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

Création et Gestion des tables

Bases de données et sites WEB

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

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

Le Langage SQL version Oracle

TP Contraintes - Triggers

A QUOI SERVENT LES BASES DE DONNÉES?

TP3 : Creation de tables 1 seance

Compétences Business Objects

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

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

OpenPaaS Le réseau social d'entreprise

Intégrité des données

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

Auto-évaluation Oracle: cours de base

CREATION WEB DYNAMIQUE

SQL Historique

Gestion des utilisateurs et de leurs droits

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

MySQL / SQL EXEMPLES

Les bases de données

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

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

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

Historisation des données

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

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

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

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

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

Bases de données - Modèle relationnel

Master Exploration Informatique des données DataWareHouse

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

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

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Gestion de base de données

Bases de Données Avancées

I. MySQL : Serveur et SGBD

Systèmes de Gestion de Bases de Données

1. Base de données SQLite

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

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

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

1 Position du problème

Devoir Data WareHouse

Application web de gestion de comptes en banques

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

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

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

Cours: Administration d'une Base de Données

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

Les BASES de DONNEES dans WampServer

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

1/ Présentation de SQL Server :

Installation d'un serveur FTP géré par une base de données MySQL

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

LE LANGAGE SQL2 1. INTRODUCTION

NF26 Data warehouse et Outils Décisionnels Printemps 2010

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

Comprendre les bases de données

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

PHP 4 PARTIE : BASE DE DONNEES

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

TP11 - Administration/Tuning

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)

Bases de données avancées

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

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

Bases de données Cours 4 : Le langage SQL pour ORACLE

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

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

Corrigés détaillés des exercices

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

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

Mejdi BLAGHGI & Anis ASSÈS

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

TP Bases de données réparties

Transcription:

Modèle relationnel Création et modification des relations en SQL ENT - Clé sql2009 BD - Mírian Halfeld-Ferrari p. 1

Insertion dans une relation Pour insérer un tuple dans une relation: insert into Sailors (sid, sname, rating, age) values (12, Emmanuel, 5,21); Nous pouvons ne pas mettre la liste des attributs si les valeurs sont dans le bon ordre. C est mieux (bon style) de mettre les noms des attributs Nous pouvons aussi insérer le résultat d une requête. Supposons une relation STUDENTS contenant des informations sur des étudiants... insert into Sailors (sid, sname, select S.id, S.name, S.age from Students S where S.age >=18; age) La table d étudiant ne contient pas des informations concernant le rating. La valeur sera donc NULL. Nous pouvons utiliser une valeur par DÉFAUT (pendant la création) pour rating. BD - Mírian Halfeld-Ferrari p. 2

Suppression d un tuple Il est possible de supprimer un tuple qui satisfait une condition. La condition peut être spécifiée en utilisant tout le pouvoir de SQL. Supprimer les marins qui n ont pas de rating delete from Sailors S where S.rating is NULL; Supprimer les marins qui n ont pas une réservation pour Clipper delete from Sailors S where S.name NOT IN ( select R.name from Reserves R, Boats B where S.sid = R.sum and R.bid = B.bid and B.bname = Clipper ); BD - Mírian Halfeld-Ferrari p. 3

Modification d un tuple Nous pouvons modifier des valeurs dans une relation. Dans la mise à jour, la clause WHERE est appliquée AVANT pour déterminer les tuples qui doivent être changés. Si le tuple qui est modifié est aussi utilisé pour déterminer la nouvelle valeur, alors la valeur à droite de l expression correspond à la valeur ancienne (avant la modification). Augmenter l age et diminuer le rating du marin numéro 62. update Sailors S set S.age = S.age +1, S.rating = S.rating -1 where S.sid = 62; update Sailors S set S.rating = S.rating -1 where S.rating >= 8; BD - Mírian Halfeld-Ferrari p. 4

Comment créer les schéma de relation en SQL? Pour créer un schéma de relation CREATE TABLE Sailors ( sid Number(4), sname Varchar2(40), rating Number(2), age Number(3)); Pour ajouter un attribut dans une table existante. ALTER TABLE Sailors ADD COLUMN address varchar2(70); Pour supprimer une table DROP TABLE Sailors; BD - Mírian Halfeld-Ferrari p. 5

Contraintes d intégrité Le but des contraintes d intégrité est: Assurer l implémentation d une certaine sémantique. Par exemple, un marin peut réserver un seul bateau par jour Assurer que les mises à jour ne violent pas la cohérence (l intégrité) de la base Par exemple, si le numéro d identification d un bateau est unique nous ne pouvons pas insérer un nouveau bateau avec le numéro d un bateau déjà existant. BD - Mírian Halfeld-Ferrari p. 6

Les contraintes de clés primaire Une clé primaire est un sous ensemble minimal d attributs pour lequel deux tuples de la base ne peuvent pas avoir la même valeur. C est un identificateur unique. Pour déterminer les clés nous avons besoin des dépendances fonctionnelles Une relation peut avoir plusieurs clés. En SQL nous pouvons déclarer qu un ensemble d attributs est une clé en utilisant la contrainte UNIQUE: plusieurs sous ensembles d attributs peuvent être déclarés comme unique la contrainte PRIMARY KEY: une seule contrainte de ce type par relation. BD - Mírian Halfeld-Ferrari p. 7

Les contraintes de clés primaire Une seule personne peut réserver un bateau dans une journée. create table Reservation( snum Number(4), bnum Number(5), day Date, primary key (bnum,day)); Une seule personne peut réserver un bateau dans une journée. De plus, une personne peut avoir une seule réservation "en route". create table Reservation( snum Number(4), bnum Number(5), day Date, primary key (bnum,day); unique (snum)); BD - Mírian Halfeld-Ferrari p. 8

Les contraintes de clés primaire Une autre syntaxe.. directement à coté de l attribut create table Boats( bid Number(5) primary key, bname Varchar2(30), color Varchar2(10)); En donnant un nom à la contrainte: create table Boats( bid Number(5), bname Varchar2(30), color Varchar2(10) CONSTRAINT BoatKey PRIMARY KEY (bid)); BD - Mírian Halfeld-Ferrari p. 9

Primary Key Unique Primary Key: les valeurs nulles ne sont pas possibles Unique: il est possible d avoir des valeurs nulles Nous pouvons ajouter la contrainte NOT NULL pour indiquer qu un attribut ne peut pas avoir des valeurs nulls. create table Sailors ( sid Number(4) primary key, sname Varchar2(40) not null, rating Number(2), age Number(3)); BD - Mírian Halfeld-Ferrari p. 10

Les contraintes de clés étrangères Les contraintes de clés étrangères mettent en rapport plusieurs tables. Soit deux relations R et S. Soit une clé étrangère qui implémente la dépendance d inclusion: R.X S.Y Cela veut dire: 1. Les tuples (de valeurs) associés aux attribut X dans la relation R doivent apparaître comme tuples (de valeurs) associés aux attributs Y d une relation S. 2. Y est associé à une contrainte UNIQUE ou PRIMARY KEY create table Reservation( snum Number(4), bnum Number(5), day Date, primary key (snum,day), foreign key (snum) references Sailors(sid), foreign key (bnum) references Boats(bid) ); BD - Mírian Halfeld-Ferrari p. 11

Les contraintes de clés étrangères Une autre syntaxe: create table Reservation( snum Number(4), bnum Number(5), day Date, primary key (snum,day), CONSTRAINT FKNumSailor FOREIGN KEY (snum) references Sailors(sid), CONSTRAINT FKNumBoat FOREIGN KEY (bnum) references Boats(bid) ); BD - Mírian Halfeld-Ferrari p. 12

Le renforcement des contraintes create table Reservation( snum Number(4), bnum Number(5), day Date, primary key (snum,day), CONSTRAINT FKNumSailor FOREIGN KEY (snum) references Sailors(sid) ON DELETE CASCADE); BD - Mírian Halfeld-Ferrari p. 13

Autres contraintes sémantiques Nous pouvons spécifier des contraintes diverses avec CHECK condition Exemples: L attribut rating doit être associé à des entiers de 1 à 10. create table Sailors ( sid Number(4), sname Varchar2(40) not null, rating Number(2), age Number(3) primary key (sid), CHECK (rating >= 1 and rating <=10)); BD - Mírian Halfeld-Ferrari p. 14

Valeurs par default Il est possible de déclarer une valeur par défaut associée à un attribut. En général, cela se fait dans n importe quelle instruction où nous devons déclarer un attribut et son type. Mot clé: DEFAULT suivi de la valeur (ex: NULL ou une constante) Certaines valeur sont fournies par le système comme la date. Exemple: gender CHAR(1) DEFAULT?, birthday DATE DEFAULT DATE 0000-00-00 Example: ALTER TABLE Sailors ADD phone CHAR(16) DEFAULT unlisted ; BD - Mírian Halfeld-Ferrari p. 15

Les vues Une vue est une relation correspondant au résultat d une requête sur la base. Cette relation n est pas stockée dans la base, mais calculée à chaque fois que nous avons besoin. Nous pouvons faire des requêtes et des mises à jour sur une vue (des limites pour les mises à jour sont imposées par les SGBD). Exemple create view ActiveSailors (name, age, day) as select S.sname, S.age, R.day from Sailors S, Reservation R where S.sid = R.snum and S.rating > 6; Une requête: select S.sname, S.age, from ActiveSailors where S.age > 50 ; BD - Mírian Halfeld-Ferrari p. 16

Quelques remarques coté administration Une base de données Oracle est constituée de plusieurs éléments : Des processus chargés en mémoire sur le serveur Des fichiers physiques stockés sur le serveur D un espace mémoire sur le serveur appelé SGA (System Global Area) On appelle instance Oracle les processus et la SGA d une base de données Oracle. Ne pas confondre l instance Oracle (le SGBD) et la base de données!! Rappel: un schéma de base de données est l ensemble de schéma des relations d une base. Dans Oracle un schéma de base de données est associé à un utilisateur. Ainsi toutes les tables déclarées sur votre compte Oracle sont gérées via une instance Oracle et vues comme un schéma de base de données (vous avez peut être des tables sans aucun rapport dans votre compte, mais le SGBD les voit comme une base de données). Pour avoir un autre schéma de BD il faut avoir un autre compte utilisateur. Un utilisateur - par défaut - ne peut pas voir la base d un autre. BD - Mírian Halfeld-Ferrari p. 17

Contrôle d accès En général, les bases de données (d une entreprise, par exemple) contiennent une grande quantité d information. La plupart des utilisateurs a besoin d accéder une petite partie de ces informations. SGBD doit fournir des mécanismes pour contrôler l accès aux données. Les privilèges ou Discretionary acess control: Une approche pour le contrôle d accès offerts par un SGBD. Permet à un utilisateur d accéder à un objet d une certaine manière (lecture ou modification, par exemple). L utilisateur qui crée un objet (par exemple une table ou une vue) a tous les privilèges applicables sur cet objet. Le SGBD ensuite va surveiller comment ces privilèges sont donnés ou enlever des autres utilisateurs. SQL fournit les commandes GRANT pour donner des privilèges à des utilisateurs et REVOKE pour les supprimer. BD - Mírian Halfeld-Ferrari p. 18

Commande GRANT GRANT privileges ON object TO user [WITH GRANT OPTION] Dans notre cadre, object est une table ou une vue BD - Mírian Halfeld-Ferrari p. 19

Commande GRANT: privilèges Certains privilèges peuvent être spécifiés: SELECT: Le droit d accéder (ou lire) tous les attributs d une relation spécifiée comme object, y compris les attributs ajoutés à posteriori avec ALTER TABLE. INSERT (nomcolonne): Le droit d insérer des tuples avec des valeurs (autres que NULL ou défaut) correspondant aux colonnes (attributs) d une relation spécifiée comme object. Si le droit d insertion concerne toutes les colonnes (y compris celles ajouter à posteriori) nous devons utiliser seulement INSERT. UPDATE or UPDATE (nomcolonne): similaire à INSERT DELETE: Le droit de supprimer des colonnes d une relation spécifiés comme object. REFERENCES (nomcolonne): Le droit de définir des clés étrangères (dans d autres tables) qui font référence à une colonne spécifiée dans la relation object. REFERENCES donne les droits à toutes les colonnes. BD - Mírian Halfeld-Ferrari p. 20

Commande GRANT GRANT privileges ON object TO user [WITH GRANT OPTION] Si un utilisateur a un privilège avec GRANT OPTION il peut passer ce privilège à d autres utilisateurs (avec ou sans GRANT OPTION). Un utilisateur qui crée sa table a tous les privilèges sur elle y compris le droit de passer ses privilèges à d autres. Un utilisateur qui crée sa vue a, sur la vue, les droits qui correspondent aux privilèges sur les tables servant à la construction de la vue. L utilisateur qui crée une vue doit avoir le droit SELECT sur les tables servant à la construction de la vue. L utilisateur qui crée une vue a le droit SELECT avec GRANT OPTION seulement s il a ce droit pour la table servant à la construction de la vue. Si l utilisateur qui crée une vue a les droits de mises à jour sur la table servant à la construction de la vue, alors il a aussi le droit de mise à jour sur la vue. Seulement le propriétaire d un schéma peut exécuter les déclarations CREATE, ALTER, DROP de ce schéma. Le droit d exécuter ces déclarations ne peut pas être transmis ou supprimé. BD - Mírian Halfeld-Ferrari p. 21

La sécurité et les vues Ensemble avec les commandes GRANT et REVOKE, les vues sont importantes pour assurer la sécurité. La vue nous permet de cacher des informations de la base à des utilisateurs. Exemple create view ActiveSailors (name, age, day) as select S.sname, S.age, R.day from Sailors S, Reservation R where S.sid = R.snum and S.rating > 6; Un utilisateur qui peut accéder ActiveSailors mais qui ne peut pas accéder Sailors ou Reservation, peut connaître les noms des marins ayant réservé un bateaux, mais pas leur ID ou les noms des bateaux qu ils ont réservés. BD - Mírian Halfeld-Ferrari p. 22

Exemples Privilèges sont attribués à des ID (un utilisateur, un groupe...) Supposons que Joe est le propriétaire des tables Sailors, Boats et Reservation. Les prenons ci-dessous indiquent des ID. GRANT INSERT, DELETE ON Reservation TO Yuppy WITH GRANT OPTION GRANT SELECT ON Reservation TO Mike GRANT SELECT ON Sailors TO Mike WITH GRANT OPTION GRANT UPDATE (rating) ON Sailors TO Lea GRANT REFERENCES (bid) ON Boats TO Bill Avec ses privilèges Mike peut créer la vue ActiveSailors, mais il ne peut pas passer ses privilèges SELECT à d autres. BD - Mírian Halfeld-Ferrari p. 23

Commande REVOKE Supprimer un droit ou l option GRANT REVOKE [GRANT OPTION FOR] privileges ON object FROM users {RESTRICT CASCADE} CASCADE: Un utilisateur Toto AVAIT un droit (avec GRANT OPTION). Il a passé son droit à d autres. Quand cet utilisateur perd son droit tous les utilisateurs ayant reçu les privilèges en question seulement via Toto, perdent leur privilèges aussi. RESTRICT: Si l utilisateur n a pas passé ses droits, seulement le privilège directement supprimé est supprimé. Si l utilsateur a passé ses droits, la commande REVOKE n est pas acceptée. BD - Mírian Halfeld-Ferrari p. 24

Comment définir les contraintes? Pour savoir quelles contraintes implémenter il faut bien étudier la base de données que nous voulons implémenter. Il faut analyser quelles sont les contraintes que nous voulons mettre en place. Ces contraintes sont, pour la plupart, exprimées via de dépendances fonctionnelles... BD - Mírian Halfeld-Ferrari p. 25