Question

Je veux faire une table qui a simplement deux colonnes entières pour servir de table de correspondance entre deux ensembles de données différentes et je souhaite mettre les contraintes correctes sur elle.

Je mets d'abord les deux colonnes comme clé primaire composé, mais alors réalisé que représente un nombre pour beaucoup, ne gardant dupliquer plusieurs à plusieurs applications de se produire.

Comment puis-je préciser que je veux les deux colonnes à des entiers uniques dans toutes les lignes? J'utilise MS SQL, mais je suppose que cela est une question de conception de base de données générale.

Était-ce utile?

La solution

Créer une clé primaire sur une colonne et une autre contrainte unique séparée ou un index unique, de l'autre.

CREATE TABLE [dbo].[test](
    [x] [int] NOT NULL,
    [y] [int] NOT NULL,
     CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED 
     ( [x] ASC) 
     WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, 
         IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, 
         ALLOW_PAGE_LOCKS  = ON) 
     ON [PRIMARY]) 
 ON [PRIMARY]

CREATE UNIQUE NONCLUSTERED INDEX [IX_test] ON [dbo].[test] 
  ([y] ASC) 
   WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, 
         SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, 
         DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, 
         ALLOW_PAGE_LOCKS  = ON)  
 ON [PRIMARY]

Autres conseils

Création d'une autre table est fait pour créer une relation plusieurs à plusieurs, vous ne devriez probablement pas avoir créé (à moins que je manque quelque chose).

Un à un obligatoire est le même que les deux tables comme une seule table. Le seul acceptable à l'un est en option, et il vous suffit de relier les deux tables, aucune troisième table nécessaire.

Utilisez une contrainte de colonne unique sur chaque colonne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top