Modelo base de datos Sistema Tareas por Hacer

Este es un modelo para gestionar lista de cosas por hacer usando estados y prioridades, etiquetas y usuarios para un mejor manejo del sistema.

ListHub es un proyecto de gestion de tareas que desarrolle hace unos años, la idea es ser simple y gestionar todo en una misma pantalla, use javascript y ajax para hacerlo funcionar con backend en PHP, veamos su modelo de base de datos.

Este modelo de base de datos es parte de mi Directorio Maestro de Modelos de Bases de Datos.

El modelo de base de datos es simple y consta de 6 tablas.

  • priority: Tabla para manejar las prioridades, baja , media, alta
  • prokect: Tabla para manejar los proyectos
  • tag: Tabla para manejar las etiquetas
  • task: Tabla de tareas
  • user: Tabla de usuarios

Como ven las tablas son faciles y ahora veamos la explicacion de cada tabla.

Priority

La tabla priority tiene 4 campos, el id que es la llave primaria, name: el nombre de la prioridad, color: un color para la prioridad, imagen: una imagen pero esta es opcional y no se usa en el sistema original.

create table priority (
	id int not null auto_increment primary key,
	name varchar(200) not null,
	color varchar(200),
	image varchar(200)
);

Project

La tabla project ya tiene mas campos, id, name, color, image tienen la misma funcion que en priority, el campo description: es la descripcion del proyecto, user_id: es el campo que se relaciona con el usuario que crea el proyecto, created_at: es la fecha de creacion del proyecto.

create table project (
	id int not null auto_increment primary key,
	name varchar(200) not null,
	description varchar(5000) not null,
	color varchar(500),
	image varchar(500),
	user_id int not null,
	created_at datetime not null,
	foreign key (user_id) references user(id)
);

Tag

La tabla tag sirve para manejar etiquetas en los proyectos, las etiquetas las gestiona el usuario.

El campo id es la llave primaria, el campo name: es el nombre de la etiqueta, el campo project_id es para hacer referencia al id del proyecto relacionado y el campo created_at para la fecha de creacion.

create table tag(
	id int not null auto_increment primary key,
	name varchar(200) not null,
	project_id int not null,
	created_at datetime not null,
	foreign key (project_id) references project(id)
);

Task

La tabla task es la tabla principal del sistema ya que las tareas o cosas por hacer son las que se guardan.

El campo id es la llave primaria, el campo name es el nombre de la tarea, el campo description es una descripcion mas larga, el campo start_at es la fecha inicial de la tarea y finish_at la fecha final, project_id es el id del proyecto relacionado, priority_id es la prioridad del proyecto, user_id es el usuario que crea la tarea, is_finish es el check de que la tarea esta finalizada, created_at es la fecha de creacion.

create table task (
	id int not null auto_increment primary key,
	name varchar(200) not null,
	description varchar(5000) not null,
	start_at varchar(5000) not null,
	finish_at varchar(5000) not null,
	project_id int not null,
	priority_id int not null,
        user_id int not null,
	is_finish boolean not null default 0,
	created_at datetime not null,
	foreign key (user_id) references user(id),
	foreign key (project_id) references project(id),
	foreign key (priority_id) references priority(id)
);

Task_tag

La tabla task_tag relaciona una tarea con una etiqueta, dando la posibilidad de que una tarea tenga varias etiquetas.}

create table task_tag(
	task_id int not null,
	tag_id int not null,
	foreign key (task_id) references task(id),
	foreign key (tag_id) references tag(id)
);

Aqui les dejo el enlace para ver ListHub Sistema de cosas por hacer v2.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Evilnapsis

Subscribe now to keep reading and get access to the full archive.

Continue reading