Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
bonjour,
Etienne a écrit:
> Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
Ce n'est pas un problème de SQL Server. C'est un manque de culture sur des
concepts de SGBD relationnels !
> Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
Visiblement vous avez du mal parce que vous ne maitrisez pas le modèle
relationnel et en gros la modélisation de données.
Je vous conseille de vous familiariser avec ces concepts par exemple à travers
la méthode MERISE ou la notation UML.
Après vous pourrez facilement comprendre et applmiquer ce qu'est une intégrité
référentielle.
Commencez donc par lire cet article (MERISE) :
http://sqlpro.developpez.com/cours/modelisation/merise/
Puis, poursuivez par (intégrité référentielle) :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L2
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.1.7
Si vous avez besoin d'explication supplémentaires, n'hasitez pas à me
questionner. En tant qu'auteur de ces articles, je peut vous guider !
A +
> Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
bonjour,
Etienne a écrit:
> Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
Ce n'est pas un problème de SQL Server. C'est un manque de culture sur des
concepts de SGBD relationnels !
> Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
Visiblement vous avez du mal parce que vous ne maitrisez pas le modèle
relationnel et en gros la modélisation de données.
Je vous conseille de vous familiariser avec ces concepts par exemple à travers
la méthode MERISE ou la notation UML.
Après vous pourrez facilement comprendre et applmiquer ce qu'est une intégrité
référentielle.
Commencez donc par lire cet article (MERISE) :
http://sqlpro.developpez.com/cours/modelisation/merise/
Puis, poursuivez par (intégrité référentielle) :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L2
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.1.7
Si vous avez besoin d'explication supplémentaires, n'hasitez pas à me
questionner. En tant qu'auteur de ces articles, je peut vous guider !
A +
> Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
bonjour,
Etienne a écrit:
> Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
Ce n'est pas un problème de SQL Server. C'est un manque de culture sur des
concepts de SGBD relationnels !
> Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
Visiblement vous avez du mal parce que vous ne maitrisez pas le modèle
relationnel et en gros la modélisation de données.
Je vous conseille de vous familiariser avec ces concepts par exemple à travers
la méthode MERISE ou la notation UML.
Après vous pourrez facilement comprendre et applmiquer ce qu'est une intégrité
référentielle.
Commencez donc par lire cet article (MERISE) :
http://sqlpro.developpez.com/cours/modelisation/merise/
Puis, poursuivez par (intégrité référentielle) :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L2
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.1.7
Si vous avez besoin d'explication supplémentaires, n'hasitez pas à me
questionner. En tant qu'auteur de ces articles, je peut vous guider !
A +
> Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Désolé, j'ai du créer un nouveau post au lieu de répondre à :
SQL2005 - Relation clés multiples.
Sinon, concernant mon manque de culture, je ne suis que développeur de
métier en dotnet et SQL Sever depuis 10 ans. Donc je vous le garantis, mon pb
vient bien de l'interprétation de SQL server 2005 et pas d'un pb de
modélisation.
"Fred BROUARD" a écrit :bonjour,
Etienne a écrit:Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Ce n'est pas un problème de SQL Server. C'est un manque de culture sur des
concepts de SGBD relationnels !Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Visiblement vous avez du mal parce que vous ne maitrisez pas le modèle
relationnel et en gros la modélisation de données.
Je vous conseille de vous familiariser avec ces concepts par exemple à travers
la méthode MERISE ou la notation UML.
Après vous pourrez facilement comprendre et applmiquer ce qu'est une intégrité
référentielle.
Commencez donc par lire cet article (MERISE) :
http://sqlpro.developpez.com/cours/modelisation/merise/
Puis, poursuivez par (intégrité référentielle) :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L2
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.1.7
Si vous avez besoin d'explication supplémentaires, n'hasitez pas à me
questionner. En tant qu'auteur de ces articles, je peut vous guider !
A +Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Désolé, j'ai du créer un nouveau post au lieu de répondre à :
SQL2005 - Relation clés multiples.
Sinon, concernant mon manque de culture, je ne suis que développeur de
métier en dotnet et SQL Sever depuis 10 ans. Donc je vous le garantis, mon pb
vient bien de l'interprétation de SQL server 2005 et pas d'un pb de
modélisation.
"Fred BROUARD" a écrit :
bonjour,
Etienne a écrit:
Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Ce n'est pas un problème de SQL Server. C'est un manque de culture sur des
concepts de SGBD relationnels !
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Visiblement vous avez du mal parce que vous ne maitrisez pas le modèle
relationnel et en gros la modélisation de données.
Je vous conseille de vous familiariser avec ces concepts par exemple à travers
la méthode MERISE ou la notation UML.
Après vous pourrez facilement comprendre et applmiquer ce qu'est une intégrité
référentielle.
Commencez donc par lire cet article (MERISE) :
http://sqlpro.developpez.com/cours/modelisation/merise/
Puis, poursuivez par (intégrité référentielle) :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L2
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.1.7
Si vous avez besoin d'explication supplémentaires, n'hasitez pas à me
questionner. En tant qu'auteur de ces articles, je peut vous guider !
A +
Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Désolé, j'ai du créer un nouveau post au lieu de répondre à :
SQL2005 - Relation clés multiples.
Sinon, concernant mon manque de culture, je ne suis que développeur de
métier en dotnet et SQL Sever depuis 10 ans. Donc je vous le garantis, mon pb
vient bien de l'interprétation de SQL server 2005 et pas d'un pb de
modélisation.
"Fred BROUARD" a écrit :bonjour,
Etienne a écrit:Apparemment dans SQL Server 2005, on a plus le choix de la table source pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Ce n'est pas un problème de SQL Server. C'est un manque de culture sur des
concepts de SGBD relationnels !Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Visiblement vous avez du mal parce que vous ne maitrisez pas le modèle
relationnel et en gros la modélisation de données.
Je vous conseille de vous familiariser avec ces concepts par exemple à travers
la méthode MERISE ou la notation UML.
Après vous pourrez facilement comprendre et applmiquer ce qu'est une intégrité
référentielle.
Commencez donc par lire cet article (MERISE) :
http://sqlpro.developpez.com/cours/modelisation/merise/
Puis, poursuivez par (intégrité référentielle) :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L2
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=partie2#L7.1.7
Si vous avez besoin d'explication supplémentaires, n'hasitez pas à me
questionner. En tant qu'auteur de ces articles, je peut vous guider !
A +Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:
> Apparemment dans SQL Server 2005, on a plus le choix de la table source
> pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour
> moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
> Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
> clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
> champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors
> pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
> Merci.
Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
news: 93630733-F065-4204-8DAA-B1F934958FC3@microsoft.com...
> Apparemment dans SQL Server 2005, on a plus le choix de la table source
> pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour
> moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
> Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
> clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
> champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors
> pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
> Merci.
Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:
> Apparemment dans SQL Server 2005, on a plus le choix de la table source
> pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour
> moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
> Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
> clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
> champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors
> pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
> Merci.
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :
Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
news: 93630733-F065-4204-8DAA-B1F934958FC3@microsoft.com...
Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:
> Apparemment dans SQL Server 2005, on a plus le choix de la table source
> pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour
> moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
> Je peux choisir n'importe quel champ dans cette table comme clé
> étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
> clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
> champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors
> pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
> Merci.
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :
Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
news: 93630733-F065-4204-8DAA-B1F934958FC3@microsoft.com...
> Apparemment dans SQL Server 2005, on a plus le choix de la table source
> pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour
> moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
> Je peux choisir n'importe quel champ dans cette table comme clé
> étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
> clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
> champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors
> pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
> Merci.
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:
> Apparemment dans SQL Server 2005, on a plus le choix de la table source
> pour
> effectuer une relation, c'est forcément la table "étrangère". Donc pour
> moi
> Moderateurs.
> Il est possible que je me trompe car novice sur SQLS 2005....
> Je peux choisir n'importe quel champ dans cette table comme clé
> étrangère,
> mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
> clé
> primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
> champs
> de clé primaire et ceux de clé étrangère dans une même table ! Alors
> pourquoi
> je dois choisir 2 champs comme clé étrangère ???
> Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
> problème ?
> Merci.
Je vois mieux maintenant ton problème.
Je dois t'avouer que cette interface n'est pas intuitive du tout
J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
essayé de reproduire ton problème
En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
message d'erreur que toi.
Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
connais tout de même bien les diagrammes de bases de données à la 2000
J'ai donc décidé de créer un diagramme de base de données et là quelle
déception
Les fonctionnalités des diagrammes de bases de données ont largement été
réduites par rapport à 2000.
Pourquoi? je ne sais pas trop.
Dans les versions beta, je crois qu' il a été question, à un moment donné,
de supprimer carrément ces diagrammes.
Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
plus que décevant.
Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
étrangère entre MODERATEUR(UserID) et USER(UserID)
Je reviens sur le menu relashionship et là miracle la relation y est...
Heureusement car la norme SQL est très claire sur le sujet
Elle permet à une colA d'une tableA de référencer une colonne colB d'une
tableB à condition qu'elle soit clef primaire ou en contrainte unique
La norme n'impose aucune restriction sur colA de la tableA. C'est une
contrainte de domaine.
Pourquoi ce message d'erreur alors
Je replonge dans la documentation et j'essaye de comprendre la nouvelle
logique.
Et je finis par comprendre.
La regle est simple :
1) On commence toujours par choisir la table qui possède la colonne clef
étrangère.
C'est logique car c'est une colonne de cette table dont on cherche à
restreindre le domaine.
Dans notre cas, tu choisis la table MODERATEUR.
2) Tu affiches le menu relationships... jusque ce que tu arrives à la
fameuse fenêtre.
3) Tu choisis à gauche la table avec la colonne de domaine
Dans notre cas USER
4) Tu sélectionnes ensuite les colonnes en correspondance
Dans notre cas UserID (USER) et UserID(MODERATEUR)
Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
pas intuitif du tout.
J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
mettre en correspondance.
Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
gauche et MODERATEUR à droite
J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
données.
C'était vraiment pratique et intuitif
Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé
étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Je vois mieux maintenant ton problème.
Je dois t'avouer que cette interface n'est pas intuitive du tout
J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
essayé de reproduire ton problème
En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
message d'erreur que toi.
Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
connais tout de même bien les diagrammes de bases de données à la 2000
J'ai donc décidé de créer un diagramme de base de données et là quelle
déception
Les fonctionnalités des diagrammes de bases de données ont largement été
réduites par rapport à 2000.
Pourquoi? je ne sais pas trop.
Dans les versions beta, je crois qu' il a été question, à un moment donné,
de supprimer carrément ces diagrammes.
Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
plus que décevant.
Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
étrangère entre MODERATEUR(UserID) et USER(UserID)
Je reviens sur le menu relashionship et là miracle la relation y est...
Heureusement car la norme SQL est très claire sur le sujet
Elle permet à une colA d'une tableA de référencer une colonne colB d'une
tableB à condition qu'elle soit clef primaire ou en contrainte unique
La norme n'impose aucune restriction sur colA de la tableA. C'est une
contrainte de domaine.
Pourquoi ce message d'erreur alors
Je replonge dans la documentation et j'essaye de comprendre la nouvelle
logique.
Et je finis par comprendre.
La regle est simple :
1) On commence toujours par choisir la table qui possède la colonne clef
étrangère.
C'est logique car c'est une colonne de cette table dont on cherche à
restreindre le domaine.
Dans notre cas, tu choisis la table MODERATEUR.
2) Tu affiches le menu relationships... jusque ce que tu arrives à la
fameuse fenêtre.
3) Tu choisis à gauche la table avec la colonne de domaine
Dans notre cas USER
4) Tu sélectionnes ensuite les colonnes en correspondance
Dans notre cas UserID (USER) et UserID(MODERATEUR)
Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
pas intuitif du tout.
J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
mettre en correspondance.
Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
gauche et MODERATEUR à droite
J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
données.
C'était vraiment pratique et intuitif
Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
news: BDEEDF5F-AB0F-4D81-BB43-5F79FE8FEC9D@microsoft.com...
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :
Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
news: 93630733-F065-4204-8DAA-B1F934958FC3@microsoft.com...
Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé
étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
Je vois mieux maintenant ton problème.
Je dois t'avouer que cette interface n'est pas intuitive du tout
J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
essayé de reproduire ton problème
En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
message d'erreur que toi.
Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
connais tout de même bien les diagrammes de bases de données à la 2000
J'ai donc décidé de créer un diagramme de base de données et là quelle
déception
Les fonctionnalités des diagrammes de bases de données ont largement été
réduites par rapport à 2000.
Pourquoi? je ne sais pas trop.
Dans les versions beta, je crois qu' il a été question, à un moment donné,
de supprimer carrément ces diagrammes.
Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
plus que décevant.
Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
étrangère entre MODERATEUR(UserID) et USER(UserID)
Je reviens sur le menu relashionship et là miracle la relation y est...
Heureusement car la norme SQL est très claire sur le sujet
Elle permet à une colA d'une tableA de référencer une colonne colB d'une
tableB à condition qu'elle soit clef primaire ou en contrainte unique
La norme n'impose aucune restriction sur colA de la tableA. C'est une
contrainte de domaine.
Pourquoi ce message d'erreur alors
Je replonge dans la documentation et j'essaye de comprendre la nouvelle
logique.
Et je finis par comprendre.
La regle est simple :
1) On commence toujours par choisir la table qui possède la colonne clef
étrangère.
C'est logique car c'est une colonne de cette table dont on cherche à
restreindre le domaine.
Dans notre cas, tu choisis la table MODERATEUR.
2) Tu affiches le menu relationships... jusque ce que tu arrives à la
fameuse fenêtre.
3) Tu choisis à gauche la table avec la colonne de domaine
Dans notre cas USER
4) Tu sélectionnes ensuite les colonnes en correspondance
Dans notre cas UserID (USER) et UserID(MODERATEUR)
Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
pas intuitif du tout.
J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
mettre en correspondance.
Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
gauche et MODERATEUR à droite
J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
données.
C'était vraiment pratique et intuitif
Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé
étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
donc, med, mieux vaut donc tout faire en SQL et finalement appuyer sur le bouton
pour qu'il "pisse" d'un seul coup, tout le diagramme.
De toute façon c'est plus pro de faire en SQL qu'en graphique. Le mieux étant de
passer par un outil de modélisation.
A +
Med Bouchenafa a écrit:
> Je vois mieux maintenant ton problème.
> Je dois t'avouer que cette interface n'est pas intuitive du tout
> J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
> essayé de reproduire ton problème
> En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
> message d'erreur que toi.
>
> Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
> connais tout de même bien les diagrammes de bases de données à la 2000
> J'ai donc décidé de créer un diagramme de base de données et là quelle
> déception
> Les fonctionnalités des diagrammes de bases de données ont largement été
> réduites par rapport à 2000.
> Pourquoi? je ne sais pas trop.
> Dans les versions beta, je crois qu' il a été question, à un moment donné,
> de supprimer carrément ces diagrammes.
> Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
> plus que décevant.
>
>
> Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
> étrangère entre MODERATEUR(UserID) et USER(UserID)
> Je reviens sur le menu relashionship et là miracle la relation y est...
>
> Heureusement car la norme SQL est très claire sur le sujet
> Elle permet à une colA d'une tableA de référencer une colonne colB d'une
> tableB à condition qu'elle soit clef primaire ou en contrainte unique
> La norme n'impose aucune restriction sur colA de la tableA. C'est une
> contrainte de domaine.
> Pourquoi ce message d'erreur alors
>
> Je replonge dans la documentation et j'essaye de comprendre la nouvelle
> logique.
> Et je finis par comprendre.
> La regle est simple :
>
> 1) On commence toujours par choisir la table qui possède la colonne clef
> étrangère.
> C'est logique car c'est une colonne de cette table dont on cherche à
> restreindre le domaine.
> Dans notre cas, tu choisis la table MODERATEUR.
>
> 2) Tu affiches le menu relationships... jusque ce que tu arrives à la
> fameuse fenêtre.
>
> 3) Tu choisis à gauche la table avec la colonne de domaine
> Dans notre cas USER
>
> 4) Tu sélectionnes ensuite les colonnes en correspondance
> Dans notre cas UserID (USER) et UserID(MODERATEUR)
>
> Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
> pas intuitif du tout.
> J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
> mettre en correspondance.
> Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
> gauche et MODERATEUR à droite
> J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
>
> Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
> données.
> C'était vraiment pratique et intuitif
> Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
>
>
> --
> Avec mes meilleurs voeux 2006
> Med Bouchenafa
>
>
>
> "Etienne" a écrit dans le message de
> news:
>
>>Bonjour Med,
>>Voici mon problème, il est simple :
>>j'ai une table dont un champ doit être une clé étrangère d'une autre
>>table,
>>ici une relation de 1 à n (je me place donc du côté n).
>>Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
>>cas
>>classique.
>>Considérons maintenant ce même exemple mais la table dispose d'une clé
>>primaire - le fait que la table est une clé primaire n'a aucun rapport
>>avec
>>la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
>>et
>>je crée encore la relation sans difficulté.
>>J'arrive au cas qui me soucis, imaginons cette fois que cette table est
>>une
>>clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
>>qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
>>table est une clé primaire.
>>Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
>>une
>>clé étrangère sur 2 champs !
>>Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
>>étrangère
>>???
>>
>>Pour étayer mon propos, voici un exemple qui correspond bien :
>>J'ai une table Users et une table Moderators ; Moderators comprend deux
>>champs clé primaires UserID et ForumID, car un utilisateur peut être
>>modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
>>est situé dans une autre table Users, je créé une relation 1 à n entre
>>Users
>>et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
>>choisir
>>dans Moderators est donc UserID.
>>Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
>>SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
>>de
>>un pour me satisfaire !).
>>Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
>>l'habitude, soit que je n'ai pas compris comment faire cela via la version
>>2005. Pouvez vous m'en dire plus svp ?
>>
>>Merci d'avance.
>>
>>
>>"Med Bouchenafa" a écrit :
>>
>>
>>>Tu as apparemment noté une différence entre 2000 et 2005.
>>>Je n'ai pas vraiment compris quelle était cette différence
>>>Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
>>>pouvais
>>>être plus explicte
>>>Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
>>>fonctionne
>>>plus...
>>>
>>>--
>>>Avec mes meilleurs voeux 2006
>>>Med Bouchenafa
>>>
>>>"Etienne" a écrit dans le message de
>>>news:
>>>
>>>>Apparemment dans SQL Server 2005, on a plus le choix de la table source
>>>>pour
>>>>effectuer une relation, c'est forcément la table "étrangère". Donc pour
>>>>moi
>>>>Moderateurs.
>>>>Il est possible que je me trompe car novice sur SQLS 2005....
>>>>Je peux choisir n'importe quel champ dans cette table comme clé
>>>>étrangère,
>>>>mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
>>>>clé
>>>>primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
>>>>champs
>>>>de clé primaire et ceux de clé étrangère dans une même table ! Alors
>>>>pourquoi
>>>>je dois choisir 2 champs comme clé étrangère ???
>>>>Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
>>>>problème ?
>>>>Merci.
>>>
>>>
>>>
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
donc, med, mieux vaut donc tout faire en SQL et finalement appuyer sur le bouton
pour qu'il "pisse" d'un seul coup, tout le diagramme.
De toute façon c'est plus pro de faire en SQL qu'en graphique. Le mieux étant de
passer par un outil de modélisation.
A +
Med Bouchenafa a écrit:
> Je vois mieux maintenant ton problème.
> Je dois t'avouer que cette interface n'est pas intuitive du tout
> J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
> essayé de reproduire ton problème
> En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
> message d'erreur que toi.
>
> Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
> connais tout de même bien les diagrammes de bases de données à la 2000
> J'ai donc décidé de créer un diagramme de base de données et là quelle
> déception
> Les fonctionnalités des diagrammes de bases de données ont largement été
> réduites par rapport à 2000.
> Pourquoi? je ne sais pas trop.
> Dans les versions beta, je crois qu' il a été question, à un moment donné,
> de supprimer carrément ces diagrammes.
> Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
> plus que décevant.
>
>
> Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
> étrangère entre MODERATEUR(UserID) et USER(UserID)
> Je reviens sur le menu relashionship et là miracle la relation y est...
>
> Heureusement car la norme SQL est très claire sur le sujet
> Elle permet à une colA d'une tableA de référencer une colonne colB d'une
> tableB à condition qu'elle soit clef primaire ou en contrainte unique
> La norme n'impose aucune restriction sur colA de la tableA. C'est une
> contrainte de domaine.
> Pourquoi ce message d'erreur alors
>
> Je replonge dans la documentation et j'essaye de comprendre la nouvelle
> logique.
> Et je finis par comprendre.
> La regle est simple :
>
> 1) On commence toujours par choisir la table qui possède la colonne clef
> étrangère.
> C'est logique car c'est une colonne de cette table dont on cherche à
> restreindre le domaine.
> Dans notre cas, tu choisis la table MODERATEUR.
>
> 2) Tu affiches le menu relationships... jusque ce que tu arrives à la
> fameuse fenêtre.
>
> 3) Tu choisis à gauche la table avec la colonne de domaine
> Dans notre cas USER
>
> 4) Tu sélectionnes ensuite les colonnes en correspondance
> Dans notre cas UserID (USER) et UserID(MODERATEUR)
>
> Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
> pas intuitif du tout.
> J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
> mettre en correspondance.
> Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
> gauche et MODERATEUR à droite
> J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
>
> Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
> données.
> C'était vraiment pratique et intuitif
> Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
>
>
> --
> Avec mes meilleurs voeux 2006
> Med Bouchenafa
>
>
>
> "Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
> news: BDEEDF5F-AB0F-4D81-BB43-5F79FE8FEC9D@microsoft.com...
>
>>Bonjour Med,
>>Voici mon problème, il est simple :
>>j'ai une table dont un champ doit être une clé étrangère d'une autre
>>table,
>>ici une relation de 1 à n (je me place donc du côté n).
>>Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
>>cas
>>classique.
>>Considérons maintenant ce même exemple mais la table dispose d'une clé
>>primaire - le fait que la table est une clé primaire n'a aucun rapport
>>avec
>>la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
>>et
>>je crée encore la relation sans difficulté.
>>J'arrive au cas qui me soucis, imaginons cette fois que cette table est
>>une
>>clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
>>qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
>>table est une clé primaire.
>>Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
>>une
>>clé étrangère sur 2 champs !
>>Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
>>étrangère
>>???
>>
>>Pour étayer mon propos, voici un exemple qui correspond bien :
>>J'ai une table Users et une table Moderators ; Moderators comprend deux
>>champs clé primaires UserID et ForumID, car un utilisateur peut être
>>modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
>>est situé dans une autre table Users, je créé une relation 1 à n entre
>>Users
>>et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
>>choisir
>>dans Moderators est donc UserID.
>>Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
>>SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
>>de
>>un pour me satisfaire !).
>>Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
>>l'habitude, soit que je n'ai pas compris comment faire cela via la version
>>2005. Pouvez vous m'en dire plus svp ?
>>
>>Merci d'avance.
>>
>>
>>"Med Bouchenafa" a écrit :
>>
>>
>>>Tu as apparemment noté une différence entre 2000 et 2005.
>>>Je n'ai pas vraiment compris quelle était cette différence
>>>Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
>>>pouvais
>>>être plus explicte
>>>Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
>>>fonctionne
>>>plus...
>>>
>>>--
>>>Avec mes meilleurs voeux 2006
>>>Med Bouchenafa
>>>
>>>"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
>>>news: 93630733-F065-4204-8DAA-B1F934958FC3@microsoft.com...
>>>
>>>>Apparemment dans SQL Server 2005, on a plus le choix de la table source
>>>>pour
>>>>effectuer une relation, c'est forcément la table "étrangère". Donc pour
>>>>moi
>>>>Moderateurs.
>>>>Il est possible que je me trompe car novice sur SQLS 2005....
>>>>Je peux choisir n'importe quel champ dans cette table comme clé
>>>>étrangère,
>>>>mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
>>>>clé
>>>>primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
>>>>champs
>>>>de clé primaire et ceux de clé étrangère dans une même table ! Alors
>>>>pourquoi
>>>>je dois choisir 2 champs comme clé étrangère ???
>>>>Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
>>>>problème ?
>>>>Merci.
>>>
>>>
>>>
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
donc, med, mieux vaut donc tout faire en SQL et finalement appuyer sur le bouton
pour qu'il "pisse" d'un seul coup, tout le diagramme.
De toute façon c'est plus pro de faire en SQL qu'en graphique. Le mieux étant de
passer par un outil de modélisation.
A +
Med Bouchenafa a écrit:
> Je vois mieux maintenant ton problème.
> Je dois t'avouer que cette interface n'est pas intuitive du tout
> J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
> essayé de reproduire ton problème
> En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
> message d'erreur que toi.
>
> Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
> connais tout de même bien les diagrammes de bases de données à la 2000
> J'ai donc décidé de créer un diagramme de base de données et là quelle
> déception
> Les fonctionnalités des diagrammes de bases de données ont largement été
> réduites par rapport à 2000.
> Pourquoi? je ne sais pas trop.
> Dans les versions beta, je crois qu' il a été question, à un moment donné,
> de supprimer carrément ces diagrammes.
> Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
> plus que décevant.
>
>
> Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
> étrangère entre MODERATEUR(UserID) et USER(UserID)
> Je reviens sur le menu relashionship et là miracle la relation y est...
>
> Heureusement car la norme SQL est très claire sur le sujet
> Elle permet à une colA d'une tableA de référencer une colonne colB d'une
> tableB à condition qu'elle soit clef primaire ou en contrainte unique
> La norme n'impose aucune restriction sur colA de la tableA. C'est une
> contrainte de domaine.
> Pourquoi ce message d'erreur alors
>
> Je replonge dans la documentation et j'essaye de comprendre la nouvelle
> logique.
> Et je finis par comprendre.
> La regle est simple :
>
> 1) On commence toujours par choisir la table qui possède la colonne clef
> étrangère.
> C'est logique car c'est une colonne de cette table dont on cherche à
> restreindre le domaine.
> Dans notre cas, tu choisis la table MODERATEUR.
>
> 2) Tu affiches le menu relationships... jusque ce que tu arrives à la
> fameuse fenêtre.
>
> 3) Tu choisis à gauche la table avec la colonne de domaine
> Dans notre cas USER
>
> 4) Tu sélectionnes ensuite les colonnes en correspondance
> Dans notre cas UserID (USER) et UserID(MODERATEUR)
>
> Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
> pas intuitif du tout.
> J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
> mettre en correspondance.
> Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
> gauche et MODERATEUR à droite
> J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
>
> Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
> données.
> C'était vraiment pratique et intuitif
> Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
>
>
> --
> Avec mes meilleurs voeux 2006
> Med Bouchenafa
>
>
>
> "Etienne" a écrit dans le message de
> news:
>
>>Bonjour Med,
>>Voici mon problème, il est simple :
>>j'ai une table dont un champ doit être une clé étrangère d'une autre
>>table,
>>ici une relation de 1 à n (je me place donc du côté n).
>>Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
>>cas
>>classique.
>>Considérons maintenant ce même exemple mais la table dispose d'une clé
>>primaire - le fait que la table est une clé primaire n'a aucun rapport
>>avec
>>la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
>>et
>>je crée encore la relation sans difficulté.
>>J'arrive au cas qui me soucis, imaginons cette fois que cette table est
>>une
>>clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
>>qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
>>table est une clé primaire.
>>Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
>>une
>>clé étrangère sur 2 champs !
>>Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
>>étrangère
>>???
>>
>>Pour étayer mon propos, voici un exemple qui correspond bien :
>>J'ai une table Users et une table Moderators ; Moderators comprend deux
>>champs clé primaires UserID et ForumID, car un utilisateur peut être
>>modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
>>est situé dans une autre table Users, je créé une relation 1 à n entre
>>Users
>>et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
>>choisir
>>dans Moderators est donc UserID.
>>Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
>>SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
>>de
>>un pour me satisfaire !).
>>Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
>>l'habitude, soit que je n'ai pas compris comment faire cela via la version
>>2005. Pouvez vous m'en dire plus svp ?
>>
>>Merci d'avance.
>>
>>
>>"Med Bouchenafa" a écrit :
>>
>>
>>>Tu as apparemment noté une différence entre 2000 et 2005.
>>>Je n'ai pas vraiment compris quelle était cette différence
>>>Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
>>>pouvais
>>>être plus explicte
>>>Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
>>>fonctionne
>>>plus...
>>>
>>>--
>>>Avec mes meilleurs voeux 2006
>>>Med Bouchenafa
>>>
>>>"Etienne" a écrit dans le message de
>>>news:
>>>
>>>>Apparemment dans SQL Server 2005, on a plus le choix de la table source
>>>>pour
>>>>effectuer une relation, c'est forcément la table "étrangère". Donc pour
>>>>moi
>>>>Moderateurs.
>>>>Il est possible que je me trompe car novice sur SQLS 2005....
>>>>Je peux choisir n'importe quel champ dans cette table comme clé
>>>>étrangère,
>>>>mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
>>>>clé
>>>>primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
>>>>champs
>>>>de clé primaire et ceux de clé étrangère dans une même table ! Alors
>>>>pourquoi
>>>>je dois choisir 2 champs comme clé étrangère ???
>>>>Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
>>>>problème ?
>>>>Merci.
>>>
>>>
>>>
>
>
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merci beaucoup Med pour le temps passé à m'aider. Et grand merci !
Je dois avouer que je suis aussi dérouter par tes confirmations ; je trouve
ça fort de roquefort pour une nouvelle version !
Je partage pas trop ton avis Fred, les interfaces graphiques ont permis à
chacun de prendre facilement en main la conception d'application, dans autant
de domaines nécessaires aujourd'hui, sinon on revient à notre bon vieux DOS
ou à NotePad et on laisse tomber VS.NET. S'il faut être expert en SQL pour
créer relations, index et contraintes à la mano, pourquoi plus alors en SQL
qu'en C#, XML, Service Web... ?
Ah oui, ce n'est pas un forum de philo, je me laisse aller là...
"Fred BROUARD" a écrit :donc, med, mieux vaut donc tout faire en SQL et finalement appuyer sur le bouton
pour qu'il "pisse" d'un seul coup, tout le diagramme.
De toute façon c'est plus pro de faire en SQL qu'en graphique. Le mieux étant de
passer par un outil de modélisation.
A +
Med Bouchenafa a écrit:Je vois mieux maintenant ton problème.
Je dois t'avouer que cette interface n'est pas intuitive du tout
J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
essayé de reproduire ton problème
En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
message d'erreur que toi.
Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
connais tout de même bien les diagrammes de bases de données à la 2000
J'ai donc décidé de créer un diagramme de base de données et là quelle
déception
Les fonctionnalités des diagrammes de bases de données ont largement été
réduites par rapport à 2000.
Pourquoi? je ne sais pas trop.
Dans les versions beta, je crois qu' il a été question, à un moment donné,
de supprimer carrément ces diagrammes.
Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
plus que décevant.
Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
étrangère entre MODERATEUR(UserID) et USER(UserID)
Je reviens sur le menu relashionship et là miracle la relation y est...
Heureusement car la norme SQL est très claire sur le sujet
Elle permet à une colA d'une tableA de référencer une colonne colB d'une
tableB à condition qu'elle soit clef primaire ou en contrainte unique
La norme n'impose aucune restriction sur colA de la tableA. C'est une
contrainte de domaine.
Pourquoi ce message d'erreur alors
Je replonge dans la documentation et j'essaye de comprendre la nouvelle
logique.
Et je finis par comprendre.
La regle est simple :
1) On commence toujours par choisir la table qui possède la colonne clef
étrangère.
C'est logique car c'est une colonne de cette table dont on cherche à
restreindre le domaine.
Dans notre cas, tu choisis la table MODERATEUR.
2) Tu affiches le menu relationships... jusque ce que tu arrives à la
fameuse fenêtre.
3) Tu choisis à gauche la table avec la colonne de domaine
Dans notre cas USER
4) Tu sélectionnes ensuite les colonnes en correspondance
Dans notre cas UserID (USER) et UserID(MODERATEUR)
Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
pas intuitif du tout.
J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
mettre en correspondance.
Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
gauche et MODERATEUR à droite
J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
données.
C'était vraiment pratique et intuitif
Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé
étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merci beaucoup Med pour le temps passé à m'aider. Et grand merci !
Je dois avouer que je suis aussi dérouter par tes confirmations ; je trouve
ça fort de roquefort pour une nouvelle version !
Je partage pas trop ton avis Fred, les interfaces graphiques ont permis à
chacun de prendre facilement en main la conception d'application, dans autant
de domaines nécessaires aujourd'hui, sinon on revient à notre bon vieux DOS
ou à NotePad et on laisse tomber VS.NET. S'il faut être expert en SQL pour
créer relations, index et contraintes à la mano, pourquoi plus alors en SQL
qu'en C#, XML, Service Web... ?
Ah oui, ce n'est pas un forum de philo, je me laisse aller là...
"Fred BROUARD" a écrit :
donc, med, mieux vaut donc tout faire en SQL et finalement appuyer sur le bouton
pour qu'il "pisse" d'un seul coup, tout le diagramme.
De toute façon c'est plus pro de faire en SQL qu'en graphique. Le mieux étant de
passer par un outil de modélisation.
A +
Med Bouchenafa a écrit:
Je vois mieux maintenant ton problème.
Je dois t'avouer que cette interface n'est pas intuitive du tout
J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
essayé de reproduire ton problème
En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
message d'erreur que toi.
Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
connais tout de même bien les diagrammes de bases de données à la 2000
J'ai donc décidé de créer un diagramme de base de données et là quelle
déception
Les fonctionnalités des diagrammes de bases de données ont largement été
réduites par rapport à 2000.
Pourquoi? je ne sais pas trop.
Dans les versions beta, je crois qu' il a été question, à un moment donné,
de supprimer carrément ces diagrammes.
Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
plus que décevant.
Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
étrangère entre MODERATEUR(UserID) et USER(UserID)
Je reviens sur le menu relashionship et là miracle la relation y est...
Heureusement car la norme SQL est très claire sur le sujet
Elle permet à une colA d'une tableA de référencer une colonne colB d'une
tableB à condition qu'elle soit clef primaire ou en contrainte unique
La norme n'impose aucune restriction sur colA de la tableA. C'est une
contrainte de domaine.
Pourquoi ce message d'erreur alors
Je replonge dans la documentation et j'essaye de comprendre la nouvelle
logique.
Et je finis par comprendre.
La regle est simple :
1) On commence toujours par choisir la table qui possède la colonne clef
étrangère.
C'est logique car c'est une colonne de cette table dont on cherche à
restreindre le domaine.
Dans notre cas, tu choisis la table MODERATEUR.
2) Tu affiches le menu relationships... jusque ce que tu arrives à la
fameuse fenêtre.
3) Tu choisis à gauche la table avec la colonne de domaine
Dans notre cas USER
4) Tu sélectionnes ensuite les colonnes en correspondance
Dans notre cas UserID (USER) et UserID(MODERATEUR)
Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
pas intuitif du tout.
J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
mettre en correspondance.
Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
gauche et MODERATEUR à droite
J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
données.
C'était vraiment pratique et intuitif
Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
news: BDEEDF5F-AB0F-4D81-BB43-5F79FE8FEC9D@microsoft.com...
Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :
Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" <Etienne@discussions.microsoft.com> a écrit dans le message de
news: 93630733-F065-4204-8DAA-B1F934958FC3@microsoft.com...
Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé
étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merci beaucoup Med pour le temps passé à m'aider. Et grand merci !
Je dois avouer que je suis aussi dérouter par tes confirmations ; je trouve
ça fort de roquefort pour une nouvelle version !
Je partage pas trop ton avis Fred, les interfaces graphiques ont permis à
chacun de prendre facilement en main la conception d'application, dans autant
de domaines nécessaires aujourd'hui, sinon on revient à notre bon vieux DOS
ou à NotePad et on laisse tomber VS.NET. S'il faut être expert en SQL pour
créer relations, index et contraintes à la mano, pourquoi plus alors en SQL
qu'en C#, XML, Service Web... ?
Ah oui, ce n'est pas un forum de philo, je me laisse aller là...
"Fred BROUARD" a écrit :donc, med, mieux vaut donc tout faire en SQL et finalement appuyer sur le bouton
pour qu'il "pisse" d'un seul coup, tout le diagramme.
De toute façon c'est plus pro de faire en SQL qu'en graphique. Le mieux étant de
passer par un outil de modélisation.
A +
Med Bouchenafa a écrit:Je vois mieux maintenant ton problème.
Je dois t'avouer que cette interface n'est pas intuitive du tout
J'ai créé deux tables USER(UserID) et MODERATEUR(UserID, ForumID) et j'ai
essayé de reproduire ton problème
En faisant les choses intuivement, cela n'a pas raté, j'ai eu le même
message d'erreur que toi.
Il est vrai que je suis pas trop habitué à ces interfaces graphiques mais je
connais tout de même bien les diagrammes de bases de données à la 2000
J'ai donc décidé de créer un diagramme de base de données et là quelle
déception
Les fonctionnalités des diagrammes de bases de données ont largement été
réduites par rapport à 2000.
Pourquoi? je ne sais pas trop.
Dans les versions beta, je crois qu' il a été question, à un moment donné,
de supprimer carrément ces diagrammes.
Il est possible qu'ils aient été rajoutés à la va-vite...avec un résultat
plus que décevant.
Quoi qu'il en soit, j'arrive très intuivement à créer une relation de clef
étrangère entre MODERATEUR(UserID) et USER(UserID)
Je reviens sur le menu relashionship et là miracle la relation y est...
Heureusement car la norme SQL est très claire sur le sujet
Elle permet à une colA d'une tableA de référencer une colonne colB d'une
tableB à condition qu'elle soit clef primaire ou en contrainte unique
La norme n'impose aucune restriction sur colA de la tableA. C'est une
contrainte de domaine.
Pourquoi ce message d'erreur alors
Je replonge dans la documentation et j'essaye de comprendre la nouvelle
logique.
Et je finis par comprendre.
La regle est simple :
1) On commence toujours par choisir la table qui possède la colonne clef
étrangère.
C'est logique car c'est une colonne de cette table dont on cherche à
restreindre le domaine.
Dans notre cas, tu choisis la table MODERATEUR.
2) Tu affiches le menu relationships... jusque ce que tu arrives à la
fameuse fenêtre.
3) Tu choisis à gauche la table avec la colonne de domaine
Dans notre cas USER
4) Tu sélectionnes ensuite les colonnes en correspondance
Dans notre cas UserID (USER) et UserID(MODERATEUR)
Maintenant avec le recul cela parait logique mais il est vrai que ce n'est
pas intuitif du tout.
J'étais habitué, tout comme toi peut-etre, à choisir deux tables et à les
mettre en correspondance.
Une deuxième chose qui m'a peut-etre dérouté est le fait que USER soit à
gauche et MODERATEUR à droite
J'étais plus habitué au contraire. Mais bon, on finira pas s'y faire...
Par contre, je regrette vraiment l'interface 2000 des diagrammes de bases de
données.
C'était vraiment pratique et intuitif
Cette nouvelle interface n'opporte vraiment rien de plus tout au contraire
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Bonjour Med,
Voici mon problème, il est simple :
j'ai une table dont un champ doit être une clé étrangère d'une autre
table,
ici une relation de 1 à n (je me place donc du côté n).
Dans SQLS 2005, je crée ma relation sur ce champ sans problème, c'est le
cas
classique.
Considérons maintenant ce même exemple mais la table dispose d'une clé
primaire - le fait que la table est une clé primaire n'a aucun rapport
avec
la clé étrangère à créer, j'en suis conscient ; cela reste archi classique
et
je crée encore la relation sans difficulté.
J'arrive au cas qui me soucis, imaginons cette fois que cette table est
une
clé primaire "multiple", ici basée sur deux champs - je reconnais toujours
qu'il n'y aucun rapport entre ma clé étrangère à créer et le fait que ma
table est une clé primaire.
Et bien, lorsque je créé la realtion, sql server 2005 m'impose de créer
une
clé étrangère sur 2 champs !
Je ne vois pas pourquoi, quel impact à ma clé primaire sur une clé
étrangère
???
Pour étayer mon propos, voici un exemple qui correspond bien :
J'ai une table Users et une table Moderators ; Moderators comprend deux
champs clé primaires UserID et ForumID, car un utilisateur peut être
modérateur de plusieurs Forum. Sachant que le nom du modérateur à afficher
est situé dans une autre table Users, je créé une relation 1 à n entre
Users
et Moderators : Users.UserID = Moderators.UserID ; ma clé étrangère a
choisir
dans Moderators est donc UserID.
Si j'effectue cette manipulation, lorsque je créé ma relation sur UserID,
SQL Sever 2005 m'impose le choix de 2 champs sur ma clé étrangère (au lieu
de
un pour me satisfaire !).
Il est évident que je me plante soit dans mon raisonnement, bien que j'ai
l'habitude, soit que je n'ai pas compris comment faire cela via la version
2005. Pouvez vous m'en dire plus svp ?
Merci d'avance.
"Med Bouchenafa" a écrit :Tu as apparemment noté une différence entre 2000 et 2005.
Je n'ai pas vraiment compris quelle était cette différence
Je pourrais peut-être aider, ou du moins comprendre moi-même, si tu
pouvais
être plus explicte
Avec un petit exemple montrant ce qui fonctionnait et ce qui ne
fonctionne
plus...
--
Avec mes meilleurs voeux 2006
Med Bouchenafa
"Etienne" a écrit dans le message de
news:Apparemment dans SQL Server 2005, on a plus le choix de la table source
pour
effectuer une relation, c'est forcément la table "étrangère". Donc pour
moi
Moderateurs.
Il est possible que je me trompe car novice sur SQLS 2005....
Je peux choisir n'importe quel champ dans cette table comme clé
étrangère,
mais je suis obligé d'en mentionner 2. Pourquoi 2 ? La cause est que la
clé
primaire est créée sur 2 champs, pourtant y a aucun rapport entre les
champs
de clé primaire et ceux de clé étrangère dans une même table ! Alors
pourquoi
je dois choisir 2 champs comme clé étrangère ???
Avez-vous testé mon exemple sur SQL Server 2005 ? Comprenez vous mon
problème ?
Merci.
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************