Systèmes d'information, MCD, MLD et modèle relationnel : cours, méthodes et exercices corrigés d'informatique ECT2
- ECT 2
- Offert à l'essai
Système d'information de l'entreprise, règles de gestion et dictionnaire des données, modèle conceptuel des données (entités, associations, cardinalités), passage au modèle logique et au schéma relationnel (clés primaires et étrangères, contraintes d'intégrité), avec des cas tirés des sujets du CNAEM et de l'ISCAE.
- 17méthodes
- 40exercices corrigés
- 6problèmes
- 21pièges
- 55figures
Pour concevoir une base de données, on passe par trois étapes : le MCD (modèle conceptuel des données), qui dessine les entités, leurs identifiants, les associations et leurs cardinalités ; le MLD (modèle logique des données), qui traduit ce dessin en tables avec leurs clés primaires et leurs clés étrangères ; puis le script SQL, qui crée les tables dans SQLite avec CREATE TABLE et leurs contraintes. Le passage du MCD au MLD tient en trois règles : chaque entité devient une table ; dans une association 1-n, la clé étrangère va dans la table de l'entité de cardinalité maximale 1 ; une association n-n devient une nouvelle table dont la clé réunit les deux clés étrangères. Ce chapitre d'informatique de l'ECT2 au Maroc suit la section « Systèmes d'information et bases de données » du programme : information et système d'information, règles de gestion et dictionnaire des données, MCD, cardinalités (0,1), (1,1), (0,n), (1,n), association 1-1, modèle relationnel, clé primaire simple ou composite, intégrité référentielle, CREATE TABLE, ALTER TABLE, DROP TABLE, contraintes NOT NULL, DEFAULT, UNIQUE, CHECK, PRIMARY KEY et FOREIGN KEY, et le PRAGMA foreign_keys = ON sans lequel SQLite ne vérifie pas les clés étrangères. Il prépare directement aux questions de modélisation du CNAEM ECT (épreuve « Gestion, management et informatique ») et de l'ISCAE : tableaux de cardinalités à remplir, règles de gestion à rédiger, propriété à placer, MCD à compléter, schéma relationnel à lire. La page propose un cours avec des schémas, des méthodes avec la rédaction attendue sur la copie, des exercices corrigés et des sujets réels du CNAEM et de l'ISCAE corrigés pas à pas.
Ce que tu sauras faire
Une entreprise, une coopérative ou une association garde chaque jour des informations sur ses clients, ses produits, ses commandes. Avant d'écrire la moindre requête, il faut décider quelles données garder et comment les ranger, pour ne rien perdre, ne rien répéter et ne rien contredire. Ce chapitre apprend cette conception, de la phrase du métier jusqu'à la table créée dans SQLite. À la fin, tu dois savoir :
- distinguer donnée, traitement et information, et dire à quoi sert le système d'information d'une entreprise ;
- écrire les règles de gestion d'un cas et le dictionnaire des données ;
- construire et lire un modèle conceptuel des données (MCD) : entités, identifiants, associations, propriétés, cardinalités ;
- le traduire en modèle logique (MLD) et en schéma relationnel, avec ses clés primaires et étrangères ;
- écrire les
CREATE TABLEavec leurs types et leurs contraintes, les modifier parALTER TABLE, les supprimer parDROP TABLE; - prévoir ce que la base accepte et ce qu'elle refuse.
L'essentiel : Du MCD au MLD Extrait gratuit
| Cas | Règle | Exemple |
|---|---|---|
| entité | une table ; identifiant devenu clé primaire | CLIENT(, nom) |
| association 1-n | clé étrangère dans la table du côté de maximum 1 | COMMANDE(, date_cde, #num_client) |
| association n-n | nouvelle table ; clé composée des deux clés étrangères ; propriétés en colonnes | LIGNE(, quantite) |
| association (0,1)-(1,1) | clé étrangère du côté (1,1), avec UNIQUE |
CARTE(, taux_reduction, #num_client) |
| association (1,1)-(1,1) | fusion des deux tables, le plus souvent |
- Schéma relationnel : une table par ligne, clé primaire soulignée,
#devant la clé étrangère. Les sujets écrivent aussi#après le nom.
Une méthode du chapitre Extrait gratuit
L'énoncé donne un MCD et demande le MLD ou le schéma relationnel.
Règle 1 : chaque entité devient une table, son identifiant la clé primaire. Règle 2 : pour une association de maximums 1 et n, la table de l'entité de maximum 1 reçoit en clé étrangère l'identifiant de l'autre entité ; l'association disparaît.
- Écrire une table par entité, avec ses propriétés et sa clé primaire soulignée.
- Pour chaque association, regarder les deux maximums.
- Si c'est 1 d'un côté et n de l'autre : ajouter dans la table du côté 1 la colonne #identifiant de l'autre entité ; y ajouter aussi les propriétés de l'association s'il y en a.
- Vérifier que chaque association 1-n a laissé exactement une clé étrangère.
« L'association APPARTENIR est de type 1-n (maximum 1 côté VELO, n côté CLIENT) : la table VELO reçoit la clé étrangère #num_client. »
VELO (1,1) APPARTENIR (1,n) CLIENT ; REPARATION (1,1) CONCERNER (1,n) VELO.
- CLIENT(, nom_client, telephone)
- VELO(, modele, #num_client)
- REPARATION(, date_depot, date_retour, #num_velo)
- Mettre la clé étrangère du côté n (une colonne de CLIENT ne peut pas contenir la liste de ses vélos).
- Garder l'association 1-n comme une table.
- Oublier le
#ou le soulignement qui disent le rôle de chaque colonne.
Exercices 10, 30 et 34 ; problèmes 1 et 2.
Un exercice corrigé Extrait gratuit
Dans un centre de formation, ELEVE(, nom, classe) et MODULE(, intitule, coefficient) sont reliées par l'association SUIVRE, qui porte la propriété note ; le couple est (0,n) du côté ELEVE et (1,n) du côté MODULE.
a) Écrire le schéma relationnel.
b) Quelle est la clé primaire de la table d'association ? Que traduit-elle ?
c) Écrire les ordres CREATE TABLE des trois tables.
- Méthode 10 : une association n-n devient une table ; sa clé primaire est composée des deux clés étrangères ; les propriétés de l'association deviennent des colonnes.
a) ELEVE(, nom, classe)
MODULE(, intitule, coefficient)
SUIVRE(, note)
b) La clé primaire de SUIVRE est le couple (num_eleve, code_module) : une clé composite. Elle traduit la règle « un élève a au plus une note dans un module » : la même paire ne peut pas apparaître deux fois.
c)
PRAGMA foreign_keys = ON;
CREATE TABLE eleve (
num_eleve INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
classe TEXT NOT NULL
);
CREATE TABLE module (
code_module TEXT NOT NULL PRIMARY KEY,
intitule TEXT NOT NULL,
coefficient INTEGER NOT NULL
CHECK (coefficient > 0)
);
CREATE TABLE suivre (
num_eleve INTEGER NOT NULL,
code_module TEXT NOT NULL,
note REAL CHECK (note >= 0 AND note <= 20),
PRIMARY KEY (num_eleve, code_module),
FOREIGN KEY (num_eleve)
REFERENCES eleve (num_eleve),
FOREIGN KEY (code_module)
REFERENCES module (code_module)
);
On éprouve la clé composite : un élève reçoit une note dans un module, puis une deuxième note dans le même module.
INSERT INTO eleve (num_eleve, nom, classe)
VALUES (1, 'Ouazzani', 'ECT2');
INSERT INTO module (code_module, intitule, coefficient)
VALUES ('BD', 'Bases de donnees', 2);
-- ordre 3
INSERT INTO suivre (num_eleve, code_module, note)
VALUES (1, 'BD', 14.5);
-- ordre 4
INSERT INTO suivre (num_eleve, code_module, note)
VALUES (1, 'BD', 16);
-- ordre 5
INSERT INTO suivre (num_eleve, code_module, note)
VALUES (2, 'BD', 12);
SQLite répond :
ordre 1 : accepté
ordre 2 : accepté
ordre 3 : accepté
ordre 4 : refusé (UNIQUE constraint failed: suivre.num_eleve, suivre.code_module)
ordre 5 : refusé (FOREIGN KEY constraint failed)
L'ordre 4 répète le couple (1, BD) : la clé composite le refuse. L'ordre 5 cite l'élève 2, qui n'existe pas : la clé étrangère le refuse.
Interprétation : la table d'association garde la note là où elle a un sens, à la rencontre d'un élève et d'un module ; sa clé composite empêche deux notes pour la même paire.
« n-n, nouvelle table » : clé composite des deux clés étrangères, propriétés en colonnes. Voir la méthode 10.
Le cours détaillé, toute la fiche « L'essentiel », 17 méthodes, 21 pièges corrigés, la carte mentale, 40 exercices corrigés, 6 problèmes de concours, les fiches à mémoriser et l'assistant qui répond à tes questions. Ce chapitre est offert : il s’ouvre en entier avec un compte d’essai gratuit.
Ouvrir l'essai gratuitUne question ? WhatsAppPlan du cours
- 1. Information et système d'information
- 1.1 Donnée, traitement, information
- 1.2 Le système d'information de l'entreprise
- 1.3 Pourquoi une base de données
- 2. La démarche de conception
- 3. Le modèle conceptuel des données (MCD)
- 3.1 Définition
- 3.2 Entité, occurrence, propriété
- 3.3 L'identifiant
- 3.4 Association et propriétés d'une association
- 3.5 Les cardinalités
- 3.6 Les types d'associations
- 3.7 Valider un MCD par un diagramme d'occurrences
- 3.8 Remarques sur les notations
- 4. Le modèle logique des données (MLD) et les règles de passage
- 4.1 Définition et rôle
- 4.2 Règle 1 : chaque entité devient une table
- 4.3 Règle 2 : l'association 1-n
- 4.4 Règle 3 : l'association n-n
- 4.5 L'association 1-1
- 4.6 Écrire le schéma relationnel
- 5. Le modèle relationnel
- 5.1 Table, attribut, domaine, n-uplet
- 5.2 Clé primaire simple ou composite
- 5.3 Clé étrangère et intégrité référentielle
- 5.4 Lire les règles de gestion dans un schéma
- 6. Définir les tables en SQL avec SQLite
- 6.1
CREATE TABLE - 6.2 Les types de SQLite
- 6.3 Les contraintes de colonne
- 6.4 La clé primaire :
PRIMARY KEY - 6.5 La clé étrangère :
FOREIGN KEYetPRAGMA foreign_keys - 6.6 L'ordre de création et le script complet
- 6.7 Modifier une table :
ALTER TABLE - 6.8 Supprimer une table :
DROP TABLE - 6.9 Éprouver les contraintes
- 6.1
- 7. Du cahier des charges au script : la démarche complète
Les méthodes du chapitre
Chaque méthode est une fiche : quand l'utiliser, le rappel de cours, les étapes, la rédaction attendue sur la copie, un exemple traité, les erreurs à éviter.
- Distinguer donnée, traitement et information
- Extraire les règles de gestion et le dictionnaire des données
- Repérer les entités et choisir leurs identifiants
- Repérer les associations et placer chaque propriété
- Déterminer une cardinalité par deux questions
- Traduire une cardinalité en règle de gestion, et l'inverse
- Compléter ou modifier un MCD pour intégrer de nouvelles règles
- Valider un MCD par un diagramme d'occurrences
- Passer du MCD au MLD : entités et associations 1-n
- Passer du MCD au MLD : associations n-n et 1-1
- Écrire et lire un schéma relationnel
- Lire un schéma relationnel pour retrouver les règles de gestion
- Choisir les types SQLite et les contraintes à partir des règles de gestion
- Écrire les
CREATE TABLEd'un MLD dans le bon ordre - Modifier et supprimer des tables :
ALTER TABLEetDROP TABLE - Prévoir les refus de la base
- Traiter une question de modélisation au CNAEM ou à l'ISCAE
Les exercices corrigés
Chaque exercice a ses indications, sa correction rédigée et ce qu'il faut en retenir.
Application directe (16)
- Donnée, traitement ou information : le ticket de caisse d'une épicerie
- Les quatre fonctions du système d'information d'une coopérative laitière
- Entités, propriétés et identifiants d'une boutique d'artisanat de Fès
- Choisir un identifiant : nom, téléphone, CIN ou numéro attribué
- Lire les couples d'un MCD et rédiger les règles de gestion
- Traduire des règles de gestion en couples de cardinalités
- Peut ou doit : corriger des minimums
- Propriété d'entité ou propriété d'association
- Le vocabulaire du modèle relationnel sur une table remplie
- Passer au MLD : une association 1-n
- Passer au MLD : une association n-n porteuse d'une propriété
- Lire le schéma de la base d'exploitation d'un fabricant de matériel électrique
- Choisir les types SQLite de huit colonnes
- Écrire un CREATE TABLE avec clé primaire et NOT NULL
- Quelle instruction échoue
- ALTER TABLE et DROP TABLE : prévoir l'état des tables
Entraînement (18)
- Du texte au MCD complet : la bibliothèque d'un lycée de Meknès
- Nettoyer un dictionnaire des données
- Valider un MCD par un diagramme d'occurrences
- Lire un MLD pour répondre à des questions du métier
- Une association 1-1 : le magasin et son gérant
- Le schéma de la boutique en ligne de miel
- Le schéma des ventes et de l'action sociale d'un fabricant de papier
- Les cartes de fidélité d'une enseigne de grande distribution
- Le script complet d'un MLD à quatre tables
- Des règles de gestion aux contraintes
- Intégrité référentielle, avec et sans PRAGMA foreign_keys = ON
- Le typage souple de SQLite
- Faire évoluer une base
- Corriger un MLD faux
- Corriger un CREATE TABLE faux
- Relire un schéma en notation UML et le récrire en Merise
- Une feuille de tableur fourre-tout
- La coopérative laitière du Gharb
Approfondissement (6)
- Les règles que les cardinalités ne disent pas
- Une association à trois pattes : enseignant, classe, matière
- Une association réflexive : le coffret composé d'autres produits
- Le prix qui change : garder le prix du jour de la vente
- Fusionner ou séparer une association 1-1
- Du cahier des charges au script : le transport scolaire d'une commune rurale
Les problèmes de concours
Des extraits de sujets réels, corrigés en entier, avec la durée conseillée et les méthodes mobilisées.
- La vente en ligne des billets de car
- La gestion des ventes d'un producteur de jus d'agrumes
- Les entrepôts d'une entreprise de négoce
- Les équipements agricoles installés chez les clients
- La location de véhicules avec ou sans chauffeur
- Les plannings d'un centre hospitalier
Questions fréquentes
Comment passer du MCD au MLD ?
Chaque entité devient une table et son identifiant la clé primaire. Pour une association 1-n, on ajoute l'identifiant de l'autre entité, en clé étrangère, dans la table de l'entité de cardinalité maximale 1 : une commande a un seul client, la table COMMANDE reçoit #num_client. Une association n-n devient une nouvelle table dont la clé primaire réunit les deux clés étrangères, et ses propriétés en deviennent les colonnes.
Comment lire une cardinalité dans un MCD ?
Le couple (min, max) est écrit près de l'entité qu'il décrit. On pose deux questions : une occurrence de cette entité participe au moins à combien d'occurrences de l'association, et au plus à combien ? (1,1) côté COMMANDE se lit : une commande est passée par un et un seul client. (0,n) côté CLIENT : un client peut passer aucune, une ou plusieurs commandes.
Quelle est la différence entre MCD et MLD ?
Le MCD décrit les données et leurs liens par des entités, des associations et des cardinalités, sans choix de logiciel. Le MLD les traduit en tables d'une base relationnelle, avec des clés primaires et des clés étrangères, prêtes à être écrites en SQL.
Où mettre la clé étrangère dans une association 1-n ?
Dans la table de l'entité dont la cardinalité maximale vaut 1. La mettre de l'autre côté est l'erreur la plus fréquente : une colonne de la table CLIENT ne peut pas contenir la liste de toutes ses commandes, alors que chaque commande n'a qu'un client.
Qu'est-ce qu'une clé primaire composite ?
Une clé primaire formée de plusieurs colonnes. Dans une table de lignes de commande, ni le numéro de commande seul, ni la référence du produit seule ne suffisent ; le couple (numéro de commande, référence du produit) identifie chaque ligne. En SQL : PRIMARY KEY (num_cde, ref_produit).
Pourquoi SQLite accepte une clé étrangère qui ne référence rien ?
Parce que SQLite ne vérifie les clés étrangères qu'après la directive PRAGMA foreign_keys = ON;, à chaque ouverture de la base. On l'écrit en première ligne du script : sans elle, une commande d'un client inexistant est acceptée ; avec elle, elle est refusée avec le message FOREIGN KEY constraint failed.
Comment sont posées les questions de MCD au CNAEM ECT et à l'ISCAE ?
Le sujet donne une ébauche de MCD et demande de compléter des couples de cardinalités, de rédiger la règle de gestion de chaque cardinalité dans un tableau, de placer une propriété sur une entité ou une association, ou d'intégrer de nouvelles règles de gestion. Le CNAEM demande aussi de lire un schéma relationnel et d'écrire des requêtes SQL.
Comment y accéder
Ce chapitre fait partie des chapitres offerts : il s'ouvre en entier avec un compte d'essai gratuit. Créer un compte d'essai ou se connecter. Pour l'accès complet, les tarifs ou une question, écris-nous sur WhatsApp.