Bases de Données Et SI (Partie 1 & 2)
Bases de Données Et SI (Partie 1 & 2)
Bases de Données Et SI (Partie 1 & 2)
SYSTÈME D’INFORMATION
& BASE DE DONNÉES
Plan de la formation:
Partie théorique
Chap. 1 - Notions de base : Système d’Information
Chap. 2 - Notions de base : Base de données;
Chap. 3 – Notions de base: Base de données relationnelles;
Chap. 3 - Langage SQL
Partie pratique
Création/manipulation des Tables
Les requêtes
Les formulaires
Les états
Les macros/commandes
2
Introduction
Notion de système pour l’entreprise
3
Exemple :
Pièces détachées Automobiles
Système
Entrées Sorties
Modèle d’un atelier de fabrication :
Système de Pilotage
Informations Décision sur le SO
sur l’état du SO
Système de Pilotage
Système d’Information
Entrée Sortie
Système Opérant
7
Notion de Système d’Information (SI)
Ordinateurs;
Procedures;
Règles et méthodes;
etc.
based’information,
modèle (ou structure) de données.
Le SI non automatisé
Discussionsinformelles
Informations non écrites
Fonctions du SI
13
Plan de la leçon:
1. Introduction;
2. Définition d’une base de données et d’un SGBD;
3. Différents types de bases de données;
4. Quelques SGBD existants;
5. Objectifs et avantages des BD et SGBD;
6. Les niveaux ANSI/SPARC.
Une BD:
- Ensemble structuré de données indépendant des
traitements à effectuer.
- Représente le monde réel.
- Interrogée et mise à jour par des utilisateurs.
Un SGBD:
- logiciel permettant à un utilisateur d’interagir avec
une BD.
- Interface entre la BD et les programmes
d’applications qui communiquent avec la BD.
Deux approches:
- Approche Fichiers (Ancienne): données en fonction
du traitement risque d’incohérence;
- Approche (récente) base de données: intégration
des données dans des fichiers indépendamment des
traitements.
Inconvénients :
Redondance de données.
Manipulation difficile de données hétérogènes.
Hiérarchiques : IMS;
Bases relationnelles :
Pour les petites BD:
• FileMaker Pro
• Access
• FoxPro
• 4e dimension
• MySQL
• Paradox
Bases relationnelles:
Les grosses BD
• Oracle
• Informix
• Sybase
• ProsgreSQL
• DB2
• Ingres
• (SQLServer)
Bases objet :
• O2
• Gemstone
• ObjectStore
• Jasmine
physique);
- Indépendance logique;
- Partage de données;
Les données doivent être protégées des accès non autorisés ou mal
intentionnés.
Il doit exister des mécanismes permettant d’autoriser, contrôler et
enlever des droits d’accès à certaines informations à n’importe
quel usager.
Par exemple, un chef de service pourra connaître les salaires des personnes
qu’il dirige, mais pas de toute l’entreprise.
Le système doit aussi tolérer les pannes : si une panne pendant
l’exécution d’une opération, le SGBD doit être capable de revenir
à un état dans lequel les données sont cohérentes.
Il en va de même en cas d’échec dans un programme. Le SGBD
doit pouvoir revenir à un état cohérent, ce qui est rendu possible
par la gestion des transactions.
ANSI-SPARC stands : American National Standards Institute, Standards Planning And Requirements Committee
a) Un programmeur d’application.
c) L’administrateur de la BD.
Nom de la plante
Luminosité Conditions
nécessaire de sol
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Solution de l’exercice N° 2
53
Plan
Introduction
Concepts de base
Algèbre relationnelle
Soit l’attribut Ai est une variable qui prend ses valeurs dans un domaine Di
Soit U = {A1 , A2, ..., An}
Une relation(table) r définie sur U est un sous-ensemble du produit
cartésien D1 × D2 × … × Dn
Soient deux ensembles P et Q, on appelle Produit cartésien de P
et Q, l'ensemble noté P×Q , des couples (x, y) où x P et y
Q.
Exemple:
Professeurs={ Abbad, Saaidi, Moursi}
Étudiants= { Issam, Hamidi}
Étudiants ×Professeurs={ (Issam, Abbad) , (Issam,Saaidi) , (Issam,
Moursi) , (Hamidi, Abbad) , (Hamidi, Saaidi) , (Hamidi, Moursi) }
Propriétaires
num ero nom prenom naissance
Véhiculés
im m atriculation m arque proprietaire
3452 A 13 BMW 13
9835 B 72 Renault 76
1234 A2 Peugeot 5
9878 A4 BMW 76
Colonne
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Règles pour une relation
66
INTÉGRITÉ DE RÉFÉRENCE
Exemple :
Considérons les deux relations :
Etablissement=(Code Etablissement, Nom, Directeur)
Employé= (Numéro Employé, Nom employé, Prénom
employé, Code Etablissement).
L’attribut« Code Etablissement» dans la table
«Etablissement» est la clé primaire. C’est une clé
étrangère dans la table « Employé».
2 Touimi Rahma
Table « Recteur »
Table « Université »
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les relations entre tables
94 IDPROP NOM PRENOM
1 Razi Mohamed
2 Nafia Mostafa
Propriétaire
3 Adili Said
95
10 R&D Bd Oqba 15
Informatique Anfa 13
15 Comptabilité Agdal 23
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Solution de l’exercice
96
10 R&D Bd Oqba 15
Informatique Anfa 13
15 Comptabilité Agdal 23
Non : cette ligne ne peut pas être insérée, car elle
viole le principe d’unicité de la clé primaire (la valeur
10 existe déjà dans la table).
Non : cette ligne ne peut pas être insérée, car elle
viole la contrainte d’intégrité de la clé primaire (la
clé primaire ne peut pas être NULL).
Oui : cette ligne peut être insérée sans problème, car
aucune contrainte n’est violée.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Normalisation
97
Définition
Deux groupes d’attributs X et Y de la relation R sont en Dépendance Fonctionnelle
si dans R, chaque valeur de X détermine une et une seule valeur de Y
si je connais la valeur de X alors je connais la valeur de Y
une DF est une assertion sur toutes les extensions possibles d’une relation et pas
uniquement sur ses n-uplets actuels
Exemple : ensemble de DF pour une table
Condition
Première Forme Normale
tous les attributs n’appartenant pas à la clé sont en dépendance fonctionnelle
élémentaire avec la clé
dès qu’un attribut non-clé dépend d’une partie de la clé, la relation n’est pas en 2FN.
Exemple
Prêt_livre (numcli, numlivre, nomcli, adrcli, titre_livre, dateprêt)
DF
numcli → nomcli, adrcli
num_livre → titre_livre
numcli, numlivre →dateprêt
Prêt_livre n ’est pas en 2 FN car
nomcli dépend uniquement de numcli et pas de numcli et de numlivre
…
décomposition à l’aide des DF
client (numcli, nomcli,adrcli)
Livre (numklivre, titre_livre)
prêt (numcli, numlivre, dateprêt)
Exemple
ville(num_ville, nom_ville, num_dept, nom_dept)
DF
num_ville → nom_ville, num_dept, nom_dept
num_dept → nom_dept
ville n’est pas en 3 FN car
nom_dept dépend de num_dept
occurrences n-uplets
Exemple
Élèves
num élève
nom eleves (numeleve, nom, prenom, pays)
prénom
pays
Élèves
Écoles
num élève 1,1 avoir pour école 1,n num école
nom date embarquement
nom
prénom date débarquement
adresse
pays
ville
ecole(num_ecole, nom, adresse, ville)
eleve( num_eleves, nom, prénom, pays,num_école, date_embarquement, date
débarquement)
ENCG Kénitra**Gestion des bases de données 8-déc.-16
conversion des associations binaires (2)
108
ou
Produits
Fournisseur
pno
fno
Commandes Concerne design
nom Est passé à
1,N 1,1 cno 1,1 qute 1,N prix
adresse
poids
ville
couleur
humain 0,N
parents a pour enfants
0,N enfants
humain 0,1
père a pour père
0,N enfants
Projection
Seule une partie des attributs est considérée
Sélection
Seule une partie des tuples est considérée
Complément (noté –R)
Tous les tuples possibles n’existant pas dans
une relation sont construits
Opérateurs de comparaison
=, , <, >, , , BETWEEN (entre), IN (dans),
LIKE(comme)
Combinaison de plusieurs conditions reliées par des
opérateurs logiques :
and, or, not
Valeurs NULL
Jointure naturelle
Thêta-produit dont la condition est une égalité de valeurs entre des
attributs de deux relations
Jointure extérieure
Jointure naturelle à laquelle on ajoute les tuples de chaque relation
n’ayant pas trouvé de correspondance dans l’autre
immatriculation
2- Πnom_imb(Immeuble);
3- Πnom_imb, No_app(σsuperficie>100(Appartement));
4- Πnom-occ(σNom_imb=« Firdaous » ET Année_h>2001)(Occupant);
5- Πnom_imb, No_app(σNo_app=Etage (Appartement));
6-Πnomgérant, Superficie (Immeuble ><
Nom _ imb= Nom _ imb Appartement)
7-Πnom_occ, Année_h, Superficie (Appartement >< Occupant)
Nom _ imb= Nom _ imb∧No _ app= No _ app
Groupe Pédagogique
Élève
Num_groupe
no_etudiant Nom
nom 1:1
1:N
prenom
1:N dirige
1:1
donne accès 0:N
appartient suit
Enseignant
Note
Num
0:N 1:N Nom
1:1
Promotion Unité Pédagogique Prenom
1:1
Nom Numéro 0:N
enseigne
Nom
ENCG Kénitra**Gestion des bases de données 8-déc.-16
ENCG Kénitra**Gestion des bases de données 133
CHAPITRE 3 :
LANGAGE SQL
8-déc.-16
Sommaire du chapitre 3
134
Requêtes d’action;
Requêtes de sélection;
Requêtes de contrôle.
+ Une troisième norme (SQL3) est sortie en 2003 par l'ANSI et l'ISO.
Utilisation de SQL :
En mode interactif : l’utilisateur écrit textuellement une
commande SQL et récupère le résultat immédiatement.
En mode intégré : une commande SQL est mélangée avec
les instructions d’un programme en langage de haut niveau
tel que C, C++, Visual basic, Pascal...
Les conventions relatives aux noms des tables et des champs varient
quelque peu d'un SGBD à l'autre:
Le nombre de caractères ne doit pas être trop grand (64 dans Access,
18 à 30 dans d'autres SGBD) ;
Seuls les lettres, les chiffres et le caractère de soulignement sont
autorisés.
Access admet les caractères accentués. Il admet aussi l'espace, mais le
nom du champ doit être écrit entre crochets ;
Certains SGBD requièrent que le nom d'un champ commence par une
lettre, mais ce n'est pas le cas d'Access ;
Les termes faisant partie du vocabulaire du langage SQL sont interdits
("date » par exemple). Ce sont les mots réservés.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Requêtes d’action
142
CREATE TABLE Client (NumCli integer Primary key Not nul, email
VARCHAR (50) NOT NULL, nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20), motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4));
CREATE TABLE Cinéma (nom VARCHAR (50) primary key NOT
NULL, adresse VARCHAR (50) DEFAULT ’Inconnue’);
CREATE TABLE ETUDIANT(ID INTEGER PRIMARY KEY, NOM
TEXT(15), PRENOM TEXT(15), AGE INTEGER CONSTRAINT
Contrainte_AGE CHECK(age< 35), BOURSIER LOGICAL);
Exemples d’ajout :
Ajouter une colonne « AGE » (entier) dans la table « CLIENT » :
Exemples de suppression :
Supprimer la colonne « ADRAGENCE » de la table « AGENCE » :
Syntaxe
:
UPDATE table SET nouvelles valeurs WHERE critères
Exemples :
Donner une requête SQL pour modifier l’adresse de l'employé numéro 10
par la nouvelle adresse sera "10 Avenue Mohamed VI, Rabat".
UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI,
Rabat" WHERE Nemployé = 10 ;
Donner une requête SQL pour augmenter de 5% le salaire de tous les
acteurs : ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age,
Films)
UPDATE ACTEURS SET Salaire = Salaire * 1.05 ;
Exemples :
Effacez
tous les enregistrements de la table ACTEURS;
DELETE * FROM ACTEURS ;
Ou
DELETE N_act FROM ACTEURS ;
Effacez tous les acteurs de nationalité marocaine;
DELETE * FROM ACTEURS WHERE
Nationalité= "marocaine";
SELECT [Prédicat]
{* / table.* /[table.attribut1 As alias1], [table.attribut2 As alias2], …}
FROM Liste de table
[WHERE Critère de sélection]
[GROUP BY Liste d’attributs]
[HAVING Critère de sélection]
[ORDER BY Critère d’ordre]
Interprétation:
Projection : SELECT… FROM…
[ ] signale une clause optionnelle, c.à.d on peut utiliser la requête SELECT sans
cette clause
Prédicat: L’un des prédicats suivants: ALL, DISTINCT, DISTINCTROW ou TOP.
Les prédicats permettent de limiter le nombre d’enregistrements
renvoyés. ALL est choisi par défaut
Exemples
Soit la table ACTEURS :
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)
•Donner une requête SQL pour afficher tous les champs et tous les enregistrements
de la table ACTEURS
SELECT * FROM ACTEURS;
•Requête SQL pour afficher uniquement le Nom, Prénom et le salaire de chaque
Acteur
SELECT Nom, Prénom, Salaire FROM ACTEURS;
•Afficher les différentes nationalités sans doublons même si plusieurs acteurs
ont la même nationalité
SELECT DISTINCT Nationalité FROM ACTEURS;
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
171
• Afficher le nombre d’enregistrements de la table ACTEURS qui ont une entrée dans
le champ Nom. Nommer le champ retourné Nombre d’entrée
•Afficher tous les noms d’acteurs dont l’âge est supérieur ou égal à 25
SELECT Nom FROM ACTEURS WHERE Age >=25;
• Afficher tous les noms d’acteurs dont la nationalité est américaine et l’âge est
supérieur à 25
SELECT Nom FROM ACTEURS WHERE (Nationalité="américaine") AND (Age > 25);
• Afficher tous les noms d’acteurs dont la nationalité est américaine ou l’âge est
supérieur à 25
SELECT Nom FROM ACTEURS WHERE (Nationalité="américaine") OR (Age >25);
•Afficher tous les acteurs dont la nationalité est américaine, marocaine ou égyptienne
SELECT * FROM ACTEURS WHERE Nationalité IN ("Américaine", "Egyptienne",
"marocaine");
•Afficher tous les noms d’acteurs qui commencent par "D"
SELECT Nom FROM ACTEURS WHERE Nom LIKE "D*";
•Afficher tous les noms d’acteur ne commençant pas par D et ayant 4 lettres
SELECT Nom FROM ACTEURS WHERE Nom NOT LIKE "D*" AND Nom
LIKE "????";
Exemple 2
Soit les tables PRODUITS, COMMANDES, DETAILS et EMPLOYES créées sous
ACCESS:
PRODUITS (Réf , Nompr, Nfournisseur, Pu)
COMMANDES(Ncommande, Codecli, Nemployé, Date commande)
DETAILS(Ncommande, Réf , Quantité, Remise)
EMPLOYES(Nemployé, Nom, Prénom, Fonction, Adresse, Ville)
Les jointures
Jointure interne: utilise INNER JOIN. Ne sont incluses dans le résultat
final que les lignes qui se correspondent dans les deux tables.
la jointure externe droite, dans laquelle INNER JOIN est remplacé par
RIGHT JOIN. Toutes les lignes de la seconde table sont incluses dans le
résultat de la requête, même s'il n'existe pas de ligne correspondante
dans la première table.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
179
Afficher tous les produits (Réf, Nompr) qui ont été vendus
ON PRODUITS.Réf = DETAILS.Réf ;
(Ou bien )
•Afficher tous les produits (Réf, Nompr, Mois de vente) qui ont été vendus pendant le
mois 6
SELECT PRODUITS. Réf, Nompr, Month ([Date commande]) AS [Mois de vente]
FROM PRODUITS INNER JOIN (DETAILS INNER JOIN COMMANDES
ON DETAILS. Ncommande = COMMANDES . Ncommande )
ON PRODUITS . Réf = DETAILS . Réf,
WHERE Month ([Date commande]) =6 ;
(Ou bien )
SELECT PRODUITS.Réf, Nompr, Month ([Date commande]) AS [Mois de vente]
Afficher tous les produits dont le prix unitaire est supérieur au prix d’au
moins d’un produit vendu avec une remise de 25%
•Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre décroissant
selon le champ Réf
+ Par défaut, le résultat d’une requête sélection est trié selon l’ordre
croissant du premier attribut qui figure dans la clause SELECT
Exemple
• Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre décroissant
selon le champ Réf
•En utilisant la table détails, afficher pour chaque commande le total de quantités des
produits vendus
SELECT Ncommande, SUM(Quantité) AS [Totale quantités vendues]
FROM DETAILS
GROUP BY Ncommande ;
•Afficher pour chaque commande le total de quantités des produits vendus et tel que ce
total est > 60
•Afficher pour chaque commande le total de quantités des produits vendus avec une
remise de 6% et tel que ce totale est > 60
•Afficher les employés de la ville d’Asilah qui ont vendu plus de 100 commandes
SELECT EMPLOYES.Nemployé, COUNT(*) AS [Nombre de commandes vendues]
FROM COMMANDES, EMPLOYES
WHERE EMPLOYES.Nemployé=COMMANDES.Nemployé AND Ville ="Asilah"
GROUP BY EMPLOYES.Nemployé
HAVING COUNT(*) > 100 ;
Produit cartésien :
SELECT * FROM Nom_de_relation1, Nom_de_relation2;
Exemple:
SELECT * FROM Employés, Ville;
Ou encore:
SELECT Liste_attributs FROM Nom_table1 AS R1 WHERE NOT EXISTS
(SELECT * FROM Nom_table2 AS R2 WHERE R2.Nom_attribut = R1.Nom_attribut);
L’union en SQL est réalisée par en utilisant UNION entre deux sélections:
SELECT Liste_attributs FROM Nom_table1 [WHERE <Condition de restriction> ]
UNION
SELECT Liste_attributs FROM Nom_table2 [WHERE <Condition de restriction>];