none
Implémentation d'une relation plusieurs à plusieurs. RRS feed

  • Question

  • Bonjour,

     

    Pour le besoin d'une petite application, j'ai besoin d'implémenter une relation 1;n/0;n.

    Seulement je ne trouve aucune source d'informations pour m'expliquer comment appliquer cette logique dans SQL server 2008 express.

    Est ce que quelqu'un peut m'expliquer comment faire ?

    Merci

    lundi 2 août 2010 12:01

Réponses

  •  

    Bonjour,

     

    Dans SQL Server Management Studio, si vous selectez les deux colonnes, vous pouvez les marquer comme ‘foreign key’. Et voici le script sql genere pour une telle table :

     

    CREATE TABLE [dbo].[T3](

             [T3pk1] [nchar](10) NOT NULL,

             [T3pk2] [nchar](10) NOT NULL,

     CONSTRAINT [PK_T3] PRIMARY KEY CLUSTERED

    (

             [T3pk1] ASC,

             [T3pk2] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

     

    GO

     

    ALTER TABLE [dbo].[T3]  WITH CHECK ADD  CONSTRAINT [FK_T3_T1] FOREIGN KEY([T3pk1])

    REFERENCES [dbo].[T1] ([c1])

    GO

     

    ALTER TABLE [dbo].[T3] CHECK CONSTRAINT [FK_T3_T1]

    GO

     

    ALTER TABLE [dbo].[T3]  WITH CHECK ADD  CONSTRAINT [FK_T3_T2] FOREIGN KEY([T3pk2])

    REFERENCES [dbo].[T2] ([pk1])

    GO

     

    ALTER TABLE [dbo].[T3] CHECK CONSTRAINT [FK_T3_T2]

    GO

     

     

     

    Cordialement,

    Alex

     

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

    mardi 3 août 2010 09:51

Toutes les réponses

  • Bonjour,

    Le problème étant ? Une relation plusieurs à plusieurs se traduit par la présence d'une table qui va comporter les pk des deux tables à mettre en relation : voir par exemple http://sqlpro.developpez.com/cours/modelisation/merise/?page=passage#L5.1.3.

    Si ce n'est pas un problème de modélisation merci d'être plus explicite au sujet du problème rencontré.

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    lundi 2 août 2010 14:33
  • Non effectivement il ne s'agit pas d'un problème de modélisation.

    Il s'agit de créer la table dans sql server.

    J'ai créé ma table comme n'importe quel table via MSSMS.

    Par contre, comme il y a présence de deux PK je n'arrive pas à les créé. Je ne peut mettre qu'une seule. Comment faire pour créer mes deux PK  dans ma table ?

     

    lundi 2 août 2010 14:45
  • Plus précisemment, cette table accueillera les *valeurs* des pk, dans cette table ce ne sont pas des pk mais des fk (la pk est par exemple la combinaison des deux).

    Cela pourrait donner (non testé) :

    CREATE TABLE MaTable(A_fk INT  NOT NULL,B_fk INT NOT NULL, CONSTRAINT MaTable_pk PRIMARY KEY (A_fk,B_fk))

    Je vous laisse ajouter les contraintes FOREIGN KEY...

    En cas de problème le plus simple pour tout le monde est de donner le message d'erreur exact que l'on rencontre ainsi que la ligne de code qui provoque cette erreur (pour l'instant je crois comprendre que vous essayez de déclarer deux contraintes PK dans une même table ???)...

     

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    lundi 2 août 2010 15:29
  •  

    Bonjour,

     

    Dans SQL Server Management Studio, si vous selectez les deux colonnes, vous pouvez les marquer comme ‘foreign key’. Et voici le script sql genere pour une telle table :

     

    CREATE TABLE [dbo].[T3](

             [T3pk1] [nchar](10) NOT NULL,

             [T3pk2] [nchar](10) NOT NULL,

     CONSTRAINT [PK_T3] PRIMARY KEY CLUSTERED

    (

             [T3pk1] ASC,

             [T3pk2] ASC

    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

    ) ON [PRIMARY]

     

    GO

     

    ALTER TABLE [dbo].[T3]  WITH CHECK ADD  CONSTRAINT [FK_T3_T1] FOREIGN KEY([T3pk1])

    REFERENCES [dbo].[T1] ([c1])

    GO

     

    ALTER TABLE [dbo].[T3] CHECK CONSTRAINT [FK_T3_T1]

    GO

     

    ALTER TABLE [dbo].[T3]  WITH CHECK ADD  CONSTRAINT [FK_T3_T2] FOREIGN KEY([T3pk2])

    REFERENCES [dbo].[T2] ([pk1])

    GO

     

    ALTER TABLE [dbo].[T3] CHECK CONSTRAINT [FK_T3_T2]

    GO

     

     

     

    Cordialement,

    Alex

     

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

    mardi 3 août 2010 09:51
  • Bonjour,

     

    Xglobe, est-ce que ce dernier exemple vous a été utile ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    jeudi 5 août 2010 09:45