Objectifs. Plan. Introduction aux Bases de données Cours 8 : Création des schémas. Rappel : schéma d une BD relationnelle. Commandes SQL pour :

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

Langage SQL : créer et interroger une base

Création et Gestion des tables

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

Olivier Mondet

Le Langage De Description De Données(LDD)

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

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

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

Le Langage SQL version Oracle

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

TP Contraintes - Triggers

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

Exercices sur SQL server 2000

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

Intégrité des données

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

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

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

1/ Présentation de SQL Server :

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

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

MySQL / SQL EXEMPLES

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

Les bases de données

TP3 : Creation de tables 1 seance

I4 : Bases de Données

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

Compétences Business Objects

CREATION WEB DYNAMIQUE

Bases de données relationnelles & SQL

Bases de données relationnelles

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

1 Position du problème

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

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

Bases de données et sites WEB

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

1. Base de données SQLite

1 Introduction et installation

Historisation des données

16H Cours / 18H TD / 20H TP

SQL Historique

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Optimisation SQL. Quelques règles de bases

NF26 Data warehouse et Outils Décisionnels Printemps 2010

FileMaker 13. Guide de référence SQL

Gestion de base de données

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

Corrigés détaillés des exercices

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

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Chapitre 10 Arithmétique réelle

Le langage SQL Rappels

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

Bases de données - Modèle relationnel

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Bases de Données. Plan

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

Bases de Données Avancées

Ora2Pg Performances. (C) 2013 Gilles Darold

as Architecture des Systèmes d Information

Bases de données élémentaires Maude Manouvrier

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

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

INTEGRITE ET BD ACTIVES

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

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

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

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

LE LANGAGE SQL2 1. INTRODUCTION

STAGE IREM 0- Premiers pas en Python

UML et les Bases de Données

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours: Administration d'une Base de Données

I. MySQL : Serveur et SGBD

Bases de données avancées

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

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Master Exploration Informatique des données DataWareHouse

Groupe 11 TABLE DES MATIERES

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

TP 1. Prise en main du langage Python

Bible MySQL! La première version de MySQL est apparue en Cette première version est créée pour un usage personnel à partir de msql.

Application web de gestion de comptes en banques

Mejdi BLAGHGI & Anis ASSÈS

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 DONNEES TP POSTGRESQL

Transcription:

Objectifs Introduction aux Bases de données Cours 8 : Création des schémas UFR 919 2 e année Licence Informatique UE 2I009 Commandes SQL pour : 1. Création de schémas relationnels 2. Définition de contraintes d intégrité Déclinaison syntaxique différente selon systèmes UPMC - UFR 919 - L2 2I008 2 Plan 1. Langage de Définition de Données - LDD Création des tables Définition des types/domaines Contraintes d intégrité Rappel : schéma d une BD relationnelle ² Ensemble des schémas de relation S = {R 1, R 2,,R n } où R i schéma de relation ² Schéma d une relation = ensemble des attributs avec leurs types/domaines respectifs R(A 1 :D 1, A 2 :D 2,, A m :D m ) arité m + contraintes d intégrité UPMC - UFR 919 - L2 2I008 3 UPMC - UFR 919 - L2 2I008 4

Exemple : Types /domaines Etudiants(matricule :Number, nom : Varchar, prenom : Varchar, adresse : Varchar) Salles(numero : Number, capacite : Number) types/domaines Modules( code : Number, intitule : Varchar, niveau : Varchar, salle : Number) Exemple : Contraintes Etudiants(matricule, nom, prenom, adresse, collaborateur*) collaborateur fait référence à (la clé primaire de) Etudiants Modules(code, intitule, niveau, salle*) salle fait référence à Salles Salles(numero, capacite, precedente *, suivante*) precedente et suivante font chacun référence à Salles contraintes d intégrités UPMC - UFR 919 - L2 2I008 5 UPMC - UFR 919 - L2 2I008 6 Plan 1. Langage de Définition de Données Création des tables Définition des types/domaines Contraintes d intégrité Syntaxe de la création de tables create table <nom> ( <Attr 1 > <Dom 1 > [not null] [default <val 1 > ], <Attr 2 > <Dom 2 > [not null] [default <val 2 > ],. <Attr n > <Dom n > [not null] [default <val 2 > ], <contrainte 1 >,... <contrainte n > ) nom : nom de la table Att i : nom d un attribut Dom i : type/domaine Val i : valeur par défaut not null : la valeur doit être renseignée contrainte i : contrainte d intégrité UPMC - UFR 919 - L2 2I008 7 UPMC - UFR 919 - L2 2I008 8

Plan 1. Langage de Définition de Données Création des tables Définition des types/domaines Association des contraintes d intégrité 2. Langage de Modification de Données Insertion/suppression/mise à jour dans les tables Types de Bases Types alphanumériques char(n) ou character varchar(n) ou varying character Types Numériques int ou integer, smallint numeric(t,d) real, double precision float(n) UPMC - UFR 919 - L2 2I008 9 UPMC - UFR 919 - L2 2I008 10 Types alphanumériques char(n) vs varchar(n) char(n) réserve n cases dans tous les cas, complète par des blancs Ex. char(10) M A R T A varchar(n) utilise au maximum n cases Ex. varchar(10) M A R T A Précaution lors de la comparaison de deux attributs déclarés comme char(n) et varchar(n)! Types Numériques numeric(t,d) Un nombre avec virgule fixe : t = nombre total maximum de chiffres (sans signe) d = nombre de chiffres après la virgule (partie décimale) t-d = nombre de chiffres avant la virgule (partie entière) Ex. numeric(5,2) peut contenir 123.45, -123.45, 0.56 ou 22, mais pas 1200 ni 12.345 real, double précision Nombre à virgule flottante float(n) Nombre à virgule flottante avec au moins n chiffres sur n bits UPMC - UFR 919 - L2 2I008 11 UPMC - UFR 919 - L2 2I008 12

Types temporels : data, time, timestamp Manipulation des types temporels date Date calendaire (année, mois et jour du mois) time Temps d un jour (heure, minutes, secondes) Fuseau horaire timestamp Combinaison des types date et time Exemples Date 01-01-2015 Time 00:30:00 Timestamp 01-01-2015 0:30:12.50 1 - Conversion d une chaîne de caractères vers un type temporel cast ( chaine as type ) type : date, time, timestamp 2 - Extraction d un champ depuis un type temporel extract (champ from type) champ : year, month, day, hour(s), minute(s), second(s) UPMC - UFR 919 - L2 2I008 13 UPMC - UFR 919 - L2 2I008 14 Manipulation des types temporels 3- Extraction de la date et l heure système current_time ex. 10:10:30.123456 current_date ex. 01-01-2015 current_timestamp, localtimestamp ex. 01-01-2015 10:10:30.123456 4- Arithmétique sur les types date date1-date2 =nombre de jours date1(+/-) entier= date (après/avant) entier jours Types numériques dans Oracle Number[(p,[s])] val [1.0 x 10-130 1.0 x 10 126 ] p pour précision : nombre total de chiffres s pour scale : nombre de chiffres après virgule (.) Number signifie nombre à virgule flottante Number(p) Number(p,0) Float [(p)] Sous-type de Number Long Compatibilité avec versions précédentes UPMC - UFR 919 - L2 2I008 15 UPMC - UFR 919 - L2 2I008 16

Types temporels sous Oracle Date (cf. cours 4) Timestamp : extension de Date avec précision secondes et localisation géographique Year (- 4712,9999 sauf 0) Month (01-12) Day (01-31) Hour (00-23) Minute(00-59) Second(00-59(n) où n est la précision) Timezone_Hour (-12, 12) Plein d autres types à découvrir dans la doc Oracle (cf. lien sur le site de l UE) Définition de nouveaux types Types plus spécifiques / applicatifs pour 1. Restreindre le format données Ex. adresse mail (xxx.yyy@zzz.dom), code postal (xx xxx) 2. Mieux capturer la sémantique des données Ex. Employe (nom : char(10),.., dept: char(10)) mais employés et départements incomparables! 3. Définir des types complexes avec imbrication (programme M1) UPMC - UFR 919 - L2 2I008 17 UPMC - UFR 919 - L2 2I008 18 Définition des domaines Définition d un nouveau type à partir d un type de base Syntaxe create domain <nom> as <dom>[<contrainte>]; Exemples create domain fin_semaine as text constraint fin_sem check(value in ( sam, dim ) create domain sal_min as numeric(7,2) constraint sal_val check(value >=10 000 on verra plus tard Création d une table en SQL : exemple Compte(numero, titulaire, lieu, ouverture, agence) create domain codep as numeric(5 create domain codeag as numeric(5 create table Compte( numero numeric(10) not null, titulaire varchar2(10) not null, lieu codep default 75001, ouverture date, agence codeag UPMC - UFR 919 - L2 2I008 19 UPMC - UFR 919 - L2 2I008 20

Syntaxe de la création de tables create table <nom> ( <Attr 1 > <Dom 1 > [not null] [default <val 1 > ], <Attr 2 > <Dom 2 > [not null] [default <val 2 > ],. <Attr n > <Dom n > [not null] [default <val 2 > ], <contrainte 1 >,... <contrainte n > ) nom : nom de la table Att i : nom d un attribut Dom i : type/domaine Val i : valeur par défaut not null : la valeur doit être renseignée contrainte i : contrainte d intégrité Contraintes d intégrité Conditions devant être vérifiées par toutes les données à Cohérence des données Un numéro d étudiant est unique Un salaire ne peut être inférieur au salaire minimum Cohérence et mises à jour Toute MAJ s applique sur une base cohérente et préserve cette cohérence UPMC - UFR 919 - L2 2I008 21 UPMC - UFR 919 - L2 2I008 22 Types de contraintes d intégrité Contraintes de clés Rôle des clés : identification des n-uplets Chaque table possède au moins une clé (la primaire) Vérification : efficace avec des index Contraintes générales Conditions non-exprimables avec des clés Conditions simples (>, <, =,..) ou complexes nécessitant des requêtes Vérification : potentiellement coûteuse Contraintes de clés : rappel Clé candidate : attributs dont les valeurs sont distinctes pour tous les n-uplets (valeurs null possibles) Clé primaire : clé candidate dont chacun des attributs est renseigné Clé étrangère : attributs dont les valeurs proviennent d une clé candidate ou d une clé primaire définie dans la même table ou dans une autre table UPMC - UFR 919 - L2 2I008 23 UPMC - UFR 919 - L2 2I008 24

Contraintes de clés : syntaxe Clés candidates unique(a 1,..,a n ) Clé primaire primary key(a 1,..,a n ) a i et b j sont des attributs Clés étrangères foreign key(a 1,..,a n ) references table foreign key(a 1,..,a n ) references table (b 1,..,b n ) UPMC - UFR 919 - L2 2I008 25 Contraintes de clés : exemples Module(code : varchar, intitule : varchar, niveau : varchar, suit*: varchar, salle* : number) code clé primaire; suit et salle référencent les tables Module et Salle respectivment. Salles(numero: number, nbplaces: number) numero clé primaire create table Module( code varchar(10), intitule varchar(20), niveau char(2), suit varchar(10), salle numeric(5), primary key(code), foreign key suit references Module, foreign key salle references Salles create table Salles( numero numeric(5), nbplaces numeric(3), primary key(numero) UPMC - UFR 919 - L2 2I008 26 Contraintes de clés : exemples (suite) Contraintes de clés : exemples (fin) Compte(numero : number, titulaire : varchar, lieu : codep, ouverture : date, numag* : codeag ) numero clé primaire; numag référence la table Agence; (titulaire, lieu) clé candidate Agence(code :codeag, nbemp : number, agplusproche* : codeag) code clé primaire; agplusproche référence la table Agence A(cle : number, chaine : varchar, autre : varchar) cle clé primaire, (chaine, autre) clé candidate B(cle : number, chaine1*: varchar, chaine2* : varchar) cle clé primaire, (chaine1, chaine2) référence la clé (chaine, autre) de Agence create table Compte( numero numeric(10), titulaire varchar2(10), lieu codep, ouverture date, numag codeag, primary key(numero), foreign key numag references Agence, unique(titulaire, lieu) create table Agence( code codeag, nbemp numeric(3), agplusproche codeag, primary key(code), foreign key agplusproche references Agence create table A( cle numeric(10), chaine varchar2(10), autre varchar2(10), primary key(cle), unique(chaine, autre ) create table B( cle numeric(10), chaine1 varchar2(10), chaine2 varchar2(10), primary key(cle), foreign key (chaine1, chaine2) references A(chaine, autre) UPMC - UFR 919 - L2 2I008 27 UPMC - UFR 919 - L2 2I008 28

Contraintes de clés et valeurs NULL Rappel 1 : tout attribut d une clé primaire doit être renseigné (contrainte NOT NULL implicite) Rappel 2: NULL signifie une valeur inconnue. Les prédicats (a 1,..,a n )=(b 1,..,b n ) (a 1,..,a n ) <> (b 1,..,b n ) not( (a 1,..,a n )=(b 1,..,b n ) ) not( (a 1,..,a n )<>(b 1,..,b n ) ) sont faux si au moins un a i ou b i est NULL (inconnu) Exemple (123, abc, Null) = (123, abc, Null) est faux, (123, abc, 'x') <> (123,Null, 'x') est faux, not ((123, abc, 'x') = (123,Null, 'x')) est faux aussi à pourquoi? Repris plus loin Contraintes générales Contraintes sur une seule table check <predicat> où predicat est une Condition n utilisant qu une seule table Contraintes sur plusieurs tables create assertion <nom> check <predicat-complexe> où predicat-complexe est une Condition faisant appel à plusieurs tables UPMC - UFR 919 - L2 2I008 29 UPMC - UFR 919 - L2 2I008 30 Contraintes sur une seule table : exemple Empêcher qu il y ait plus de 7 modules par niveau d études create table Module( code varchar(10), intitule varchar(20), niveau char(2), suit varchar(10), constraint modules_max check (all (select count(*) from Module group by niveau)<8) UPMC - UFR 919 - L2 2I008 31 Contraintes sur plusieurs tables : exemple create table Etudiant( eid numeric(8), nom varchar(10), moy numeric(4,2) create table Eval( eid numeric(8), /*etud*/ mid char(3), /*module*/ note numeric(4,2) /*note*/ create assertion verif_moy check ( not exists ( select * from Etudiant where moy <> ( select avg(note) from Eval where Eval.eid=Etudiant.eid ) ) L attribut Etudiant.moy = moyenne des notes (Eval.note) de l étudiant UPMC - UFR 919 - L2 2I008 32

Conditions avec NULL Contraintes d unicité et NULL Exemple 1 : create table Test(a varchar2(10),constraint unic unique(a) Tenter d insérer : ab puis ab puis Null puis Null Exemple 2 : create table Test(a varchar2(10), b varchar2(10), constraint unic unique(a,b) Tenter d insérer : ( abc, null) puis ( abc, def ) puis (null, def ) puis (null, def ) puis ( abc,null) puis (null,null) puis (null, null) Source doc. Oracle UPMC - UFR 919 - L2 2I008 33 UPMC - UFR 919 - L2 2I008 34 Réponses Conditions avec NULL Exemple 1 : create table Test(a varchar2(10),constraint unic unique(a) Tenter d insérer : 1 abc puis 2 abc puis 3 Null puis 4 Null Exemple 2 : create table Test(a varchar2(10), b varchar2(10), constraint unic unique(a,b) Tenter d insérer : ( abc, null) puis ( abc, def ) puis (null, def ) puis (null, def ) puis ( abc,null) puis (null,null) puis (null, null) num a 1 abc 3 4 num a b 1 abc 2 abc def 3 def 6 7 On associe à VRAI la valeur 1, à FAUX la valeur 0 et à INCONNU la valeur 1/2 x AND y = min ( x, y ) x OR y = max ( x, y ) NOT x = 1 x Pour une requête, la condition du where doit être VRAIE pour retourner les nuplets du from UPMC - UFR 919 - L2 2I008 35 UPMC - UFR 919 - L2 2I008 36

Sémantique tri-valuée : Table de vérité Requêtes et Null 1. SELECT Pname From Projet Where StartingD<01/02/15; 2. SELECT Pname From Projet Where StartingD < 01/02/15 AND Budget > 10000; 3. SELECT Pname From Projet Where StartingD < 01/02/15 OR Budget < 10000; 4. SELECT Pname From Projet Where StartingD 01/02/15 OR StartingD 01/02/15; r1 r2 UPMC - UFR 919 - L2 2I008 37 UPMC - UFR 919 - L2 2I008 38