Mettre en place une base de données relationnelle Flashcards
Quels sont les acronymes de MCD, MLD et MPD ?
- MCD : Modèle Conceptuel des Données
- MLD : Modèle Logique des Données
- MPD : Modèle Physique des Données
Sur quelle méthode de conception se reposent le MCD, le MLD et le MPD ?
Sur la méthode Merise. Il s’agit d’une méthode généraliste appliquée dans divers domaines de l’informatique pour faire de la conception. Le MCD, MLD et MPD se reposent en grande partie sur la méthode Merise.
Pourquoi le MCD doit être réalisé avant le MLD et le MPD ?
Avant de s’intéresser à la structure d’une base de données, le MCD permet de schématiser les principales entités d’une application et les intéractions entre elles (on parle de schéma entité-association). Au niveau du MCD, nous parlons d’entité et (pas encore) de table. Ainsi, un MCD est complètement indépendant d’un SGBD, autrement dit, nous ne nous préoccupons absolument pas de la technologie qui sera employée pour construire la base de données lorsqu’on cré un MCD.
Le point fort du MCD réside dans sa simplicité. Toutes les parties prenantes d’un projet (les développeurs, le client, …) peuvent lire / analyser / améliorer le MCD. Il ne faut alors pas utiliser de données techniques dans le MCD (comme l’ajout des id des tables par exemple)
Pourquoi le MPD doit être réalisé après le MCD et le MLD ?
Le MPD doit refléter la structure et le contenu final de la base de données. Cela signifie qu’au stade du MPD, nous savons quel SGBD sera utilisé. Par exemple :
- nous renseignons dans le MPD les types des champs des tables (qui peuvent justement varier d’un SGBD à l’autre)
- nous normalisons (utilisation du snake_case) et traduisons les noms des champs et des tables en anglais si cela n’a pas été fait en MLD
À quoi sert le MLD ?
Le MLD est une étape de conception intermédiaire entre le MCD et le MPD. À partir du MLD, nous ne parlons plus d’entité mais de tables. Les relations établies dans le MCD sont transformées dans le MLD afin de se rapprocher de la structure finale de la base de données.
C’est à partir du MLD que nous ajoutons les clé primaires, les clé étrangères et les clé composites.
Dans mon MCD, j’ai les deux entités et la relation suivante :
(auteur) 0,N –{écrit}–> 1,1 (article)
Traduisez cette relation en français
- Un auteur écrit de 0 à N articles
- Un article est écrit par 1 et 1 seul auteur
Dans mon MCD, j’ai les deux entités et la relation suivante :
(personne) 0,N –{mange}–> 0,1 (bonbon)
Quelles règles de transformation vais-je devoir appliquer dans le MLD ?
- Dans le MLD, les entités ‘personne’ et ‘bonbon’ deviennent des tables
- Dù à la relation 0,N : nous ajoutons une clé étrangère nommée personne_id dans la table bonbon
- Dù à la relation 0,1 : le champ personne_id dans la table bonbon est NULLABLE
- Étant donné l’ajout de la clé étragère, il n’est plus utile de conserver les cardinalités dans le MLD, elles peuvent être alors retirées du schéma
Quelles sont les deux caractéristiques d’une clé primaire ?
Dans une table, un champ est une clé primaire (PRIMARY KEY) lorsque ce dernier :
- est unique
- est non null
Ainsi, une clé primaire permet de donner “un identifiant” permettant d’identifier distinctement chaque entrée insérées dans une table.
Attention, une clé primaire n’est pas un champ automatiquement en AUTO_INCREMENT. Par exemple, une adresse email peut faire office de clé primaire dans une table.
Pouvez-vous définir ce qu’est une clé étrangère ?
Considérons un champ C1 dans une table T1
Le champ C1 est une clé étrangère si ce dernier fait référence à une clé primaire définie dans une table (dans une autre table que T1 sauf cas très particuliers)
Contrairement à la clé primaire, une clé étrangère peut être non unique et/ou nullable
Qu’est qu’une clé composite ?
Une clé composite est une composition de champs. Cette combinaison de champs doit être unique et non nulle. Une clé composite peut par exemple être utilisée dans une table de jointure où les deux clé étrangères forment alors une clé composite.
Qu’est-ce qu’un SGBD ? qu’est-ce qu’un SGBDR ?
Un SGBD est une application dont le but est d’insérer et d’extraire des données d’une base de données le plus rapidement possible tout en assurant la préservation de la cohérence des données à l’aide de contraintes d’intégrites. Le SGBD apporte également une couche de sécurité pour protéger la base de données de personnes malveillantes ; il est par exemple possible d’autoriser l’accès à une base de données qu’à un ensemble d’utilisateur spécifiques et de régler finement les actions qu’ils sont autorisées à faire.
Un SGBDR (Relationnel) désigne un SGBD conçu pour travailler avec des entités / tables reliées entre elles (via des clés étrangères).
Quel est l’acronyme de SGBD ?
Système de Gestion de Base de Données
Pouvez vous citer quelques SGBD ?
- dans la famille des SGBD Relationnels : MySQL, MariaDB, PostgreSQL
- dans la famille des SGBD NoSQL : MongoDB
Dans un SGBD, qu’est-ce qu’une contrainte d’intégrité ?
Une contrainte d’intégrité (CI) est une règle qui sera automatiquement vérifiée lorsqu’on souhaite extraire ou manipuler des données dans la base de données. Par exemple :
- Définir un champ comme étant un INTEGER est une CI. Si ensuite j’insère des caractères (et non un nombre) dans ce champs, le SGBD refusera car cela ne respecte pas la CI INTEGER
- Définir un champ comme étant une clé primaire. Si j’insère une nouvelle entrée dans la table avec un id null, le SGBD refusera car cela ne respecte pas la CI PRIMARY KEY
Les CI permettent d’assurer la préservation de la cohérence des données stockées dans la base de données lors de l’exécution d’une transation (UPDATE, INSERT, …).
Dans mon MCD, j’ai les deux entités et la relation suivante :
(article) 0,N –{possede}–> 1,N (catégorie)
Quelles règles de transformation vais-je devoir appliquer dans le MLD ?
- Dans le MLD, les entités ‘article’ et ‘catégorie’ deviennent des tables
- Dù à la relation 0,N et 1,N :
=> nous créons une table de correspondance entre les tables ‘article’ et ‘catégorie’, cette table de correspondance peut simplement être nommée ‘article_catégorie’
=> dans la nouvelle table ‘article_catégorie’, nous y ajoutons deux clé étrangères : la clé étrangère ‘article id’ (qui fera référence au champ id dans ‘article’) et la clé étrangère ‘catégorie id’ (qui fera référence au champ id dans ‘categorie’)