Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/01/2011, 23:28
ZeThito
 
Fecha de Ingreso: septiembre-2010
Mensajes: 147
Antigüedad: 13 años, 7 meses
Puntos: 3
Tabla con relación de registro de usuarios.

Tengo una gran duda por la falta de conocimiento en este tema de bases de datos relacional.

Bueno es la siguiente: He creado dos tablas, dejo un pantallazo



Como verán la tabla registros es la tabla Padre y la tabla usuarios es la tabla Hijo.

Ahora dejo la pantalla del formulario de Registro:


PASO 1:
Si yo me registro en esté formulario (el de arriba):
Ingreso mi nombre real y luego mi correo electrónico, entonces llamo a un método que inserta en la tabla registros, el nombre real, el correo electrónico, una password que se genera automáticamente(es enviada por correo), la fecha de ingreso, y por último en status ingreso un número boleando, para identificar si él usuario es nuevo o antiguo.

PASO 2:
Si se cumple el PASO 1, entonces el usuario está apto para ingresar a la pantalla de acceso:


----

Bueno si se fijan en la tabla registros tengo un campo llamado status el cual es de tipo Booleano, ósea 0 ó 1. El Usuario si es nuevo se registra en el campo status, un 0.

Entonces si el usuario hace ingreso en la pantalla de acceso:


a través de una consulta SQL yo voy a capturar ese campo status y voy a identificar si el usuario es nuevo "0" o es antiguo "1". ¿Y esto para qué?

Es para poder hacer el llenado de la tabla usuarios!

Ósea: Si yo me registro en el sistema con mi nombre real y correo electrónico, el sistema me va a identificar como nuevo usuario a través del campo status que va tener un valor de 0, entonces me va a enviar a un nuevo formulario donde yo haré ingreso ahora de los datos de esta segunda tabla que es usuarios.


Y aquí es donde yo estoy completamente parado.

No sé mucho de Bases de datos Relacional.


Dejo el Codigo SQL:
Código SQL:
Ver original
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.2.0.1
  3. -- http://www.phpmyadmin.net
  4. --
  5. -- Servidor: localhost
  6. -- Tiempo de generación: 01-02-2011 a las 04:44:54
  7. -- Versión del servidor: 5.5.8
  8. -- Versión de PHP: 5.3.3
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12.  
  13. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  14. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  15. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  16. /*!40101 SET NAMES utf8 */;
  17.  
  18. --
  19. -- Base de datos: `publicalibre`
  20. --
  21.  
  22. -- --------------------------------------------------------
  23.  
  24. --
  25. -- Estructura de tabla para la tabla `registros`
  26. --
  27.  
  28. CREATE TABLE IF NOT EXISTS `registros` (
  29.   `id_registro` INT(11) NOT NULL AUTO_INCREMENT,
  30.   `nombre_real` VARCHAR(20) NOT NULL,
  31.   `email` VARCHAR(30) NOT NULL,
  32.   `password` VARCHAR(100) DEFAULT NULL,
  33.   `fecha_ingreso` DATE DEFAULT NULL,
  34.   `status` tinyint(1) NOT NULL,
  35.   PRIMARY KEY (`id_registro`)
  36. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
  37.  
  38. --
  39. -- Volcar la base de datos para la tabla `registros`
  40. --
  41.  
  42. INSERT INTO `registros` (`id_registro`, `nombre_real`, `email`, `password`, `fecha_ingreso`, `status`) VALUES
  43. (1, 'Pablo', '[email protected]', 'e10adc3949ba59abbe56e057f20f883e', '2011-01-31', 0);
  44.  
  45. -- --------------------------------------------------------
  46.  
  47. --
  48. -- Estructura de tabla para la tabla `usuarios`
  49. --
  50.  
  51. CREATE TABLE IF NOT EXISTS `usuarios` (
  52.   `id_usuario` INT(11) NOT NULL AUTO_INCREMENT,
  53.   `id_registro` INT(11) NOT NULL,
  54.   `fecha_naciemiento` VARCHAR(30) NOT NULL,
  55.   `telefono_fijo` INT(15) DEFAULT NULL,
  56.   `telefono_movil` INT(20) DEFAULT NULL,
  57.   PRIMARY KEY (`id_usuario`),
  58.   KEY `id_registro` (`id_registro`)
  59. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
  60.  
  61. --
  62. -- Volcar la base de datos para la tabla `usuarios`
  63. --
  64.  
  65. INSERT INTO `usuarios` (`id_usuario`, `id_registro`, `fecha_naciemiento`, `telefono_fijo`, `telefono_movil`) VALUES
  66. (1, 1, '1985-06-08', 72251017, 77006240);
  67.  
  68. --
  69. -- Filtros para las tablas descargadas (dump)
  70. --
  71.  
  72. --
  73. -- Filtros para la tabla `usuarios`
  74. --
  75. ALTER TABLE `usuarios`
  76.   ADD CONSTRAINT `usuarios_ibfk_1` FOREIGN KEY (`id_registro`) REFERENCES `registros` (`id_registro`);



También dejo algo de lo que se me estaba ocurriendo xD

Código Pensamiento:
Ver original
  1. 1.- Ingreso al formulario de registro: Ingreso mi Nombre Real: Pablo y también mi Email: [email protected]
  2. Entonces : INSERT INTO registros VALUES (1,'Pablo','[email protected]',123456,'2010-01-31',0);
  3.  
  4. 2.- Ingreso al formulario de acceso: Ingreso mi email: [email protected] y mi contraseña: 123456.
  5.  
  6. 3.- Como es usuario nuevo, el status está en 0, entonces nos direccionamos al formulario de completar sus datos:
  7.  
  8. Fecha de nacimiento: 1985
  9. Telefono Fijo: 72268701
  10. Telefono Movil: 77006240
  11.  
  12.  
  13. 4.- PROCESO:
  14.  
  15. Consulto el [id_registro] con el campo email de la tabla de registros.
  16. Recupero el [id_registro] y luego inserto el [id_registro], fecha de nacimiento, telefono fijo, telefono movil en la tabla usuarios.
  17.  
  18.  
  19. Ejemplo:  INSERT INTO usuarios VALUES (1,1,1985,72268701,77006240);
  20.  
  21. Y ahora realizo un UPDATE en la tabla registros tomando en cuenta el valor id_registro como filtro para actualizar el campo status=0 a status=1.


Estoy totalmente inventado cosas, eso de arriba. No tengo idea si es una forma adecuada de hacer un razonamiento.



Espero que logren entenderme, y también espero de la ayuda de esta grandiosa comunidad de programadores. :)

Saludos

Última edición por ZeThito; 01/02/2011 a las 00:23