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

Relación "uno a muchos"

Estas en el tema de Relación "uno a muchos" en el foro de SQL Server en Foros del Web. Hola a todos. Estoy empezando en esto de SQL empapandome un PDF (SQL Server for Dummies). Nada, poca cosa, no pasa de 450 páginas. XDD ...
  #1 (permalink)  
Antiguo 26/06/2006, 05:13
Avatar de Osirapis  
Fecha de Ingreso: abril-2006
Ubicación: Granada - Sevilla. (la Tierra)
Mensajes: 89
Antigüedad: 18 años
Puntos: 0
Relación "uno a muchos"

Hola a todos.

Estoy empezando en esto de SQL empapandome un PDF (SQL Server for Dummies). Nada, poca cosa, no pasa de 450 páginas. XDD

A lo que voy, tengo dos tablas (Poblaciones y Provincias), cada una con su clave primaria (idProvincia e idPoblacion). Lo que quiero es relacionar el codProvincia (este es el "muchos") de Poblaciones, con el correspondiente codProvincia de Provincias (este es el "uno").

La única manera en la que lo he podido hacer es declarando los dos "codProvincia" como clave primaria en ambas tablas, si no lo hago así, me dice el SQL Server que "Las columnas en la tabla 'Poblaciones' no se corresponden con una clave primaria existente o restricción ÚNICA".

La pregunta: ¿¡¡CÓMO ·$&#~¬ LO HAGO!!?. Empiezo a estar un poco desesperado.


Ah! gracias por adelantado.
__________________
Solo hay 10 tipos de personas: los que saben binario y los que no. ; )P
  #2 (permalink)  
Antiguo 26/06/2006, 11:28
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Así es, para hacer un FK necesitas que exista primero un PK sobre una de las columnas para poderse generar.

Si ya tienes un codProvincia y codPoblacion que son únicos no veo para que puedas necesitar un IdProvincia e IdPoblacion.

Simplemente usa los cod% como llaves primarias y olvida los Id%... O en todo caso, haz la FK pero entre los Id% y deja los cod% como simples letreritos.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 27/06/2006, 00:19
Avatar de Osirapis  
Fecha de Ingreso: abril-2006
Ubicación: Granada - Sevilla. (la Tierra)
Mensajes: 89
Antigüedad: 18 años
Puntos: 0
Poblaciones
-----------
idPoblacion codProvincia Poblacion

1 18 GRANADA
2 18 ARMILLA
3 18 PINOS PUENTE
4 41 DOS HERMANAS
5 41 SEVILLA
... ... ...

Provincias
---------
idProvincia codProvincia Provincia
1 18 GRANADA
2 29 MÁLAGA
3 41 SEVILLA
... ... ...


En 'Provincias' el idProvincia se genera automáticamente, y el codProvincia lo escribo yo (así lo puedo modificar cuando quiera).
En 'Poblaciones' no puedo utilizar el codProvincia como PK ya que tiene duplicados. Lo utilizo para resolver el nombre de la provincia a la que pertenece la población. Por eso necesito hacer una relación 'uno a muchos'.

Gracias de nuevo.


Osis.
__________________
Solo hay 10 tipos de personas: los que saben binario y los que no. ; )P
  #4 (permalink)  
Antiguo 27/06/2006, 09:14
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola Osis:
Te recomendaria una solución. Tienes tus dos tablas: provincias y población. Ahora, creo que es innecesario el campo id_provincia, dices que se genera automáticamente, veo que muchos usan ese tipo de identificador, pero yo usaria solo codpro como llave primaria:

Cita:
Provincia
---------
codpro char(3), -- seria llave primaria, ya que no se repite
despro varchar(25)
La tabla población harias una llave primaria compuesta, con el codigo de provincia primero, y después el código de la población. Los dos campos harian de la llave primaria que sea única:

Cita:
Poblacion
----------
codpro char(3),
codpob char(3),
despob varchar(25)
La llave primaria seria: PRIMARY KEY (codpro,codpob).
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #5 (permalink)  
Antiguo 27/06/2006, 14:23
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Cita:
En 'Poblaciones' no puedo utilizar el codProvincia como PK ya que tiene duplicados. Lo utilizo para resolver el nombre de la provincia a la que pertenece la población. Por eso necesito hacer una relación 'uno a muchos'.
Exactamente por eso es que Poblaciones.codProvincia es FK de Provincias.codProvincia (que este es o sería el PK).

Repito el consejo:

Simplemente usa los cod% como llaves primarias y olvida los Id%... O en todo caso, haz la FK pero entre los Id% y deja los cod% como simples letreritos.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #6 (permalink)  
Antiguo 28/06/2006, 00:58
Avatar de Osirapis  
Fecha de Ingreso: abril-2006
Ubicación: Granada - Sevilla. (la Tierra)
Mensajes: 89
Antigüedad: 18 años
Puntos: 0
De acuerdo Muchísimas gracias

Con todos vuestros consejos ya tengo varios caminos por los que seguir.

Gracias de nuevo.
__________________
Solo hay 10 tipos de personas: los que saben binario y los que no. ; )P
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 01:02.