Conception de BDD + UML :
MLD + MODÈLE PHYSIQUE DE DONNÉES + Diagramme de classe + Diagramme séquence :
Diagramme de cas d’usage :
Dictionnaire de données :
Google sheets : https://docs.google.com/spreadsheets/d/1p_G5ZhDzxSyXcsKZC1ZgbwwwVrPcOlQ_fioW7h5U2kQ/edit?gid=0#gid=0
MODÈLE CONCEPTUEL DE DONNÉES :
Début de MCD : lien
// MOOCODO MCD
UTILISATEUR: email_utilisateur, mot de passe, nom, prénom, photo de profil
APPARTENIR, 01 UTILISATEUR, 11 PORTEFEUILLE
PORTEFEUILLE: nom_portefeuille, devise, solde initia
COMPOSER, 0N PORTEFEUILLE, 11 TRANSACTION
FOURNISSEUR: nom
CREER, 1N UTILISATEUR, 1N CATEGORIE
CATEGORIE:nom_categorie, icone, couleur, type, est_global
REUTILISER, 1N PORTEFEUILLE, 0N CATEGORIE
TRANSACTION: montant, type, note, date de la transaction
ASSOCIER, 1N FOURNISSEUR, 01 TRANSACTION
:
RATTACHER, 11 CATEGORIE, 0N ICONE
COMPORTER, 0N CATEGORIE, 11 TRANSACTION
CONTENIR, 0N ETIQUETTE, 01 TRANSACTION
:
:
ICONE:nom_icone, url
:
ETIQUETTE: nom_etiquette
:
:
:
COMPOSER, 0N PORTEFEUILLE, 11 TRANSACTION
:
:
PORTEFEUILLE: nom_portefeuille, devise, solde initial
:
:
ASSOCIER, 0N FOURNISSEUR, 01 TRANSACTION
TRANSACTION: montant, type, note, date de la transaction
CONTENIR, 0N TAG, 0N TRANSACTION
APPARTENIR, 01 UTILISATEUR, 11 PORTEFEUILLE
UTILISATEUR: email_utilisateur, mot de passe, nom, prénom, photo de profil
CREER, 11 FOURNISSEUR, 0N UTILISATEUR
FOURNISSEUR: nom
:
TAG: nom_tag
:
MODIFIER, 0N UTILISATEUR, 11 CATEGORIE
CATEGORIE:nom_categorie, icone, couleur, type, est_global
COMPORTER, 0N CATEGORIE, 11 TRANSACTION
:
:
:
:
RATTACHER, 11 CATEGORIE, 0N ICONE
ICONE:nom_icone, url
:
:
:
:
CREATE, 11 PROVIDER, 0N USER
PROVIDER: name
ASSOCIATE, 0N PROVIDER, 01 TRANSACTION
TAG: tag_name
USER_ROLE: name
ATTACH, 11 USER, 01 USER_ROLE
USER: email, password, last_name, first_name, profile_picture
BELONG_TO, 01 USER, 11 WALLET
:
CONTAIN, 0N TAG, 0N TRANSACTION
:
:
MODIFY, 0N USER, 11 CATEGORY
WALLET: name, currency, initial_balance
COMPOSE, 0N WALLET, 11 TRANSACTION
TRANSACTION: amount, type, note, transaction_date
ICON: icon_name, url
LINK, 11 CATEGORY, 0N ICON
CATEGORY: name, icon, color, type, is_global
INCLUDE, 0N CATEGORY, 11 TRANSACTION
:
:
:
:
CREATE, 11 PROVIDER, 0N USER
PROVIDER: name
ASSOCIATE, 0N PROVIDER, 01 TRANSACTION
TAG: tag_name
USER_ROLE: name
ATTACH, 11 USER, 01 USER_ROLE
USER: email, password, last_name, first_name,
BELONG_TO, 01 USER, 11 WALLET
:
CONTAIN, 0N TAG, 0N TRANSACTION
PROFILE_PICTURE: file,
LOAD, 11 USER, 11 PROFILE_PICTURE
:
:
MODIFY, 0N USER, 11 CATEGORY
WALLET: name, currency, initial_balance
COMPOSE, 0N WALLET, 11 TRANSACTION
TRANSACTION: amount, type, note, transaction_date
ICON: icon_name, url
LINK, 11 CATEGORY, 0N ICON
CATEGORY: name, icon, color, type, is_global
INCLUDE, 0N CATEGORY, 11 TRANSACTION
:
:
MODÈLE LOGIQUE DE DONNÉES :
CATEGORIE ( nom_categorie, icone, couleur, type, est_global, #nom_icone )
CREER ( #email_utilisateur, #nom_categorie )
ICONE ( nom_icone, url )
PORTEFEUILLE ( nom_portefeuille, devise, solde_initia, #email_utilisateur )
REUTILISER ( #nom_portefeuille, #nom_categorie )
TRANSACTION ( montant, type, note, date_de_la_transaction, #nom_portefeuille, nom, #nom_categorie, nom_etiquette )
UTILISATEUR ( email_utilisateur, mot_de_passe, nom, prénom, photo_de_profil )
Diagramme de séquence :
Nous avons utilisé le site sequencediagram
Voici un CRUD pour les transactions avec les scripts pour la génération des diagrammes sur le site
Créer une transaction
diagramme:
script:
title Création d'une transaction
participant Utilisateur
participant Frontend
participant API
participant DB
Utilisateur->Frontend: Remplit formulaire "Nouvelle transaction"
Frontend->API: POST /api/transactions (montant, catégorie, date, etc.)
alt Utilisateur authentifié
API->API: Vérifie la validité des données (contrôles métiers et format)
alt Données valides et droits OK
API->DB: INSERT INTO transactions (...)
DB-->API: Retour nouvel ID
API-->Frontend: HTTP 201 + transaction JSON
else Données invalides
API-->Frontend: HTTP 400 Bad Request + message d'erreur
else Droits insuffisants
API-->Frontend: HTTP 403 Forbidden
else Erreur technique
API-->Frontend: HTTP 500 Internal Server Error
end
else Non authentifié
API-->Frontend: HTTP 403 Forbidden
end
Frontend-->Utilisateur: Affiche message de confirmation ou erreur
Consulter la liste des transactions
diagramme:
script:
title Consultation de la liste des transactions
participant Utilisateur
participant Frontend
participant API
participant DB
Utilisateur->Frontend: Accède au dashboard
Frontend->API: GET /api/transactions (filtres éventuels)
alt Utilisateur authentifié
API->API: Vérifie les droits d'accès (appartenance utilisateur)
alt Droits OK
API->DB: SELECT * FROM transactions WHERE user_id = ? [et filtres éventuels]
DB-->API: Liste des transactions
API-->Frontend: HTTP 200 + JSON (liste des transactions)
else Droits insuffisants
API-->Frontend: HTTP 403 Forbidden
else Erreur technique
API-->Frontend: HTTP 500 Internal Server Error
end
else Non authentifié
API-->Frontend: HTTP 403 Forbidden
end
Frontend-->Utilisateur: Affiche la liste ou message d'erreur
Consulter une transaction avec un id
diagramme:
script:
title Consultation d'une transaction par ID
participant Utilisateur
participant Frontend
participant API
participant DB
Utilisateur->Frontend: Accède à la page d'une transaction (id)
Frontend->API: GET /api/transactions/:id
alt Utilisateur authentifié
API->API: Vérifie l'existence de la transaction et les droits d'accès
alt Transaction existe et droits OK
API->DB: SELECT * FROM transactions WHERE id = ?
DB-->API: Données de la transaction
API-->Frontend: HTTP 200 + JSON (transaction)
else Transaction inexistante ou droits insuffisants
API-->Frontend: HTTP 403 Forbidden ou 404 Not Found
end
alt Erreur technique
API-->Frontend: HTTP 500 Internal Server Error
end
else Non authentifié
API-->Frontend: HTTP 403 Forbidden
end
Frontend-->Utilisateur: Affiche les détails ou message d'erreur
Modifier une transaction
diagramme:
script:
title Modification d'une transaction
participant Utilisateur
participant Frontend
participant API
participant DB
Utilisateur->Frontend: Ouvre formulaire d'édition (transaction id)
Frontend->API: PUT /api/transactions/:id (nouveaux champs)
alt Utilisateur authentifié
API->API: Vérifie l'existence de la transaction et les droits d'accès
alt Transaction existe et droits OK
API->API: Valide les nouvelles données
alt Données valides
API->DB: UPDATE transactions SET ... WHERE id = ?
DB-->API: OK ou nombre lignes modifiées
API-->Frontend: HTTP 200 + transaction mise à jour
else Données invalides
API-->Frontend: HTTP 400 Bad Request + message d'erreur
else Erreur technique
API-->Frontend: HTTP 500 Internal Server Error
end
else Transaction inexistante ou droits insuffisants
API-->Frontend: HTTP 403 Forbidden ou 404 Not Found
end
else Non authentifié
API-->Frontend: HTTP 403 Forbidden
end
Frontend-->Utilisateur: Affiche message de validation ou d’erreur
Supprimer une transaction
diagramme:
script:
title Suppression d'une transaction
participant Utilisateur
participant Frontend
participant API
participant DB
Utilisateur->Frontend: Clique "Supprimer transaction"
Frontend->API: DELETE /api/transactions/:id
alt Utilisateur authentifié
API->API: Vérifie l'existence et l'appartenance de la transaction
alt Transaction existe et droits OK
API->DB: DELETE FROM transactions WHERE id = ?
DB-->API: OK ou nombre de lignes supprimées
API-->Frontend: HTTP 204 No Content
else Transaction inexistante ou droits insuffisants
API-->Frontend: HTTP 403 Forbidden ou 404 Not Found
end
alt Erreur technique
API-->Frontend: HTTP 500 Internal Server Error
end
else Non authentifié
API-->Frontend: HTTP 403 Forbidden
end
Frontend-->Utilisateur: Affiche message "Transaction supprimée" ou erreur