20/09/2023
Développent de système d’ information
INTRODUCTION BD
Professeur : Abir ARGOUBI
[email protected] 1
10/20/2021
PLAN
1. Introduction
2. Définition
3. Les système de gestion de base de données
Définition, Architecture d’une base de données, Indépendance entre les niveaux,
Caractéristiques des SGBD, Les types d’SGBD
4. Etapes de conception d’une base de données
5. Type d’utilisateurs d’une base de données
INTRODUCTION
1.
Le langage SQL (Structured Query Language) a été introduit commercialement par IBM en 1982. Il a été ensuite
repris dans la quasi-totalité des SGBD et a fini d’être adopter comme norme de manipulation des bases de données.
Les commandes du langage SQL peuvent être classées en 2 catégories :
• Le langage de définition de données (LDD). Il permet la création, la modification et la suppression des
structures de données (tables, vues, etc.).
• Le langage de manipulation de données (LMD). Il permet la consultation, l’insertion, la modification et la
suppression des données.
2
10/20/2021
Création d’une table
1. Création de table
Syntaxe :
Les types de données possibles sont :
Tableau 1 : Type de données
2. DEFINITION
Les exemples de ce chapitre porteront sur la base de données dont le schéma relationnel est le suivant :
Client (CodeClient, NomClient, PrénomClient, Ville, Tel, Age)
Produit (CodeProduit, LibellePreduit, Prix_achat, Prix_Vente, codeFour, qtéStock)
Fournisseur (CodeFour, NomFour, PrénomFour,AdresseFour, TelFour, FaxFour)
Facture (codeFacture, DateFacture, CodeClient, MontantFacture, payé)
Ligne_facture (codeFacture, CodeProduit, Quantité)
Exemple :
• Créer la table Client :
CREATE TABLE client (CodeClient Number, NomClient VARCHAR2(30), PrenomClient
VARCHAR2(30), Ville VARCHAR2(50), Tel NUMBER(8), Age INTEGER);
3
10/20/2021
Les systèmes de gestion de base de données SGBD
2. Création d'une table à l'aide d'une sous-interrogation
• Faites correspondre le nombre de colonnes indiquées et le nombre de colonnes de la sous-interrogation.
• Définissez les colonnes avec des noms et des valeurs par défaut.
Exemple :
Create Table Produit100 AS
SELECT libelleproduit, prix_achat, prix_vente, prix_vente – prix_achat
FROM produit
WHERE prix_achat > 100;
3. Les contraintes d’intégrité
Une contrainte d’intégrité est une règle qui permet de contrôler au mieux la valeur d’une colonne.
Syntaxe :
4
10/20/2021
On peut utiliser des contraintes pour imposer le respect de l’une des règles suivantes :
• Imposer qu’un attribut ait une valeur dans la table (NOT NULL)
• Imposer que la valeur d’un attribut données soit unique (UNIQUE)
• Identifier une ou plusieurs colonnes comme étant une clé primaire (PRIMARY KEY)
• Identifier une ou plusieurs colonnes comme étant une clé étrangère (FOREIGN KEY)
• Spécifier qu’une colonne fait référence à celle d’une autre table (REFERENCES)
• Imposer que la valeur d’une colonne soit conforme à une valeur donnée (CHECK) :
• Cette contrainte prend les formats suivants :
o CHECK ( <nom_col> BETWEEN v_inf and v_sup )
o CHECK ( <nom_col> [NOT] IN (v_1 , v_2 , v_3 , … ,v_n )
o CHECK ( <nom_col> = | > | < | <> valeur )
Exemple :
Créer la table client en tenant compte des contraintes clé primaire, le nom doit être non nul et l’âge doit être
compris entre 20 et 150 :
CREATE TABLE client (CodeClient Number PRIMARY KEY, NomClient
VARCHAR2(30) NOT NULL, PrenomClient VARCHAR2(30), Ville VARCHAR2(50), Tel
NUMBER(8), Age INTEGER CHECK(Age BETWEEN 20 AND 150));
Remarque:
Il est toujours plus pratique de nommer les contraintes afin de pouvoir les identifier lors de la violation de ces
dernières.
Colonne Type contrainte => Colonne Type CONSTRAINT nom_contrainte contrainte
Exemples :
• Créer la table client en donnant un nom aux 2 premières contraintes :
CREATE TABLE client (CodeClient Number CONSTRAINT cp_client PRIMARY KEY,
NomClient VARCHAR2(30) CONSTRAINT nn_client NOT NULL, PrenomClient
VARCHAR2(30), Ville VARCHAR2(50), Tel NUMBER(8), Age INTEGER CHECK(Age
BETWEEN 20 AND 150));
• Créer la table produit
CREATE TABLE produit (CodeProduit Number CONSTRAINT cp_code PRIMARY KEY,
LibelléProduit VARCHAR2(30), Prix_achat NUMBER, Prix_vente NUMBER, CodeFour
Number CONSTRAINT ce_four FOREIGN KEY CodeFour REFERENCES Fournisseur
(CodeFour)) ;
5
10/20/2021
• Créer la table ligne_facture
CREATE TABLE ligne_facture (Codefacture Number, CodeProduit Number, Quantité
INTEGER, CONSTRAINT cp_ligne PRIMARY KEY(codefacture, codeproduit),
CONSTRAINT ce_produit FOREIGN KEY CodeProduit REFERENCES
produit(Codeproduit), CONSTRAINT ce_facture FOREIGN KEY Codefacture
REFERENCES Facture(CodeFacture)) ;
Remarque :
• Pour maintenir l’intégrité référentielle, il est possible de supprimer automatiquement les valeurs d’une clé
étrangère dépendant d’une clé primaire en ajoutant le mot clé (ON DELETE CASCADE).
Par exemple en supprimant un fournisseur, il faut supprimer tous ses produits :
CREATE TABLE produit(……CodeFour Number CONSTRAINT ce_four FOREIGN KEY
CodeFour REFERENCES Fournisseur(CodeFour) ON DELETE CASCADE) ;
Modification de la structure d’une table
La structure des tables déjà crées peut être modifiée :
• ajout de nouvelles colonnes.
• modification des types de colonnes déjà existantes.
• Ajout ou modification des contraintes.
1. Ajout de nouvelles colonnes à une table
Exemple :
• Ajouter la colonne CLI_DATE_NAISSANCE à la table client :
ALTER TABLE client
ADD (CLI_DATE_NAISSANCE DATE) ;
6
10/20/2021
Il est possible de supprimer des colonnes grâce à la requête ALTER TABLE
Syntaxe :
Il est possible d’ajouter une contrainte, à une table déjà crée, avec la commande ALTER TABLE.
Syntaxe :
Etapes de conception d’une base de données
On peut à l’aide de la commande ALTER TABLE supprimer une contrainte :
Syntaxe :
Exemple :
• Ajouter une contrainte à la table Client :
ALTER TABLE client
ADD CONSTRAINT CHK_DATE_NAISSANCE CHECK (CLI_DATE_NAISSANCE
BETWEEN '1880-01-01' AND '2020-01-01'));
7
10/20/2021
Types d’utilisateurs d’une base de données
2. Modification de la définition de colonnes existantes
Les modifications possibles sont :
• Accroître la taille : toujours possible
• Réduire la taille : uniquement si la colonne ne contient que des valeurs nulles
• Modifier le type : uniquement si la colonne ne contient que des valeurs nulles
• Supprimer l’interdiction de présence de valeurs nulles : toujours possible
Exemple :
Dans la table client, modifier le type du champ codeclient vers un type numérique sur 3 chiffres et supprimer
l’interdiction de présence de valeurs nulles dans le champ Nomclient :
ALTER TABLE client
MODIFY (CodeClient NUMBER(3), NomClient VARCHAR2(30) NULL);
Suppression de table
Syntaxe :
DROP TABLE nom_de_la_table [CASCADE CONSTRAINTS] ;
Remarque :
• Le mot clé CASCADE CONSTRAINTS permet de supprimer toutes les contraintes d’intégrité référentielle qui
se réfèrent aux clés primaires de table à supprimer.
Exemples :
• Supprimer la table fournisseur :
DROP TABLE fournisseur ;
• Supprimer la table fournisseur avec les contraintes d’intégrité référentielle qui se réfèrent à sa clé primaire
(liaison entre le champ codefour de la table produit et le champ codefour de la table fournisseur) :
DROP TABLE fournisseur CASCADE CONSTRAINTS ;
8
10/20/2021
V. Définition des vues
Une vue est une fenêtre logique sur une ou plusieurs tables, elle est définit à partir d’une requête d’interrogation
LMD :
Syntaxe :
CREATE [OR REPLACE] VIEW <nom_vue> AS < Requête SELECT>
Les vues sont définies pour :
• Fournir un niveau de sécurité supplémentaire à la base de données, de faite que la vue peut contenir des
informations plus restreint que la table elle-même.
• Cacher la complexité des données, du fait que la vue peut être définit à partir de plusieurs tables. Ainsi la
récupération des instances revient à consulter les vues et non pas les tables.
Pour supprimer une Vue :
DROP VIEW nom_vue;
VI. Les séquences
1. Définition
Une séquence est un objet créé par l’utilisateur. Elle permet de définir une suite de nombres entiers, de clés
uniques, de compteurs pour des tables, qui sont incrémentées ou décrémentées automatiquement.
Noter que la séquence est stockée et générée indépendamment de la table, et une séquence peut être utilisée par
plusieurs tables.
2. Création d’une séquence
Syntaxe :
CREATE SEQUENCE <nom_sequence>
[INCREMENT BY n]
[START WITH n]
[{MAXALUE n}]
[{MINVALUE n}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
8
10/20/2021
Types d’utilisateurs d’une base de données
Remarques :
• INCREMENT BY n: Spécifie l’intervalle d’incrémentation (Si n n’est pas spécifié n=1)
• START WITH n: Spécifie la valeur de départ. (Si n n’est pas spécifié n=1)
• MAXVALUE n: Spécifie la valeur maximale.
• MINVALUE n: Spécifie la valeur minimale.
• CYCLE | NOCYLE: Lorsque la séquence a atteint sa valeurs maximale elle est régénéré (NOCYLE est la
valeur par défaut).
• CACHE n | NOCACHE: Spécifie le nombre de valeurs que le serveur Oracle garde en mémoire.
Exemple :
Ecrire une requête qui crée une séquence Client_codeC_seq pour la colonne Code_Client de la table Client avec
un pas de 1 et 1 comme valeur de départ.
Solution:
CREATE SEQUENCE Client_codeC_seq
INCREMENT BY 1
START WITH 1;
Suppression de table
3. Utilisation d’une séquence
Généralement, une séquence est utilisée pour les requêtes de type insertion de données dans une table.
Une séquence présente deux attributs nécessaire pour l’utilisation ultérieure:
• NEXTVAL : permet de donner la valeur suivante d’une séquence.
• CURRVAL : permet de donner la valeur courante d’une séquence.
Exemple :
• Client_codeC_seq. NEXTVAL ;
• Client_codeC_seq. CURRVAL ;
4. Suppression d’une séquence
Pour supprimer une séquence, il faut utiliser DROP SEQUENCE
Syntaxe :
DROP SEQUENCE <nom_sequence>;
Exemple :
DROP SEQUENCE Client_codeC_seq ;