![Page 1: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/1.jpg)
Méthodes de conception debases de données
Joël QuinquetonLicence Pro LIPAE, Université
Montpellier III
![Page 2: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/2.jpg)
Les méthodes
• Concepts et outils : introduction à SQL• Compléments sur SQL : schéma , tri, calcul• Les méthodes:
– Construction– Modèle E/A (Entité Association)– Schéma conceptuel– Schéma SQL
• Etude de cas.• Dépendances fonctionnelles et formes normales
![Page 3: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/3.jpg)
Modèle entité Association
• Entités: celles du monde que l’on veutreprésenter dans cette base
• Ont des attributs (informations)• Associations: relient des entités• Peuvent avoir des propriétés (attributs)
![Page 4: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/4.jpg)
Exemple 1
• Gérer un marché d’armement• 3 types d’objets:
– Fournisseurs– Produits– Livraisons
produits fournisseurslivraisons
![Page 5: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/5.jpg)
Exemple 2
• Gérer un club sportif (sport individuel)• 3 types d’objets:
– Adhérents– Compétitions– Résultats
adhérents compétitionsrésultats
![Page 6: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/6.jpg)
Exemple 3
• Gérer un parc automobile• 3 types d’objets:
– Conducteurs– Véhicules– Cartes grises
conducteurs véhiculesCarte grise
![Page 7: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/7.jpg)
Cardinalités des relations
• Pour chaque entité-1: N1 entités-2• Pour chaque entité-2: N2 entités-1• On met le minimum (0 ou 1) et le
maximum (1 ou N)
Entité-1 Entité-2associationN1
N2
![Page 8: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/8.jpg)
Exemples
produits fournisseurslivraisons
adhérents compétitionsrésultats
conducteur véhiculeCarte grise
1-N 1-N
1-N
1-1
0-N
0-N
![Page 9: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/9.jpg)
Exemple 1 (rappel)
• Gérer un marché d’armement• 3 types d’objets:
– Fournisseurs– Produits– Livraisons
produits fournisseurslivraisons
![Page 10: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/10.jpg)
Modèle entité association
produits
fournisseurs
livraisons
1-N
1-N
nom
pays
prix
type
![Page 11: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/11.jpg)
Exemple de schéma
textetextenombreVilleNomN°
textenombreTypeN°
nombrenombrenombrePrixN° pièceN° four.
fournisseurs
produits
livraisons
![Page 12: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/12.jpg)
Exemple 1: tables
Avion15Cutter57Avion14TypeN°
57574610001546605715211001581550014815000141525057174100015152PrixN° pièceN° four.
fournisseurs
produits
livraisons
BagdadSaddam46MoscouPoutine259BahamasMeissier376ParisChirac81KaboulBen Laden174New YorkBush152VilleNomN°
![Page 13: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/13.jpg)
Passage E/A vers relationnel
• Relation pour chaque Entité ouAssociation
• Différentes solutions selon la cardinalité– Pas besoin de relation pour une
association (1-1, 1-N) en général– Les entités peuvent être dans une même
relation en cas d’association (1-1,1-1)
![Page 14: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/14.jpg)
Implémenter une base dedonnées
• création, suppression, modification:– de table– de ligne
• Identifiants• Contraintes référentielles• Colonnes obligatoires• Type des valeurs
![Page 15: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/15.jpg)
Modèle entité association
produits
fournisseurs
livraisons
1-N
1-N
nom
pays
prix
type
![Page 16: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/16.jpg)
Exemple: relations
• Modèle relationnel:– Fournisseur(n°, nom, ville)– Produit(n°, type)– Livraison(n°four., n°pièce, prix)
• Les clés primaires et étrangères sontspécifiées
![Page 17: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/17.jpg)
Exemple: schéma SQL
textetextenombreVilleNomN°
textenombreTypeN°
nombrenombrenombrePrixN° pièceN° four.
fournisseurs
produits
livraisons
![Page 18: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/18.jpg)
Création d’une table
• Create table fournisseurs (– Numero int(6),– Nom varchar(20),– Ville varchar(20)– ) primary key (numero);
Varchar(20)Varchar(20)Int(6)VilleNomNumero
fournisseurs
![Page 19: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/19.jpg)
Remplissage d’une table• Insert into
fournisseurs values(152, ‘Bush’, ‘NewYork’);
• …BagdadSaddam46MoscouPoutine259BahamasMeissier376ParisChirac81KaboulBen Laden174New YorkBush152VilleNomN°
![Page 20: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/20.jpg)
Effacement d’une table
• Drop fournisseurs;– Efface les tuples de la table– Détruit la structure de la table
• Delete * from fournisseurs;– Efface les tuples de la table
![Page 21: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/21.jpg)
Mise à jour
• Update <table>– set<att=val>– where …
• Peut mettre à jour plusieurs tuples• Exemple:
– Update tab set att=att+1 where att > 10;
![Page 22: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/22.jpg)
Implémentation d’une table
• Différents types de table (mySQL):– Classiques: ISAM, HEAP, MyISAM– Sécurisés: InnoDB, BDB
• Le schéma d’une table est stocké dansun fichier <nom>.frm
![Page 23: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/23.jpg)
Tables MyISAM
• Index dans un fichier <nom>.MYI• Données dans un fichier <nom>.MYD• Différents types d’index: usuellement
ISAM– B-arbre– Taille du fichier Index: (lg_clé + 4)/0,67
pour chaque clé• Format statique ou dynamique
![Page 24: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/24.jpg)
Format statique
• si aucun champ TEXT, BLOB ouVARCHAR
• Tous les tuples ont même longueur L(remplissage par des 0)
• Emplacement du nème tuple: n*L• Il est facile de reconstituer une table
corrompue
![Page 25: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/25.jpg)
Format dynamique
• si champ(s) TEXT, BLOB ou VARCHAR• Bitmap pour chaque tuple décrivant les
champs vides (0 ou ‘’)• Chaine:
– longueur suivie des caractères– En cas de largeur excessive (update):
fragmentation (morceaux ≥ 20 octets)– Pénalité de 6 octets par lien de fragmentation
![Page 26: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/26.jpg)
Espace disque
• Moins d’espace perdu, mais il est plus difficilede reconstituer une table corrompue
• Longueur moyenne:– 3 +– (nb col + 7) / 8 +– nb char +– taille des champs num +– longueur des chaines +– (nb de NULL + 7) / 8
![Page 27: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/27.jpg)
Tables ISAM et Merge
• Type Merge = MRG_MyISAM• Table MyISAM fragmentée en plusieurs
tables de même schéma• Tables ISAM: périmé
– Index (B-arbre) dans <nom>.ism– Données dans <nom>.isd
![Page 28: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/28.jpg)
Tables HEAP
• Résidant en mémoire• Utilisent des index hashés• Plutôt pour les tables temporaires• Il faut spécifier un nombre maxi de
tuples à la création de la table
![Page 29: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/29.jpg)
Tables InnoDB
• Supportent les clés étrangères (qui doiventêtre des index)– [CONSTRAINT symbol]– FOREIGN KEY (index_col_name, ...)
REFERENCES table_name (index_col_name, ...)– [ON DELETE {CASCADE | SET NULL | NO
ACTION | RESTRICT}] [ON UPDATE {CASCADE| SET NULL | NO ACTION | RESTRICT}]
• Transactions sécurisées– Contrôle de concurrence– Transaction « commit »
![Page 30: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/30.jpg)
Index dans les tables InnoDB
• Des B-arbres• Allocation par page de 16 kO
– Si on remplit la table dans l’ordre del’index: la page est remplie à 15/16
– Si on remplit dans un ordre aléatoire: pageremplie entre 1/2 et 15/16
– Si < 1/2, MySQL cherche à libérer la pageen contractant l’index
![Page 31: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/31.jpg)
Tables BDB
• Type = Berkeley DB• Transactions réversibles (par le biais de
logfiles)• Ne fonctionne pas sur tous les OS
![Page 32: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/32.jpg)
Exemple de schéma
textetextenombrevillenomnum
textenombretypenum
nombrenum
nombrenombrenombreprixnpiecenfour
fournisseurs
produits
livraisons
![Page 33: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/33.jpg)
Création des tables
• Tables sans clé étrangères:– Create table fournisseurs (num int(6), nom varchar(20), ville
varchar(20)) primary key (num);– Create table produits (num int(6), type varchar(20), primary
key (num);
• Dernière table:– Create table livraisons (num int(6), npiece int(6),
nfour int(6), prix int(10)– index quoi (npiece), index qui (nfour),– foreign key npiece references produits (num) on
delete set null– foreign key nfour references fournisseurs (num) on
delete set null) primary key (num);
![Page 34: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/34.jpg)
Exemple 1: tables
Avion15Cutter57Avion14TypeN°
57574610001546605715211001581550014815000141525057174100015152prixnpiècenfour.
fournisseurs
produits
livraisons
BagdadSaddam46MoscouPoutine259BahamasMeissier376ParisChirac81KaboulBen Laden174New YorkBush152villenomnum
![Page 35: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/35.jpg)
Les index
• Manière de localiser une informationpar son contenu:– Nom =‘Chirac’?
• Exemples:– Répertoire, dictionnaire– B-arbre– Hash-coding
![Page 36: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/36.jpg)
Dictionnaires
• Savoir si un nom figure dans un Carnetd’adresses contenant N adresses:– Index à 1 lettre: N/26 étapes en moyenne,
taille de l’index = 26– Index à 2 lettres: N/262 étapes, taille = 262
• Problème: les lettres les plus occupéessont aussi les plus demandées dans lesrequêtes
![Page 37: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/37.jpg)
Arbres binaires
• Soit une listes de valeurs à indexer– Par exemple une liste de noms, ou de nombres– On la coupe en 2 parties de taille quasi égale– On retient l’élément du milieu, et les deux listes
des précédents et suivants– On recommence sur les sous listes
• Facile à mettre à jour• Temps d’accès logarithmique (si l’arbre est
« équilibré »)
![Page 38: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/38.jpg)
Exemple
A, C, D, F, H, M, N, P, Z
A, C, D, F M, N, P, Z
H
![Page 39: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/39.jpg)
B-Arbre obtenuH
Z
P
M
N
D
F
C
A
![Page 40: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/40.jpg)
Mise à jourH
Z
P
M
N
D
F
C
A
G
![Page 41: Méthodes de conception de bases de donnéesMéthodes de conception de bases de données Joël Quinqueton Licence Pro LIPAE, Université Montpellier III](https://reader035.vdocuments.site/reader035/viewer/2022071503/6122c9ebcd59e636e74905e0/html5/thumbnails/41.jpg)
Hashage
• Basé sur les treillis N/pN• L’index est supposé représenté par un
nombre (ce peut être un codage)• L’élément est stocké à l’emplacement d’indice
égal à son reste dans la division par p• En cas de collision: liste auxiliaire ou autre
hashage• Préféré au B-arbre pour les tables résidant en
mémoire