Cours d'informatique
Première année
2
Présentation du contenu de la première année
Algorithme :
– suite finie séquentielle de règles que l'on applique à un nombre fini de données permettant de résoudre des classes de problèmes semblables
Selon le type de problèmes à résoudre, on va
utiliser différents paradigmes
– paradigme impératif :
– Caractérisé par l'affectation qui modifie l'état de la mémoire
– Description des objets manipulés (le Quoi) et des traitements (le comment)
– Le programme réalise une fonction
– paradigme relationnel
– Description des propriétés/relations sur des objets
3
Présentation du contenu de la première année
Étude de ces deux paradigmes
programmation relationnelle
– utilisation d'un système permettant de manipuler des données
– Exemple 1: Programmation logique
– Exemple 2: Base de données relationnelle
4
Programmer dans un système logique
Une vision « Programmation logique »
Programmer c’est poser des questions sur un ensemble de connaissances i.e., la description des objets du domaine et de propriétés ou relations sur ou entre ces objets.
Utilisation d’un formalisme logique
« Programme » = des définitions de prédicats
Axiomes
pere (luc,anne). pere (luc, eric). pere (paul, luc).
Règles
gd_pere (X,Y) :- pere(X,Z), pere(Z,Y).
5
Programmer dans un système logique
Calcul (requête) = une relation est-elle vérifiée ?
gd_pere(paul,eric) ? OK gd_pere(bob,eric) ? KO gd_pere(P1,P2) ?
OK {gd_pere(paul, anne), gd_pere(paul, eric)}
6
Programmer avec des relations
Une vision « Base de Données Relationnelles »
– L'information est répartie dans plusieurs relations
– permet de garantir la cohérence des données – Programme = les définitions des relations
– Calcul (requête) = retrouver les éléments qui vérifient un prédicat (une condition)
Motivations
- Une vision différente de la programmation
- Un consensus sur les aspects méthodologiques
7
Plan de l’enseignement de Bases de Données
Plan du cours
Découverte des bases de données relationnelle Modèle relationnelle
Méthodes de manipulation de données Un exemple de conception
Présentation d'une implémentation
Access SQL
Problèmes
L’algèbre relationnelle : la clé du succès
COURS 1
Introduction aux bases de données
relationnelles
9
Stockage et gestion de l’information
Informatique
Science de l’abstraction
Modélisation de problèmes
Résolution par des techniques automatisables
Un problème important en informatique
Stocker, accéder, modifier des informations de manière efficace
Abstraction
Proposer un modèle d’organisation de l’information Des méthodes pour
10
11
Exemple d’information
Système d’information INSA : cas des « données
élèves » Etudiant – Nom de famille – Prénom – Groupe – Bac
Comment modéliser ces informations ?
Rechercher les invariants
– Nom de famille est une chaîne de caractères
– Prénom est une chaîne de caractères
– Groupe est un entier entre 1 et 40
– Bac est un élément de {S, L, ES, ...} Théorie des ensembles
12
Ensembles et relations
Soient
A l’ensemble des chaînes de caractères B l’ensemble des entiers entre 1 et 40 C = {S, ES, L, …}
Un étudiant est alors un élément du produit
cartésien
A×A ×B ×C = {(a1,a2,b,c) | a1 A, a2 A, b B, c C} Un élément du produit cartésien est appelé tuple.
Définition
13
Représentation d’une relation sous forme
de table
Une table est caractérisée par :
– L’ensemble des noms de colonnes = le schéma de la relation
– le schéma est invariant
– l’arité de la relation est le nombre de colonnes.
– L’ensemble des lignes qui contiennent l’information = l'extension
– l'extension représente les données présentes à un moment donné dans la base
Quelle propriété doivent vérifier les lignes du tableau ?
Nom Prénom Groupe Bac
Besson Jérémy 1 S Pensa Ruggero 1 S Rousselot Sophie 2 L Ray Henri 2 L
14
Éléments de terminologie
Table ou relation : ensemble de lignes.
Ligne ou tuple: suite de valeurs, regroupe des informations concernant un objet, un fait.
Toutes les lignes d’une même table ont un même format ou structure.
Une colonne de la table est l’ensemble des valeurs qui correspondent à une même propriété. Toutes les données d’une colonne sont de même type.
L’attribut d’une colonne permet de désigner une propriété de la relation.
15
Base de données
Base de données : c’est une collection de relations
avec des liens entre celles-ci
– collection de données ayant une origine commune
Exemple :
– gestion d'une bibliothèque
16
Exemple
ISBN 0-103-45 Iliad 3 Homer 333-333-33 1 123-456-78 25,00 € 0-11-34 2 Melville 222-222-22 3 714-000-00 19,00 € 0-12-33 On liberty 8 Mill 666-666-55 1 123-456-78 25,00 € 0-13-33 Jane Eyre 1 Austen 236-698-22 3 714-000-00 58,00 € 0-358-36 Balloon 13 Sleepy 3458-897-45 3 714-000-00 26,00 € 0-358-36 Balloon 11 Snoopy 1258-987-36 3 714-000-00 26,00 € 0-358-36 Balloon 12 Grumpy 3687-98-654 3 714-000-00 26,00 € 0-55-12 Main Street 10 Jones 123-222-22 3 714-000-00 34,00 € 0-55-12 Main Street 9 Smith 123-333-33 3 714-000-00 34,00 €Titre idAuteur NomAuteur Tel Auteur idEditeur NomEditeur TelEditeur Prix GrandeEdition
Moby Dick PetiteEdition GrandeEdition PetiteEdition PetiteEdition PetiteEdition PetiteEdition PetiteEdition PetiteEdition
17
Exemple: une seule table
ISBN
0-103-45 Iliad 3 Homer 333-333-33 1 123-456-78 25,00 € 0-11-34 2 Melville 222-222-22 3 714-000-00 19,00 € 0-12-33 On liberty 8 Mill 666-666-55 1 123-456-78 25,00 € 0-13-33 Jane Eyre 1 Austen 236-698-22 3 714-000-00 58,00 € 0-358-36 Balloon 13 Sleepy 3458-897-45 3 714-000-00 26,00 € 0-358-36 Balloon 11 Snoopy 1258-987-36 3 714-000-00 26,00 € 0-358-36 Balloon 12 Grumpy 3687-98-654 3 714-000-00 26,00 € 0-55-12 Main Street 10 Jones 123-222-22 3 714-000-00 34,00 € 0-55-12 Main Street 9 Smith 123-333-33 3 714-000-00 34,00 €
Titre idAuteur NomAuteur Tel Auteur idEditeur NomEditeur TelEditeur Prix GrandeEdition
Moby Dick PetiteEdition GrandeEdition PetiteEdition PetiteEdition PetiteEdition PetiteEdition PetiteEdition PetiteEdition
18
Pourquoi ne met-on pas toutes les
informations dans une seule table?
Exemple
– Anomalie de mise à jour
– Anomalie de suppression
19
Solution « table unique » ?
Information redondante
Volume ? Temps d’accès ? Validité ?
Mise à jour pénible
Interrogations pénibles
Problèmes d’accès à l’information : problèmes liés à la recherche d’une information, à sa lecture, à son écriture …
20
Exemple : plusieurs relations liées
3 Homer 333-333-33 2 Melville 222-222-22 8 Mill 666-666-55 1 Austen 236-698-22 13 Sleepy 3458-897-45 11 Snoopy 1258-987-36 12 Grumpy 3687-98-654 10 Jones 123-222-22 9 Smith 123-333-33 idAuteur NomAuteur Tel AuteurISBN 0-103-45 3 0-11-34 2 0-12-33 8 0-13-33 1 0-358-36 13 0-358-36 11 0-358-36 12 0-55-12 10 0-55-12 9 idAuteur 1 123-456-78 3 714-000-00
idEditeur NomEditeur TelEditeur GrandeEdition PetiteEdition ISBN 0-103-45 Iliad 1 25,00 € 0-11-34 3 19,00 € 0-12-33 On liberty 1 25,00 € 0-13-33 Jane Eyre 3 58,00 € 0-358-36 Balloon 3 26,00 € 0-358-36 Balloon 3 26,00 € 0-358-36 Balloon 3 26,00 € 0-55-12Main Street 3 34,00 € 0-55-12Main Street 3 34,00 €
Titre idEditeur Prix Moby Dick
21
Rappels
Relation binaire
Soit R un sous-ensemble de AB. On appelle A le domaine et B la portée de la relation.
Fonction
Si R est telle que pour tout a A, il y a au plus un élément b de B tel que aRb, alors R est une fonction de A vers B.
Généralisation de la notion de fonction à plusieurs
ensembles :
f : A1 A2 ... An B1 B2 ... Bm
aA1 A2 ... An, soit f(a) n ’a pas de valeur, soit f(a) est unique et appartient à B1 ... Bm
22
Clé : le lien entre les relations
Pour une relation donnée, on cherche un ensemble
d’attributs (minimal) pouvant servir de domaine pour une fonction.
Cet ensemble d’attributs est appelé clé.
Il existe toujours une clé car les tuples d’une
relation sont uniques.
23
Éléments de terminologie
L’un des attributs, ou l’association de plusieurs
attributs, joue un rôle particulier, c’est la clé
primaire. Elle identifie de manière unique chaque
tuple de la table. Une même valeur de clé primaire ne peut donc pas être utilisée dans deux tuples différents.
Une clé étrangère est constituée d’une clé d’une
autre table, jouant le rôle de référence à un tuple de cette autre table.
Les colonnes facultatives
Les contraintes référentielles : la valeur d’une clé
étrangère dans une table existe dans la table où cette clé est primaire.
24
Quelques principes des Bases de Données
1) Une information n’est stockée qu’une seule fois ou, exceptionnellement, avec une redondance calculée mise à jour facile.
2) L’utilisateur n’a pas à se préoccuper des questions liées à l’implantation physique des données. Ces questions sont prises en charge par le logiciel : le SGBD.
3) Des critères précis, les contraintes d’intégrité, peuvent être décrits par l’utilisateur concernant la validité des informations. Ces critères sont systématiquement contrôlés par le SGBD de façon à assurer l’intégrité des données.
25
Quelques principes des Bases de Données
Un cycle de vie - des tâches distinctesa) Conception et création de la structure (schéma)
b) Mise à jour de l’extension : ajout, retrait ou modification de données.
c) Exploitation et interrogation (requête)
Remarque : nos objectifs de formation sont (b et c),
26
Des méthodes de manipulation des
données
27
Algèbre relationnelle pour interroger les
données
Les opérandes Les relations Les opérateurs Opération d'ensemble – Union – Intersection – Différence La restriction La projection La jointure Calcul d’agrégats28
Manipulation des données
Insertion de tuples
Mise à jour
29
30
Cycle de vie
Analyse des besoins
Spécification conceptuelle
Schéma conceptuel (e.g., diagramme E/A)
Spécification logique
schéma logique (e.g., relationnel)
Spécification physique schéma physique (e.g., Access)
31
Conception : le modèle Entité/Association
Modéliser une « réalité »
Gestion du logement des élèves :
Un élève a une chambre pour laquelle il paye un loyer. Cependant, tout élève n’a pas obligatoirement une chambre. Une chambre peut être partagée avec un autre élève. Par contre toute chambre a des caractéristiques qui permettent de la classer dans une catégorie. La catégorie définit le loyer.
Intuitivement on reconnaît une entité « élève », dont les attributs permettent d’enregistrer des informations relatives à chaque élève : nom, année d’études, département... Il existe également une entité qui décrit les chambres. Ses attributs pourraient être le bâtiment, un numéro. Enfin une troisième entité correspond aux loyers avec les attributs désignant le type de chambre (la catégorie) et le montant.
Ces entités sont en association les unes avec les autres e.g., « chambre » est en association avec « élève » par le fait qu’un ou deux élèves résident dans une chambre.
32
Conception : le modèle Entité/Association
Le modèle Entité/Association
Description graphique du modèle conceptuel des données
élèves 0,1 0,2 chambres 1,1 0,n loyers
#numéro résidence type
nom no montant
33
Conception : le modèle logique relationnel
Un modèle relationnel pour « organiser » les données
Une représentation graphique pour un schéma logique relationnel conforme à la modélisation conceptuelle
Une définition en « intention » : « un certain nombre de relations liées entre elles »
On est indépendant d’un SGBD particulier mais dépendant
d’une technologie (le « relationnel »).
loyers
type montant
chambres
résidence no_chambre type_loyer état_des_lieux
élèves
34
Un système de gestion de bases de
données
35
SGBD
1) Assure l’indépendance des programmes aux données
2) Langage de manipulation de données non procéduraux : on spécifie ce que l’on veut faire et non pas le comment
3) Assurer la cohérence des données
Cohérence des données
Les données redondantes doivent rester égales
Partage des données
Empêcher les mises à jour concurrentes
Sécurité des données
Les droits d’accès à l’information peuvent être personnalisés par groupe d’utilisateurs, voire pour chaque utilisateur.
36
Résultat de la conception : une base Access
Extrait de la base « RESIDENT» développée en Access:
37
Mise à jour d’une base
Mise à jour de l’extension
Lorsqu’on alimente ou on modifie les données de la base, le SGBD vérifie que l’on respecte les contraintes qui correspondent :
- à la structure de la base e.g., le même élève ne peut pas avoir deux chambres,
- au domaine de validité des attributs e.g., un élève ne peut pas loger dans la résidence M, ...
NB. Il existe généralement des restrictions sur les droits des
utilisateurs à mettre à jour les données.
Les Bases de Données sont des « référentiels » pour l’organisation et leurs gestions sont confiées à des professionnels : les administrateurs.
38
EXPLOITATION: Interrogation par requêtes
Un schéma physique existe (e.g., un schéma Access) et une extension est disponible.
Soumettre des requêtes
« Quels sont les types et les montants des loyers que l’on trouve dans la résidence A ? »
39
EXPLOITATION: Interrogation par requêtes
La réponse Access à cette requête sur la base « RESIDENT » est :
Pourquoi plusieurs fois la même réponse ?
Est ce que cette requête donne la (bonne) réponse à la question posée?
40
EXPLOITATION: Interrogation par requêtes
La même question peut être posée dans le langage SQL (langage largement répandu et normalisé) :
SELECT chambres.résidence, loyers.type, loyers.montant FROM loyers, chambres
WHERE ( (loyers.type = chambres.type_loyer)
AND (chambres.résidence = "A") ) ;
La réponse est la même
... avec les mêmes problèmes ...
Intérêt de SQL :
De très nombreux langages de programmation sont « interfacés » vers des bases de données via SQL.
41
Problématique de réalisation d'un SGBD
Rapidité des accès
Administration
Multi-utilisateurs
Accès concurrents Intégrité des données
42
Caractéristiques souhaitables des SGBD
1- Contrôler la redondance d'informations
2- Partage des données
3- Gérer les autorisations d'accès
4- Offrir des interfaces d'accès multiples
5- Représenter des relations complexes entre les données 6- Vérifier les contraintes d'intégrité
43
Architecture en trois niveaux
niveau interne ou physique : décrit le modèle de
stockage des données et les fonctions d'accès
modèle conceptuel ou logique : décrit la structure
de la base de données globalement à tous les
utilisateurs (limite la redondance). Ce schéma décrit la structure de la base indépendamment de son
implantation
niveau externe : correspond aux différentes vues
des utilisateurs. Chaque schéma externe donne une vue sur le schéma conceptuel à une classe