Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Duda con una relación (http://www.forosdelweb.com/f87/duda-con-relacion-454363/)

kire94 05/01/2007 11:40

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

http://fotosenergizer.com/images/tablas.jpg

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.

daniel00 05/01/2007 12:06

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!!

kire94 05/01/2007 12:14

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

daniel00 05/01/2007 12:43

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!!

kire94 05/01/2007 13:12

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 zona horaria es GMT -6. Ahora son las 22:24.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.