Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Bases de données

Support de cours Bases de données cycle ingénieur EIGSI La Rochelle
by

Amandine Duffoux

on 14 May 2017

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Bases de données

Modélisation
conceptuelle

Bases de Données
EIGSI
Projet de base de données
Qu'allons-nous voir dans le cadre de ce cours ?
- Quelles sont les données à mémoriser?
- Comment minimiser les données redondantes?
- Comment structurer les données et conserver des liens entre elles ?
- Comment décrire les traitements sur les données? (consultation, mise à jour)
- Quelles seront les utilisations futures ?
- Quel est le niveau des utilisateurs finaux ?
- Quelles sont les compétences de l’administrateur ?
- Quels seront les accès ? ...

Fonctionnalités
Cours d'introduction aux bases de données.
Audit
Besoins
Normalisation
Implémentation
&
Requêtes

Formalisme
* Qu’est ce qu’une base de données ? Pourquoi les utiliser ?
*
Analyser
l'existant, Savoir reconnaître et formuler ses
besoins
*
Modéliser
une solution de base de données
*
Normaliser
une solution de base de données
*
Implémenter
une solution de base de données et
Développer
des requêtes adaptées aux besoins

La gestion des données en entreprise entraîne une multiplicité de:
* Fichiers de données
* D’applications manipulant ces données
* De supports physiques de stockage
* De normes de représentation
* D’utilisateurs indépendants les uns des autres

D'où
* Redondance des données
* Difficultés d’accès à toutes les données
* Problème de partage des données
* Risque d’incohérence
* Problèmes de sécurité
* Problèmes de confidentialité
...

* Un ensemble d’informations (partagé, cohérent, intégré) nécessaire au fonctionnement de l’entreprise
* La gestion d’une base de données est assurée par un Système de Gestion de Bases de Données (SGBD = DBMS en anglais)

Un projet de BD est un projet comme un autre, Il faut néanmoins prendre en compte des aspects spécifiques aux BD :
* Accès
* Volumétrie
* Administration
Source du besoin (De qui pour qui ?)
Audit SI existant
Budget (Matériel, logiciel, humain)
Conception / Modélisation
Choix du SGBD
Implémentation - Tests
Recette
Maintenance / Administration

* Où sont les données ?
* Sous quelle forme ?
* Qui a besoin d'y accéder ?
* Qui peut les modifier ?
* Quel est le niveau de formation des utilisateurs ?
* Quels sont les traitements effectués sur ces données ?
A vous de jouer !
Auditez la gestion des données dans le cadre dela gestion des propositions d'expériences pro à l'EIGSI
* Fichier = ensemble d’enregistrements physiques de données manipulé par un ou plusieurs personnes ayant une vue unique
* Base de données = ensemble de données manipulé par un ou plusieurs personnes ayant des vues différentes sur ces données
Une base de données est un regroupement d’un ensemble de fichiers structuré par un schéma ( description précise)


Dualité fichier / BdD
Schéma
BD vue par les utilisateurs
Déterminer l’info. nécessaire à un groupe d’utilisateurs (besoin d’info. limitées, présentation particulière…)

Généralement un diagramme (UML , E/A ou MERISE) : Déterminer l’info. nécessaire à la base indépendamment des choix informatiques.
BD vue par le système informatique . Aussi appelé schéma interne.
* Utilisation de documents existants (factures, modèles de documents...)
* Prototypage des documents résultats souhaités

On va recenser les informations à gérer dans une
grille d’analyse
. On ne conserve que les données élémentaires. On peut se baser sur des documents références de l’entreprise (facture, bon de livraison...)


Approche intuitive
Cas Locatout
Notion de dictionnaire de données
* Un établissement scolaire veut gérer les bulletins de notes des étudiants ainsi que la charge horaire des enseignants.
* Données recensées: adresse de l’étudiant, matière enseignée, nombre d’heures, promotion, nom du professeur, nom de l’étudiant, prénom de l’étudiant, note, moyenne ...
* 3 documents de référence :
- Fiche étudiant
- Charge enseignant
- Bulletin de notes
EXEMPLE
Les règles existant sur les données, généralement liées aux règles métier
Elles portent sur un attribut et peuvent concerner soit son format, soit son domaine.
Catégories :
- paramètre : attribut classique
- arithmétique (ou calculé) : attribut dont la valeur peut être calculée à partir d'attributs paramètres
ex : moyenne = somme_notes / nb_notes
- logique : attribut résultant de l'application d'une règle logique
ex : si moyenne > 10, UE validée
On ne conserve habituellement pas les attributs calculés et logiques dans le dictionnaire de données !
Les règles de gestion
Exemple :
- R1 : chaque matière est enseignée par un et un seul professeur
- R2 : Pour chaque promotion et chaque matière est défini un nombre fixe d'heures de cours
- R3 à chaque étudiant est attribué (au plus) une note par matière
Les contraintes de domaine
Exemple :
- une note est comprise entre 0 et 20
Fonctionnalités
Composition
SGBD ????
les différents SGBDR existants
Le modèle relationnel
SGBD ????
Concepts de base
Association entre classes
Exemples
Concepts de base
Formalisme
* Classe : Représentation concrète ou abstraite d'un objet appartenant au réel à propos de laquelle on veut enregistrer des informations
* Attribut (propriété) : Caractéristique ou qualité qui décrit une classe ou une association
Ex : Etudiant
Ex pour Etudiant : Nom, Prénom, Adresse, Tel, @mail...
* Identifiant : Ensemble minimum d'attributs représentant de manière unique une instance de classe (2 instances de classe ne peuvent pas avoir la même valeur d'identifiant)
Ex pour Etudiant : numEtudiant
* Association : représente un lien entre plusieurs classes (correspond généralement à une règle de gestion)
Ex : chaque matière est enseignée par un et un seul professeur
Classe :
- Un nom pour chaque classe
- les noms de tous les attributs qui la décrivent (identifiant souligné)
- Schématisée sous forme d'un rectangle
Association :
- Schématisée par un trait reliant les classes concernées
- Éventuellement un nom (verbe, action)
- les noms des attributs qu'elle porte
- Éventuellement le rôle joué par chaque classe dans l'association
- la multiplicité (correspondant aux règles de gestion
Il peut exister des associations entre 2 classes (association binaire) ou 3 classes (association ternaire) voir plus.
Contraintes d'intégrité
= règles relatives aux données qui doivent être incorporées au modèle afin d'assurer la cohérence de la base d'information
Exemples d'incohérence :
- un cours n'est assuré par aucun enseignant
- une commande n'est passée par aucun client
- la date de fin de location est antérieure à la date de début de location
Multiplicité
Une multiplicité indique pour chaque couple classe/association les nombres minimum et maximum d'occurences pouvant exister pour une occurence de la classe. On note min, max
Multiplicité
Min :
- 0
- 1
Max :
- 1
- * (plusieurs)
4 combinaisons possibles :
0,1 / 1,1 (1) / 0,* (*) / 1,*
Cas particuliers
Association réflexive
Cas particuliers
Plusieurs associations entre 2 mêmes classes
Syntaxique
Elles portent sur un attribut et peuvent concerner son format ou son domaine.
Exemple
- le prix d'un produit doit être un réel positif
- Une date doit prendre le format JJ/MM/AAAA
- ...
Comment les gérer ?
Les contraintes syntaxiques peuvent être ajoutées dans le dictionnaire de données et/ou directement sur le modèle sous forme de contrainte "{}".
Fonctionnelle
2 attributs T1 et T2 sont en dépendance fonctionnelle si la connaissance d'une valeur de l'attribut T1 (en générale l'identifiant) permet la connaissance d'une valeur de T2
On note T1 -> T2
Exemples
numEns -> nomEns
numEtu -> numPromo
numProd, numCommande -> Qté
Rq : on trouve en partie gauche les identifiants des classes
Elémentaire
Une dépendance fonctionnelle est élémentaire si elle ne comprend pas de propriétés superflues dans sa partie gauche.
Exemples :
- numEtu, dateDeNaisEtu -> adrEtu
- numProduit, numCommande -> QtéCommandée
Directe
Une dépendance fonctionnelle T1 -> T2 est directe s'il n'existe pas une propriété T3 telle que T1 -> T3 et T3 -> T2.
Exemple :
- numFacture -> adrClient
Les règles à respecter
Règle 1
Règle 2
Tous les attributs doivent être élémentaires par rapport au choix de gestion.
Règle 3
Il doit toujours y avoir un identifiant pour chaque classe.
Règle 4
Les attributs rattachés à une classe ou à une association doivent avoir un sens pour toutes les occurrences de la classe ou de l'association.
Règle 5
A toute occurrence de la classe ou de l'association correspond au plus une valeur de tout attribut qui lui est associé.
Règle 6
Les attributs caractérisant une classe doivent dépendre uniquement de l'identifiant de cette classe.
Un attribut ne peut qualifier qu'une seule classe.
=> Éviter de donner le même nom à deux attributs différents
Exemple : Adresse
Règle 7
Tout attribut d'une classe doit dépendre de l'identifiant directement.
Règle 8
Pour un ensemble d'occurrences des objets participant à une association, il ne doit exister qu'une occurrence de cette association.
Attention, pour une occurrence d'association, il doit toujours exister une occurrence pour chaque entité participant à l'association.

Dans le cas de notre exemple, il faut forcément lier une évaluation au couple Etudiant, Module. Sinon il faut créer une nouvelle association représentant juste le fait que l'étudiant suit ce module (indépendamment de l'évaluation).
Règle 9
Éviter les redondances !
La base de données va être gérée par un SGBD = Système de Gestion de Bases de Données (ou DBMS = DataBases Management System). C'est l'outil magique qui fait tout !
C’est le Système logiciel (ensemble des programmes, des structures en mémoire et de communication) chargé de la gestion d'une ou plusieurs bases de données. Il assure l’Indépendance des données, propose des Langages de manipulations et il contient le Gestionnaires de base de données.
- Décrire et gérer un ensemble d’informations

- Maîtriser le partage d’informations
- Faciliter accès et manipulation : manipulation de grande quantité de données, le SGBD élabore la stratégie optimale d’accès aux données (optimisation).
- Maintenir la cohérence sémantique des données: respect des contraintes d’intégrité.
- Garantir la confidentialité : différenciation des utilisateurs.
- Assurer l’indépendance entre les données et les programmes
- Permettre la non redondance des données et de leur description
- Pouvoir recouvrir la cohérence en cas d’incident: Si un problème intervient, on revient à la situation précédent le problème.
- Échanger des informations avec d’autres systèmes
Un SGBD est composé de :
Gestionnaire de fichiers (en interaction avec l’OS)
Processeur de requêtes
Optimiseur de requêtes
Compilateur de langage de manipulation de données (SQL par exemple)
Gestionnaire intégrité + cohérence
Gestionnaire de reprise et recouvrement
Modèle physique du SGBD
Clé primaire
La clé primaire est un (ou plusieurs) attribut(s) utilisé(s) afin de représenter de manière unique un enregistrement
= Identifiant dans le diagramme de classes
Clé étrangère
La clé étrangère est une contrainte d'intégrité référentielle. C'est par le biais de la clé étrangère que le lien entre les tables va être effectué.
= correspond aux associations sur le diagramme de classes
Formalisme
NomTable1(nomChamp1, nomChamp2, ..., nomChampN)
NomTable2(nomChamp1, nomChamp2, ..., nomChampN)
Exemple :
Client(numClient, nomClien, prenomClient, adrClient)
Commande (numCommande, dateCde, # numClient)
1 ligne = 1 table
1 champ = 1 colonne
Au moins 1 colonne = clé primaire
Clé primaire soulignée
Clé étrangère précédée de #
Règles de passage
Modèle conceptuel -> modèle relationnel
Règle 1
1 classe = 1 table
Etudiant (numEtu, nomEtu, prenomEtu)
Etudiant (numEtu, nomEtu, prenomEtu)
Règle 3
Association de type ?,* / ?,*
On créé une nouvelle table dont la clé primaire est composée des clés primaires des classes liées (qu'il y ait 2 classes ou plus liées par l'association). les attributs de l'association deviennent des champs de cette nouvelle table.
Module(numMod, nomMod, descriptifMod)
Etudiant (numEtu, nomEtu, prenomEtu
Règle 2
Association de type ?,1 / ?,*
L'identifiant de la classe côté ?,1 devient clé étrangère de la table côté ?,*. Les éventuels attributs de l'association glissent vers la table côté ?,*.
, #numPromo)
Promotion (numPromo, nomPromo, anneePromo)
Suivre (
#numEtu,
#numMod,
note)
Langage de définition, de manipulation et de contrôle de données.
SQL
Structured
Query
Language
=> SQL est un standard (avec des normes).
Langage de Définition de Données
Création de table
CREATE TABLE

nom
(
nom_champ1 type_ch1
[CONSTRAINT ...]
,
...
nom_champN type_chN
[CONSTRAINT ...]
);
Les types de données dépendent du SGBD choisi.
La clause facultative CONSTRAINT indique une contrainte de colonne qui peut être de type :
- NULL / NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
MERCI !
des questions ??

Modélisation
relationnelle

Pourquoi normaliser ?
Une solution de gestion de base de données doit garantir la
cohérence
des données en cas de mise à jour de la base. Il faut donc mettre en oeuvre une organisation de la structure des données permettant d'éviter un certain nombre d'
anomalies
.
Exemple
Dans une application de gestion des stages:
Si les données des contacts entreprise sont stockées avec la présentation de chaque stage, comment faire :
- Si le contact l'est pour plusieurs stages ?
- Si le contact a une modification de ses coordonnées ?
- Si le contact change de fonction ?
- ...
Comment normaliser ?
Il existe des règles de vérification de la qualité d'un modèle :
Les Formes Normales (FN)
1ère FN, 2ème FN, 3ème FN, ...
Plus une relation est normalisée, meilleure elle est
1ère FN
Une relation est en 1ère FN si chaque valeur de chaque attribut de chaque tuple est une valeur simple (atomique et monovaluée)
Ex :
Personne(ID, Nom, Prénoms)
Personne(ID, Nom, Adresse)
2ème FN
Une relation est en 2ème FN si :
* elle est en 1ère FN
* chaque attribut qui ne fait pas partie d’un identifiant dépend d’un identifiant entier
Ex:
Fournisseur (ID, Nom, Tel, NumProduit, Prix)

3ème FN
Ex:
Produit (ID, Nom, IDCatégorie, NomCatégorie)

Une relation est en 3ème FN si :
* elle est en 1ère FN
* chaque attribut ne faisant pas partie d’un identifiant dépend d’un identifiant entier directement
Normaliser
Une relation en 3ème FN est correctement normalisée.
Afin de vérifier plus simplement une 3ème FN, les dépendances fonctionnelles entre attributs peuvent être utilisées.
Normaliser
Si vous avez respecté les règles de modélisation données dans les parties Modélisation conceptuelle et Modélisation relationnelle, vos relations seront en 3ème FN...
D'où l'intérêt de bien modéliser !!!!
L'équipe
Julien ARSOUZE (TP), Patrice DENIS (TP),
Jean-Charles HUET (TD, TP), Alan ZIREK (TD, TP), Amandine DUFFOUX (CM, TD, TP)
Système d'évaluation
- 1 DS Session 3 (Coef 1)
- 1 note de TP (Coef 0,5)
* TP1&2 /4 points
* TP3 /16 points
Langage de Manipulation de Données
Comment accéder aux données stockées dans la bases de données de manière efficace ?
Tout outil de gestion de données intègre un langage de requête plus ou moins puissant permettant de :
- créer
- consulter
- contrôler l'accès
des données stockées dans la BdD
SELECT
FROM
WHERE
tableX.nom_champ1, ..., tableY.nom_champN
tableX, ..., tableZ
condition
Possibilité de renommer les champs pour les afficher
SELECT

Entreprise.RS

AS

"Raison Sociale"
Possibilité d'utiliser des fonctions pour effectuer des calculs
SELECT

MAX(
Stage.Remuneration
)
Exemple de fonctions : COUNT, MIN, MAX, AVG, DATEDIFF, ...
Possibilité de renommer les tables pour les utiliser dans la requête
SELECT

E.RS

AS

"Raison sociale"
FROM

Entreprise E
On peut utiliser des opérateurs arithmétiques : <, >, <=, >=, <>, =
On peut utiliser des opérateurs sur les chaînes de caractères : LIKE, NOT LIKE, %, ?, CONTAINS, ...
On peut utiliser des opérateurs spécifiques : BETWEEN, ...
On peut même imbriquer d'autres requêtes avec des opérateurs arithmétiques ou des opérateurs ensemblistes : IN, ALL, ANY
...
ORDER BY
GROUP BY
HAVING
élémentaire mais non directe
- numFacture -> numClient et numClient -> adrClient
Full transcript