[Php-avanzado] Tesis Diego Oliva

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Dic 22 15:55:23 ART 2008


Hola Diego,

El lun, 22-12-2008 a las 12:35 -0200, Oliva, Diego M. escribió:
> Leo, acabo de volver a mardel, y no me llego ninguna respuesta, asi
> que te lo mando por de vuelta por si se perdio algun mail por el
> camino...

	Había recibido este mail.
	La verdad es que no me acuerdo si te había respondido o no...

	Se me hace bastante difícil seguir las tablas para controlar la
normalización: esa mezcla de nombres en inglés con castellano y nombres
genéricos... (cities y provs... una tabla "data")

	A falta de semántica para entender el almacenamiento, es bueno por
ejemplo poner uno o 2 datos representativos para ver los enganches de
una cosa con otra.

> Voy a ver si llego para el 27...

	Más que observaciones, te consulto cosas que no entiendo:

> --------
> 
> Buenas, Leo, te mando todo el proyecto de vuelta, a ver ahora que
> tul...
> 
>        Agenda... 
> 
>             Registro de nuevo usuario:
>                 
>                       Datos: Nombre de usuario, Contraseña, Nombre,
> Apellido, Dirección, Teléfono, Mail (Obligados), y optativos, los
> mismos que van a tener los contactos.
>                       El usuario va a poder elegir de una lista un
> grupo al cual inscribirse o va a tener la opción de crear un nuevo
> grupo. En el primero de los casos, el alta va a estar regido por una
> configuración independiente para cada grupo, que tiene de opciones:
> registro automático; registro contra verificación de mail, registro
> contra verificación de mail con direcciones de mail excluyentes,
> registro contra aprobación del moderador del grupo. Si el usuario se
> está registrando y a su vez quiere dar de alta un nuevo grupo, va todo
> contra aprobación de administrador.
> 
>              Una vez dentro del sistema:
> 
>                       Cada usuario va a poder dar de alta nuevos
> contactos, asi como eliminar y modificar antiguos. 
>                         Cada contacto va a contar con los campos de
> información: Nombre, Apellido, Una Foto, Múltiples Direcciones,
> Múltiples Teléfonos, Múltiples Móviles, Múltiples E-Mails, Múltiples
> Páginas Web. También es posible categorizar cada contacto dentro de un
> grupo, y dichos grupos son únicos para cada usuario. Los teléfonos se
> pueden clasificar como de un tipo (Móvil, Hogar, Trabajo, Etc), a los
> cuales pueden ser agregados otros, también, únicos para cada usuario.
> Por otro lado, también se deberá definir uno de todos los múltiples de
> cada cosa como principal, para una mejor gestión de la información. Y,
> por último, es posible definir permisos para cada contacto, para que
> el mencionado pueda ser visible por el grupo al que pertenece el
> usuario, para cualquier usuario del sistema, o que quede como privado.
> 
>                       Luego, la consulta: cada usuario va a tener
> acceso a sus propios contactos, va a poder realizar busquedas por
> nombre o apellido, listar por inicial de nombre o apellido y retringir
> busquedas y listados a los distintos grupos. Y también podrá
> visualizar aquellos contactos que tengan permisos suficientes como
> para que el usuario logeado pueda ver.
> 
>                       Cada usuario va a tener su propia información
> personal, la cual será visible para su grupo o para todos los
> usuarios, configurable por dicho usuario.
> 
> 
> -------------- TABLAS -------------
> 
> cgroups (Grupos de los Contactos)
>   `id` int(11) NOT NULL auto_increment,
>   `group` varchar(50) NOT NULL,

	y con qué se relacionan estos grupos de contactos? Con el usuario? con
el grupo?

> cities
>   `id` int(11) NOT NULL auto_increment,
>   `city` varchar(100) NOT NULL,
>   `pre` varchar(10) NOT NULL,
>   `zip` varchar(10) NOT NULL,
>   `id_prov` int(11) NOT NULL,

	Qué es "pre"?

> country
>   `id` int(11) NOT NULL,
>   `country` varchar(100) NOT NULL,
>   `pre` varchar(4) NOT NULL,

	Qué es "pre"?

> data
>   `id` int(11) NOT NULL auto_increment,
>   `name` varchar(100) NOT NULL,
>   `lname` varchar(100) NOT NULL,
>   `pic` varchar(100) NOT NULL,
>   `id_group` int(11) NOT NULL,
>   `id_user` int(11) NOT NULL,
>   `id_perm` int(11) NOT NULL,

	Data de qué? de los usuarios registrados? de las entradas de la agenda?
	No está bien tener el id_user y el id_group: con el id_user encontrás
el grupo correspondiente....

> mails
>   `id` int(11) NOT NULL auto_increment,
>   `mail` varchar(100) NOT NULL,
>   `top` tinyint(1) NOT NULL,
>   `id_data` int(11) NOT NULL,

	Qué es "top"?
	Esto es una relación uno a muchos con "data"... 

> perm (Permisos disponibles para los contactos)
>   `id` int(11) NOT NULL auto_increment,
>   `perm` tinyint(4) NOT NULL,
>   `desc` varchar(50) NOT NULL,

	O sea, permiso disponible para que un usuario asigne a sus contactos???

> phones
>   `id` int(11) NOT NULL auto_increment,
>   `phone` varchar(20) NOT NULL,
>   `desc` varchar(50) NOT NULL,
>   `id_ptype` int(11) NOT NULL,
>   `id_dir` int(11) NOT NULL,
>   `id_data` int(11) NOT NULL,
>   `top` tinyint(1) NOT NULL,

	Mmm... asociar una dirección a un teléfono tiene un lado muy flaco: los
móviles.
	Qué es "top"? 
	Para qué era esta asociación?

> pmails (Mails que serán permitidos al registro)
>   `id` int(11) NOT NULL,
>   `pmails` varchar(100) NOT NULL,

	Para todos?!?!?!?
	No tiene más sentido tener mails permitidos por grupo?
	Quién administra qué mails se permiten y a dónde?

> prov
>   `id` int(11) NOT NULL,
>   `prov` varchar(100) NOT NULL,
>   `id_pais` int(11) NOT NULL,

	id_pais? Pero si la tabla se llamaba "country".
	Para seguir en inglés, esta tabla debería llamarse "county" o
"states"...
	Decidite con el idioma porque si no, no es simple de entender... a mi
me da lo mismo cualquiera, pero sé homogéneo!

> ptypes (Tipos de teléfonos)
>   `id` int(11) NOT NULL auto_increment,
>   `type` varchar(25) NOT NULL,

	Supongo que para móvil o fijo... pero es realmente importante saber de
qué tipo es?

> rconfig (Configuración del registro)
>   `id` tinyint(4) NOT NULL,
>   `desc` varchar(50) NOT NULL,

	Del registro del usuario? De un registro de una tabla de la DB?
	Por ser una configuración, tener solo descripción como valor no es
poco? Qué vas a configurar?

> ugroups (Grupos de usuarios)
>   `id` int(11) NOT NULL auto_increment,
>   `group` varchar(50) NOT NULL,
>   `id_rconfig` tinyint(4) NOT NULL,
>   `desc` varchar(250) NOT NULL,

	Aja! El grupo tiene una configuración... pero cómo tu sistema resolverá
que hacer según esa configuración? En qué consiste configurar un grupo?

> users
>   `id` int(11) NOT NULL auto_increment,
>   `user` varchar(30) NOT NULL,
>   `pass` varchar(64) NOT NULL,
>   `chash` varchar(64) NOT NULL,
>   `id_type` tinyint(4) NOT NULL,
>   `id_group` int(11) NOT NULL,


	Los usuarios no tienen nombre y apellido ?!?!?!?

> utypes (Tipos de usuarios)
>   `id` int(11) NOT NULL auto_increment,
>   `type` tinyint(4) NOT NULL,
>   `desc` varchar(250) NOT NULL,

	Para qué hay un id y un type? No son lo mismo?

> webs
>   `id` int(11) NOT NULL auto_increment,
>   `web` varchar(150) NOT NULL,
>   `desc` varchar(100) NOT NULL,
>   `top` tinyint(1) NOT NULL,
>   `id_data` int(11) NOT NULL,

	Qué es "top"?
	Esto es una relación uno a muchos con las entradas en la agenda. Bien.
	Y Cómo se guarda una dirección física? Para qué están las ciudades y
los paises???


> Saludos,

	=mente!
-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



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