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

insertar datos en tablas diferentes

Estas en el tema de insertar datos en tablas diferentes en el foro de Mysql en Foros del Web. Tengo dos tablas alumnos id nombre apellidos direccion calificaciones id matematicas quimica ingles Lo que deseo realizar esque pueda dar de alta los alumnos y ...
  #1 (permalink)  
Antiguo 08/06/2012, 18:10
 
Fecha de Ingreso: mayo-2012
Ubicación: Puebla
Mensajes: 7
Antigüedad: 11 años, 11 meses
Puntos: 0
insertar datos en tablas diferentes

Tengo dos tablas

alumnos

id
nombre
apellidos
direccion

calificaciones
id
matematicas
quimica
ingles


Lo que deseo realizar esque pueda dar de alta los alumnos y despues dar de alta las calificaciones pero lo que quiero hacer que las calificaciones se asocien a un alumno, es decir que si tengo


Pedro Ruiz

y despues ingreso sus calificaciones, estas se asocien a este alumno, debo definir llaves foraneas pero alguna idea de como hacer esa asociacion, de antemano gracias
  #2 (permalink)  
Antiguo 09/06/2012, 13:07
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: insertar datos en tablas diferentes

Si el campo id que ilustras corresponde a un identificador unico del alumno, debes usar ese id. De lo contrarios tienes que crear un campo identificador unico para cada alumno y hacer la asociacion basada en ese identificador.

Saludos.
  #3 (permalink)  
Antiguo 09/06/2012, 15:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: insertar datos en tablas diferentes

Cita:
debo definir llaves foraneas pero alguna idea de como hacer esa asociacion, de antemano gracias
¿A qué refieres? ¿A cómo se agrega una FK a una tabla? Eso lo puedes ver en en el manual de referencia:

MySQL::13.1.5. Sintaxis de CREATE TABLE

O bien en:

MySQL::13.1.2. Sintaxis de ALTER TABLE


Fuera de esto, como MySQL respeta el estandar ANSI-SQL, es una operación de manual básico...

Las únicas condiciones son:
- Una KF sólo apunta a una PK de otra tabla, nunca a otro tipo de campo. En MySQL sse extiende la posibilidad a campos declarados como UNIQUE en su tabla.
- Si es CHAR o VARCHAR deben ser del mismo tipo de dato, tener la misma longitud, charset y collation que la PK de origen.
- Si es de fecha y hora, deben ser de mismo tipo de dato que la PK origen.
- Si es numérica, mismo rango y tipo de dato que la PK origen.
- Si la PK es de más de un campo, la FK también, en el mismo orden que la PK de origen.
- Las FK se crean siempre después de crear la tabla origen, nunca antes.
- Si hay más de dos tablas relacionadas en cascada, se deben crear respetando la casacada.
- No se deben crear dependencias circulares. Es decir la Si B apunta a A, A no puede apuntar a B.

¿Qué dudas te plantea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 09/06/2012, 16:19
 
Fecha de Ingreso: junio-2012
Mensajes: 16
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: insertar datos en tablas diferentes

La respuestas es simple, tienes 2 tablas modeladas en forma incorrecta las relaciones de 1 a 1 NO aplican para bases de datos como MYSQL se pueden crear claro pero es un error conceptual
  #5 (permalink)  
Antiguo 09/06/2012, 16:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: insertar datos en tablas diferentes

BSD_FAN: Las relaciones 1:1 si aplican en las base de datos (incluida MySQL), pero son casos especiales del diseño de un sistema dado.
Normalmente ocurren cuando una relación es opcional, pero tiene un grado de ocurrencia importante, y los atributos son tales que requieren la definición de la tabla relacionada. Es un caso de relación entidad fuerte - entidad débil.
Como se trata de casos especiales en los sistemas, no suele ejemplificarse mucho, y en ellos la ubicación de la FK suele ser algo arbitraria. La regla sólo dice que tiene que estar en una de las dos tablas, pero nada más. Por ello se tiene que ver en cada caso a dónde va.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 11/06/2012, 14:21
 
Fecha de Ingreso: mayo-2012
Ubicación: Puebla
Mensajes: 7
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: insertar datos en tablas diferentes

esa es mi duda como usarlo o como definirlo, es correcto que cree una llave foranea en alguna tabla?
  #7 (permalink)  
Antiguo 11/06/2012, 14:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: insertar datos en tablas diferentes

Por lo pronto, tienes un mal diseño de entidades.
En todo caso corresponden:
- Alumno
- Asignatura
- Alumno_asignatura
- Examen
- Detalle_Calificacion

Con ciertas reglas de negocio:
- Un alumno cursa una asignatura en uno o N cursos.
- Una cursada, tiene una serie de N exámenes de cada asignatura.
- Cada examen tiene un detalle de notas de N alumnos.

Hay FK de Alumno y de Asignatura en Aluno_asigatura.
Hay FK de de Alumno_Asignatura en Examen.
Hay FK de Alumno y de Examen en Detalle_Calificacion.

Este diseño no es totalmente correcto, pero está más cerca que el que propones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/06/2012, 16:01
 
Fecha de Ingreso: mayo-2012
Ubicación: Puebla
Mensajes: 7
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: insertar datos en tablas diferentes

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por lo pronto, tienes un mal diseño de entidades.
En todo caso corresponden:
- Alumno
- Asignatura
- Alumno_asignatura
- Examen
- Detalle_Calificacion

Con ciertas reglas de negocio:
- Un alumno cursa una asignatura en uno o N cursos.
- Una cursada, tiene una serie de N exámenes de cada asignatura.
- Cada examen tiene un detalle de notas de N alumnos.

Hay FK de Alumno y de Asignatura en Aluno_asigatura.
Hay FK de de Alumno_Asignatura en Examen.
Hay FK de Alumno y de Examen en Detalle_Calificacion.

Este diseño no es totalmente correcto, pero está más cerca que el que propones.
ok entiendo lo que tratas de describir y gracias por la idea que me das, creo que no me explique bien inicialmente, y eso esta dando origen a diferntes respuestas por parte de las personas que me tratan de ayudar, yo planteé dos tablas nadamas porque apenas comienzo con este tema, es claro que tu me estas proponiendo mas tablas y mediante de esas tablas poder crear relaciones, ahora ya entendi parte de lo que debo hacer nadamas una duda cuales serian las tablas a crear para tener por un lado alumnos y por otro calificaciones (por el momento) y que pueda existir una relacion entre ambas seria algo asi:


Tabla : alumnos
id ->primary key
apellidos
edad
direccion

Tabla Calificaciones
id -> primary key
cal.-fisica
cal.matematicas
cal. español
.
.

cual seria la tabla que relacione las dos ??, espero haberme explicado
  #9 (permalink)  
Antiguo 12/06/2012, 02:10
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: insertar datos en tablas diferentes

Las respuestas que te están dando lo que intentan es hacerte ver que la estructura no es correcta, puesto que los alumnos suelen cursar distinto numero de asignaturas y la nota de las asignaturas suelen ser el resultado de distinto numero de notas parciales, lo que es imposible o muy ineficente guardarlo en la estructura de dos tablas que planteas.

Pero tu preguntas algo mas básico: como se relacionan dos tablas.... los links que ha puesto gnzsoloyo te deberían bastar. Pero es algo tan simple como que deben compartir un campo, en tu caso (erróneo e insuficiente) piensa como relacionarías en la vida real el boletín de notas de un alumno con el alumno.... Pregúntate si un boletín de notas sin el nombre del alumno tiene algún sentido? Aplica eso a tus tablas..... Luego intenta minimizar la información repetida en las tablas.... y luego no esperes nada mágico si das de alta un alumno cuando des de alta sus notas tendrás que poner su nombre en el boletín (o algo que lo identifique) no?....

Finalmente extiende esos razonamientos a la estructura que te ha propuesto gnzsoloyo. Piensa en las distintas relaciones que te he dicho, números distintos de asignaturas y de notas parciales... etc y que los campos vacíos de una estructura generan reservas de espacio en disco innecesario... intenta minimizarlos.... que un identificador (numerico) ocupa menos que un nombre (string)....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 12/06/2012 a las 02:43

Etiquetas: tabla, tablas
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:34.