Ticker

6/recent/ticker-posts

Base de datos para un sistema de gestión de contenidos


En este tutorial práctico desarrollaremos una base de datos para la configuración y administración de un sistema de gestión de contenidos o también conocido por las siglas en inglés como CMS (content management system).

Requisitos:

  1. XAMPP v3.3.0.
  2. phpMyAdmin.
  3. MariaDB.


Lo que veremos en este tutorial:

  1. ¿Qué es un sistema de gestión de contenidos?
  2. Crear la Base de Datos.
  3. Crear las principales tablas.
  4. Modelo de Base de Datos.
  5. Insertar registros principales.
  6. Conclusiones y Referencias.


1. ¿Qué es un sistema de gestión de contenidos?

Un CMS cuenta con una interfaz que normalmente controla una o varias bases de datos donde se aloja el contenido del sitio web. El sistema permite manejar de manera independiente el contenido y el diseño. Así, es posible manejar el contenido y darle en cualquier momento un diseño distinto al sitio web sin tener que darle formato al contenido de nuevo.

Un CMS permite crear y administrar un entorno de trabajo de contenidos, principalmente orientadas a páginas web, usualmente el contenido es gestionado desde un editor de texto administrable.

2. Crear la Base de Datos.

Crea la base de datos con el nombre de cmswebpage desde el Workbench o phpMyAdmin, seguidamente crea las tablas detalladas en el punto 3.

1
2
3
4
CREATE SCHEMA IF NOT EXISTS `cmswebpage` 
    DEFAULT CHARACTER SET utf16 COLLATE utf16_spanish_ci ;

USE `cmswebpage` ;

3. Crear las principales tablas.

En la tabla pagetypes se almacena los registros con relación al tipo de página que se predente administrar desde el sistema de gestión de contenidos; por ejemplo página de aterrizaje o destino, página web o sitios web; recordemos que una página web es una parte de un sitio web; y un sitio web es un grupo de páginas web.

1
2
3
4
5
6
7
8
9
CREATE TABLE pagetypes
(
    pagetypes_id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    pagetypes_name VARCHAR(100) NOT NULL,    
    creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    update_date DATETIME NULL,
    creation_user VARCHAR(50) NOT NULL,
    update_user VARCHAR(50) NULL
) ENGINE = InnoDB;

En la tabla webapplication se almacena el nombre y detalle en relación a la página web o sitio web; por ejemplo: Como nombre "Blog de Hadsonpar" y detalles "Sitio Web para publicar y administrar articulos y tutoriales de programación, base de datos, arquitectura e interligencia articial".

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
CREATE TABLE webapplication
(
    webapplication_code CHAR(11) NOT NULL,
    webapplication_name VARCHAR(100) NOT NULL,
    webapplication_details TEXT NOT NULL DEFAULT 'details web application',
    creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    update_date DATETIME NULL,
    creation_user VARCHAR(50) NOT NULL,
    update_user VARCHAR(50) NULL,
    pagetypes_id INT(11) NOT NULL,
    CONSTRAINT webapplication_pk PRIMARY KEY (webapplication_code)
) ENGINE = InnoDB;

ALTER TABLE webapplication ADD CONSTRAINT `webapplication_fk` 
    FOREIGN KEY (pagetypes_id) REFERENCES pagetypes (pagetypes_id);

La tabla weboption es el encargado de almacenar las opciones "navegación de página web o nenú de navegación" de nuestra página web o sitio web; por ejemplo: Inicio, Nosotros, Servicios o Productos, Blog y Contacto.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
CREATE TABLE weboption
(
    weboption_id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    weboption_name VARCHAR(100) NOT NULL,
    weboption_link TEXT NOT NULL DEFAULT 'home',
    weboption_details TEXT NOT NULL DEFAULT 'details web option',
    weboption_icon VARCHAR(200) NULL,    
    creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    update_date DATETIME NULL,
    creation_user VARCHAR(50) NOT NULL,
    update_user VARCHAR(50) NULL,     
    webapplication_code CHAR(11) NOT NULL
) ENGINE = InnoDB;

ALTER TABLE weboption ADD CONSTRAINT `weboption_fk` 
    FOREIGN KEY (webapplication_code) REFERENCES webapplication (webapplication_code);

La tabla websuboption es el encargado de almacenar las sub opciones que puedan tener las principales opciones; por ejemplo: La principal opción de Servicios puede esta conforomada por las sub opciones de Desarrollo Web, Desarrollo para Móviles y Consultoria TI, es decir servicios esta conformada por 3 sub opciones.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
CREATE TABLE websuboption
(
    websuboption_id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    websuboption_name VARCHAR(100) NOT NULL,
    websuboption_link TEXT NOT NULL DEFAULT 'page',
    websuboption_details TEXT NOT NULL DEFAULT 'details web sub option',
    websuboption_icon VARCHAR(200) NULL,
    creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    update_date DATETIME NULL,
    creation_user VARCHAR(50) NOT NULL,
    update_user VARCHAR(50) NULL,     
    weboption_id INT(11) NOT NULL
) ENGINE = InnoDB;

ALTER TABLE websuboption ADD CONSTRAINT `websuboption_fk` 
    FOREIGN KEY (weboption_id) REFERENCES weboption (weboption_id) 
    ON DELETE CASCADE
    ON UPDATE RESTRICT;

Finalmente en la tabla websection se almacena el bloque de contenido de cada opción que la conforma; por ejemplo: La principal opción de Inicio puede estar conformada por las secciones de slider y welcome o notice, donde el slider puede mostrar las principales fotografías de la empresa (negocio o emprendimiento), welcome puede establecer un mensaje de bienvenida hacia el a la página web o sitio web y notice puede mostrar los ultimas novedades con relación a la empresa.


Recuerda que al mencionar opciones nos referimos a la navegación de página web o nenú de navegación.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TABLE websection
(
    websection_id INT(3) NOT NULL,
    websection_code INT(10) NOT NULL,
    websection_name VARCHAR(100) NOT NULL,
    websection_title TEXT NOT NULL,
    websection_subtitle TEXT NULL,    
    websection_details TEXT NULL,
    websection_image_url TEXT NULL,
    websection_button_url TEXT NULL,
    websection_button_text VARCHAR(100) NULL,
    active TINYINT(1) DEFAULT 1,
    creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    update_date DATETIME NULL,
    creation_user VARCHAR(50) NOT NULL,
    update_user VARCHAR(50) NULL,
    webapplication_code CHAR(11) NOT NULL,
    CONSTRAINT websection_pk PRIMARY KEY (websection_id, websection_code)
) ENGINE = InnoDB;

ALTER TABLE websection ADD CONSTRAINT `websection_fk`
    FOREIGN KEY (webapplication_code) REFERENCES webapplication (webapplication_code);

Alterar las tablas websuboption, weboption y webapplication para agregar el campo de estado activo (1) o inactivo (0).

1
2
3
ALTER TABLE websuboption ADD active TINYINT(1) DEFAULT 1 AFTER websuboption_icon;
ALTER TABLE weboption ADD active TINYINT(1) DEFAULT 1 AFTER weboption_icon;
ALTER TABLE webapplication ADD active TINYINT(1) DEFAULT 1 AFTER webapplication_details;

4. Modelo de Base de Datos.

El modelo de base de datos generado desde phpMyAdmin es con relación a la versión inicial del CMS, esta de mas mencionar, que a lo largo del desarrollo del CMS iremos haciendo adecuaciones, sin embargo, es base para iniciar con el desarrollo de una Base de datos para un sistema de gestión de contenidos.

Modelo de base de datos inicial del CMS generado con phpMyAdmin 


5. Insertar registros principales.

Sentencia SQL para insertar los principales registro con relación a nuestra base de datos para nuestros sistema de gestión de contenidos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* data insert: pagetypes table*/
INSERT INTO `pagetypes` (`pagetypes_name`, `creation_user`) VALUES ('Landing Page', '1');
INSERT INTO `pagetypes` (`pagetypes_name`, `creation_user`) VALUES ('Web Page', '1');
INSERT INTO `pagetypes` (`pagetypes_name`, `creation_user`) VALUES ('Web Site', '1');
INSERT INTO `pagetypes` (`pagetypes_name`, `creation_user`) VALUES ('Web Application', '1');

/* data insert: webapplication table*/
INSERT INTO `webapplication` (`webapplication_code`, `webapplication_name`, `webapplication_details`, `creation_user`, `pagetypes_id`) 
    VALUES ('WA000000001', 'Hadsonpar', 'details web application', '1', '2');
INSERT INTO `webapplication` (`webapplication_code`, `webapplication_name`, `webapplication_details`, `creation_user`, `pagetypes_id`) 
    VALUES ('WS000000001', 'Askella Stores', 'details web application', '1', '3');
INSERT INTO `webapplication` (`webapplication_code`, `webapplication_name`, `webapplication_details`, `creation_user`, `pagetypes_id`) 
    VALUES ('WP000000001', 'APP Diabetes', 'details web application', '1', '1');
INSERT INTO `webapplication` (`webapplication_code`, `webapplication_name`, `webapplication_details`, `creation_user`, `pagetypes_id`) 
    VALUES ('WS000000002', 'Smart Academy', 'details web application', '1', '3');

/* data insert: weboption table*/
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('Home', 'home', '1', 'WA000000001');
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('About', 'about', '1', 'WA000000001');
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('Services', 'services', '1', 'WA000000001');
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('Portfolio', 'portfolio', '1', 'WA000000001');
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('Team', 'team', '1', 'WA000000001');
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('About', 'about', '1', 'WA000000001');
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('Blog', 'blog', '1', 'WA000000001');
INSERT INTO `weboption` (`weboption_name`, `weboption_link`, `creation_user`, `webapplication_code`) 
    VALUES ('Contact', 'contact', '1', 'WA000000001');

/* data insert: websection table*/
INSERT INTO `websection` (`websection_id`, `websection_code`, `websection_name`, `websection_title`, `websection_subtitle`, 
                            `websection_details`, `websection_image_url`, `websection_button_url`, `websection_button_text`, 
                            `active`, `creation_date`, `update_date`, `creation_user`, `update_user`, `webapplication_code`) 
VALUES ('1', '11', 'hero', 'We offer modern solutions for growing your business.', 'We are team of talented designers making websites with Bootstrap.', 
        NULL, NULL, 'about', 'Get Started', '1', current_timestamp(), NULL, '1', NULL, 'WA000000001');

6. Conclusiones y Referencias.

Conclusiones:

Crearmos la base de datos y principales tables con relación a la base de datos para un sistema de gestión de contenidos; asimismo, generamos una vista de modelo de la base de datos creada y finalmente creamos el script para insertar los principales registro.

Este tutorial práctico es parte de la series de Crea tu Sistema de Gestión de Contenidos (CMS) con MariaDB, PHP y Bootstrap.

Referencias:


El script se encuentra en el directorio DBCMS

Gracias nuevamente 😊 comentarios y apreciaciones son bienvenido, un fuerte abrazo para todos ✌...!!!

Publicar un comentario

0 Comentarios