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

Como registrar datos en mysql de esta forma

Estas en el tema de Como registrar datos en mysql de esta forma en el foro de Mysql en Foros del Web. Hola como están yo nuevamente por acá dando lata. Verán estoy estudiando un poco de mysql y tengo esta duda. a ver si me se ...
  #1 (permalink)  
Antiguo 06/08/2014, 15:09
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 11 años, 4 meses
Puntos: 1
Como registrar datos en mysql de esta forma

Hola como están yo nuevamente por acá dando lata. Verán estoy estudiando un poco de mysql y tengo esta duda. a ver si me se explicar.

Tengo dos tablas una:

alumno con los campos
cedula como PK
nombre
apellido
edad

y tengo materias con los campos
nombre
calificacion
cedula

relaciono ambas tablas a través de cédula. Ahora realizando pruebas noto que para que se registren datos en la tabla alumno la tabla materias ya tiene que tener datos almacenados.

Como hago a través de un formulario para registrar primero los datos del alumno y después las materias. O tendría que crear un solo formulario y en almacena.php colocar dos insert para que se registre la información al mismo tiempo.
  #2 (permalink)  
Antiguo 06/08/2014, 15:24
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Como registrar datos en mysql de esta forma

Si tengo un formulario con los datos cédula,nombre,apellido edad del alumno.
Y tengo otro formulario con nombre y calificación es necesario colocar en el formulario materias el campo cédula. Este no se guarda de forma automática si estos campos están relacionados. Gracias por su tiempo y disculpen mi ignorancia a penas empiezo en esto.
  #3 (permalink)  
Antiguo 06/08/2014, 15:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como registrar datos en mysql de esta forma

Cita:
relaciono ambas tablas a través de cédula. Ahora realizando pruebas noto que para que se registren datos en la tabla alumno la tabla materias ya tiene que tener datos almacenados.
Bueno, suponiendo que sean tablas InnoDB, y que hayas creado correctamente la FK en la tabla "materias", obligatoriamente debe existir el alumno para poder registrar la materia. Eso es mandatorio, y es correcto desde el punto de vista del modelo relacional.
Por otro lado, no se entiende tu problema: Obviamente, si es un alumno nuevo, el proceso de alta obligatoriamente debe dar de alta primero al alumno, y luego, usando la misma cédula ledas el alta a las materias del alumno.
Ese es el método, y el cómo o qué tan bien lo programes dependerá de ti. desde la optica del modelo de datos, solamente debes respetar las dependencias funcionales del modelo que diseñaste.
Con programación en este foro no nos metemos.

¿Cuál es tu duda en ese sentido?
__________________
¿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 06/08/2014, 15:39
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Como registrar datos en mysql de esta forma

Gracias por tu respuesta, la duda es la siguiente. tengo mis dos tablas pero es diferente a lo que me reflejas en tu respuesta en mi caso primero debo tener datos en la tabla materia para poder registrar el alumno. otra duda es si registro los datos del alumno es necesario registrar la cédula en la tabla materias esta por, estar relacionada no se almacena de forma automática es ese campo.?
  #5 (permalink)  
Antiguo 06/08/2014, 16:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como registrar datos en mysql de esta forma

Creo que lo que te está faltando es algo de comprensión de los fundamentos del modelo relacional...
Mira, En el modelado de ese sistemas tienes dos entidades: Alumno y Materia, cada una de estas tiene su serie de atributos tales como Alumno(cedula, nombre, apellido, fecha_nacimiento, etc...), Materia(codigo_materia, denominación, otros datos...).
Entre estas dos entidades primarias hay una relación dada que se diría "Un alumno cursa N materias" y su complementaria "Una materia es cursada por N alumnos". Eso es lo que se denomina "relación de cardinalidad N:N" y determina obligatoriamente la existencia de una tabla física que administre la relación, la que podríamos denominar "Alumnos_Materia", con atributos como (cedula, codigo_materia, fecha_alta, periodo_cursada, etc.).
¿Se va entendiendo?
En ese contexto, los alumnos se registran para una materia, a cursar en un determinado período, y en en el cual pueden tener N notas. Este segundo tipo de relación se expresa como "Cada alumno puede tener una o N notas en una misma asignatura), y representa una entidad nueva que se diría "notas_materia_alumno", que responda a una relación de cardinalidad 1:N (cada nota es de un alumno en una materia, pero cada alumno puede tener N notas en la misma materia de la misma cursada). Esa nueva entidad tendría como atributos base (cedula, codigo_materia, fecha_calificacion, calificacion).

¿Como se hacen altas en un esquema así?
Simple: Materia es una tabla fija. La llenas al inicio con lo que existe en el sistema. El resto de las tablas se llenan en orden y en secuencia: Alumno, Alumno_materia, y luego alumno_materia_calificacion.
Las PK de unas tablas sirven de FK/PK en otras en ciertos casos, y bajo ciertas condiciones.

En definitiva, el modelo de datos que propones hasta ahora no sirve. DEbe extenderse para cubrir esos detalles, y recién entonces podrás hacer las correspondientes registraciones.

¿Va quedando claro?

Si quieres otro modelo "más simple", te advierto que te llevará a un cuello de botella insuperable donde deberás si o sí desembocar en un modelado como el que te planteo.
Si realmente quieres hacer una base que te sirva, deberás replantear la cosa, planteando desde el principio reglas de negocio claras (reglas de negocio es la denominación de las reglas que describen cómo se espera que funcione el sistema).
__________________
¿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 06/08/2014, 17:25
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Como registrar datos en mysql de esta forma

ok, a ver si entendí, planteándolo de esta forma seria la correcta?

dos tablas:

CREATE TABLE IF NOT EXISTS `alumno` (
`cedula_alumno` int(15) NOT NULL,
`nombre_alumno` varchar(25) NOT NULL,
`apellido_alumno` varchar(25) NOT NULL,
`sexo_alumno` varchar(4) NOT NULL,
`grado` varchar(9) NOT NULL,
`seccion` varchar(5) NOT NULL,
`cedula_re` int(5) NOT NULL,
PRIMARY KEY (`cedula_alumno`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE IF NOT EXISTS `representante` (
`cedula_re` int(15) NOT NULL,
`nombre_re` varchar(15) NOT NULL,
`apellido_re` varchar(15) NOT NULL,
`edad_re` varchar(2) NOT NULL,
`direccion_re` varchar(50) NOT NULL,
PRIMARY KEY (`cedula_re`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

mi tabla alumno tiene com pk cedula_alumno y en mi segunda tabla cedula_re si coloco como pk cedula_re en mi segunda tabla estaría mal mi relacion con cedula_re . esta bien así? otro punto un pk apunta a una fk. ahora si coloco en mi tabla alumno a cedula_re como indice, index estaria bien relacionar la primera tabla a traves de cedula_re con mi segunda tabla en el campo cedula_re. estoy algo confundido...!!
  #7 (permalink)  
Antiguo 06/08/2014, 17:35
 
Fecha de Ingreso: julio-2013
Mensajes: 123
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Como registrar datos en mysql de esta forma

coloque el campo cedula_re con indice, index y lo relaciono con mi seguna tabla con el campo cedula_re. ahora para registrar alumno necesito registrar datos en representante primero me acotaste que Eso es mandatorio, y es correcto desde el punto de vista del modelo relacional.

no se si estoy en lo correcto..!!

Etiquetas: campo, forma, php, sql, tabla
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 13:57.