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

MySQL Discussion :

mysql fait il la différence entre les cardinalités 0,1 et 1,1


Sujet :

MySQL

  1. #1
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut mysql fait il la différence entre les cardinalités 0,1 et 1,1
    j'ai deux tables reliés par une relation 1:1.
    mysql workbench me permet de définir les cardinalités :
    reformes-|0-------||-cars (à un vehicule correspond zero ou une reforme)
    est ce que cette représentation est différente par rapport à
    reformes-||-------||-cars ??

    j'ai essayé les deux représentations, mais dans le coté applicatif je n'ai pas trouvé de différence.
    et s'il y a vraiment une différence du coté sgbd, je voix pas comment représenter ces cardinalités dans firebird (je doit migrer ma base vers firebird embedded)
    voici en schéma le morceau du MLD approprié.
    Images attachées Images attachées   

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Dans le cas d'une 1,1 il suffit d'interdire la valeur NULL et de mettre une contrainte de clé unique et étrangère. (unique + non null ~= primaire, non?)

    réponse positive.

    EDIT: attention parce côté applicatif il faut gérer correctement la transaction en cas de 1,1 alors que 0,1 c'est plus laxiste.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    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
    Sémantiquement, les deux schémas sont différents.

    Côté SQL, avec une association (1,1 - 1,1) il faut gérer les insertions par un trigger car les deux côtés de l'association doivent être présents en même temps en BDD.

    Il convient aussi de se demander avec de telles cardinalités si les deux entités ne pourraient pas être fusionnées.
    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 !

  4. #4
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    je ne pense pas que la fusion soit possible, mais je vais vous expliquer le problème vous aurez peut être une idée:
    un véhicule peut subir 0 ou une reforme.
    j'ai ajouté une ligne "stat" à la table cars qui comprend deux valeur 0 ou 1.
    si le véhicule est réformé stat reçoit 0.
    s'il est transféré "stat" reçoit 1. (ma base contient une table transferts reliée à cars cars--1,1----------0,1--transferts).
    si "stat" est à null donc le véhicule n'est ni transféré ni réformé.
    que pensez vous ?

  5. #5
    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 adelneo Voir le message
    je ne pense pas que la fusion soit possible, mais je vais vous expliquer le problème vous aurez peut être une idée:
    un véhicule peut subir 0 ou une reforme.
    j'ai ajouté une ligne "stat" à la table cars qui comprend deux valeur 0 ou 1.
    si le véhicule est réformé stat reçoit 0.
    s'il est transféré "stat" reçoit 1. (ma base contient une table transferts reliée à cars cars--1,1----------0,1--transferts).
    si "stat" est à null donc le véhicule n'est ni transféré ni réformé.
    que pensez vous ?
    Il y a donc quelque part une redondance de données puisque l'info sur la réforme ou le transfert figure par le biais des associations et par le biais de la colonne stat.

    un véhicule peut subir 0 ou une reforme.
    Vehicule -0,1----Subir----1,1- Réforme
    |--------------0,1----Subir----1,1- Transfert

    Que contiennent les entités Réforme et Transfert ?
    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 !

  6. #6
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Il y a donc quelque part une redondance de données puisque l'info sur la réforme ou le transfert figure par le biais des associations et par le biais de la colonne stat.


    Vehicule -0,1----Subir----1,1- Réforme
    |--------------0,1----Subir----1,1- Transfert

    Que contiennent les entités Réforme et Transfert ?
    Transfert(idtransfert,date_transfert, lieu_transfert , n_decision)
    reforme(id_reforme,date_reforme, n_decision)

  7. #7
    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
    Donc il n'y a que lieu_transfert de vraiment différent entre les deux.

    On pourrait faire un héritage.

    Un véhicule peut-il subir d'abord un transfert puis une réforme ou est-ce obligatoirement l'un ou l'autre ?
    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 !

  8. #8
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Donc il n'y a que lieu_transfert de vraiment différent entre les deux.

    On pourrait faire un héritage.

    Un véhicule peut-il subir d'abord un transfert puis une réforme ou est-ce obligatoirement l'un ou l'autre ?
    c'est l'un ou l'autre

  9. #9
    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
    Donc tu pourrais faire un héritage avec une contrainte d'exclusion mutuelle.
    Véhicule -0,1----Subir----1,1- Mouvement
    Réforme -(1,1)----Etre----0,1--------|
    Transfert -(1,1)----Etre----0,1--------X

    Dans la pratique, comme la réforme n'a pas d'attribut spécial, en réalité il n'y a que le transfert à implémenter. Sauf si la réforme est associée à autre chose.

    La logique serait ici qu'un mouvement qui n'est pas un transfert est une réforme.
    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 !

  10. #10
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    j'avoue que j'ai pas trop d'informations sur l'héritage, je doit lire de la documentation avant de continuer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 67
    Dernier message: 16/12/2007, 13h41
  2. like ne fait pas différence entre les valeurs ?
    Par karimphp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/06/2007, 17h27
  3. [pb MD5 MySql et C#]Différence entre les chaines
    Par ludovic85 dans le forum C#
    Réponses: 1
    Dernier message: 31/01/2007, 21h11
  4. fopen -> différences entres les types d'ouvertur
    Par Patrick PETIT dans le forum C
    Réponses: 10
    Dernier message: 01/06/2003, 18h19
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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