[Php-avanzado] Tesis Diego Oliva

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Dic 23 23:37:17 ART 2008


Hola Diego,

El mar, 23-12-2008 a las 21:43 -0200, Oliva, Diego M. escribió:
> > > > >        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?
> > > >   
> > > >       
> > > con los contactos... son los grupos que va  tener
> > > cada usuario, dentro de los cuales va a poder clasificar a sus
> > > contactos...
> > >     
> > 
> > 	Ok. Entonces el usuario crea sus grupos para organizar su información?
> >   
> 
>                       en efecto, el usuario añade un contacto y lo
> categoriza dentro de un grupo, que puede ya existir o puede crearlo en
> el momento...

	Es muy confuso el uso que le das a la palabra "grupo"... a veces es
para agrupar los contactos, y a veces es para el grupo del usuario.
	Dado que yo leo lo que escribís, y no sé lo que pensás, necesito que lo
desambigües.
	

> > 	Y como determinará el sistema (basado en qué dato) la visibilidad de
> > los contactos???
> >   
> 
>                       no se a que te referis con esto... el listado de
> los contactos por usuario? los contactos a los que tiene permiso el
> usuario para acceder

	Me refiero a la parte de tu especificación que dice:

> > > > > 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.

> > 	Hay más abajo una columna "perm", pero está asociada a un dato, y no a
> > un grupo...

> > > > > 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"... 
> > > >   
> > > >       
> > > top es un booleano que voy a usar para la muestra
> > > de los datos... mi idea es que se vea por cada contacto , rapido, un
> > > telefono predetermindo (o preferido), una direccion, un celular, un
> > > mail, etc... y despues, si se quiere ver mas información sobre dicho
> > > contacto, se ven todos los demas datos que existan...
> > >     
> > 
> > 	entiendo... y no va a ser único para la tupla id_data + top ??? o puede
> > tener varios preferidos?
> >   
> 
>                       la idea es que tenga sólo un preferido, dentro
> de cada categoria... un mail preferido, un telefono preferido, una
> direccion preferida... 
>                         por?

	Por que si son únicos por tupla, los podés definir en la tabla como
"unique" y tener mas consistencia a nivel de almacenamiento.

> > 	Por otra parte, no me doy cuenta cómo esto refleja el tema de que la
> > visibilidad tendrá solo 3 aspectos: privado, del grupo y público.
> > 	Privado y público están claros. Del Grupo, significa el grupo del
> > usuario, y el usuario tiene grupo, pero no "permisos". Para qué sirve
> > esta tabla entonces?
> >   
> 
>                el usuario no tiene permisos, cada contacto es el que
> tiene permisos, y en base a esos permisos un usuario podra o no ver un
> determinado contacto... el usuario podrá ver sus contactos, a su vez
> podrá ver los contactos que tengan permiso público y, también, podrá
> ver los contactos que usuarios de su mismo grupo haya hecho publicos
> para dicho grupo...

	Esto pide a gritos ver los registros en la tabla "perm".
	Qué va ahí adentro??

	

> > > > > 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?
> > > >       
> > 
> > 	No me respondés... supongo que es para sacar los prefijos... pero esto
> > significa que no se puede anotar un teléfono sin antes cargar la ciudad
> > con el prefijo correspondiente. Me sigue pareciendo muy mezclado...
> >   
> 
>                          no habia visto ninguna pregunta... lo de top
> ya lo habia explicado...
> 
>                          la asociacion a la que te referis es la de
> direccion-telefono? no tiene un fin realmente especifico, simplemente
> me parecio practico saber a donde estoy llamando cuando llamo a un
> telefono fijo...

	Mmm... me parece una característica que le baja mucho la usabilidad al
sistema...
  
 
> > > > > 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?
> > > >   
> > > >       
> > > trabajo, oficina, casa, casa de veraneo (:P), mas
> > > configurables, y móvil... 
> > >     
> > 
> > 	Ahhh... pero entonces necesitás la misma descripción para las
> > direcciones y posiblemente para los mails...
> > 
> >   
> 
>                    las direcciones, mails y webs tienen un campo
> varchar de descripcion, para dicha aclaracion...

	Sí, pero la misma justificación que usaste para codificarla acá debería
ser aplicable a las direcciones y los mails.
	Por qué acá se justifica y en los otros no???

> > > para mi modelo de almacenamiento es importante...
> > >     
> > > > > 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?
> > > >       
> > 
> > 
> > 	Y? Qué vas a configurar con esos datos?
> >   
> 
>                       esta abajo...

	Sí, Diego, la relación está abajo.
	Pero mi pregunta sigue sin responder "qué vas a configurar?"
	Necesito entender como pensaste la cosas para validar tu modelo de
datos!

> > > > > 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,
> > > > >     
> > > > >         

	Seguimos!!!
-- 
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