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

Développement SQL Server Discussion :

Enregistrement de données dans 2 tables se référant l'une vers l'autre !


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 87
    Points : 47
    Points
    47
    Par défaut Enregistrement de données dans 2 tables se référant l'une vers l'autre !
    Bonjour,

    J'ai un soucis au niveau de l'enregistrement de données dans 2 tables, qui ont chacune une FK qui pointe vers l'autre table.

    Petit schéma :
    MCD :
    Entreprise <--0,n-- (est employé par) --1,1-- Collaborateur
    Entreprise --0,1-- (est collaborateur commercial) --0,n--> Collaborateur
    Entreprise --0,1-- (est collaborateur technique) --0,n--> Collaborateur

    Table:
    Entreprise :
    - IdCollaborateurCommercial => FK vers idCollaborateur
    - IdCollaborateurTechnique => FK vers idCollaborateur

    Collaborateur :
    - IdEntreprise => FK vers IdEntreprise

    Mon soucis est lors d'enregistrement de données car :
    Lorsque je sauvegarde des données dans la table Entreprise => Contrainte FK car idEntreprise doit être renseigné dans la table Collaborateur

    Lorsque je sauvegarde des données dans la table Collaborateur => Contrainte FK car IdCollaborateur ne pointe pas vers IdCollaborateurCommercial ou IdCollaborateurTechnique

    Comment faire pour sauvegarder des données proprement ?

    Désactiver les contraintes FK (nocheck) sur IdCollaborateurCommercial et IdCollaborateurTechnique ? (car ces champs peuvent être null)

    merci

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Désactiver les contraintes FK (nocheck) sur IdCollaborateurCommercial et IdCollaborateurTechnique ? (car ces champs peuvent être null)
    Certes...

    Vous pouvez également faire votre insertion dans entreprise en laissant à NULL les FK,Insérer le Collaborateur puis mettre à jour l'entreprise...

    Pourquoi ne pas passer par une table d'association ENTREPRISE-Collaborateur avec une colonne typeCollaborateur?
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 87
    Points : 47
    Points
    47
    Par défaut
    C'est peut être ce que j'aurais fait, car je ne suis pas à l'origine de ce modèle et il est trop tard pour faire les modifs ...

    Merci pour ta réponse, ma méthode n'est pas sécurisée au niveau des données car on peut importer des données en trop, mais elle a le mérite d'être plus rapide. Quant à la tienne, on conserve l'intégrité des données mais est plus lente ....

    Il me reste à faire le choix !!

    merci

  4. #4
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Alors bon choix...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par weebo Voir le message
    Lorsque je sauvegarde des données dans la table Entreprise => Contrainte FK car idEntreprise doit être renseigné dans la table Collaborateur

    Lorsque je sauvegarde des données dans la table Collaborateur => Contrainte FK car IdCollaborateur ne pointe pas vers IdCollaborateurCommercial ou IdCollaborateurTechnique
    Une sauvegarde de base de données est toujours transactionellement consistante quoi qu'il arrive ! Nous ne sommes ps sous MySQL !!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/09/2010, 09h35
  2. Réponses: 0
    Dernier message: 07/11/2009, 10h21
  3. utiliser formulaire pour enregistrer des données dans différentes tables
    Par silue fignigue siaka dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 11/04/2009, 13h53
  4. Réponses: 10
    Dernier message: 06/02/2008, 09h35
  5. Enregistrer des données dans une table à partir du code
    Par Ragnarok85 dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2007, 13h03

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