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 :

Problème et erreur sur MCD et base de données


Sujet :

Schéma

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 4
    Points
    4
    Par défaut Problème et erreur sur MCD et base de données
    salut ... voila mon MCD aider moi a le corriger parce que lorsque je génère la base de données les tables clients filles (client ordinaire et client conventionner) n'accepte pas l'insertion des données a cause de problème de clé Étrangère référencé vers la table parent client ....... comment corriger ce problème.
    Nom : mcd telecom.jpg
Affichages : 856
Taille : 38,6 Ko

  2. #2
    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
    Bonjour

    Vous avez un héritage de données de Client vers Client_conventionne et vers Client_ordinaire.

    1) Je ne vois pas trop l'utilité de Client_ordinaire puisque cette entité-type ne contient aucun attribut et n'a pas d'association particulière.

    2) La génération de votre BDD a donc du créer les tables Client_conventionne et Client_ordinaire avec, chacune, une colonne clé étrangère référençant Client.Num_cl.
    Lors de l'insertion des données dans Client_conventionne, vous devez fournir à la colonne clé étrangère une valeur existant dans la table Client. Faute de quoi vous obtenez une erreur.

    Il faut donc d'abord insérer les données de la table Client, récupérer l'identifiant créé lors de l'insertion puis utiliser cet identifiant pour insérer les données dans Client_conventionne.

    J'explique sur mon blog la démarche avec une procédure pour MySQL et pour Postgresql que vous pourrez adapter à votre cas.
    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 !

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Tout à fait d'accord avec les remarques de Cinéphil.
    Je précise que vous avez oublié de définir l'identifiant primaire de l'entité-type client (absence de rectangle typé "pi" en bas de l'entité-type), c'est certainement la cause de votre erreur

    Et j'ajoute que vous devriez également choisir un autre type de données que du Varchar pour vos identifiants (cf. facture, contrat et réduction).
    Le Varchar est ce qu'on peut choisir de pire pour un identifiant primaire, c'est un type instable par vocation (car le plus souvent sémantique) est très peu performant. Préférez de l'integer.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Bonjour

    Vous avez un héritage de données de Client vers Client_conventionne et vers Client_ordinaire.

    1) Je ne vois pas trop l'utilité de Client_ordinaire puisque cette entité-type ne contient aucun attribut et n'a pas d'association particulière.

    2) La génération de votre BDD a donc du créer les tables Client_conventionne et Client_ordinaire avec, chacune, une colonne clé étrangère référençant Client.Num_cl.
    Lors de l'insertion des données dans Client_conventionne, vous devez fournir à la colonne clé étrangère une valeur existant dans la table Client. Faute de quoi vous obtenez une erreur.

    Il faut donc d'abord insérer les données de la table Client, récupérer l'identifiant créé lors de l'insertion puis utiliser cet identifiant pour insérer les données dans Client_conventionne.

    J'explique sur mon blog la démarche avec une procédure pour MySQL et pour Postgresql que vous pourrez adapter à votre cas.
    merci pour votre aide ..... mais si je supprime le client ordinaire les contraintes sur héritage ce change ou non

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Tout à fait d'accord avec les remarques de Cinéphil.
    Je précise que vous avez oublié de définir l'identifiant primaire de l'entité-type client (absence de rectangle typé "pi" en bas de l'entité-type), c'est certainement la cause de votre erreur

    Et j'ajoute que vous devriez également choisir un autre type de données que du Varchar pour vos identifiants (cf. facture, contrat et réduction).
    Le Varchar est ce qu'on peut choisir de pire pour un identifiant primaire, c'est un type instable par vocation (car le plus souvent sémantique) est très peu performant. Préférez de l'integer.
    merci .... j'ai ajouté le pi sur client conventionner et sa provoque une erreur lors de la conversion en MLD ....... le type de donnees varchar parce que comme exemple l'identifiant de facture est (fac00000001) s'il ya une autre solution dit le moi .... merci

  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
    mais si je supprime le client ordinaire les contraintes sur héritage ce change ou non
    Un client est un client ordinaire. Certains clients sont des clients conventionnés. C'est tout.

    j'ai ajouté le pi sur client conventionner et sa provoque une erreur lors de la conversion en MLD
    Non. Je vois bien le <pi> sur votre entité-type Client. Je ne comprends pas ce qu'a voulu dire Escartefigue !
    Dans le MCD, il ne faut pas mettre de <pi> sur Client_conventionne puisque c'est une entité-type fille qui hérite de Client. Elle n'a pas d'identifiant propre. Lors du passage au MLD, la table aura une colonne clé étrangère référençant Client et qui sera clé primaire de la table.

    Client (Num_cl, Nom_cl, Prenom_cl, Date_naiss...)
    Client_conventionne (Num_cl, Fonc_cl)

    le type de donnees varchar parce que comme exemple l'identifiant de facture est (fac00000001) s'il ya une autre solution dit le moi .... merci
    Un numéro peut changer de format. C'est une mauvaise clé primaire. Il vaut mieux créer une clé primaire technique de type Serial et considérer le numéro de facture comme une clé alternative, donc munir la colonne de la table d'une contrainte d'unicité. Idem pour Contrat, Offre et Reduction.

    Au passage, quelques remarques complémentaires...
    1) Pour nommer votre tables et colonnes, n'utilisez que des caractères simples (lettres non accentuées de a à z, chiffres) et le caractère de soulignement _.
    2) Mettez les noms des entités types (et par voie de conséquence des tables) au singulier.
    3) Un numéro de facture, de contrat ou d'offre est le cas type du type CHAR (chaîne de caractères de longueur fixe)
    4) Vos cardinalités sont toutes à revoir !
    Un client ne pourrait-il donc payer qu'une seule facture ? Ne signer qu'un seul contrat ?
    5) Vous devriez externaliser les types d'offres qui seront, je suppose, répétitifs. Donc faites une entité-type de référence des types d'offres et associez la à Offre.
    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
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Non. Je vois bien le <pi> sur votre entité-type Client. Je ne comprends pas ce qu'a voulu dire Escartefigue !
    Il faut que l'identifiant primaire (PI) apparaisse en bas de l'entité-type, dans le rectangle inférieur, comme c'est le cas par exemple pour l'ET facture


    @azzazzelleio :
    Quelques autres remarques :
    - vous devriez rédiger les règles de gestion et les numéroter afin de justifier les cardinalités et la contrainte d'intégrité d'inclusion entre "attribuer" et "contient"
    - tel que vous avez modélisé la relation "attribuer", le client est une entité-type faible : il est identifié relativement à la carte (parenthèses autour des cardinalités), ça semble très très curieux...
    - vous avez modélisé la facture mais pas les lignes de factures
    - vous n'avez rien modélisé concernant les paiements et le lettrage, est-ce hors périmètre de votre modèle ?

  8. #8
    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
    Il faut que l'identifiant primaire (PI) apparaisse en bas de l'entité-type, dans le rectangle inférieur, comme c'est le cas par exemple pour l'ET facture
    J'ai l'impression que c'est l'affichage de cette entité-type qui est réduite sur le dessin.
    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 !

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 47
    Points : 4
    Points
    4
    Par défaut
    merci pour vos repenses .... je vais voir ce que peut faire

Discussions similaires

  1. Erreur sur ouverture de base de données
    Par chekkal dans le forum Connexion aux bases de données
    Réponses: 10
    Dernier message: 06/02/2019, 14h16
  2. Problème d'erreur sur XP Service Pack 2
    Par nourou7 dans le forum Windows XP
    Réponses: 2
    Dernier message: 24/01/2009, 01h32
  3. [Problème Syntaxe] Erreur sur une fonction
    Par arnaudperfect dans le forum VBScript
    Réponses: 1
    Dernier message: 19/11/2008, 16h37
  4. [MySQL] problème d'erreur sur requête
    Par bromlecornu dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 30/05/2007, 16h45
  5. Réponses: 4
    Dernier message: 14/02/2007, 17h53

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