Archivos para las entradas con etiqueta: base de datos

Sí, ya llevo un buen rato con esto, pero ahora ya he decididó usar este modelo siguiente (espero que sea adecuado a lo que pienso será BookmarX):

  • bookmarks(idbook,urlbook,picbook)
  • manager(iduser,idbook,idtag)
  • managerbook(iduser,idbook,descriptionbook,newbook)
  • managertag(iduser,idtag,descriptiontag,newtag)
  • tags(idtag,nametag)
  • webuser(iduser,nickuser,emailuser,passuser,lastvisit,registreuser)

He eliminado la tabla de ‘Perfil’ y la información que contenía no me parece indicada. En webuser esta la fecha de ingreso y de última visita.

El archivo en SQL esta aquí (en la carpeta BookmarX), lo he probado importandolo en PHPMyAdmin a la base de datos que deseo, ya tiene la definición de las claves foraneas y los tipos de datos.

He terminado esto, bueno faltan ver las consultas y los formularios, pero eso lo incluyo más como la parte de lógica de negocios, que empezare a desarrollar dentro de pronto.

Anuncios

La verdad he disminuido el desarrollo de BookmarX, pero no lo he dejado, de hecho me he dado cuenta de que al diseño de la base de datos le falta algo super útil y que fue uno de los propositos: etiquetas sobre los bookmarks, en ese modelo se me olvidó enlazar los bookmarks con los tags. Además he agregado un campo para poder borrar a las personas que llevan x tiempo sin acceder a la aplicación.

El “nuevo” modelo es este (y sobre el que voy a trabajar):

  • Usuario(u_id,u_name,u_pass,u_email,u_lastlogin)
  • Perfil(p_id,p_name,p_flastname,p_mlastname,p_nick,p_web,p_image,p_registerdate)
  • Tags(t_id,t_nombre)
  • Bookmarks(b_id,b_url,b_image)
  • AsociacionT(u_id,t_id,d_tag,n_tag)
  • AsociacionB(u_id,b_id,d_book,n_book,name_book)
  • Asociación(u_id,t_id,b_id)

Bueno, no crean que esto lo he dejado como otras cosas que empecé a desarrollar, ayer me puse a diseñar la base de datos para este programa y aquí esta el diseño de entidades-asociaciones:

Modelo entidades-asociaciones de BookmarX (base de datos)

Desarrollado con gliffy, programa web para diagramar hecho con flash (lo recomiendo porque es el único que he usado hasta el momento). Vamos a explicar un poco (no como se hace esto):

  • Como bookmark es muy largo he puesto en vez de bookmark book (para no saturar el modelo).
  • Dentro de la asociación administra tenemos los atributos que empiezan con “des”, esto significa que es la descripción del atributo, en este caso descripción del tag (des-tag) y descripción del bookmark (des-book).
  • Dentro de la misma asociación (administra) tenemos los atributosque inician con new, esto es para identificar si un tag o bookmark se ha añadido recientemente al usuario.
  • El perfil lo separo de usuario porque no quiero saturar la entidad de usuario, además para el login solo tendre que hacer una consulta sobre la entidad (tabla) usuario.

Pero como esto no se puede pasar directamente a un manejador de base de datos, se tiene que hacer una traducción al modelo relacional, así que aquí esta dicha traducción (las negritas indican la llave de la relación):

  • usuario(u_id, u_nombre, u_pass, u_email)
  • perfil(p_id, p_nick, p_web, p_pic, p_nombres, p_ap_p, p_ap_m)
  • tags(t_id, t_nombre)
  • bookmarks(b_id, b_url, b_pic)
  • asociación(u_id, t_id, b_id, des_tag, des_book, new_tag, new_book, nombre_book) perdonen el nombre tan original

Esta es la traducción del modelo, pero hay que normalizar esto (para disminuir la redundancia de datos) y la única relación que se normaliza es ‘asociación’, quedando de la siquiente manera:

  • asociaciontag(u_id, t_id, des_tag, new_tag)
  • asociacionbook(u_id, b_id, des_book, new_book, nombre_book)

Ahora el problema es desarrollar esto mismo para un manejador de base de datos, voy a usar alguno “estandar” con SQL, pero será para mañana.

Después de pensar durante la clase de sistemas operativos acerca de la restricción de BookmarX pasada, resulta que no necesito tener diferentes tipos  de usuarios, ya que no necesariamente van a estar relacionados y para agregar nuevos elementos (tags o bookmarks) primero verificaré si existe y después solo lo relacionare con el usuario que “crea” el nuevo elemento.

Resulta que diseñando la base de datos de esta aplicación web, me ha entrado la duda a la hora de crear nuevos tags y bookmarks, así que aquí estan las especificaciones para esta tarea, lo que inside en la base de datos:

  • Va a ver un administrador (o varios) que determinará (n) sí se acepta o se verifica la creación de un tag o bookmark.
  • Hay dos tipos de usuarios: administradores y colaboradores, donde el administrador tiene las capacidades de crear/eliminar/modificar tags, mientras que los colaboradores tienen que esperar a que el administrador haga válida su modificación (o el administrador configura la aplicación para aceptar cualquier modificación).

Por el momento es todo, pero es algo divertido el diseño (y regresar para afinar cosas).