IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Couche métier ou schéma de la base en premier?


Sujet :

Modélisation

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Points : 38
    Points
    38
    Par défaut Couche métier ou schéma de la base en premier?
    Bonjour,

    Dans une application admettant l'architecture suivante :

    IHM
    couche métier
    couche d'accès aux données
    couche de persistance de données (BDD)

    est ce qu'il convient de concevoir en premier lieu la BDD, ou faut-t-il commencer d'abord par modéliser la couche métier et le schéma de la base est ensuite déductible par un mapping objet/relationnel?

    Merci de vos interventions.

  2. #2
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    personnellement je commence toujours par la base de données
    Si tu peux voir détruit l'ouvrage de ta vie.
    Et sans dire un seul mot te mettre à rebâtir,
    Tu seras un Homme, mon fils.

  3. #3
    Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut couche métier
    il faut commencé par couche métier

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Les données ayant leurs règles de gestion propres, indépendantes des logiciels susceptibles de les utiliser, il faut modéliser en premier les données et surtout pas générer la BDD à partir des classes métier de l'application.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Les données ayant leurs règles de gestion propres, indépendantes des logiciels susceptibles de les utiliser, il faut modéliser en premier les données et surtout pas générer la BDD à partir des classes métier de l'application.
    Justement, la responsabilité de la couche métier est de capturer les particularités métier, et notamment les règles de cohérence ou d'intégrité qui le régit, et, ce beaucoup plus fidèlement que ne le permettent les bases de données (cf. business rules engine, dsl, etc).

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Tommy31 Voir le message
    Justement, la responsabilité de la couche métier est de capturer les particularités métier, et notamment les règles de cohérence ou d'intégrité qui le régit, et, ce beaucoup plus fidèlement que ne le permettent les bases de données (cf. business rules engine, dsl, etc).
    Ne pas confondre les règles propres au métier et les règles propres aux données !

    Exemple...
    Soit une table de personne (prs_id, prs_nom, prs_prenom, prs_date_naissance, prs_date_enregistrement, prs_date_maj...)

    On peut poser comme contrainte sur les données, donc codé dans la BDD, le fait que la date d'enregistrement doit être supérieure à la date de naissance et inférieure à la date de mise à jour si la date de mise à jour n'est pas NULL.
    Cette contrainte évitera par exemple qu'une importation de données en masse dans la table entraîne des données incohérentes.

    Maintenant si cette table est utilisée pour enregistrer, entre autres, des personnes qui sont des étudiants ayant le niveau BAC+5, l'application pourra poser la contrainte métier sur le fait que la date de naissance de l'enregistrement d'un de ces étudiants lui donne un âge d'au moins 20 ans par exemple (BAC à 15 ans c'est déjà une performance rarissime !).

    Mais si cette table enregistre également les enfants du personnel, cette contrainte métier d'ancienneté de la date de naissance ne peut pas être posée sur la colonne de la table.

    Quand aux contraintes d'intégrité, elles seront beaucoup plus efficaces et incontournables par le mécanisme des clés étrangères par les contraintes CHECK et par les triggers dans la BDD que par un logiciel utilisateur de la BDD. Là encore, attention aux insertions ou aux modifications externes au logiciel ! Le SGBD ne laissera rien passer, quel que soit le moyen d'alimentation des données. Le logiciel ne peut contrôler que ce qu'il gère au moment où il le gère.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Couche Métier en premier mais modèle des entités métiers en premier.

    @CinePhil
    Ne pas confondre les règles propres au métier et les règles propres aux données !
    Cette phrase n'a pas de sens.

    Les règles métier sont essentiellement des règles portant sur les données et l'exemple que tu donnes en est un bon exemple.
    Parmi les règles métier, on a en gros 2 catégories de règles.

    1- Les règles qui sont exprimables directement dans le modèle statique (le modèle des entités métier ou le MCD dans le monde Merise). On retrouve l'expression de ces règles au travers des relations que l'on a créé ou pas créé. Héritage et associations sont l'expression de règles métier et qui se matérialisent in fine dans le schéma de la base de données. Les multiplicités que l'on met aux extrémités des associations (rôles UML) sont aussi des règles métier. Quand on met une multiplicité du genre 1..2 du côté de l'entité "Dossier" sur l'association entre "Personne" et "Dossier", on dit qu'une Personne doit avoir au moins un Dossier et au plus 2; c'est une règle de gestion. D'autres règles pourront/devront s'exprimer via des mécanismes plus "complexes" comme un langage type OCL.

    2- Les règles métier "dynamiques" qui utilisent les données mais qui ne les contraingnent pas directement. Du genre, dans un traitement on peut vouloir dire : "Si la Personne est majeure, lui envoyer un email de confirmation, sinon envoyer une confirmation par email à ses parents".

    La 1e catégorie de règles peut en majorité se retrouver sous forme de contraintes dans le SGBD, mais pas toutes.
    La seconde catégorie de règles ne se retrouve pas dans le SGBD mais dans le code de l'application.

    Donc comme on fait avant tout des applications "métier", il est donc primordial de commencer à savoir ce que l'on a à faire d'un point de vue métier. Ce n'est qu'ensuite que l'on regarde comment, en fonction de ces règles, la base de données peut être construite. Car s'il y a des règles de passage "MCD - MPD" ou "Modèle d'entités - MPD" (c'est pareil dans les 2 cas, tout dépend du vocabulaire que vous employez), l'usage des données par l'application mais aussi les tests de performances doivent vous guider dans l'optimisation du schéma de la base.

  8. #8
    Membre émérite
    Inscrit en
    Janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Janvier 2011
    Messages : 805
    Points : 2 918
    Points
    2 918
    Par défaut
    Citation Envoyé par Bassas Voir le message
    est ce qu'il convient de concevoir en premier lieu la BDD, ou faut-t-il commencer d'abord par modéliser la couche métier et le schéma de la base est ensuite déductible par un mapping objet/relationnel
    Les deux approches sont possibles. Fais une recherche sur "top down" et "bottom up" pour connaitre les avantages de chacune. On peut aussi faire du "middle out" ou du "meet in the middle" lorsqu'il y a une couche de mapping objet-relationnel.

  9. #9
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Luckyluke34 Voir le message
    Les deux approches sont possibles. Fais une recherche sur "top down" et "bottom up" pour connaitre les avantages de chacune. On peut aussi faire du "middle out" ou du "meet in the middle" lorsqu'il y a une couche de mapping objet-relationnel.
    Non mais sans rire, on définit d'abord ce que l'on a à gérer = le métier. Ensuite la base est créée.

    Tiens prenons un exemple :

    Voici mon problème : "je dois gérer....." quelle doit être la base de données pour .......... ?

    Le premier qui me sort la base de données appropriée gagne une ferrari, une vraie, promis ! Allé c'est parti

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par ego Voir le message
    Tiens prenons un exemple :

    Voici mon problème : "je dois gérer....." quelle doit être la base de données pour .......... ?
    MCD :
    Ensemble -1,n----Constituer----0,n- Point

    Tables :
    Point (pt_id, pt_coord_x, pt_coord_y...)
    Ensemble (ens_id...)
    Constitution (cns_id_ensemble, cns_id_point)

    Le premier qui me sort la base de données appropriée gagne une ferrari, une vraie, promis ! Allé c'est parti
    En rouge la Ferrari STP !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Bravo !!!!
    C'est pas ça

    Une autre tentative

Discussions similaires

  1. couche de classe entre application et base de donnee
    Par Lord HaSaN dans le forum Accès aux données
    Réponses: 1
    Dernier message: 24/01/2007, 15h09
  2. Organisation Couche métier
    Par tatemilio2 dans le forum Hibernate
    Réponses: 1
    Dernier message: 08/09/2006, 14h29
  3. Schéma de la base de donnée
    Par Oberown dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2006, 11h14
  4. [C#]Schémas d'une base de données
    Par pc152 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/10/2005, 15h59
  5. Couche métier = forcement EJB ?
    Par jothi35 dans le forum Java EE
    Réponses: 9
    Dernier message: 14/09/2004, 16h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo