Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Duda con una relación

Estas en el tema de Duda con una relación en el foro de SQL Server en Foros del Web. Saludos foro: Tengo una duda en una relación, resulta que tengo una tabla que se llama USUARIOS y otra que se llama CONTACTOS, en la ...
  #1 (permalink)  
Antiguo 05/01/2007, 11:40
 
Fecha de Ingreso: enero-2006
Mensajes: 169
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Duda con una relación

Saludos foro:

Tengo una duda en una relación, resulta que tengo una tabla que se llama USUARIOS y otra que se llama CONTACTOS, en la tabla USUARIOS estan los usuarios que se registran en un sitio y en la Tabla CONTACTOS estan los contactos de los usuarios. Abajo pongo una imagen de como tengo mis tablas



Ok, el problema es que en la tabla CONTACTOS no puedo poner un campo como llave ya que el campo NICK_USU se puede repetir y el campo NICk_CONTACTO también se puede repetir ya que un contacto puede ser contacto (valga la redundancia) de dos usuarios distitntos.

Y al querer hacer la relacion (en SQL Server 2005) me marca el sig. error:

"The columns in table "USUARIOS" do not match an existing primary key or UNIQUE constraint"

De antemano muchas gracias.
__________________
"La adulación es una moneda que empobrece al que la recibe"
  #2 (permalink)  
Antiguo 05/01/2007, 12:06
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: Duda con una relación

Kire.

Puedes hacerlo de dos maneras:

a)
A la tabla Contactos le agregas un campo más llamado ID (y será la llave primaria)y creas un constraint UNIQUE formados por los campos NICK_USU y NICK_CONTACTO, esto último con la finalidad de evitar que existan combinaciones repetidas.

b) Sólo crear un constraint UNIQUE formados por los campos NICK_USU y NICK_CONTACTO, esto con la finalidad de evitar que existan combinaciones repetidas.

Los constraints UNIQUE, son como PK y permiten crear constraints del tipo Foreign Key.

Yo me inclinaria más por la primera (a) ya que la tabla donde esta el FK solo se incluye el campo ID ( el nuevo), en cambio con la opción b para crear un Fk necesito incluir los dos campos para poder crear la relación. Pero esto depende más de todo el entorno.

Espero haber sido claro.

Saludos y suerte!!
  #3 (permalink)  
Antiguo 05/01/2007, 12:14
 
Fecha de Ingreso: enero-2006
Mensajes: 169
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Duda con una relación

Muchas gracias por la ayuda daniel00, pero apenas me inicio a utilizar en el SQL SERVER 2005 y no se como realizar la constraint, me podrias explicar como se realiza
__________________
"La adulación es una moneda que empobrece al que la recibe"
  #4 (permalink)  
Antiguo 05/01/2007, 12:43
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: Duda con una relación

Kire.

El contraint al que me refiero es crear un indice del tipo unique, y lo puedes crear de la siguiente manera:
Código:
CREATE UNIQUE INDEX IX_CONTACTOS
   ON CONTACTOS (NICK_USU, NICK CONTACTO)
-- La Sintaxis es:
CREATE UNIQUE INDEX <Nombre Indice>   ON <Nombre Tu Tabla> (<Lista de campos>)
Otro Tipo de constraint al que hago hago referencia es el Foreign Key y que tu mismo mencionas:
Cita:
Y al querer hacer la relacion (en SQL Server 2005) ...
Otro Tipo de constraint es la Primary Key, y según veo no tienes problemas, ya que lo estas usando.

Hay muchos tipos de constraints es un tema muy extenso, y no es exclusivo de SQL Server 2005, se usa en las versiones anteriores de SQL Server. Además de otros Administradores de Base de Datos Oracle, MySQL, etc, etc.

Seguramente en la instalación de tu SQL Server hay mucha ayuda acerca de esto.

Saludos y suerte!!
  #5 (permalink)  
Antiguo 05/01/2007, 13:12
 
Fecha de Ingreso: enero-2006
Mensajes: 169
Antigüedad: 18 años, 3 meses
Puntos: 0
Sonrisa Re: Duda con una relación

Muchas gracias daniel00, me referia a como crear el index tipo unique en el ambiente garcfico (Microsoft SQL Server Management Studio) ya que a penas lo implemente y no estoy muy familiarizado, es decir que mas o menos me guiaras en donde lo puedo crear mediante ambiente grafico o como lo puedo crear a nivel de código; ya que no encuentro por donde.
__________________
"La adulación es una moneda que empobrece al que la recibe"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:18.