Este sitio usa cookies, propias y de terceros.
Si se continúa con nosotros entendemos que se acepta nuestro uso de cookies.

  • Este sitio usa cookies. Para continuar usando este sitio, se debe aceptar nuestro uso de cookies. Más información.

SQL Base de datos MySQL para un foro de debate

La primer comunidad de usuarios inclusiva de Linux en español. Todo lo que linux tiene para vos encontralo acá.

Pato

Lic. Desarrolo de Software
Miembro del equipo
Administrador
Moderador
9 May 2018
142
31
Argentina, Buenos Aires
www.latinlinux.com
Distro
Manjaro, Mint, Kubuntu
Correo
joaquin.decima@gmail.com
Telegram
@PatoJAD
#1
¿Andas buscando un script MySQL para integrar un foro de debate en tu aplicación PHP? ¡Pues bienvenido/a! Precisamente he puesto como título de esta entrada la típica frase que buscaría en Google o en Bing alguien como tú, que necesita algún snippet de código para crear su propio foro.


Estimado internauta, espero que me hayas encontrado. He pensado en poblar este post con palabras clave intentando hacer un esfuerzo por comprender qué palabras usarías, en qué contexto las escribirías y cómo las teclearías. Pero ahora mismo no tengo muchas ganas de hacer eso ni dispongo del tiempo necesario para ello, así que iré al grano.

Hoy comparto una sencilla base de datos que te ayudará a tomar algunas ideas para crear la tuya propia en tu app PHP, en Python o en cualquier otro lenguaje que pueda comunicarse con una BBDD MySQL.


SQL:
CREATE DATABASE my_forum;
 
USE my_forum;
 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATETEMPORARY TABLES
ON my_forum.* TO 'my_forum_user'@'localhost' IDENTIFIED BY 'password';
 
CREATE TABLE users (
    id mediumint UNSIGNED NOT NULL AUTO_INCREMENT,
    login VARCHAR(64) NOT NULL,
    email VARCHAR(128) NOT NULL,
    password VARCHAR(70) NOT NULL,
    remember_token VARCHAR(100) DEFAULT NULL, # Required by Eloquent
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent   
    PRIMARY KEY (id)   
) ENGINE=InnoDB;
 
CREATE TABLE forums (
    id tinyint UNSIGNED NOT NULL AUTO_INCREMENT,
    title varchar(128) NOT NULL,
    seo_title varchar(128) NOT NULL,
    description TEXT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent
    trash tinyint(1) DEFAULT 0 NOT NULL,
    removed tinyint(1) DEFAULT 0 NOT NULL,
    id_user mediumint UNSIGNED NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (id_user) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB;
 
CREATE TABLE topics (
    id mediumint UNSIGNED NOT NULL AUTO_INCREMENT,
    title varchar(128) NOT NULL,
    seo_title varchar(128) NOT NULL,
    content TEXT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent
    trash tinyint(1) DEFAULT 0 NOT NULL,
    removed tinyint(1) DEFAULT 0 NOT NULL,
    id_forum tinyint UNSIGNED NOT NULL,
    id_user mediumint UNSIGNED NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (id_forum) REFERENCES forums(id) ON DELETE CASCADE,
    FOREIGN KEY (id_user) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB;
 
CREATE TABLE replies (
    id mediumint UNSIGNED NOT NULL AUTO_INCREMENT,
    content TEXT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, # Required by Eloquent
    trash tinyint(1) DEFAULT 0 NOT NULL,
    removed tinyint(1) DEFAULT 0 NOT NULL,
    id_topic mediumint UNSIGNED NULL,
    id_user mediumint UNSIGNED NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (id_topic) REFERENCES topics(id) ON DELETE CASCADE,
    FOREIGN KEY (id_user) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB;
Como ves, hay algunos apuntes que hacen referencia al ORM Eloquent porque este script está tomado de una aplicación construida sobre Laravel, el conocido framework para PHP, pero no te preocupes por esos detalles; en realidad podrás utilizar este script casi en cualquier app web.

Diagrama EER