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

Relación 1:1

Estas en el tema de Relación 1:1 en el foro de Bases de Datos General en Foros del Web. Hola, tengo una duda sobre las relaciones 1:1. Si yo tengo una entidad relacionada 1:1 con una agregación de entidades (2 entidades relacionadas mediante relación ...
  #1 (permalink)  
Antiguo 01/06/2005, 09:41
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
Relación 1:1

Hola, tengo una duda sobre las relaciones 1:1.
Si yo tengo una entidad relacionada 1:1 con una agregación de entidades (2 entidades relacionadas mediante relación N:M). Qué claves tendrían las entidades q relaciono? y más concretamente, qué clave ajena tendría la entidad que relaciono con la agregación?

Gracias.
  #2 (permalink)  
Antiguo 01/06/2005, 12:55
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola!

Creo que no entendi bien, pero quizas sea algo asi:

* tblCategorias
- catID

* tblSubCategorias
- scatID
- catID

Ahi es una relacion del tipo 1:N, aun asi si quieres una clave unica en tblSubCategorias, seria como

tblSubCategorias
ID
scatID
catID

Pero no se si te entendi bien.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #3 (permalink)  
Antiguo 01/06/2005, 14:05
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
Hola, gracias pero me refería a relaciones 1:1, no 1:N.
En una relación 1:1 que tengo q poner a cada entidad como clave ajena,
clave principal de la otra tabla?. Y en mi caso es q tengo una entidad relacionada con una agregación (2 entidades relacionadas por N:M) por medio d una relación 1:1. Entonces no sé que clave ajena tengo q poner a la entidad.

Ejemplo:

Alumno(id alumno)
Curso(id curso)

Alumno y Curso tienen una relación N:M q da lugar a AlumnoCurso
AlumnoCurso(idlumno, idcurso)

Si yo tengo una entidad DetalleFactura relacionada con la agregación de las 3 anteriores por medio de una relación 1:1, qué clave ajena le pongo a esta entidad?

Espero haberme explicado un poco mejor.

Saludos
  #4 (permalink)  
Antiguo 01/06/2005, 14:17
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
que tal si agregas un idAlumCur a AlumnoCurso y usas esa clave?
  #5 (permalink)  
Antiguo 01/06/2005, 14:29
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
Podría ser pero como se supone que las entidades que nacen de relaciones
N:M tienen que tener como clave primaria la unión de las otras 2...
Sería correcto poner como clave ajena(idalumno, idcurso)?
  #6 (permalink)  
Antiguo 01/06/2005, 14:34
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
pues yo supongo que si, lo que puse es porque _a mi_ no me gusta mucho trabajar con claves compuestas, prefiero claves de un solo campo, se me hace mas sencillo, y pues a fin de cuentas es lo mismo, si le agregas el idAlumCur haria referencia al (idalumno, idcurso)
  #7 (permalink)  
Antiguo 01/06/2005, 14:56
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
ok, gracias, ahora lo pongo con más seguridad.
  #8 (permalink)  
Antiguo 01/06/2005, 15:04
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola

Aun me revolvi un poco, pero creo que la estructura que buscas es esta:

Alumnos
- AlumnoID
- [Toda la info del Alumno]

Cursos
- CursoID
- [Toda la info del curso]

Aqui, para que no tengas muchos problemas y se vea todo mas sencillo, puedes crear una tabla del tipo "Mapa", esto quiere decir que en otra tabla tendras las relaciones entre Alumnos y Cursos sin afectar la estructura de ninguna de tus dos tablas, algo como:

AlumnosCursos
- AlumnoID
- CursoID

A esta tabla le estableces un INDEX CLUSTERED UNIQUE Sobre (AlumnoID, CursoID) para asegurar la integridad.

Entonces tus registros son relamente relacionables, pero a la vez totalmente independientes, esto te ofrece mucha flexibilidad, y para este caso no creo que tengas que usar llaves foraneas especificas, etc para relacionarlos.

Espero haberte ayudado, y para facturas creo que es lo mismo, puedes hacer algo como:

AlumnosCursos
- AlumnoCursoID
- AlumnoID
- CursoID

AlumnosCursosFacturas
- FacturaID
- AlumnoCursoID
- [Info Factura]

Espero haberte ayudado...

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #9 (permalink)  
Antiguo 01/06/2005, 15:42
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
hehe es lo mismo que yo le dije solo que mejor explicado, yo no soy muy bueno para explicar u.u
  #10 (permalink)  
Antiguo 01/06/2005, 15:58
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Ok.

Pero a ti tampoco te entendi, ni a ella, tal vez si sea eso lo que estaba buscando

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #11 (permalink)  
Antiguo 02/06/2005, 02:01
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
jejeje, sí era eso. Va, tan mal no m explicaría cuándo me respondiste lo q quiero :P. Gracias a los 2.
  #12 (permalink)  
Antiguo 02/06/2005, 02:58
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
Una duda, eso d INDEX CLUSTERED UNIQUE cómo se establece mediante el diseño?. Mediante el código sería algo así como
constraint indicealumnocurso primary key alumnoscursos(idalumno,idcurso)?
Lo d clustered unique no sé cómo se pondría y q significa exáctamente.

Gracias.
  #13 (permalink)  
Antiguo 02/06/2005, 03:27
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
En diseño ya lo ví, al dar con el botón secundario sobre la tabla -> índices y claves m aparece por defecto tickeado clustered y lo d unique no se puede seleccionar.
  #14 (permalink)  
Antiguo 02/06/2005, 08:56
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola

Si estas con SQL Server y es directo seria asi:

CREATE UNIQUE CLUSTERED INDEX [NOMBRE_INDEX] ON [dbo].[NOMBRE_TABLA]([idalumno], [idcurso]) ON [PRIMARY]
GO

Y no declares por separado ninguna llave primaria ni nada, solamente esta.

Y bueno, la verdad es que no te había entendido, pero creí que así sería padre manejarlo

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #15 (permalink)  
Antiguo 02/06/2005, 09:30
 
Fecha de Ingreso: abril-2005
Mensajes: 163
Antigüedad: 19 años
Puntos: 0
ok, gracias.
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 19:15.