relacion sql server

07/03/2007 - 13:57 por zum | Informe spam
Hola, como no encuentro algo sobre esto les molesto para consultarlos
sobre la creación de relacion entre tablas en SQL Server 2005.
Resulta que tengo (entre otras) la tabla CLIENTES y la Tabla CIUDADES
en CLIENTES tengo (además de otros)
ClienteId
Nombre
Dirección
CiudadId

y en CIUDADES
CiudadId
Nombre
CodigoPostal

en el DIAGRAMA cuando queiro hacer una relacion con CLIENTES como
tabla primaria y CIUDADES como clave-extranjera, no me lo permite,
simpre pone CIUDADES como principal.

Tienen idea de en que estoy fallando, o que me falta?

Si no he sido claro o necesitan mas información, por favor, se las
envio.

Muchisimas gracias por cualquer ayuda que me puedan prestar.

zum

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
07/03/2007 - 14:50 | Informe spam
Puedes crear la relacion tambien mediante el codigo con "alter table add
foreign key."
Sugiero que verifiques que tu modelo es valido

Si una ciudad tiene una relacion de 0..1 a N con clientes Ciudad debe tener
la PK y cliente la columna ciudad que es FK ya sea identificativa (parte de
la Pk de cliente) o no .

Sino es al reves



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"zum" wrote in message
news:
Hola, como no encuentro algo sobre esto les molesto para consultarlos
sobre la creación de relacion entre tablas en SQL Server 2005.
Resulta que tengo (entre otras) la tabla CLIENTES y la Tabla CIUDADES
en CLIENTES tengo (además de otros)
ClienteId
Nombre
Dirección
CiudadId

y en CIUDADES
CiudadId
Nombre
CodigoPostal

en el DIAGRAMA cuando queiro hacer una relacion con CLIENTES como
tabla primaria y CIUDADES como clave-extranjera, no me lo permite,
simpre pone CIUDADES como principal.

Tienen idea de en que estoy fallando, o que me falta?

Si no he sido claro o necesitan mas información, por favor, se las
envio.

Muchisimas gracias por cualquer ayuda que me puedan prestar.

zum
Respuesta Responder a este mensaje
#2 Alejandro Mesa
07/03/2007 - 15:23 | Informe spam
zum,

En realidad la tabla [CIUDADES] es la tabla padre en la relación, puesto que
la tabla [CLIENTES] hace referencia a ella y no lo contrario.


AMB

"zum" wrote:

Hola, como no encuentro algo sobre esto les molesto para consultarlos
sobre la creación de relacion entre tablas en SQL Server 2005.
Resulta que tengo (entre otras) la tabla CLIENTES y la Tabla CIUDADES
en CLIENTES tengo (además de otros)
ClienteId
Nombre
Dirección
CiudadId

y en CIUDADES
CiudadId
Nombre
CodigoPostal

en el DIAGRAMA cuando queiro hacer una relacion con CLIENTES como
tabla primaria y CIUDADES como clave-extranjera, no me lo permite,
simpre pone CIUDADES como principal.

Tienen idea de en que estoy fallando, o que me falta?

Si no he sido claro o necesitan mas información, por favor, se las
envio.

Muchisimas gracias por cualquer ayuda que me puedan prestar.

zum


Respuesta Responder a este mensaje
#3 Anonimo
07/03/2007 - 19:01 | Informe spam
Gracias por sus respuestas!

Pense que lo tenia claro, pero veo que no.
Si en una tabla de clientes, cada cliente tiene una clave de ciudad, que
hace referencia a una ciudad dentro de otra tabla,
es una relacion de 1 a 1 correcto? Pues cada cliente solo hace referéncia a
una ciudad.
Entretanto si tengo una tabla de trabajos, a la cual la misma tabla clientes
hace tambien referencia, es una relacion de 1 a varios, verdad?
Pues para cada clientes tengo inumeros trabajos (o ninguno).

Un tema a parte: que és PK y FK ?

Y otro: como puedo ver si mi modelo es valido ?

Gracias de nuevo

y Saludos
zum

"Jose Mariano Alvarez"
Si una ciudad tiene una relacion de 0..1 a N con clientes Ciudad debe
tener la PK y cliente la columna ciudad que es FK ya sea identificativa
(parte de la Pk de cliente) o no .
Respuesta Responder a este mensaje
#4 Anonimo
07/03/2007 - 19:29 | Informe spam
Solo otra información que no habia pasado,
en el Digrama del SQL si me posiciono en la tabla Ciudades
me permite ir agregando una relacion como quiero
pero al darle aceptar para que me la crie, me da el siguiente error:

"Las columnas de la tabla 'Clientes' no coinciden con las restricciones
PRIMARY KEY o UNIQUE existentes"

Y de aí ya no sigo en frente.
Por otro lado en el visual basic dentro del table adapter me permite hacer
esto, solo que lo tomaria de forma automatica si lo hubiese hecho en la DB,
y otro problema es que tendria que hacer las relaciones cada vez que crio un
TableAdapter, la verdad es que es muy facil cometer un error al construirlo
y dejar pasar algo, ya en la base, no tanto, pues o lo haces bien o no te
funciona.

Bueno, sigo investigando y aguardando sus comentarios, a ver si me pueden
ayudar en este dilema.

Gracias nuevamente, y Saludos.
zum
Respuesta Responder a este mensaje
#5 Alejandro Mesa
07/03/2007 - 20:50 | Informe spam
,

Creo que no me explique bien. En esa relacion, la tabla padre es [CIUDADES]
y la tabla hijo es [CLIENTES]. Para crear una restriccion de clave foranea
(relacion), debe existir en la tabla padre una restriccion de clave primaria
o un indice unico o restriccion de unicidad por las columnas que participan
en la relacion. Por eso no puedes refrenciar en una restriccion de clave
foranea a la tabla [CLIENTES] desde la tabla [CIUDADES], porque en la tabla
[CLIENTES] no existe tal condicion. En cambio, en la tabla [CIUDADES] existe
una restriccion de clave primaria por [ciudadId] y por lo tanto se puede
refrenciar desde la tabla [CLIENTES] mediante una restriccion de clave
foranea. En tu diagrama, el simbolo de la llave en la relacion debe estar del
lado de la tabla [CIUDADES].

create table dbo.ciudades (
ciudadId int not null primary key,
nombre varchar(50) not null,
...
)

create table dbo.clientes (
clienteId int not null primary key,
ciudadId int not null,
...
constraint fk_clientes_ciudades foreign key (ciudadId) refrences
dbo.cliudades(ciudadId)
)


AMB


"" wrote:

Solo otra información que no habia pasado,
en el Digrama del SQL si me posiciono en la tabla Ciudades
me permite ir agregando una relacion como quiero
pero al darle aceptar para que me la crie, me da el siguiente error:

"Las columnas de la tabla 'Clientes' no coinciden con las restricciones
PRIMARY KEY o UNIQUE existentes"

Y de aí ya no sigo en frente.
Por otro lado en el visual basic dentro del table adapter me permite hacer
esto, solo que lo tomaria de forma automatica si lo hubiese hecho en la DB,
y otro problema es que tendria que hacer las relaciones cada vez que crio un
TableAdapter, la verdad es que es muy facil cometer un error al construirlo
y dejar pasar algo, ya en la base, no tanto, pues o lo haces bien o no te
funciona.

Bueno, sigo investigando y aguardando sus comentarios, a ver si me pueden
ayudar en este dilema.

Gracias nuevamente, y Saludos.
zum



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida