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

Schéma Discussion :

Gestion des ordres de missions


Sujet :

Schéma

  1. #41
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2015
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Ça paraît bizarre, mais prenons le cas suivant :

    L’employé e1 participe à la mission m1.

    Il sert aussi de chauffeur pour l’équipe (e1, e2, e3).

    Pour cela il utilise sa propre voiture v1, laquelle doit alors être enregistrée dans la table Voiture.
    donc c'est une voiture de service et non pas personnel..

    Citation Envoyé par fsmrel Voir le message
    Pour autant on n’est pas obligé d’enregistrer dans la table Chauffeur tous les agents ayant une voiture et dans la table Voiture toutes les voitures des agents qui en ont une, soyons parcimonieux ! En fin de mission on peut du reste supprimer e1 dans la table Chauffeur et v1 dans la table Voiture...

    Comment Colombo saura que c’et la voiture v1 et pas une autre qui est celle de e1 ?

    Par jointure des tables Mission, EmployeMission et Employe, on apprend que e1 est affecté à m1.
    La table Mission nous apprend que le chauffeur est aussi e1. Par jointure des tables Mission et Voiture on apprend que c’est v1 qui est utilisée pour m1. Ainsi e1 conduisant v1, il s’agit donc de sa propre voiture et du coup, il sera bénéficiaire des frais inhérents.
    Do you follow me ?

    hhhhhhhh....maintenant c'est plus fort que moi ,mais pourquoi on utlise la jointure alors que dans la table mission sa existe e1 (IdEmploye)...
    juste je veut savoir pkoi si je veut ajoute une mission ,il me faut que IdEmploye existe dans la table chauffeur....

  2. #42
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par dalinbm Voir le message
    donc c'est une voiture de service et non pas personnel...
    Revenons au post #19 et au MCD :


    Selon le MCD, l’entité-type Voiture n’est manifestement pas dédiée aux voitures de service.
    Maintenant on peut déplier le modèle comme ci-dessous, visuellement ça fait de l’effet, mais du point de vue de la base de données elle-même, on alourdit et l’intérêt n’est pas flagrant.  
    Par exemple, il faudra un trigger SQL pour interdire qu’un chauffeur de la société utilise une voiture particulière.
    Si un employé change de voiture et qu’on a encore besoin de ses services pour une nouvelle mission, il faudra affiner la modélisation, etc. 



    A vous de voir.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #43
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2015
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    merci et mille milles merci, je l'applique demain inchallah.

  4. #44
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    J'avais oublié...
     
     
    Citation Envoyé par dalinbm Voir le message
    pourquoi on utilise la jointure alors que dans la table mission sa existe e1 (IdEmploye)...
     
    e1 n’est présent dans la table Mission que s’il tient le rôle de conducteur.

    Si e1 n’est pas le conducteur, c’est la jointure des tables Mission, EmployeMission qui permet de savoir qu’il est affecté à m1 (en l’occurrence, en aucun cas la table Mission elle-même ne nous dit quoi que ce soit quant à e1 et ses collègues de mission). Pour savoir quel est le nom du lascar (e1 est symboliquement son nom...), on joint aussi EmployeMission avec Employe.
    Si donc ça n’est pas e1 qui conduit, mais un chauffeur de la société, disons e4, la table Mission nous permet par jointure avec ChauffeurSociete de nous assurer qu’il s’agit bien d’un chauffeur de la société. Pour avoir son nom (e4 est symboliquement son nom...), on joint ChauffeurSociete et Employe.
     
     
    Citation Envoyé par dalinbm Voir le message
    juste je veut savoir pkoi si je veut ajoute une mission ,il me faut que IdEmploye existe dans la table chauffeur...
     
    La patte d’association connectant l’entité-type Mission et l’association Utiliser_Voiture est porteuse d’une cardinalité 0,1. Donc si pour une nouvelle mission, disons m2, on n’utilise pas de voiture, la table Chauffeur n’est pas concernée.
    Si m2 est une mission avec voiture, on est ramené au cas qu’on a étudié.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #45
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2015
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    Bonjour,
    Merci pour vos aides et vos consigne .
    Vous trouvez dans la suite un Modele E/A fnale ,que pensez vous ,surtout la relation entre site et reservation (puisque je doit mettre un demande de reservation et les sites distant s'engage de cet affaires).
    Images attachées Images attachées  

  6. #46
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    Bonsoir,
     
     
    Citation Envoyé par dalinbm Voir le message
    merci et mille milles merci, je l'applique demain inchallah.
     
    Manifestement vous avez une préférence pour la dernière version du MCD...
    On avance bien mais on n’a pas fini...
     
     
    Citation Envoyé par dalinbm Voir le message
    Vous trouvez dans la suite un Modele E/A fnale ,que pensez vous ,surtout la relation entre site et reservation (puisque je doit mettre un demande de reservation et les sites distant s'engage de cet affaires).
     
    Les sites distants doivent donc s’engager sur les réservations. Dans le post #30, votre MCD mettait en relation les entités-types Reservation et Hotel et maintenant, ça n’est plus le cas... La réservation dont vous parlez a-t-elle un rapport avec celle qui concerne un hôtel ? Est-ce autre chose ?

    Une remarque concernant l’entité-type Service :

    Un employé fait partie d’un service (association Emp_Serv) et il travaille dans un site (association Travaille). Je verrais les choses plutôt ainsi :
     
     
    Notez l’identification relative portée par la patte connectant l’association Appartenir et l’entité-type Service. En effet, un service n’est pas autonome, il doit son existence à celle du site auquel il appartient.

    A un moment donné, on a évoqué l’attribut CodeBr. Si j’ai bien compris, c’est un identifiant naturel (donc alternatif) de l’entité-type Site, d’où sa présence dans cette entité-type. Est-ce correct ? Sinon, où doit-il être présent ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  7. #47
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    J’ai passé en revue ce que vous avez écrit concernant les réservations : j’y vois plus clair, donc ne tenez pas compte à leur sujet de la remarque que j’ai faite dans mon message précédent.

    Il est temps qu j’aille faire dodo, on en reparle demain.

    Bonne journée !
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  8. #48
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2015
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    bonjour,
    Citation Envoyé par fsmrel Voir le message
    Bonsoir,
    A un moment donné, on a évoqué l’attribut CodeBr. Si j’ai bien compris, c’est un identifiant naturel (donc alternatif) de l’entité-type Site, d’où sa présence dans cette entité-type. Est-ce correct ? Sinon, où doit-il être présent ?
    l'identifiant CodeBr a ete remplacer par IdSite(c'est le meme role) mais l'idée de metre une relation entre le service et le site c'est bien clair et bien dit... mes grand remerciement ...

  9. #49
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    Bonjour,
     
     
    Citation Envoyé par dalinbm Voir le message
    l'identifiant CodeBr a ete remplacer par IdSite (c'est le meme role)
     
    Les deux attributs identifiants IdSite etCodeBr ont évidemment pour objet de garantir l’unicité, mais l’un, CodeBr, est naturel, significatif tandis que l’autre, IdSite est artificiel, sans signification, donc invariant.

    Je cite la règle d’or du très grand Merisien Yves Tabourier (page 80 de son remarquable ouvrage De l’autre côté de Merise, Les Éditions d’organisation, 1986) :

    « ... la fonction d’une propriété est de décrire les objets (et les rencontres), alors que l’identifiant ne décrit rien. Son rôle fondamental est d’être sûr de distinguer deux jumeaux parfaits, malgré des descriptions identiques.
    L’expérience montre d’ailleurs que l’usage des “identifiants significatifs” (ou “codes significatifs”) a pu provoquer des dégâts tellement coûteux que la sagesse est d’éviter avec le plus grand soin de construire des identifiants décrivant les objets ou, pis encore, leurs liens avec d’autres objets... »

    Aujourd’hui encore, tout le monde ne partage pas cet avis, mais après 40 ans de modélisation chez me clients, d’audits, de sauvetages en catastrophe, barouds en tout genre, etc., j’ai pu constater de ce qu’il en coûtait de ne pas tenir compte de la règle d’or.
     
    Un exemple dont je me sers de temps en temps : il s’agit du système préconisé par les concepteurs dans une très grande banque de France, consistant à identifier les entreprises par leur numéro Siren, fourni par un organisme extérieur, à savoir l’INSEE. Par voie de conséquence, au niveau du MLD (Modèle Logique de Données selon Merise), puis SQL, ce Siren devait être propagé dans toute la base de données par le jeu des liens clé primaire - clé étrangère. Les concepteurs avaient entrepris le montage d’une véritable usine à gaz pour maintenir la cohérence entre les tables, parce que l’INSEE envoyait tous les mois les nombreux correctifs modifiant les numéros de Siren erronés. Tout en leur commentant l’ouvrage d’Yves Tabourier, je leur suggérai que l’identifiant de l’entreprise fît l’objet d’une propriété nouvelle et artificielle, invariante et sans signification, EntrepriseId, le numéro Siren devenant pour sa part identifiant alternatif, c'est-à-dire conservant sa spécificité : être unique et pouvant subir toutes les modifications de la part de l’utilisateur, sans aucun danger pour la base de données. Au niveau MLD et SQL, l’ex clé primaire, le numéro Siren fit donc l’objet d’une clé alternative, point d'entrée dans la table, permettant à l'utilisateur d’accéder aux données de chaque entreprise, la suite des opérations se passant de façon transparente, encapsulée pour utiliser un jargon à la mode, grâce à la nouvelle clé primaire {EntrepriseId} prenant le relais de sa copine clé alternative : du point de vue de l’utilisateur et des règles fonctionnelles, rien de changé, mais l’usine à gaz disparut en fumée, des économies importantes furent réalisées, et tout le monde fut content.

    Un conseil : conservez les deux identifiants. Côté Looping, pour l’attribut SiteId, après avoir retenu SQL Server comme SGBD, choisissez le type Compteur : le code SQL comportera "Identity". Exemple :
     
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE Site(
       SiteId INT IDENTITY,
       CodeBr CHAR(5) NOT NULL,
       SiteAdresse VARCHAR(50) NOT NULL,
       SiteNom VARCHAR(50) NOT NULL,
       CONSTRAINT Site_PK PRIMARY KEY(SiteId),
       CONSTRAINT Site_AK UNIQUE(CodeBr)
    );
     
    CodeBr est bien clé alternative, donc tout va bien.
     

    Divers

    A propos de votre message :

    Citation Envoyé par dalinbm Voir le message
    un autre error lors de l'insertion des données dans la table mission:
    INSERT INTO [dbo].[Mission]([Id_Mission],[date_Debut],[Date_Fin] ,[Objectif],[IdEmploye],[Id_Type_Mission]) VALUES (801,'2024-09-10 8:00:00' ,'2024-09-16 8:00:00','test5',700,610)
    GO
    error :
    The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Mission__IdEmplo__4222D4EF". The conflict occurred in database "Mission", table "dbo.Chauffeur", column 'IdEmploye'.
     
    Pour faciliter la recherche des erreurs, dans la fenêtre "Propriétés" de Looping :
    dans la partie MLD – SQL, "nom de clé étrangère", choisissez l’option [Classe_FK] et pour "Nom contrainte clé": choisissez "Suffixé".
     
     
     
     
    Je vais me pencher sur le problème fort intéressant des réservations.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  10. #50
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 701
    Points : 2 825
    Points
    2 825
    Par défaut
    Bonjour François,

    Je ne reviendrai pas sur notre joute préférée concernant cette règle d'or et les identifiants significatifs !!! Mais personne ne m'a encore démontré pourquoi un identifiant signifiant vraiment pérenne pouvait représenter un danger pour le SI, ni pourquoi les dates (rubriques hautement significatives) ne posent pas de problème aux adeptes des identifiants non significatifs... Et, à tous les exemples issus de ton immense expérience (n° SIREN, ...), on peut systématiquement répondre que ces identifiants n'étaient pas vraiment pérennes.

    Bref, ma question est ailleurs : pour la classe d'entités "Service", tu utilises un identifiant "ServiceId" qui, étant non significatif et donc de type "Compteur", est unique. Or, tu lui rajoutes l'identifiant relatif issu de la classe "Site"... Certes, je comprends ta volonté de faire valoir le fait que son existence dépend de la classe "Site", mais tu génères donc une surclé ce qui, pour moi, n'est pas acceptable... De plus, une simple clé étrangère liée à la cardinalité 1,1 crée cette dépendance, un service ne pouvant exister sans l'existence du site associé : l'intégrité référentielle est donc assurée, quite à faire intervenir les "CASCADE".
    Ou alors, j'ai raté quelque chose ?
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  11. #51
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par Paprick Voir le message
    Pour la classe d'entités "Service", tu utilises un identifiant "ServiceId" qui, étant non significatif et donc de type "Compteur", est unique. Or, tu lui rajoutes l'identifiant relatif issu de la classe "Site"... Certes, je comprends ta volonté de faire valoir le fait que son existence dépend de la classe "Site", mais tu génères donc une surclé ce qui, pour moi, n'est pas acceptable...
    Ou alors, j'ai raté quelque chose ?
     
    Selon le code SQL ci-dessous, {ServiceId} n’est pas clé candidate, donc a fortiori surclé ! l’attribut ServiceId ne fait que participer à la clé. Si je virais SiteId de celle-ci, y aurait plus de clé, donc la table serait réduite à l’état de sac...
     
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE Service(
       SiteId INT,
       ServiceId SMALLINT,
       ServiceNom VARCHAR(50) NOT NULL,
       CONSTRAINT Service_PK PRIMARY KEY(SiteId, ServiceId),
       CONSTRAINT Service_Site_FK FOREIGN KEY(SiteId) REFERENCES Site(SiteId)
    );
     
    Do you agree with me tovaritch ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  12. #52
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 701
    Points : 2 825
    Points
    2 825
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Do you agree with me tovaritch ?
    Effectivement, si "ServiceId" n'est pas UNIQUE et est donc un numéro interne au site, on est OK !

    Se pose alors une autre question : comment tu le génères s'il n'est pas de type "Compteur" ?
    Vu qu'il est non significatif, il ne peut être saisi par l'utilisateur et doit être généré par le SGBD, non ? ...
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  13. #53
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    A propos des réservations.

    Il est un fait que dans ce que j’ai proposé, le site distant n’est pas impliqué dans la réservation :
     

     
    On va donc remédier à ça. La première idée consiste tout simplement à brancher l’entité-type Site sur l’association Reservation :
     
     
    Maintenant, que nous dit Looping quant à la structure de la table SQL Reservation ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE Reservation(
       SiteId SMALLINT,
       HotelId SMALLINT,
       MissionId SMALLINT,
       ReservationDate DATE NOT NULL,
       ReservationMontant SMALLINT NOT NULL,
       ReservationNbChambres INT NOT NULL,
       CONSTRAINT Reservation_PK PRIMARY KEY(SiteId, HotelId, MissionId),
       CONSTRAINT Reservation_Site_FK FOREIGN KEY(SiteId) REFERENCES Site(SiteId),
       CONSTRAINT Reservation_Hotel_FK FOREIGN KEY(HotelId) REFERENCES Hotel(HotelId),
       CONSTRAINT Reservation_Mission_FK FOREIGN KEY(MissionId) REFERENCES Mission(MissionId)
    );
     
    La clé primaire de la table Reservation est composée des 3 colonnes SiteId, MissionId, HotelId.
    Cela veut dire qu’il n’y a pas d’objection, côté SQL, à ce que pour la mission m1 et l’hôtel h1 s’engagent les sites distants s1, s2, etc. Mais en réalité, un seul site est à impliquer, disons s1.
    Par conséquent, la clé primaire est à réduire à la paire {MissionId, HotelId}.

    Pour y parvenir, on va faire comme dans le post #16 et demander à Looping de transformer l’association Reservation en entité-type :
     
     
    =>
     
     
    Où l’on a pris la précaution de ne conserver l’identification relative que pour Mission et Hôtel.
     
    En conséquence, l’attribut SiteId ne participe plus à la clé primaire de Reservation, d’où le code SQL produit par Looping :
     
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE Reservation(
       HotelId INT,
       MissionId INT,
       ReservationDate DATE NOT NULL,
       ReservationMontant SMALLINT,
       ReservationNbChambres SMALLINT NOT NULL,
       SiteId INT NOT NULL,
       CONSTRAINT Reservation_PK PRIMARY KEY(MissionId, HotelId),
       CONSTRAINT Reservation_Hotel_FK FOREIGN KEY(HotelId) REFERENCES Hotel(HotelId),
       CONSTRAINT Reservation_Mission_FK FOREIGN KEY(MissionId) REFERENCES Mission(MissionId),
       CONSTRAINT Reservation_Site_FK FOREIGN KEY(SiteId) REFERENCES Site(SiteId)
    );
     
    SiteId est devenu un attribut lambda.

    A noter qu’on peut vérifier que les paires {SiteId, MissionId} et{SiteId, HotelId} ne peuvent pas prétendre à leur tour au rôle de clé candidate.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  14. #54
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 701
    Points : 2 825
    Points
    2 825
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Pour y parvenir, on va faire comme dans le post #16 et demander à Looping de transformer l’association Reservation en entité-type
    Ce serait plus sympa avec une CIF, non ?
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  15. #55
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par Paprick Voir le message
    Ce serait plus sympa avec une CIF, non ?
    Quelle bonne idée, merci Paprick ! Utiliser la CIF m’était complètement sorti de la tête...

    Pour dalinbm, mode d’emploi : il suffit de cliquer sur la patte branchant Site sur Reservation puis de cocher "Entité ciblée par CIF" et comme par magie, la clé de table SQL est réduite à la paire {MissionId, HotelId} comme souhaité. La CIF est mise en évidence ans le MCD par la pointe de flèche.


    Remerciez Paprick !
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  16. #56
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2015
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    Bonsoir,

    Citation Envoyé par fsmrel Voir le message
    Bonjour,
     
     

     
    Les deux attributs identifiants IdSite etCodeBr ont évidemment pour objet de garantir l’unicité, mais l’un, CodeBr, est naturel, significatif tandis que l’autre, IdSite est artificiel, sans signification, donc invariant.
    .
    le codeBr(IdSite) est de type entier saisie par l'utlisateur et il unique et non null,

  17. #57
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2015
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    re bonsoir,:
    merci: a vos tous ,

    Comme un responsable support dans une société qui possède 60 sites distant dans le territoire tunisiens, je n'ai aucune idée sur les hôtels et les réservations, juste je mentionne dans l'ordre de mission que ce dernier prend 5 jours(exemple) donc 4 ou 6 nuitées (exemple) pension complète pour un certain nombre de personne. Le site destinataire s'engage de cette réservation

  18. #58
    Nouveau membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2015
    Messages : 42
    Points : 34
    Points
    34
    Par défaut
    re,
    le but c'est comment pouvoire capturer les informations de base sur les réservations dans les ordres de mission, sans gérer les détails des réservations d'hôtel elles-mêmes, qui sont effectuées par les sites destinataires.
    Mission à Reservation: Une mission peut avoir plusieurs réservations (1,N).
    Reservation à Site: Chaque réservation est effectuée par un seul site (N,1).
    on peut le representer comme suit :
    Mission (1) ---- (N) Reservation (N) ---- (1) Site

  19. #59
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    Bonsoir dalinbm,

    Retour en arrière...
     
     
    Citation Envoyé par dalinbm Voir le message
    CodeBr est un identifiant attribue à chaque site (Bureau régional : « Br », bureau local :« Bl », Antenne, direction, centre formation ...)
     
    Vous avez 60 sites distants : au vu des valeurs que vous proposez, CodeBr ne serait-il pas plutôt l’identifiant d’une hypothétique entité-type "Type de site" ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  20. #60
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 085
    Points : 31 322
    Points
    31 322
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par dalinbm Voir le message
    Le but c'est comment pouvoir capturer les informations de base sur les réservations dans les ordres de mission, sans gérer les détails des réservations d'hôtel elles-mêmes, qui sont effectuées par les sites destinataires.
    Mission à Reservation: Une mission peut avoir plusieurs réservations (1,N).
    Reservation à Site: Chaque réservation est effectuée par un seul site (N,1).
    on peut le représenter comme suit :
    Mission (1) ---- (N) Reservation (N) ---- (1) Site
    Dans ces conditions, l’entité-type Hotel disparaîtrait du système et Reservation ne serait plus alors qu’une association entre Mission et Site :


    C’est bien ça ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. [WD17] Gestion des ordres mission
    Par PipouZed dans le forum WinDev
    Réponses: 5
    Dernier message: 05/03/2017, 16h01
  2. [MCD] Gestion des parapheurs et des ordres de mission d'un ministère
    Par yacinthos dans le forum Schéma
    Réponses: 5
    Dernier message: 12/11/2014, 13h45
  3. Réponses: 9
    Dernier message: 31/08/2014, 20h02
  4. Réponses: 0
    Dernier message: 14/01/2010, 10h33
  5. Quel SGBD pour la gestion des missions d'une association ?
    Par Bragon12 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 06/05/2008, 14h32

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