Services Ads

Corrigé Exercice 04 / Série 01 (ACSI)

Veuillez concevoir un Modèle Conceptuel de Données (MCD) ainsi qu’un Modèle Physique de Données (MPD) pour satisfaire les exigences suivantes :

  1. Un comptable est responsable de la saisie de factures provenant de fournisseurs. Ces factures fournisseurs représentent les transactions commerciales entre l’entreprise et ses fournisseurs.
  2. Chaque facture fournisseur contient un ou plusieurs produits. Ces produits représentent les biens ou services que l’entreprise a achetés auprès du fournisseur. Il est nécessaire de tenir compte des détails spécifiques de chaque produit sur la facture, y compris la quantité et le prix.
  3. Une facture fournisseur peut être payée en plusieurs échéances, ce qui signifie que le montant total de la facture peut être divisé en plusieurs paiements effectués à des moments différents. Il est important de suivre les détails de chaque paiement, y compris le montant du paiement et la date du paiement.
  4. Le paiement de la facture fournisseur peut être effectué par divers modes de paiement, y compris par chèque, en espèces, par effets de commerce ou par d’autres modes de paiement tels que le virement bancaire ou le paiement par carte de crédit. Le mode de paiement pour chaque paiement doit être enregistré.

Les deux modèles (MCD et MPD) devraient être en mesure de représenter ces informations de manière claire et structurée, permettant une récupération et une analyse efficaces des données.

Modèle conceptuel de données (MPD) :

D’après la description donnée, voici une proposition pour le Modèle Conceptuel de Données (MCD) :
  1. Entités :
    • Comptable
    • Fournisseur
    • Facture
    • Produit
    • Paiement
    • Mode de Paiement
  2. Associations :
    • Une association « saisit » entre Comptable et Facture :
      – Un comptable peut saisir plusieurs factures.
      – Une facture est saisie par un seul comptable.
    • Une association « concerne » entre Fournisseur et Facture :
      – Un fournisseur peut être concerné par plusieurs factures.
      – Une facture est concerne un seul fournisseur .
    • Une association « contient » entre Facture et Produit :
      – Une facture peut contenir plusieurs produits.
      – Produit peut figurer sur plusieurs factures.
    • Une association « payée par » entre Facture et Paiement :
      – Une facture peut être payée par plusieurs paiements.
      – Un paiement paye une seule facture.
    • Une association « effectué par » entre Paiement et Mode de Paiement :
      – Un paiement est effectué par un seul mode de paiement.
      – Un mode de paiement peut être utilisé pour plusieurs paiements.
  3. Attributs :
    • Comptable : id_comptable, nom, prenom
    • Fournisseur : id_fournisseur, nom, adresse
    • Facture : id_facture, date, id_fournisseur [FK], id_comptable [FK]
    • Produit : id_produit, nom, prix_unitaire
    • Paiement : id_paiement, montant, date, id_facture [FK], id_mode_de_paiement [FK]
    • Mode de Paiement : id_mode_de_paiement, type_paiement (chèque, espèce, effets de commerce, etc.)
Ces éléments du MCD permettent de représenter les informations nécessaires pour répondre aux exigences mentionnées. Notez que [FK] indique un attribut qui est une clé étrangère, c’est-à-dire qu’il fait référence à l’identifiant d’une autre entité.

Modèle conceptuel de données (MCD) :

fsjst-info-gestion-serie-01-ex-04-MCD

Modèle logique de données textuel (MCD) :

Comptable = (id INT, nom VARCHAR(50), prenom VARCHAR(50));
ModePaiement = (id INT, type_paiment VARCHAR(50));
Produit = (id INT, nom VARCHAR(50), prix_unitaire DECIMAL(15,2));
Fournisseur = (id INT, nom VARCHAR(50), prenom VARCHAR(50));
Facture = (id INT, date_facture DATE, #id_Fournisseur, #id_Comptable);
Paiement = (id INT, montant DECIMAL(15,2), date_paiement DECIMAL(15,2), #id_ModePaiement, #id_Facture);
Facture_Produit = (#id_Produit, #id_Facture, quantite_commandee INT);

Modèle physique de données (MPD) :

fsjst-info-gestion-serie-01-ex-04-MPD

En se basant sur le Modèle Conceptuel de Données (MCD) précédent, nous pouvons déduire le Modèle Physique de Données (MPD) comme suit :

  1. Tables :

    • Comptable : id_comptable (PK), nom, prénom
    • Fournisseur : id_fournisseur (PK), nom, adresse
    • Facture : id_facture (PK), date, id_fournisseur (FK), id_comptable (FK)
    • Produit : id_produit (PK), nom, prix, quantité
    • Paiement : id_paiement (PK), montant, date, id_facture (FK), id_mode_de_paiement (FK)
    • Mode de Paiement : id_mode_de_paiement (PK), type
    • Facture_Produit : id_facture (FK), id_produit (FK) (Cette table intermédiaire représente la relation « contient » entre la Facture et le Produit)
  2. Clés :

    • La clé primaire (PK) de chaque table est l’identifiant unique de l’enregistrement dans cette table.
    • Les clés étrangères (FK) sont utilisées pour établir les relations entre les tables.
  3. Index :

    • Généralement, des index sont créés sur les clés primaires pour des performances optimales. Des index peuvent également être créés sur les clés étrangères pour améliorer les performances des jointures.
  4. Contraintes :

    • Les contraintes d’intégrité référentielle sont utilisées pour s’assurer que les relations entre les tables sont maintenues. Par exemple, un enregistrement dans la table Paiement qui fait référence à un enregistrement dans la table Facture ne peut pas être créé si l’enregistrement correspondant dans la table Facture n’existe pas.

Note : Le MPD peut varier en fonction du système de gestion de base de données utilisé et des spécificités de mise en œuvre.

Code SQL :

CREATE TABLE Comptable(
   id INT,
   nom VARCHAR(50),
   prenom VARCHAR(50),
   PRIMARY KEY(id)
);

CREATE TABLE ModePaiement(
   id INT,
   type_paiment VARCHAR(50),
   PRIMARY KEY(id)
);

CREATE TABLE Produit(
   id INT,
   nom VARCHAR(50),
   prix_unitaire DECIMAL(15,2),
   PRIMARY KEY(id)
);

CREATE TABLE Fournisseur(
   id INT,
   nom VARCHAR(50),
   prenom VARCHAR(50),
   PRIMARY KEY(id)
);

CREATE TABLE Facture(
   id INT,
   date_facture DATE,
   id_Fournisseur INT NOT NULL,
   id_Comptable INT NOT NULL,
   PRIMARY KEY(id),
   FOREIGN KEY(id_Fournisseur) REFERENCES Fournisseur(id),
   FOREIGN KEY(id_Comptable) REFERENCES Comptable(id)
);

CREATE TABLE Paiement(
   id INT,
   montant DECIMAL(15,2),
   date_paiement DECIMAL(15,2),
   id_ModePaiement INT NOT NULL,
   id_Facture INT NOT NULL,
   PRIMARY KEY(id),
   FOREIGN KEY(id_ModePaiement) REFERENCES ModePaiement(id),
   FOREIGN KEY(id_Facture) REFERENCES Facture(id)
);

CREATE TABLE Facture_Produit(
   id_Produit INT,
   id_Facture INT,
   quantite_commandee INT,
   PRIMARY KEY(id_Produit, id_Facture),
   FOREIGN KEY(id_Produit) REFERENCES Produit(id),
   FOREIGN KEY(id_Facture) REFERENCES Facture(id)
);