[Php-avanzado] [PHP-Avanzado] Tesis Diego Oliva

Oliva, Diego M. diego en olivadiegom.com.ar
Jue Nov 27 19:53:39 ART 2008


Buenas tardes,

    Leo, éste sábado no voy a poder ir, asi que voy el miércoles, no 
obstante, para tratar de avanzar un poco, te mando mi "proyecto", asi 
como las tablas normalizadas... y un par de dudas...
    
    Bue, lo mío era la agenda, empezando, tiene el login y sector 
registro de nuevo usuario, el cual debe completar nombre de usuario, 
contraseña, y sus datos para la agenda (los que disponga), pero 
obligados nombre, apellido, dirección, teléfono y mail. Va a pasar por 
una validación, escalable por el administrador del sistema, la cual 
tendría, aceptación automática, validacion contra autenticación de mail 
por vinculo url (ampliable a soporte de restricción de registro contra 
dominios permitidos de mail) o por último, validación por el administrador.

       Finalmente, una ves dentro, podrá tanto modificar sus datos (que 
serán visibles para cualquier usuario) como agregar contactos nuevos, 
los datos posibles a ingresar son: Nombre, Apellido, Direccion o 
Direcciones (con descripcion, casa, trabajo, etc...). Teléfono o 
teléfonos fijos, los cuales van a estar ligados a las direcciones, 
celulares (c/descripción), mails, paginas web (también con descripción) 
y una foto del contacto. Los teléfonos fijos caen dentro de una 
categoria de tipo, y en el caso de no encontrar la categoria requerida, 
se envía una notificación al administrador para que, en el caso de 
aceptar la categoría, pueda ingresarla al sistema. El teléfono que quede 
en espera quedará asignado a una categoría llamada A Designar.
       Por otro lado, cada contacto también podrá ser categorizado 
dentro de grupos, los cuales estarán regidos por las mismas reglas que 
los tipos de los teléfonos. Y también, será posible clasificar un 
contacto de "Público", de forma tal que cualquier otro usuario pueda ver 
dichos datos.

       También podrá consultar la agenda, buscar por nombre o apellido, 
listar por letra, en todos o por grupos, modificar los datos de un 
contacto, eliminar contactos, etc...

    Creo que no me estoy olvidando de nada por ahora... Queda ver si 
hice bien la normalización... especialmente porque tengo una duda...

    El sistema esta hecho de forma tal que cada vez que se registre un 
usuario, los datos de dicho usuario quedan en la tabla datos, y sin 
intervención del usuario van a quedar asignados al grupo, "Usuarios". 
Ahora, al querer recuperar los datos de un usuario, por ejemplo, al 
loguearse, para encontrar dichos datos tengo que recorrer la tabla 
Datos, comparando que el id_usuario corresponda con el usuario y que 
además el grupo sea Usuario, puede hacerse, no es dificil, pero algo en 
mi cabeza me dice que seria mucho más práctico que este el campo 
ID_DATOS en la tabla usuario, como está ahora en negrita... pero según 
creo, no esta bien que dicho campo exista... asi que... esa es mi 
duda... ¿Cómo hago eso?

    Y... ya esta... creo que lo único que me queda por aclarar es que 
los nombres de los campos y las tablas son simlemente explicativos y no 
van a ser los que use, y que el caso de los tipos de los datos, 
posiblemente cambie algunas longitudes en el transcurso del proyecto...

    Como todos, cualquier sugerencia es bienvenida...


============================================
Tablas ->
============================================

Mails_permitidos:

       ID (INT)
       MAILS

Usuarios:

       ID (INT)                   
       **ID_DATOS (INT)
      *USUARIO (VARCHAR 20)
       CONTRASEÑA   (VARCHAR 64)
       HASH_CREACION (VARCHAR 64)
       ACTIVO (BOOLEAN)
       ADMINISTRADOR (BOOLEAN)

Telefonos:

       ID   (INT)
       TELEFONO (VARCHAR 15)
       INTERNO   (VARCHAR 5)
       ID_TIPO   (INT)
       ID_DIRECCION    (INT)
       ID_DATOS   (INT)
       PRINCIPAL   (BOOLEAN)

Tipo_Tel:

       ID   (INT)
       NOMBRE   (VARCHAR 15)
       ACTIVO   (BOOLEAN)

Datos:

       ID   (INT)
       NOMBRE   (VARCHAR 50)
       APELLIDO   (VARCHAR 50)
       FOTO   (VARCHAR 50) (Cuando sepa donde las voy a guardar seguro 
lo vario...)
       PUBLICO   (BOOLEAN)
       ID_GRUPO   (INT)
       ID_USUARIO   (INT)

Grupos:

       ID   (INT)
       NOMBRE   (VARCHAR 30)
       ACTIVO   (BOOLEAN)

Mails:

       ID   (INT)
       MAIL   (VARCHAR 50)
       ID_DATOS   (INT)
       PRINCIPAL   (BOOLEAN)

Webs:

       ID   (INT)
       WEB   (VARCHAR 100)
       DESCRIPCION   (VARCHAR 50)
       ID_DATOS   (INT)
       PRINCIPAL   (BOOLEAN)

Moviles:

       ID   (INT)
       MOVIL   (VARCHAR 15)
       DESCRIPCION   (VARCHAR 50)
       PRINCIPAL   (BOOLEAN)
       ID_DATOS   (INT)

Direcciones:

       ID   (INT)
       DIRECCION   (VARCHAR 100)
       DESCRIPCION   (VARCHAR 50)
       ID_CIUDAD   (INT)
       PRINCIPAL   (BOOLEAN)

Ciudades:

       ID   (INT)
       CIUDAD   (VARCHAR 30)
       PREFIJO   (VARCHAR 10)
       ID_PROVINCIA   (INT)

Provincias:

       ID   (INT)
       PROVINCIA   (VARCHAR 30)
       PREFIJO   (VARCHAR 10)
       ID_PAIS   (TINYINT)

Paises:

       ID (TINYINT)
       PAIS   (VARCHAR 30)
       PREFIJO   (VARCHAR 3)

===========================================
   

-- 
Oliva, Diego Martín

www.olivadiegom.com.ar
diego en olivadiegom.com.ar
Tel.: +542235530137
Mar del Plata, Bs. As.
Argentina.



Más información sobre la lista de distribución Php-avanzado