[Php-avanzado] Tesis Diego Oliva
Oliva, Diego M.
diego en olivadiegom.com.ar
Vie Dic 26 20:26:01 ART 2008
Leonardo Tadei - Pegasus Tech Supply wrote:
> 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.
>
>
>
hay grupos de usuarios y grupos de contactos
independientes por cada usuario, los grupos de usuarios sólo se pueden
crear por un administrador y van a tener un moderador. Estos grupos
poseen miembros, dichos miembros son usuarios del sistema, y cada uno de
dichos usuarios puede categorizar sus contactos, sus entradas a la
agenda, dentro de grupos de contactos, definibles e independientes por
cada usuario...
>>> 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.
>>>>>>
>
>
lo determinara en base al campo id_perm, dentro de la
tabla data...
>>> 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.
>
unique no sirve para asegurar que no haya registros
duplicados?
>
>>> 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??
>
>
>
>
id y descripcion... por ahora quedaria...
1 --- Privado
2 --- Para el Grupo de Usuarios
3 --- Publico
>>>>>> 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...
>
>
>
yo queria hacerlo lo mas transparente posible para el
usuario, si en el momento veia que se me complicaba, iva a perder la
asociacion, pero no crei tener que llegar a eso...
crees que no vale la pena?
>>>>>> 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???
>
>
porq los telefonos son, en general, bastante
estables, movil, casa, casa de verano, trabajo, oficina y casi que ya
esta... pero en mails y paginas web ya si que hay mucha variacion... mi
web personal, web de la empresa, mi blog, mi group (google, msn,
yahoo...), blog del laburo, blog de los amigos, de los hijos, google
docs y se puede seguir... con los mails no va para tanto, pero casi...
>>>> 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!
>
si no es lo que ya respondi, entonces explicame aun
mas que es lo que me falta porq no me doy cuenta... esto es lo que ya
mande...
las configuraciones de las que hablaria rconfig son
del registro de un nuevo usuario en dicho grupo. de ahi se obtendria
la informacion de que hacer al ser requerido un nuevo alta de
usuario... (alta automatico, alta contra comprobación de mail, contra
comprobacion de mail con mail restringido, contra aprovacion de
moderador...)
>
>>>>>> 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!!!
>
--
Oliva, Diego Martín
www.olivadiegom.com.ar
diego en olivadiegom.com.ar
Tel.: +542235530137
Mar del Plata, Bs. As.
Argentina.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/private/php-avanzado/attachments/20081226/0b1c3c53/attachment-0001.htm
Más información sobre la lista de distribución Php-avanzado