En este articulo les mostrare el modelo de la base de datos y les explicare las tablas.
La clase de hoy verán el modelo de base de datos que utilizaremos y que poco a poco le iremos dando forma.
Diagrama de la base de datos
Este es la imagen del modelo entidad relación.
En el diagrama de la base de datos se puede ver como están relacionadas las tablas entre si.
Para hacer el diagrama use el programa “MySQL Workbench”
Codigo SQL
El archivo de base de datos sera el archivo schema.sql
[code language=”sql”]create database heytodo;
use heytodo;
create table user(
id int not null auto_increment primary key,
name varchar(50),
lastname varchar(50),
username varchar(50),
email varchar(255),
password varchar(60),
image varchar(255),
status int default 1,
kind int default 1,
created_at datetime
);
/**
* password: encrypted using sha1(md5("mypassword"))
* status: 1. active, 2. inactive, 3. other, …
* kind: 1. root, 2. other, …
**/
/* insert user example */
insert into user (name,username,password,created_at) value ("Administrator","admin",sha1(md5("admin")),NOW());
create table project(
id int not null auto_increment primary key,
name varchar(50),
created_by int,
foreign key (created_by) references user(id)
);
create table task(
id int not null auto_increment primary key,
title varchar(255),
description text,
finish_limit date,
status int default 0,
project_id int,
created_by int,
created_at datetime,
foreign key (project_id) references project(id),
foreign key (created_by) references user(id)
);
create table invite(
id int not null auto_increment primary key,
project_id int not null,
invited_id int not null,
permision int, /* 1. admin, 2. participe */
foreign key (project_id) references project(id),
foreign key (invited_id) references user(id)
);
create table comment(
id int not null auto_increment primary key,
comment text,
task_id int not null,
created_by int,
created_at datetime,
foreign key (task_id) references task(id),
foreign key (created_by) references user(id)
);
create table notification(
id int not null auto_increment primary key,
kind int, /* 1. new comment */
description text,
task_id int,
project_id int,
user_receptor int,
user_emisor int,
created_at datetime,
foreign key (task_id) references task(id),
foreign key (project_id) references project(id),
foreign key (user_receptor) references user(id),
foreign key (user_emisor) references user(id)
);
[/code]
Sin mas que decir el codigo SQL es el que servira para crear las tablas en nuestro servidor MySQL, tambien les puede servir en caso de que quieran traducir el codigo SQL a otros motores como SQLserver o MongoDB.
Descripcion de las Tablas
Y ahora hablemos de las tablas.
Tabla user
Sirve para almacenar los usuarios que interactuaran con el sistema.
- id: Identificador auto incremental
- name: el nombre del usuario
- lastname: los apellidos del usuario
- username: el nombre de usuario que se usara para iniciar sesion
- email: el email que se usara para iniciar sesion o enviar notificaciones
- password: la contrase~a que se utilizara para iniciar sesion y proteger su cuenta
- image: imagen de perfil del usuario
- status: estado de actividad del usuario
- kind: tipo de usuario
- created_at: fecha en la que se crea el usuario se usa la funcion NOW()
Tabla project
Sirve para organizar los proyectos de los usuarios
- id: identificador auto incremental
- name: nombre del proyecto
- created_by: id del usuario que crea el proyecto
Tabla task
Sirve para guardar las tareas y su informacion
- id: identificador auto incremental
- title: titulo de la tarea que se mostrara normalmente
- description: descripcion mas detallada sobre la tarea (opcional)
- finish_limit: fecha limite para finalizar la tarea
- status: estado de la tarea, normalmente sera 0. pendiente, 1. finalizada
- project_id: id del proyecto al cual este relacionada la tarea
- created_by: id del usuario que crea la tarea
- created_at: fecha en la que se crea la tarea, se usara la funcion NOW() para tomar la fecha actual
Tabla invite
Sirve para relacionar los proyecto con uno o varios usuarios que tendran permisos para administrar o solo ver las tareas del proyecto
- id: identificador auto incremental
- project_id: identificador del proyecto al cual se invita al usuario
- invited_id: identificador del usuario que se invita al proyecto
- permision: tipo de permiso del usuario, 1. administrar, 2. solo ver
Tabla comment
Sirve para agregar comentarios en las tareas
- id: identificador autoincremental
- comment: contenido del comentario agregado por el usuario
- task_id: identificador de la tarea a la cual se hace el comentario
- created_by: identificador del usuario que realiza el comentario
- created_at: fecha en la que se hace el comentario
Tabla notification
Sirve para guardar las notificaciones
- id: identificador auto incremental
- kind: tipo de notificacion
- task_id: identificador de la tarea relacionada a la notificacion
- project_id: identificador del proyecto relacionado a la notificacion
- user_receptor: Usuario que recibe la notificacion
- user_emisor: Usuario que emite la notificacion
- status: estado de lectura de la notificacion
- created_at: fecha en la que se crea la notifiacion
Conclusion
Hasta aqui terminamos esta leccion con la informacion necesaria para empezar con la base de datos del sistema HeyTodo.
Les invito a que me sigan en mis redes sociales:
- Youtube: https://www.youtube.com/user/evilnapsis
- Facebook: https://www.facebook.com/iamevilnapsis
- Github: https://github.com/evilnapsis
- Donacion $7USD: https://www.paypal.me/evilnapsis/7usd
Tambien les invito a que se suscriban a este blog para que reciban notificaciones de articulos nuevos.
Por ultimo pero no menos importante les invito a que nos apoyen en este proyecto haciendo una donacion por 7usd a cambio de recibir las lecciones extra del modo administrador, envio de emails, generacion de reportes y mucho mas.