Vous êtes sur la page 1sur 34

ENVIRONNEMENT DE

DÉVELOPPEMENT DE BASES DE DONNÉES

AU : 2019 - 2020
Auditoire : 2ème Systèmes Informatiques et Logiciels

DR. Jihen KHALFALLAH


jihen.khalfallah@gmail.com
PLAN DU COURS
• Chapitre 1 : Prérequis du module
– Définition d’une BD
– Cycle de conception d’une BD
– Définition d’un SGBD
– Langage SQL
Langage de Définition de Données (LDD)
Langage de Manipulation de Données
(LMD)
Langage d’Interrogation de données (LID)
Langage de Contrôle de Données (LCD)
• Chapitre 2 : Les procédures et les fonctions
• Chapitre 3 : Les déclencheurs
25/01/2020 2
ENVIRONNEMENT DE
DÉVELOPPEMENT DE BD

Chapitre 1: Prérequis du module


Auditoire : 2ème Systèmes Informatiques et Logiciels

DR. Jihen KHALFALLAH


jihen.khalfallah@gmail.com
Qu’est ce qu’une Base de données
› Une Base de Données (BD) est un ensemble structuré et organisé de
données.

› Les données sont généralement organisées et structurées pour


modéliser des aspects réels.

› C’est un « conteneur » stockant des données de natures différentes


(chiffres, texte, mots, etc.) et plus ou moins reliées entre elles.

› L’objectif est de faciliter l'exploitation de ces données (ajout, mise à


jour, recherche de données).
25/01/2020 4
Conception d’une BD

Reconnaissance
Structuration
Monde Réel
Perception

Une Base de Données est une représentation de


la réalité telle qu’elle est perçue par les utilisateurs

25/01/2020 5
Cycle de conception et de création d’une BD
Univers réel

Analyse
Spécification
de la BD

Conception Modèle
conceptuel Modèle Entité-Association

Transformation
en schéma
logique Schéma
Modèle Relationnel
logique

Conception
physique Modèle de
25/01/2020 6
données physique
Étapes de la mise en œuvre d’une BD
• Modélisation Conceptuelle de la BD
– Modèle Conceptuel
• Modèle Entité / Association (E/A)
• Diagramme de Classes UML
• Modélisation Relationnelle Logique de la BD
– Modèle Logique Relationnel
• Application des Règles de Passages : Modèle Conceptuel 
Modèle Logique Relationnel
• Application des Règles de Normalisations : 1 FN  2 FN 3 FN
• Développement d’une BD
– Utilisation d’un SGBD
• Environnement de Développement de la BD : Par exemple SQL
Server, ORACLE, …
– Langage de développement de la BD
• SQL : Structured Query Language

25/01/2020 7
Création d’une BD
Modélisation Schéma Conceptuel
Monde Réel Conceptuelle
0:n 1:1
Personne Possède Voiture

Modélisation
Logique

Schéma Logique Personne Nom Adresse Tel


Jemai Gabes 75999244
Ben Salah Sfax 74465983
BASE DE DONNÉES Ktari Gafsa 76547325
……. ……. …….

25/01/2020 Implémentation 8
en SQL
Qu’est ce qu’un Système de Gestion de Base de
Données
› SGBD : un système de gestion de base de données (Data Base
Management System) est un logiciel qui gère, manipule et
contrôle l’accès à une BD partagée par plusieurs utilisateurs
simultanément.

› Le SGBD reçoit les demandes de manipulation de contenu et


d’administration, et effectue les opérations nécessaires sur le(s)
fichier(s) de la BD.

› Le SGBD cache la complexité des opérations et offre une vue


synthétique sur le contenu. 9
25/01/2020
Que doit permettre un SGBD ?
› Décrire les données : Créer et manipuler les tables
 Langage de définition des données LDD
› Manipuler les données : Gérer les données (insertion,
suppression, modification)
 Langage de manipulation des données (LMD)
› Interroger les données : Répondre à toute demande
d’information portant sur les données contenues dans la
base.
 Langage d’interrogation des données (LID)

25/01/2020 10
Que doit permettre un SGBD ?
› Contrôler les données : exprimer toutes les règles qui
contraignent les valeurs pouvant être enregistrées de façon
à éviter toute erreur qui peut être détectée.
 Intégrité : vérification de contraintes d'intégrité
 Confidentialité
 Contrôle des droits d'accès, autorisation
 Langage de contrôle des données (LCD)

25/01/2020 11
Que doit permettre un SGBD ?
› Assurer le partage et la sécurité des données :
 Une BD est partagée entre plusieurs utilisateurs en
même temps ⇒ contrôle des accès concurrents
 Les données doivent pouvoir être protégées contre les
accès non autorisés.
 Associer à chaque utilisateur des droits d’accès aux
données.

25/01/2020 12
Le langage SQL
› SQL (Structured Query Language : langage structuré de
requêtes)

› Le langage de consultation le plus utilisé par les SGBDR


modernes tel que Oracle, MySQL, MS Access, SQL Server,…

› SQL est fortement basé sur l’algèbre relationnelle

› SQL fait partie des langages de 4e génération.

25/01/2020 13
Le langage SQL
› On peut diviser le langage SQL en 5 parties :
– Définition de données (LDD)
 CREATE, ALTER, DROP
– Manipulation de données (LMD)
 INSERT, UPDATE, DELETE
– Interrogation des données (LID)
 SELECT
– Contrôle des données (LCD)
 PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK
– Contrôle des transactions (LCT )
 COMMIT, ROLLBACK
25/01/2020 14
Langage de définition de données : create table
› Création de table :
CREATE TABLE nom_table (
nom_col1 type_col1 [contrainte_col1]
[, nom_col2 type_col2 [contrainte_col2], ...]
[ [CONSTRAINT nom_contrainte_table1] contrainte_tab1,
[CONSTRAINT nom_contrainte_table2] contrainte_tab2,...] );
› Les contraintes :
Contraintes de colonne : Contraintes de table :
– [NOT] NULL – UNIQUE (nom-col)*
– UNIQUE – CHECK
– PRIMARY KEY – PRIMARY KEY (nom-col)*
– CHECK – FOREIGN KEY (nom-col)*
25/01/2020 REFERENCES nom_table [(nom-col)*]
15
Langage de définition de données : create table
› Exemple :

CREATE TABLE Employe (


Id INTEGER,
Nom VARCHAR(32),
Depart INTEGER,
CONSTRAINT pk_Id PRIMARY KEY (Id),
CONSTRAINT fk_IdDepart FOREIGN KEY (Depart) REGERENCES Departement(Id)
ON DELETE CASCADE
);

25/01/2020 16
Langage de définition de données : alter table
ALTER TABLE <nom_de_table>
RENAME TO nouv_nom_table; (Renommer une table)
ADD <attribut1 type1 [constraint1], attribut2 type2 [constraint2], …>;
(ajouter des colonnes)
MODIFY <attribut1 new_type1 [new_constraint1], attribut2 new_type
[new_constraint2], …>;
(modifier les types des colonnes / ajouter de nouvelles contraintes de
colonnes)
RENAME COLUMN old_name TO new_name; (changer le nom d’une colonne)
DROP COLUMN <attribut>; (supprimer une colonne)
DROP <attribut1, attribut2, …>; (supprimer plusieurs colonnes)
– Exemple
ALTER TABLE Employe ADD COLUMN Age Integer; 17
25/01/2020
Langage de définition de données : alter table
ALTER TABLE <nom_de_table>
MODIFY <attribut contrainte_de_colonne>; (ajouter une contrainte de colonne)
ADD <contrainte_de_table>; (ajouter une contrainte de table)

ADD CONSTRAINT <nom_contrainte_table> <contrainte_de_table>;


(ajouter une contrainte de table avec un nom)
RENAME CONSTRAINT <ancient_nom_contrainte> TO <nouveau_nom_contrainte>;
(renommer une contrainte)
DROP CONSTRAINT <nom_contrainte_table>; (supprimer une contrainte de table)
ENABLE/DISABLE CONSTRAINT <nom_contrainte_table>;
(activer ou désactiver une contrainte de table)
– Exemple
ALTER TABLE employe ADD CONSTRAINT cc_ValidAge CHECK (Age >= 18 AND
Age < 65) 25/01/2020 18
Langage de définition de données : drop table
DROP TABLE nom_table [CASCADE];];

› Pour supprimer une table qui est référencée par une


contrainte de clé étrangère d’une autre table, CASCADE doit
être spécifié (CASCADE supprimera la contrainte de clé
étrangère, pas l’autre table elle-même)
› Exemple :

DROP TABLE employe CASCADE;];

25/01/2020 19
Langage de manipulation de données : Insert

INSERT
INTO nom_table [ (liste de colonnes) ]
{VALUES (liste de valeurs) | requête};

› Exemple :

INSERT INTO Employe (Nom, Prenom, CIN, Telephone)


VALUES ('Lapierre', 'Pierre', 0987654321, '456-7890');

25/01/2020 20
Langage de manipulation de données : Update

UPDATE nom_table
SET nom_colonne1 = valeur1 [, nom_colonne2 = valeur2 ...]
[WHERE expression];

› Exemple :

UPDATE Employe SET Ville= 'Montréal', Province = 'Québec‘;

25/01/2020 21
Langage de manipulation de données : Delete

DELETE FROM nom_table


[WHERE expression];

› Exemple :

DELETE FROM Employe WHERE Ville = 'Laval';

25/01/2020 22
Langage d’interrogation des données : select
SELECT [DISTINCT] liste d'attributs
FROM liste de tables
[WHERE qualification]
[GROUP BY attributs de partitionnement ]
[HAVING qualification de groupe]
[ORDER BY liste de colonnes [ ASC | DESC ]]

› Exemple : Liste des employés ordonnée par ordre décroissant de salaire


SELECT Nom
FROM Employe
ORDER BY Salaire DESC;

25/01/2020 23
Langage d’interrogation des données : select
5 fonctions agrégatives:
AVG ( ): calcul de la moyenne
SUM ( ): calcul de la somme
MIN ( ): calcul de la valeur minimale
MAX ( ): calcul de la valeur maximale
COUNT ( ): calcul du nombre de tuples

› Exemple : Donner la moyenne des revenus d'un salarié


SELECT AVG(Salaire + Commission)
FROM Employe;

25/01/2020 24
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)
› Contraintes d’intégrité :
– Titre_presentation ne doit pas être nul.
– Tarif doit être > 0
1- Créer les tables en respectant les contraintes d’intégrité
Create table representation (
n_representation number Primary Key,
titre_representation varchar(30) not null,
Lieu varchar(30));
25/01/2020 25
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)
› Contraintes d’intégrité :
– Titre_presentation ne doit pas être nul.
– Tarif doit être > 0
1- Créer les tables en respectant les contraintes d’intégrité
Create table musicien (
Nom varchar(20) Primary Key,
n_representation number,
Foreign Key(n_representation) references representation); 26
25/01/2020
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)
› Contraintes d’intégrité :
– Titre_presentation ne doit pas être nul.
– Tarif doit être > 0
1- Créer les tables en respectant les contraintes d’intégrité
Create table programme (
date date,
n_representation number,
tarif number check(tarif > 0),
Primary Key(date, n_representation),
Foreign Key(n_representation) references representation);
27
25/01/2020
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)

2- Insérer les informations suivantes dans la table


representaion :
n_representation titre_representation lieu
1 La Cenerentola Opéra Bastille

Insert Into representation


Values (1, ‘La Cenerentola’, ‘Opéra Bastille’);
25/01/2020 28
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)

3- Changer le lieu de tous les representation à Opéra Bastille


vers Palais Garnier :

Update representation
Set lieu = ‘Palais Garnier’
Where lieu = ‘Opéra Bastille’;
25/01/2020 29
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)

4- Annuler toutes les représentations programmées avec


une tarif inférieur à 25 euro :

Delete from programme


Where tarif < 25;

25/01/2020 30
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)

5 - Donner la liste des titres des représentations.

SELECT titre_representation
FROM REPRESENTATION;

25/01/2020 31
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)

6 - Donner la liste des titres des représentations ayant lieu à


l'opéra Bastille.

SELECT titre_representation
FROM REPRESENTATION
WHERE lieu = ‘Opéra Bastille’;
25/01/2020 32
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)

7 - Donner la liste des noms des musiciens et des titres des


représentations auxquelles ils participent.

SELECT M.nom, R.titre_representation


FROM MUSICIEN M, REPRESENTATION R
Where M.n_representation = R.n_representation;
25/01/2020 33
Exercice
› REPRESENTATION (n_representation, titre_representation, lieu)
MUSICIEN (nom, #n_representation)
PROGRAMME (date, #n_representation, tarif)

8 - Donner la liste des titres des représentations, les lieux et


les tarifs pour la journée du 14/09/96.

SELECT R.titre_representation, R.lieu, P.tarif


FROM REPRESENTATION R, PROGRAMME P
Where P.n_representation = R.n_representation
and P.date='14/06/96';
25/01/2020 34

Vous aimerez peut-être aussi