Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 01-jun-2005, 09:41   #1 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
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.
Mary_ está desconectado   Responder Citando
Antiguo 01-jun-2005, 12:55   #2 (permalink)
Neuron_376 está en el buen camino
 
Avatar de Neuron_376
 
Fecha de Ingreso: abril-2005
Mensajes: 1.051
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
Neuron_376 está desconectado   Responder Citando
Antiguo 01-jun-2005, 14:05   #3 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
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
Mary_ está desconectado   Responder Citando
Antiguo 01-jun-2005, 14:17   #4 (permalink)
darkasecas está en el buen camino
 
Avatar de darkasecas
 
Fecha de Ingreso: marzo-2005
Mensajes: 412
que tal si agregas un idAlumCur a AlumnoCurso y usas esa clave?
darkasecas está desconectado   Responder Citando
Antiguo 01-jun-2005, 14:29   #5 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
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)?
Mary_ está desconectado   Responder Citando
Antiguo 01-jun-2005, 14:34   #6 (permalink)
darkasecas está en el buen camino
 
Avatar de darkasecas
 
Fecha de Ingreso: marzo-2005
Mensajes: 412
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)
darkasecas está desconectado   Responder Citando
Antiguo 01-jun-2005, 14:56   #7 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
ok, gracias, ahora lo pongo con más seguridad.
Mary_ está desconectado   Responder Citando
Antiguo 01-jun-2005, 15:04   #8 (permalink)
Neuron_376 está en el buen camino
 
Avatar de Neuron_376
 
Fecha de Ingreso: abril-2005
Mensajes: 1.051
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
Neuron_376 está desconectado   Responder Citando
Antiguo 01-jun-2005, 15:42   #9 (permalink)
darkasecas está en el buen camino
 
Avatar de darkasecas
 
Fecha de Ingreso: marzo-2005
Mensajes: 412
hehe es lo mismo que yo le dije solo que mejor explicado, yo no soy muy bueno para explicar u.u
darkasecas está desconectado   Responder Citando
Antiguo 01-jun-2005, 15:58   #10 (permalink)
Neuron_376 está en el buen camino
 
Avatar de Neuron_376
 
Fecha de Ingreso: abril-2005
Mensajes: 1.051
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
Neuron_376 está desconectado   Responder Citando
Antiguo 02-jun-2005, 02:01   #11 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
jejeje, sí era eso. Va, tan mal no m explicaría cuándo me respondiste lo q quiero :P. Gracias a los 2.
Mary_ está desconectado   Responder Citando
Antiguo 02-jun-2005, 02:58   #12 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
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.
Mary_ está desconectado   Responder Citando
Antiguo 02-jun-2005, 03:27   #13 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
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.
Mary_ está desconectado   Responder Citando
Antiguo 02-jun-2005, 08:56   #14 (permalink)
Neuron_376 está en el buen camino
 
Avatar de Neuron_376
 
Fecha de Ingreso: abril-2005
Mensajes: 1.051
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
Neuron_376 está desconectado   Responder Citando
Antiguo 02-jun-2005, 09:30   #15 (permalink)
Mary_ ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 163
ok, gracias.
Mary_ está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 12:17.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93