Pregunta

Quiero hacer una tabla que sólo tiene dos columnas de tipo entero para servir como una tabla de correspondencia entre dos conjuntos de datos diferentes y me gustaría poner las limitaciones correctas en él.

I fijado inicialmente las dos columnas como clave primaria compuesto, pero se dio cuenta que representa un muchos a muchos, sólo el mantenimiento de duplicar muchos a muchos asignaciones de que se produzcan.

¿Cómo se especifica Quiero ambas columnas a ser enteros únicos en todas las filas? Estoy usando MS SQL, pero supongo que se trata de una cuestión general de diseño de base de datos.

¿Fue útil?

Solución

Crear una clave principal en una columna y otra separada restricción única o un índice único, por el otro.

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]

Otros consejos

La creación de otra mesa se hace para crear una relación de muchos a muchos, por lo que probablemente no debería haber creado él (a menos que me falta algo).

Uno a uno obligatoria es lo mismo que con las dos tablas como una sola tabla. El único aceptable para uno es opcional, y usted simplemente tiene que relacionar las dos tablas, hay una tercera tabla es necesario.

Utilice una restricción de campo UNIQUE en cada columna.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top