Está en la página 1de 45

BASE DE DATOS

Lic. Esdras Chuc


x
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
Tipo de datos float(e,d)

float(m,d)

Se puede definir como :


m numero de dígitos
d parte de los dígitos en decimal
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
Tipo de datos float(e,d)

Sueldo float(5,2)
Sueldo float(5,5)

Cuál es el valor máximo que puede tener


Sueldo
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
Tipo de datos float(e,d)
Sueldo float(5,2)

999.99

Sueldo float(5,5)
0.99999
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
Tipo de datos float(e,d)
Sueldo float(5,2)

999.99

Sueldo float(5,5)
0.99999
BASE DE DATOS

Qué es la Integridad
Referencial
BASE DE DATOS

Cliente Venta

IdCliente IdVenta
nombre IdCliente
Cantidad
BASE DE DATOS

Venta
IdVenta
IdCliente
Cantidad

IdCliente en la tabla Venta es


una llave foranea
BASE DE DATOS

Una llave o clave foránea es:

un campo en una tabla


que se corresponde con
la clave primaria de otra tabla.
BASE DE DATOS

Las relaciones de claves foráneas se describen como


relaciones padre/hijo (en nuestro ejemplo, Tabla
Cliente es el padre y tabla Venta es el hijo).
BASE DE DATOS

Ej.

Un registro es huérfano cuando su padre ya no existe.


Es decir que que existen valores que no se encuentran
en el padre.

Cuando en una base de datos se da una situación como


esta, se dice que se tiene una integridad referencial
pobre
BASE DE DATOS
Para este ejemplo:
El campo idCliente en la tabla Venta es la clave
foránea.

El campo idCliente en la tabla Cliente, es la clave


primaria.

Las claves foráneas tienen que ver precisamente


con la integridad referencial, lo que significa que
si una clave foránea contiene un valor, ese valor
se refiere a un registro existente en la tabla
relacionada.
BASE DE DATOS

Si hay registros huerfanos, generalmente esto va


ligado a un mal diseño de la base de datos, y
puede generar otro tipo de problemas, por lo
tanto debemos evitar esta situación siempre que
sea posible.
Llaves foráneas en Mysql

• Una llave foránea, necesita ser definido


como al momento de la creación de una
tabla.

• Se pueden definir claves foráneas en


cualquier tipo de tabla de MySQL

• Se debe usar el motor del tipo InnoDB,


para la creación de una tabla
Llaves foráneas en Mysql

Para consultar los tipos de motores de


almacenamiento, de puede escribir:

show create table <nombre_tabla>;

Ejemplo:

show create table usuarios;


BASE DE DATOS

Cliente CREATE TABLE cliente


(
IdCliente idCliente INT NOT NULL,
nombre nombre VARCHAR(30),
PRIMARY KEY (idCliente)
) ENGINE = INNODB;

Leer más:
BASE DE DATOS

CREATE TABLE venta


Venta
(
idVenta INT NOT NULL,
IdVenta
IdCliente idCliente INT NOT NULL,
Cantidad cantidad INT,
PRIMARY KEY(idVenta)
) ENGINE = INNODB;
BASE DE DATOS
Insertar Registros

Cliente INSERT INTO cliente VALUES(100,'PEDRO ORTEGA');


INSERT INTO cliente VALUES(101,'MARIA GOMEZ');
IdCliente INSERT INTO cliente VALUES(102,'LUZ LOPEZ');
nombre
Leer más:
BASE DE DATOS
Insertar Registros

Venta

INSERT INTO venta VALUES(10, 102, 5);


IdVenta
INSERT INTO venta VALUES(11, 100, 10);
IdCliente
INSERT INTO venta VALUES(12, 103, 3);
Cantidad
INSERT INTO venta VALUES(13, 101, 4);
BASE DE DATOS
Llave foránea
InnoDB entre otras cosas, permite definir
restricciones en las tablas para garantizar
la integridad de los datos.

Para trabajar con claves foráneas:

• Crear ambas tablas del tipo InnoDB.


• Usar la sintaxis FOREIGN
KEY(campo_fk) REFERENCES
nombre_tabla (nombre_campo)
• Crear un índice en el campo que ha
sido declarado clave foránea.
Venta
IdVenta
IdCliente BASE DE DATOS
Cantidad
Llave foránea
CREATE TABLE venta
(
idVenta INT NOT NULL,
idCliente INT NOT NULL,
cantidad INT,
PRIMARY KEY(idVenta),
INDEX (idCliente),
FOREIGN KEY (idCliente) REFERENCES cliente
(idCliente)
) ENGINE = INNODB;
• InnoDB no crea de manera automática índices en las claves
foráneas o en las claves referenciadas
• Se debe crear el index de manera explícita.
Error con el borrado

Que ocurre si borramos un cliente


Venta
IdVenta
IdCliente BASE DE DATOS
Cantidad
Llave foránea
CREATE TABLE venta
(
idVenta INT NOT NULL,
idCliente INT NOT NULL,
cantidad INT,
PRIMARY KEY(idVenta),
INDEX (idCliente),
CONSTRAINT idCliente
FOREIGN KEY (idCliente) REFERENCES cliente
(idCliente)
ON DELETE CASCADE
) ENGINE = INNODB;
BASE DE DATOS
Insertar Registros

Venta
IdVenta INSERT
INSERT
INTO
INTO
venta
venta
VALUES(10,
VALUES(11,
102,
100,
5);
10);
IdCliente INSERT INTO venta VALUES(12, 103, 3);
INSERT INTO venta VALUES(13, 101, 4);
Cantidad

Observa que la inserción está protegida por


integridad para evitar que se ingresen registros
que no se encuentren como llaves primarias de
las otras tablas. Es decir validar las llaves foráneas.
Consideraciones
Consideraciones

• Las columnas o campos correspondientes en las clave


foránea y en la tabla de la llave referenciada deben
tener los mismos tipos de datos para que puedan ser
comparadas sin la necesidad de hacer una conversión
de tipos.

• El tamaño y el signo de los tipos enteros debe ser el


mismo.

• En las columnas de tipo caracter, el tamaño pudiera


variar, pero es mejor que sean del mismo tamaño.
Pero y si la tabla ya fue creada y
tiene datos?
BASE DE DATOS

CREATE TABLE venta


Venta
(
idVenta INT NOT NULL,
IdVenta
IdCliente idCliente INT NOT NULL,
Cantidad cantidad INT,
PRIMARY KEY(idVenta)
) ENGINE = INNODB;
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

Base de datos para un blog

1. Analizar el proceso del blog


2. Proponer las tablas que deben
ser creadas.
3. Analizar las relaciones que
existen entre las tablas
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

1. ANALISIS
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
Analizando
Se requiere diseñar una base de datos relacional para manejo de
inventarios de una tienda.
El inventario contabiliza las cantidades disponibles de productos de
diversos tipos tomados del catálogo de productos que vende la
organización.

Para efectos de inventario se tienen dos tipos de producto:


(1) los productos «serializables» que son productos que se pueden
identificar de manera única (por número de serie asignado por el
fabricante)
(2) los productos «a granel» que no se pueden identificar de manera
única sino por cantidades, por ejemplo 1 Kg de tornillos, o 300
destornilladores.

El inventario se maneja en diversas bodegas y a su vez se contabilizan las


entradas y salidas de inventario para y desde cada bodega.
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
Analizando

Se requiere diseñar una base de datos relacional para manejo de inventarios de una
tienda.
El inventario contabiliza las cantidades disponibles de productos de diversos tipos
tomados del catálogo de productos que vende la organización.

Para efectos de inventario se tienen dos tipos de producto:


(1) los productos «serializables» que son productos que se pueden identificar de
manera única (por número de serie asignado por el fabricante)
(2) los productos «a granel» que no se pueden identificar de manera única sino
por cantidades de alguna unidad de medida; por ejemplo 1 Kg de tornillos, o 300
destornilladores.

El inventario se maneja en diversas bodegas y a su vez se contabilizan diferentes


movimientos como entradas y salidas de inventario para y desde cada bodega.

Una técnica es marcar el enunciado con un color (azul) aquellas partes que describen una entidad
o tabla y con color (verde) aquellas partes que describen una relación y rojo atributos o campos.
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

2. IDENTIFICACION DE
ELEMENTOS
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

Entidades o tablas

1.Catálogo de Producto
2.Tipo de Producto
3.Unidad de Medida
4.Bodega
5.Movimiento
6.Tipo de Movimiento
7.Fabricante
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

Relaciones

Catálogo de Producto >==> Tipo de Producto


Catálogo de Producto >==> Fabricante
Catálogo de Producto >==> Unidad de Medida
Movimiento >==> Tipo de Movimiento (entrada/salida)
Movimiento >==< Bodega
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

Atributos

1.Número de serie
2.Cantidad
3.Nombre del Producto
4.Nombre de Bodega
5.Descripción de Unidad de Medida
6.Tipo de Movimiento
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

Atributos

1.Número de serie
2.Cantidad
3.Nombre del Producto
4.Nombre de Bodega
5.Descripción de Unidad de Medida
6.Nombre de Tipo de Movimiento
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

3. IDENTIFICACION DE
ATRIBUTOS O COLUMNAS
POR TABLAS
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
Tablas
Código de Tipo de Producto
Tipo de Producto
Descripción
Código de Unidad de Medida
Unidad de Medida
Descripción
Código de Fabricante
Fabricante
Nombre
Código de Producto
Descripción
Catálogo de Producto Código de Tipo de Producto
Código de Fabricante
Código de Unidad de Medida

Bodega Código de Bodega


Descripción

Tipo de Movimiento Código de Tipo de Movimiento


Descripción
ID de Movimiento
Código de Bodega
Movimiento Código de Producto
Código de Tipo de Movimiento
Cantidad
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS

4. DIAGRAMA ENTIDAD-
RELACION
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
RECOMENDACIONES PARA
CREAR UNA BASE DE DATOS
BASE DE DATOS

RESTRICCIONES DE
INTEGRIDAD
RESTRICCIONES DE INTEGRIDAD

CREATE TABLE usuarios (


id int(10) not null,
nombre varchar(50) not null,
apellido varchar(50) not null,
correo_e varchar(50) default ‘ejemplo@uno.com’,
password varchar(50)
);
RESTRICCIONES DE INTEGRIDAD

CREATE TABLE usuarios (


id int(10) auto_increment not null,
nombre varchar(50) not null,
apellido varchar(50) not null,
correo_e varchar(50) default ‘ejemplo@uno.com’,
password varchar(50)
CONSTRAINT pk_usuarios PRIMARY KEY(id)
);

También podría gustarte