[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