Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2011, 09h58   #1
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
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
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 10h25   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
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?
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 10h33   #3
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 70
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 70
Points : 13
Points : 13
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
weebo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 10h36   #4
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Alors bon choix...
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 11h28   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h02.


 
 
 
 
Partenaires

Hébergement Web