Modelo de la BD Crear Sistema de Notas PHP MySQL Lec 2

Bienvenidos a la leccion 2 del curso crear un sistema de notas con PHP y MySQL, en esta leccion vamos a ver el modelo de la base de datos.

Ir a Leccion 1 del Curso crear un sistema de Notas con PHP y MySQL

El sistema de notas que vamos a desarrollar en este curso va a tener las siguientes caracteristicas.

  • Los usuarios usuario va a poder iniciar y cerrar sesion
  • Los usuarios van a poder crear categorias para organizar las notas.
  • Para crear notas se va a guardar el titulo , contenido, id de categoria, id del usuario que crea la nota, fecha de creacion automatica.
  • Vamos a tener la posibilidad de agregar multiples imagenes a las notas.
  • Vamos a tener la posibilidad de agregarle comentarios a las notas se va a agregar el comentario, id del usuario que comenta y fecha de creacion automatica.
  • Debe haber un modulo para agregar, editar y eliminar los usuarios.

Ya definimos las funcionalidades que va a tener nuestro proyecto ahora vamos a expresarlo en tablas SQL para estructurar los datos que se van a almacenar.

Vamos a definir de una vez que el proyecto y la base de datos se llamara sysnotas asi sabemos sobre que trata el proyecto, ustedes si quieres lo pueden crear con el nombre que quieran.

El siguiente diagrama entidad-relación ilustra la estructura y las conexiones de la base de datos.

Tabla de Usuarios

Para la tabla de usuarios llamada “user” vamos a tener los siguientes campos.

  • id – esta es la llave principal y se genera automaticamente
  • name – es el nombre del usuario
  • lastname – el apellido del usuario
  • username – el nombre de usuario con el que va a acceder al sistema
  • password – la contraseña de acceso
  • is_active – un status para saber si esta activo o no
  • rol – los usuarios administradores tendran rol=1 y los otros usuarios rol=2
  • created_at – la fecha y hora de creacion, se asigna automaticamente con current_timestamp
create table user(
    id int not null auto_increment primary key,
    name varchar(255),
    lastname varchar(255),
    username varchar(255),
    password varchar(60),
    is_active int not null default 1,
    rol int not null default 1,
    created_at datetime default current_timestamp
);

insert into admin (name,  username, password) values ("Admin", "admin", sha1(md5("1234")));

Nota: Como pueden ver no vamos a ocupar el campo email, no lo agregamos pero si ustedes lo quieren agregar lo pueden hacer.

Tabla de Categorias

La tabla de categorias es para organizar nuestras notas, cuenta con los siguientes campos.

  • id – Llave primaria se genera automaticamente
  • name – Nombre de la categoria
  • description – Descripcion breve de la categoria
create table category(
    id int not null auto_increment primary key,
    name varchar(255),
    description varchar(1000)
);

Tabla de Notas

La tabla notas es la entidad principal de este proyecto y esta directamente relacionada con categorias y usuarios.

  • id – Llave principal automatica
  • title – Titulo de la nota
  • content – Contenido de la nota
  • category_id – Id de la categoria de la nota, es opcional
  • user_id – Id del usuario que crea la nota este si es obligatorio y se tomara automatico de la sesion
  • created_at – Fecha de creacion se genera automaticamente
create table note(
    id int not null auto_increment primary key,
    title varchar(255),
    content text,
    category_id int,
    user_id int not null,
    created_at datetime default current_timestamp,
    foreign key (category_id) references category(id),
    foreign key (user_id) references user(id)
);

Y las ultimas 2 lines son la referencias a las tablas usuario y categoria que estan conectadas al id de cada tabla.

Tabla de Comentarios

Las notas van a poder tener varios comentarios, para la tabla de comentarios van a servir para crear discusion entre los usuarios, los campos son.

  • id – Automatico
  • content – Contenido del comentario
  • user_id – Id del usuario que crea el comentario
  • note_id – Id de la nota asociada al comentario
  • created_at – Fecha de creacion automatica del comentario
create table comment(
    id int not null auto_increment primary key,
    content varchar(1000),
    user_id int not null,
    note_id int not null,
    created_at datetime default current_timestamp,
    foreign key (note_id) references note(id),
    foreign key (user_id) references user(id)
);

Los foreign keys o llaves foranes note_id apunta al id de la tabla notas y user_id apunta al id de la tabla usuarios.

Tabla de imagenes

Sera posible que las notas tengan muchas imagenes, estas solo las va a agregar el usuario que dio de alta a la nota.

Los campos son:

  • id – Automatico
  • image – Nombre del archivo de la imagen almacenada
  • content – Descripcion breve de la imagen
  • note_id – Id de la nota a la que esta asociada la imagen
  • created_at – Fecha de creacion automatica

Y finalizamos con la llave foranea para referir el campo note_id al id de la tabla notas.

create table image(
    id int not null auto_increment primary key,
    image varchar(255),
    content varchar(255)
    note_id int not null,
    created_at datetime default current_timestamp,
    foreign key (note_id) references note(id)
);

Conclusión

Ya tenemos el modelo de base de datos del cual vamos a partir para empezar a crear los formularios, las acciones, tenemos una estructura de base de datos completa y cumple con los requerimientos que describimos en un inicio.

Te puede interesar: Yibun Max – Sistema de Notas, Tareas por hacer y Finanzas

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