[Php-avanzado] Consulta sobre normalización

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Jul 12 14:04:15 ART 2010


Buenas,

El lun, 12-07-2010 a las 08:36 -0300, Gerardo Valiani escribió:
> 
> 
> 2010/7/12 Silverzero <silverzero.52 en gmail.com>
>         Hola!
>         
>         Tengo que normalizar usuarios de un sitio de una ONG, en el
>         que se registran usuarios para publicar y a la vez estos,
>         pueden ser además socios, voluntarios, coordinadores, y/o
>         directivos.
>         
>         Para los usuarios regulares los datos requeridos son:
>         
>         nombre
>         apellido
>         telefono
>         celular
>         email
>         usuario
>         contraseña
>         
>         Para el resto se le suman:
>         
>         fecha de nacimiento
>         profesión
>         tipo de documento
>         nro de documento
>         dirección
>         pais
>         ciudad
>         codigo postal
>         
>         Ahora mi pregunta es, me conviene hace una tabla con los datos
>         de los usuarios regulares, y otra tabla "datos adicionales"
>         para el resto de los usuarios y después relacionar con otra
>         tabla que estén los tipos de usuario no?
>         Saludos y gracias.
> 
> Si, yo lo haria como vos decis. En "datos adicionales" tendrias que
> poner un campo id_usuario, que relacione la tabla "usuarios" y la
> tabla "datos adicionales". Y la ulitma tabla "relacion_usuario_tipo"
> con los campos: id, id_usuario, id_tipo. Esta ultima tabla es
> necesario solo si un usuario puede tener mas de un "tipo de usuario" a
> la vez. Faltaria tambien la tabla "tipo_usuario" con los campos: id,
> tipo.

	Yo al id_usuario lo dejaría siempre en la tabla de Usuarios... de otra
forma, los usuarios son "regulares" si no tienen asociación en la tabla
de "datos extra", y hacer querys con IF adentro si bien se puede,
debería ser para resolver un problema puntual, y no algo ya planteado
desde el diseño.

	El enfoque simple de esto es tener todos los datos en la misma tabla, y
estarán vacíos los adicionales en los registros que el tipo de usuario
represente a los regulares.

	El enfoque de diseño me parece que es tener usuarios por un lado, y por
otro roles en la ONG, de manera que luego puedan asociarse usuarios con
su rol o roles en la misma. Por lo que contás, podrían usar todos la
misma tabla para los roles, ya que comparten los datos.

	(estos merengues pasan por pensar en "usuarios" en vez de pensar en que
función tienen dentro del sistema como entidades... la palabra usuario
es demasiado genérica para decir algo útil!!! )

> 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