Foros del Web » Programación para mayores de 30 ;) » Programación General »

pregunta sobre diseño de bd

Estas en el tema de pregunta sobre diseño de bd en el foro de Programación General en Foros del Web. hola, tengo una pregunta, algo extraña, mas bien es cosa de hacer la aplicacion mas detallada. imaginen que tengo 1 tabla llamada usuario (logicamente se ...
  #1 (permalink)  
Antiguo 29/11/2007, 15:01
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 5 meses
Puntos: 25
Pregunta pregunta sobre diseño de bd

hola, tengo una pregunta, algo extraña, mas bien es cosa de hacer la aplicacion mas detallada.

imaginen que tengo 1 tabla llamada usuario (logicamente se almacenaran n usuarios), los cuales administraran todo un sistema de biblioteca.

en si, al momento de desarrollar un retiro (tabla retiro) o reserva (tabla reserva), logicamente debe existir un campo en cada tabla que se almacene el id del usuario que se encargo de hacer ese registro...

hasta ahi todo esta muy bien...

pero al momento de ingresar un nuevo libro, socio, pais, provincia, volumen, tarjeta, tipo_libro, etc, creen que tambien sea necesario agregar un campo usuario para tener un control total del movimiento desarrolllado por los usuarios ???

espero disculpen mis vagos conocimientos en bd
  #2 (permalink)  
Antiguo 29/11/2007, 15:05
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: pregunta sobre diseño de bd

Depende de lo que necesites, depende si es relevante para el negocio. Si en algún momento la administración de la biblioteca necesitará un reporte de los movimientos desarrollados por un usuario, entonces sí debería de ir.

En la práctica, las tablas que son transaccionales sí llevan un campo del usuario que hizo la transacción o movimiento.
  #3 (permalink)  
Antiguo 01/12/2007, 10:15
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: pregunta sobre diseño de bd

Yo te recomendaría que si hicieses referencia al usuario que hace cada movimiento, así después puedes tener un registro de lo que hizo cada usuario y puedes detectar el responsable ante algún problema.

Si usas un identificador común para todas las tablas, por ejemplo un UUID (Universal Unique ID), no es necesario que agregues la referencia al usuario en cada tabla. En ves de ello puedes crear una nueva tabla de registro de acciones que tenga, el id de usuario, la acción realizada y el id de la tupla afectada por esa acción.

Saludos
  #4 (permalink)  
Antiguo 01/12/2007, 13:09
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: pregunta sobre diseño de bd

hola, TolaWare, gracias por esa idea, es sencilla pero muy practica, por casualidad no tendras la estructura de alguna tabla uuid por ahi ? para tener un conocimiento mas profundo ?, me imagino que tambien se pueden agregar valores como fecha de accion. ¿?, en todo caso gracias por la respuesta, haz extendido mas mis debiles conocimientos...
  #5 (permalink)  
Antiguo 01/12/2007, 19:38
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: pregunta sobre diseño de bd

El término UUID hace referencia a "Identificador Universal Único". Lo idea es que todas las tablas usen un atributo UUID como llave primaria, o solo como llave si no quieres modificar la llave primaria anterior de cada tabla.

El uuid es un valor tipo cadena que se genera cuando se va agregar una tupla a una tabla (la mayoría de los lenguajes tienen una función o clase que genera estos uuid).

Tendrías que agregar a la BD una tabla con la siguiente estructura (mas o menos):

uuid (tipo String que sería la llave primaria de esta tabla)
idUsuario (llave foránea al usuario)
hora (tipo TimeStamp para saber en que momento exacto se llevo acabo la acción)
nombre_tabla (un String que nombre la tabla que se modificó)
uuidTupla (uuid del registro modificado/agregado/eliminado).

Solo con esos datos ya te es posible rastrear casi cualquier acción de los usuarios, saber en qué momento lo hicieron y que datos tocaron.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:15.