Sunteți pe pagina 1din 6

ITFIP.

BASE DE DATOS MySQL WORKBENCH

CREACION DE UNA BASE DE DATOS EN MySQL WORKBENCH


Surez Sierra, Miguel. misusibu@hotmail.com ITFIP
Snchez Briez, Fabin. fabian8215@hotmail.com. ITFIP
Abstract MySQL is a popular and widely used because of
its simplicity and outstanding performance database
management system. While it lacks some advanced features
available in other DBMS market is an attractive option for
commercial applications such as entertainment precisely
because of its ease of use and reduced start-up time. This and
its free Internet distribution under the GPL give as (no less
important) additional benefits have a high degree of stability
and rapid development
Key words Database, MySQL, Tables, EER, forward engineer.

INTRODUCCION

s importante el diseo de una base de datos con el objeto


de tener un buen manejo de la informacin que busque
cmo se puede decidir qu relaciones debe tener una base de
datos determinada o qu atributos deben presentar las
relaciones, qu claves primarias y qu claves forneas se
deben declarar.
En el modelo relacional las dos capas de diseo conceptual
y lgico se implementan mediante diagramas de
Entidad/Relacin (modelo conceptual) y tablas y relaciones
entre stas (modelo lgico).

Fig. 1 Creacin del modelo en MySQL Workbench

Paso seguido creamos nuevo diagrama donde se insertaran


las tablas necesarias para establecer las relaciones. En primera
instancia se crea la tabla PRODUCTOS que consta de las
columnas id (primary key), nombre (VARCHAR) y precio
(NUMERIC).

CREACION DEL MODELO TIENDA VIRTUAL


Lo primero que se debe hacer es entender los requerimientos
de diseo de la base de datos.
Para ello se parte de lo siguiente:
Crear una tienda virtual donde se vendern x productos
donde:
-Los productos pueden pertenecer a mltiples categoras.

Fig. 2 Creacin nuevo diagrama y tabla PRODUCTOS

- Los usuarios podrn comprar en la tienda los productos


que deseen y el sistema deber generar las rdenes
respectivas y permitir conocer los datos de envo.

De igual manera se procede con las siguientes tablas:

-Los usuarios solo pueden tener un perfil.

SISTEMA_PAGO: id y nombre (VARCHAR).

-La tienda permitir varios sistemas de pago que se


especificar en la factura.

ORDEN: id, Fecha (DATE), Pais_envio (VARCHAR),


Ciudad_envio
(VARCHAR),
Direccion_envio
(VARCHAR), Telefono (VARCHAR).

-Cada usuario podr ver el historial de sus compras.


Comenzamos con la creacion del nuevo modelo en el
programa MySQL WORKBENCH, el cual llamaremos
TIENDA_ONLINE.

CATEGORIAS: id y nombre (VARCHAR).

ORDEN_DETALLE: id, Producto_nombre (VARCHAR),


Producto_precio (NUMERIC), Cantidad (SMALINT).
PERFIL: id y Nombre (VARCHAR).
USUARIOS: id y nombre (VARCHAR).

Base de Datos

ITFIP. BASE DE DATOS MySQL WORKBENCH


Una vez creadas las tablas se separan en tres layer de
acuerdo a sus caractersticas comunes como se observa en la
siguiente grfica. Donde se tiene el layer de los productos,
el de las rdenes y el de los usuarios.

Fig. 5 Creacin de la base de datos desde el modelo

Fig. 3 Tablas agrupadas en layer

Al establecer las relaciones entre la tablas PRODUCTOS y


CATEGORIAS se encuentra que es de muchos a muchos por
lo tanto es necesario utilizar la relacin de n
m con el
objeto de romper dicha relacin que no es posible en base de
datos relacionales, con ello se crea una tabla intermedia.

Una vez ejecutado Forward Engineer se genera el siguiente


cdigo que crea la base de datos de la tienda online que se
est diseando.
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,
UNIQUE_CHECKS=0;
SET
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CH
ECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATE
S';
------------------------------------------------------ Schema TIENDA_ONLINE
-----------------------------------------------------

Fig. 4 Relacin tablas PRODUCTO CATEGORIAS.

Por otra parte, se establece una relacin de muchos productos


en el detalle de una orden, y de muchos detalles en una orden,
de muchas rdenes para un sistema de pago, muchas rdenes
para un usuario y, por ltimo, un perfil para muchos usuarios.
Ya establecidas las relaciones se pasa a crear la base de datos
desde el diseo por medio de Database-Forward Engineer.

Base de Datos

------------------------------------------------------ Schema TIENDA_ONLINE


----------------------------------------------------CREATE SCHEMA IF NOT EXISTS
`TIENDA_ONLINE` DEFAULT CHARACTER SET
utf8 COLLATE utf8_general_ci ;
USE `TIENDA_ONLINE` ;
------------------------------------------------------ Table `TIENDA_ONLINE`.`PRODUCTO`

ITFIP. BASE DE DATOS MySQL WORKBENCH


----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`PRODUCTO` (
`id_PRODUCTO` INT NOT NULL
AUTO_INCREMENT COMMENT '',
`Nombre` VARCHAR(45) NOT NULL COMMENT
'',
`Precio` DECIMAL(10,0) NOT NULL
COMMENT '',
PRIMARY KEY (`id_PRODUCTO`) COMMENT
'')
ENGINE = InnoDB;
------------------------------------------------------ Table `TIENDA_ONLINE`.`CATEGORIAS`
----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`CATEGORIAS` (
`id_CATEGORIAS` INT NOT NULL
AUTO_INCREMENT COMMENT '',
`Nombre` VARCHAR(45) NULL COMMENT '',
PRIMARY KEY (`id_CATEGORIAS`) COMMENT
'')
ENGINE = InnoDB;
------------------------------------------------------ Table
`TIENDA_ONLINE`.`PRODUCTO_has_CATEGORIAS
`
----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`PRODUCTO_has_CATEGORIAS
` (
`PRODUCTO_id_PRODUCTO` INT NOT NULL
COMMENT '',
`CATEGORIAS_id_CATEGORIAS` INT NOT
NULL COMMENT '',
PRIMARY KEY (`PRODUCTO_id_PRODUCTO`,
`CATEGORIAS_id_CATEGORIAS`) COMMENT '',
INDEX
`fk_PRODUCTO_has_CATEGORIAS_CATEGORIAS1_
idx` (`CATEGORIAS_id_CATEGORIAS` ASC)
COMMENT '',
INDEX
`fk_PRODUCTO_has_CATEGORIAS_PRODUCTO_idx
` (`PRODUCTO_id_PRODUCTO` ASC) COMMENT
'',

Base de Datos

CONSTRAINT
`fk_PRODUCTO_has_CATEGORIAS_PRODUCTO`
FOREIGN KEY (`PRODUCTO_id_PRODUCTO`)
REFERENCES
`TIENDA_ONLINE`.`PRODUCTO`
(`id_PRODUCTO`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT
`fk_PRODUCTO_has_CATEGORIAS_CATEGORIAS1`
FOREIGN KEY
(`CATEGORIAS_id_CATEGORIAS`)
REFERENCES
`TIENDA_ONLINE`.`CATEGORIAS`
(`id_CATEGORIAS`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
------------------------------------------------------ Table `TIENDA_ONLINE`.`PERFIL`
----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`PERFIL` (
`id_PERFIL` INT NOT NULL
AUTO_INCREMENT COMMENT '',
`Nombre` VARCHAR(45) NOT NULL COMMENT
'',
PRIMARY KEY (`id_PERFIL`) COMMENT '')
ENGINE = InnoDB;
------------------------------------------------------ Table `TIENDA_ONLINE`.`USUARIOS`
----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`USUARIOS` (
`id_USUARIOS` INT NOT NULL
AUTO_INCREMENT COMMENT '',
`PERFIL_id_PERFIL` INT NOT NULL
COMMENT '',
`Nombre` VARCHAR(45) NOT NULL COMMENT
'',
PRIMARY KEY (`id_USUARIOS`) COMMENT
'',
INDEX `fk_USUARIOS_PERFIL1_idx`
(`PERFIL_id_PERFIL` ASC) COMMENT '',
CONSTRAINT `fk_USUARIOS_PERFIL1`
FOREIGN KEY (`PERFIL_id_PERFIL`)
REFERENCES `TIENDA_ONLINE`.`PERFIL`
(`id_PERFIL`)

ITFIP. BASE DE DATOS MySQL WORKBENCH


ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
------------------------------------------------------ Table `TIENDA_ONLINE`.`SISTEMA_PAGO`
----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`SISTEMA_PAGO` (
`id_SISTEMA_PAGO` INT NOT NULL
AUTO_INCREMENT COMMENT '',
`Nombre` VARCHAR(45) NOT NULL COMMENT
'',
PRIMARY KEY (`id_SISTEMA_PAGO`)
COMMENT '')
ENGINE = InnoDB;
------------------------------------------------------ Table `TIENDA_ONLINE`.`ORDEN`
----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`ORDEN` (
`id_ORDEN` INT NOT NULL AUTO_INCREMENT
COMMENT '',
`USUARIOS_id_USUARIOS` INT NOT NULL
COMMENT '',
`SISTEMA_PAGO_id_SISTEMA_PAGO` INT NOT
NULL COMMENT '',
`Fecha` DATETIME NOT NULL COMMENT '',
`Pais_envio` VARCHAR(45) NOT NULL
COMMENT '',
`Ciudad_envio` VARCHAR(45) NOT NULL
COMMENT '',
`Direccion_envio` VARCHAR(45) NOT NULL
COMMENT '',
`Telefono_envio` VARCHAR(45) NOT NULL
COMMENT '',
PRIMARY KEY (`id_ORDEN`) COMMENT '',
INDEX `fk_ORDEN_USUARIOS1_idx`
(`USUARIOS_id_USUARIOS` ASC) COMMENT
'',
INDEX `fk_ORDEN_SISTEMA_PAGO1_idx`
(`SISTEMA_PAGO_id_SISTEMA_PAGO` ASC)
COMMENT '',
CONSTRAINT `fk_ORDEN_USUARIOS1`
FOREIGN KEY (`USUARIOS_id_USUARIOS`)
REFERENCES
`TIENDA_ONLINE`.`USUARIOS`
(`id_USUARIOS`)
ON DELETE NO ACTION
Base de Datos

ON UPDATE NO ACTION,
CONSTRAINT `fk_ORDEN_SISTEMA_PAGO1`
FOREIGN KEY
(`SISTEMA_PAGO_id_SISTEMA_PAGO`)
REFERENCES
`TIENDA_ONLINE`.`SISTEMA_PAGO`
(`id_SISTEMA_PAGO`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
------------------------------------------------------ Table `TIENDA_ONLINE`.`ORDEN_DETALLE`
----------------------------------------------------CREATE TABLE IF NOT EXISTS
`TIENDA_ONLINE`.`ORDEN_DETALLE` (
`id_ORDEN_DETALLE` INT NOT NULL
AUTO_INCREMENT COMMENT '',
`ORDEN_id_ORDEN` INT NOT NULL COMMENT
'',
`PRODUCTO_id_PRODUCTO` INT NOT NULL
COMMENT '',
`Producto_nombre` VARCHAR(45) NOT NULL
COMMENT '',
`Producto_precio` DECIMAL(10,0) NOT
NULL COMMENT '',
`Cantidad` SMALLINT NOT NULL COMMENT
'',
PRIMARY KEY (`id_ORDEN_DETALLE`)
COMMENT '',
INDEX `fk_ORDEN_DETALLE_ORDEN1_idx`
(`ORDEN_id_ORDEN` ASC) COMMENT '',
INDEX `fk_ORDEN_DETALLE_PRODUCTO1_idx`
(`PRODUCTO_id_PRODUCTO` ASC) COMMENT
'',
CONSTRAINT `fk_ORDEN_DETALLE_ORDEN1`
FOREIGN KEY (`ORDEN_id_ORDEN`)
REFERENCES `TIENDA_ONLINE`.`ORDEN`
(`id_ORDEN`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT
`fk_ORDEN_DETALLE_PRODUCTO1`
FOREIGN KEY (`PRODUCTO_id_PRODUCTO`)
REFERENCES
`TIENDA_ONLINE`.`PRODUCTO`
(`id_PRODUCTO`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;

ITFIP. BASE DE DATOS MySQL WORKBENCH


SET
FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHEC
KS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Fig. 7 Seleccin de la base de datos

------------------------------------------------------ Data for table


`TIENDA_ONLINE`.`PERFIL`
----------------------------------------------------START TRANSACTION;
USE `TIENDA_ONLINE`;
INSERT INTO `TIENDA_ONLINE`.`PERFIL`
(`id_PERFIL`, `Nombre`) VALUES (DEFAULT,
'Usaurio Registrado');
INSERT INTO `TIENDA_ONLINE`.`PERFIL`
(`id_PERFIL`, `Nombre`) VALUES (DEFAULT,
'Administrador');

Con el fin de comprobar que se crearon las tablas estipuladas


en el diseo se ejecuta show tables.

COMMIT;
Fig.8 Verificar tablas de la base de datos

Ahora podemos comprobar que la base de datos fue creada


ingresando a Local Instance MySQL y ejecutando el comando
Show databases.

A continuacin vamos a ingresar informacin a cada una de


las tablas por medio del siguiente cdigo select * from
(nombre de la tabla a manipular).

Fig. 6 Mostrar bases de datos disponibles

Fig.9 Ingresar informacin a las tablas

Ahora procedemos a ingresar informacin a la base de datos


para ello es necesario ejecutar use tienda_online.

id_CATEGORIAS,Nombre
100,Zapatos
200,"Ropa deportiva"
300,"Ropa casual"
400,"Ropa elegante"
500,Joyas
600,Bolsos
id_PRODUCTO,Nombre,Precio
110,Botas,133900
120,Mocasines,99900
130,Sandalias,64900
id_SISTEMA_PAGO,Nombre
10,Efectivo
20,"Tarjeta debito"
30,"Tarjeta credito"

Base de Datos

ITFIP. BASE DE DATOS MySQL WORKBENCH


40,Sodexo
id_SISTEMA_PAGO,Nombre
10,Efectivo
20,"Tarjeta debito"
30,"Tarjeta credito"
40,Sodexo
id_PERFIL,Nombre
1,"Usuario Registrado"
2,Administrador
id_USUARIOS,PERFIL_id_PERFIL,Nombre
123456,1,"Carlos Gonzalez"
135791,2,"Oscara Prada"
147036,2,"Manuel Saenz"

Fig.10 Actualizacin de la informacin en las tablas

Una vez realizados todos los pasos anteriores ya se dispone


de la informacin para realizar cualquier operacin requerida
como es el caso de las consultas.

id_ORDEN_DETALLE,ORDEN_id_ORDEN,PRODUCTO_id_PRODUCTO ,

Producto_nombre,Producto_precio,Cantidad
55555,10000,110,Botas,133900,1
66666,10040,120,Mocasines,99900,1
77777,11030,130,Sandalias,64900,1

Una vez se verificada la informacin digitada damos click


en el botn aplicar para guardar la informacin
desplegndose una ventana con el cdigo generado.

CONCLUSIONES
Establecemos los principios que rigen el diseo de bases de
datos relacionales.
Identificamos los pasos a seguir en la construccin de la
base de datos.
Reconocemos la importancia de organizar la informacin
con el fin de obtener una base de datos que pueda ser
manejada fcilmente.
LITOGRAFIA
[1]Manual MySQL
[2]Manual Workwench

Base de Datos

S-ar putea să vă placă și