AXEL AMAVIZCA
Estudiante en TI
BASE DE DATOS
MYSQL
ÍNDICE
TEMA
¿Qué es una base de datos?.
Modelo de datos.
Lenguaje SQL.
Base de datos relacional .
Diagramas Entidad-Relación.
Esquema E-R a relacional.
Normalización.
MYSQL.
PÁGINA
3
4
6
7
15
20
26
32
¿Qué es una base de datos?
Las bases de datos son estructuras
organizadas de datos relacionados
entre sí que nos permiten obtener,
eventualmente, información actualizada
acerca de una organización.
El propósito de una base de datos
es ayudar a las personas a dar
seguimiento a las cosas.
Un sistema gestor de bases de datos (SGBD) consiste en
una colección de datos interrelacionados y un conjunto de
programas para acceder a dichos datos. La colección de
datos, normalmente denominada base de datos, contiene
información relevante para una empresa.
Los sistemas de bases de datos se diseñan para gestionar
grandes cantidades de información. La gestión de los datos
implica tanto la definición de estructuras para almacenar la
información como la provisión de mecanismos para la
manipulación de la información.
La idea primaria de los sistemas informáticos es
poder plasmar, a través de diferentes herramientas,
situaciones del mundo real. Para traspasar la
realidad de una situación en concreto a una base de
datos. Una estas herramientas es el modelo de
datos, que permite describir de modo abstracto en
qué forma se van almacenar y a recuperar la
información existente en una base.
El modelo relacional usa una colección de tablas para
representar tanto los datos como sus relaciones. Cada
tabla tiene varias columnas, y cada columna tiene un
nombre único. El modelo relacional es un ejemplo de
un modelo basado en registros.
Los modelos basados en registros se denominan así
porque la base de datos se estructura en registros de
formato fijo de varios tipos. Cada tabla contiene
registros de un tipo dado. Cada tipo de registro define
un número fijo de campos, o atributos.
Modelo de Datos
Modelo
relacional
Modelo
Entidad-
Relación
El modelo de datos entidad-relación (E-R) se basa en
una percepción del mundo real que consiste en una
colección de objetos básicos, denominados entidades,
y de las relaciones entre ellos.
Una entidad es una “cosa” u “objeto” del mundo real
que es distinguible de otros objetos. El modelo
entidad-relación se usa mucho en el diseño de bases
de datos es una parte importante de este.
Ejemplo: Modelo entidad-relación
Ejemplo: Modelo relacional
Structure Query Language
(Lenguaje de Consulta
Estructurado) es un
lenguaje de programacion
para trabajar con base de
datos relacionales como
MySQL, Oracle, etc.
SQL es un lenguaje estándar para acceder y
manipular bases de datos.
Lenguaje SQL
¿Qué se puede hacer con SQL?
SQL
Puede ejecutar consultas en una base de datos
Puede recuperar datos de una base de datos
Puede insertar registros en una base de datos
Puede actualizar registros en una base de datos
Puede eliminar registros de una base de datos
Entre otros...
Ejemplo: Select * from clientes;
Entendemos el modelo relacional como una propuesta
para ver los datos como objetos del mundo real,
diferenciales entre sí por sus características básicas.
Un objeto dado puede ser descrito por la colección de
características que tiene (llamadas atributos) y
distinguido de otros objetos a partir de eso mismo.
Este modelo admite relaciones uno a varios, uno a
uno y varios a varios, haciendo referencia a la
información que guardamos, por ejemplo: (mundo
real) una factura de una casa de computación alberga
los datos de uno a muchos productos; esto
equivaldría a una relación de uno (factura) a muchos
(productos). A continuación se explica uno por uno
los componentes de una base de datos relacional.
Base de datos relacional
TABLA
Es una colección de una o más
columnas y cero o más filas. Puede
entenderse como una estructura de
datos simple que se asemeja a una
matriz de dos niveles: el primero
podría representar el número de fila, y
el segundo, el número de columna.
La tabla permite organizar los datos en filas (también
llamadas tuplas o registros) y columnas (atributos,
campos). Cada una de estas filas (así como los datos
que se encuentran contenidos en ella) debe ser
distinta con respecto a las demás.
Cada columna dentro de una fila es el valor de un
atributo de esa fila.
ATRIBUTOS
Un atributo define y diferencia una entidad de otra.
Los atributos pueden verse como características de las
entidades. Por ejemplo: un perro puede tener un
nombre, un dueño, un color de pelo, una edad, una
comida preferida y demás.
Entendemos al perro como una (entidad) y su nombre
como (atributo) de esa entidad.
RELACIÓN
Una relación es una vinculación entre ideas, un modo
de asociar entidades/tablas para lograr el objetivo que
tienen en común. Es decir que mediante esa
vinculación es posible realizar una función.
La relación es una asociación entre entidades. Por
ejemplo, podemos decir que la entidad factura tiene
una relación con la entidad productos (de donde se
obtienen los detalles de lo que vamos a registrar).
CLAVE PRIMARIA
Para diferenciar una entidad de otra, debemos
remitirnos a sus atributos y, para distinguir una fila de
otra dentro de una tabla, nos guiamos por la clave
primaria o llave primaria.
Una clave primaria ofrece la particularidad de no tener
valores repetidos. Para decidir cual de todos los
atributos formarán parte de la clave primaria,
debemos buscar uno que cumpla con el requisito
anterior,y, si no existe, demos crear una clave primaria
artificial para que actue como llave primaria.
Si se tuvieran los siguientes atributos de una tabla
llamada alumnos:
En la tabla alumnos no hay ningún atributo que no
pueda llegar a repetirse en los distintos alumnos. Por
lo que se tiene que crear una clave y asignarla a cada
alumno, por ejemplo, puede ser codigo_alumno.
CLAVE FORÁNEA
Las claves foráneas permiten establecer conexiones
entre las filas de las relaciones. Para hacer la conexión,
una clave foránea tiene el conjunto de atributos de
una relación que referencian la clave primaria de otra
relación (o incluso de la misma relación).
Las claves foráneas tienen por objetivo establecer una
conexión con la clave primaria que referencian. Por lo
tanto, los valores de una clave foránea deben estar
presentes en la clave primaria correspondiente, o bien
deber ser valores nulos. En caso contrario, la clave
foránea representa una referencia incorrecta.
Acontinuación un ejemplo:
En el ejemplo anterior, se tienen dos tablas
relacionadas, una tabla llamada cliente con clave
primaria Codigo_cliente y otra tabla llamada factura
con clave primaria Numero_factura y clave foránea
Codigo_cliente que referencia a la clave primaria de
la tabla clientes. De esta forma, con la relación entre
cliente y factura se pueden obtener datos como que
facturas tiene tal cliente o que cliente tiene tal factura
RELACIONES ENTRE TABLAS
Una base de datos está compuesta por tablas que se
relacionan de alguna manera para darle un sentido al
sistema y plasmar lo más fielmente posible lo que
sucede en el mundo real.
Las relaciones pueden catalogarse según sus
propiedades, como por ejemplo sus cardinalidades. La
cardinalidad específica el número de instancias de una
entidad que se puede relacionar con un número de
instancias de otra entidad.
Existen tres tipos de cardinalidades:
Una relación de uno a uno entre dos tablas tiene lugar
cuando, a cada elemento de la clave de la tabla A, se le
asigna un único elemento de la tabla B y, para cada
elemento de la clave de la tabla B, existe un único
elemento en la tabla A. Por ejemplo, cada país tendrá
solo un presidente, y cada presidente tendrá a su cargo
solo un país.
Uno a uno
Uno a varios
Varios a varios
Cardinalidad uno a uno:
Se dice que existe una relación de uno a varios entre las
tablas A y B cuando una clave de la tabla A posee varios
elementos relacionados en la tabla B y cuando una clave
de la tabla B posee un único elemento relacionado en la
tabla A. Por ejemplo, cada ciudadano vota por un
candidato, y cada candidato tendrá la posibilidad de ser
votado por más de un ciudadano.
Una relación es de varios a varios entre las tablas A y B
cuando una clave de la tabla A posee varios elementos
relacionados en la tabla B y, a su vez, una clave de la
tabla B posee varios elementos relacionados en la
tabla A. Por ejemplo, un libro pudo haber sido escrito
por varios autores, y cada autor pudo haber escrito
varios libros.
Cardinalidad uno a varios:
Cardinalidad varios a varios:
Cardinalidad
uno a uno
Cardinalidad
uno a varios
Cardinalidad
varios a varios
Las cardinalidades apropiada para un conjunto de
relaciones particular depende obviamente de la
situación del mundo real que el conjunto de relaciones
modela. Por ejemplo, si en un banco particular un
préstamo puede pertenecer únicamente a un cliente y
un cliente puede tener varios préstamos, entonces el
conjunto de relaciones de cliente a préstamo es uno a
varios. Si un préstamo puede pertenecer a varios
clientes el conjunto de relaciones es varios a varios.
Los diagramas E-R pueden expresar gráficamente las
estructuras lógica general de las bases de datos. Los
diagramas E-R son sencillos y claros, cualidades que
pueden ser responsables en gran parte de la
popularidad del modelo E-R. Estos diagramas consta
de las siguientes componentes principales:
Rectángulos, que representan conjuntos de
entidades.
Elipses, que representan atributos.
Rombos, que representan conjuntos de relaciones.
Lineas, que unen los atributos con los conjuntos de
entidades y los conjuntos de entidades con los
conjuntos de relaciones.
Elipses discontinuas, que denotan atributos
derivados.
Líneas dobles, que indican participación total de
una entidad en un conjunto de relaciones.
Rectángulos dobles, que representan conjuntos de
entidades débiles.
Diagramas Entidad-Relación
1 a 1 - Uno a uno
1 a N - Uno a varios
N a N / N a M - Varios a varios
Cardinalidades:
Tipos de cardinalidades:
Un maestro imparte a un solo alumno y a un alumno le
imparte un solo maestro.
Un maestro imparte a varios alumnos y a un alumno le
imparte un solo maestro.
Un maestro imparte a un solo alumno y a un alumno le
imparten varios maestros.
Un maestro imparte a varios alumnos y a un alumno le
imparten varios maestros.
Nota: Cuando la cardinalidad es 1, la línea debe tener
una punta de flecha hacia la entidad.
En la imagen anterior, se tiene un esquema E-R con dos
entidades (cliente y cuenta). Cliente tiene como
atributos nombre,calle,ciudad y su identificador único
llamado id-cliente. Cuenta tiene como atributos
número-préstamo que es su identificador único y saldo.
Ambas entidades tienen una relación llamada
impositor con un atributo unido llamado fecha-acceso.
Note que los identificadores de cada entidad (clave
primaria), deben estar subrayados.
En este ejemplo, la relación tiene un atributo. Si un
conjunto de relaciones tiene también algunos atributos
asociados a él, entonces se unen esos atributos a ese
conjunto de relaciones.
En el ejemplo, se tiene el atributo descriptivo fecha-
acceso unido al conjunto de relaciones impositor para
especificar la fecha más reciente en la que un cliente
accedió a esa cuenta.
Los atributos descriptivos son propiedades que brindan
información extra  en la relación de las entidades.
Si desea informatizar la gestión de una tienda
informática. La tienda dispone de una serie de
productos que se pueden vender a los clientes." De
cada producto informático se desea el código,
descripción, precio y número de existencias. Un
cliente puede comprar varios productos en la
tienda y un mismo producto puede ser comprado
por varios clientes. Cada vez que se compre un
articulo quedara registrada la compra en la base
de datos junto con la fecha en la que se ha
comprado el articulo. La tienda tiene contactos con
varios proveedores que son los que suministran
los productos. Un mismo producto puede ser
suministrado por varios proveedores. De cada
proveedor se desea guardar el código, nombre,
apellidos, dirección, y número de teléfono.
1.
Ejercicios de ejemplo:
2. Se desea diseñar una base de datos para almacenar y
gestionar la información empleada por una empresa
dedicada a la venta de automóviles, teniendo en cuenta
los siguientes aspectos: La empresa dispone de una serie
de coches para su venta. Se necesita conocer la
matrícula, marca y modelo, el color y el precio de venta
de cada coche. Los datos que interesa conocer de cada
cliente son el NIF, nombre, dirección,ciudad y número de
teléfono: además, los clientes se diferencian por un
código interno de la empresa que se incrementa
automáticamente cuando un cliente se da de alta en ella.
Un cliente puede comprar tantos coches como desee a la
empresa. Un coche determinado solo puede ser
comprado por un único cliente. El concesionario también
se encarga de llevar a cabo las revisiones que se realizan
a cada coche. Cada revisión tiene asociado un código que
se incrementa automáticamente por cada revisión que
se haga. De cada revisión se desea saber si se ha hecho
cambio de filtro, si se ha hecho cambio de aceite, si se ha
hecho cambio de frenos u otros. Los coches pueden
pasar varias revisiones en el concesionario.
Transformación de un
esquema E-R a un esquema
relacional.
Una vez obtenido el esquema conceptual mediante el
modelo E-R, hay que definir el modelo lógico de datos.
Las reglas básicas para transformar un esquema
conceptual E-R a un esquema relacional son:
Toda entidad se transforma en una tabla.
Todo atributo se transforma en columna dentro de
una tabla.
El identificador único de la entidad se convierte en
clave primaria.
Toda relación N:M se transforma en una tabla que
tendrá como clave primaria la concatenación de los
atributos clave de las entidades que asocia.
Imagen-1
En Imagen-1:
1. Cada entidad se convierte en una tabla y los
atributos de las entidades se convierten en columnas
de las tablas. Lo representamos así:
Clientes(Cod_cliente,nombre,dirección,teléfono).
Artículos(Cod_articulo,precio,strock,denominación).
2. La relación N:M se convierte a tabla. El nombre que
se la da es el que pongamos a la relación, en este caso
COMPRA. La clave estará formada por la
concatenación de claves de las tablas anteriores. Estas
a su vez pasan a ser claves ajenas y referencian a las
tablas CLIENTE y ARTÍCULO.
En esta relación, además de añadir las claves de las
entidades anteriores, se añaden los atributos que
intervienen en la relación. La tabla nos queda así:
Compra(cod_cliente (FK),cod_articulo
(FK),Uni_ventas,Fecha_ventas).
El esquema relacional queda de la siguiente manera:
Nota: La tabla compra también tiene que tener un identificador
(clave primaria), FK significa Foreign Key - Llave Foránea.
En la transformación de relaciones 1:N existen dos
soluciones posibles:
Transformar la relación en una tabla. Se hace como
si se tratara de una relación N:M. Esta solución se
realiza cuando se prevé que en un futuro la relación se
convertirá en N:M y cuando la relación tiene atributos
propios. También se crea una nueva tabla cuando la
cardinalidad es opcional, es decir, (0,1) y (0,M). La clave
de esta tabla es la de la entidad del lado muchos.
Propagar la clave. Este caso se aplica cuando la
cardinalidad es obligatoria, es decir, cuando tenemos
cardinalidad (1,1) y (0,M) o (1,M). Se propaga el
atributo principal de la entidad que tiene de
cardinalidad máxima 1 a la que tiene de cardinalidad
máxima N, desapareciendo el nombre de la relación.
Si existen atributos propios en la relación, éstos
también se propagarán.
Imagen-2
En la imagen-2:
1. Se convierten a tabla las dos entidades:
TEMAS (COD_TEMA, DESCRIPCIÓN).
LIBROS (COD_LIBRO, AUTOR, ISBN, TÍTULO,
NUM_EJEMPLARES).
2. Se propaga la clave, de la entidad TEMAS a la
entidad LIBROS. La entidad LIBROS quedará así:
LIBROS (COD_LIBRO, AUTOR, ISBN, TÍTULO,
NUM_EJEMPLARES, COD_TEMA(FK)).
El esquema relacional queda de la siguiente manera:
En la transformación de relaciones 1:1 se tienen en
cuenta las cardinalidades de las entidades que
participan. Existen dos soluciones:
Transformar la relación en una tabla. Si las
entidades poseen cardinalidades (0,1), la relación se
convierte en una tabla.
Propagar la clave. Si una de las entidades posee
cardinalidad (0,1) y la otra (1,1), conviene propagar la
clave de la entidad con cardinalidad (1,1) a la tabla
resultante de la entidad de cardinalidad (0,1). Si ambas
entidades poseen cardinalidades (1,1), se puede
propagar la clave de cualquiera de ellas a la tabla
resultante de la otra. En este caso, también se pueden
añadir los atributos de una entidad a otra, resultando
una única tabla con todos los atributos de las entidades
y de la relación, si los hubiera, eligiendo como clave
primaria una de las dos.
Imagen-3
En este caso, la clave se propaga desde la entidad
PUESTOTRABAJO, con cardinalidad (1,1), a la entidad
EMPLEADO, con cardinalidad (0,1). Las tablas las
representaremos así:
PUESTOTRABAJO (COD_PUESTO, DESCRIPCIÓN,
OFICINA, DESPACHO, MESA).
EMPLEAD (COD_EMPLE, NOMBRE, DIRECCIÓN,
TELEFONO, COD_PUESTO(FK)).
El esquema relacional queda de la siguiente manera:
Resumiendo:
1 a 1
La llave primaria de una de las 2 cardinalidades (1),
se ira como foránea a la otra entidad.
1 a N
Opción 1:
La llave Primaria de la Cardinalidad (1), se va como
llave foránea, a la entidad de Cardinalidad de Muchos (N).
Opción 2:
Si la relación tiene atributos, se resolverá igual que N a M
N a M
La Relación se Convertirá en una Nueva Entidad, y se
nombrará con el mismo nombre de la relación.
Se debe crear una llave primaria para la nueva entidad.
Cuando normalizamos una base de
datos lo que hacemos es aplicar
una serie de reglas con el objetivo
fundamental de evitar problemas
futuros relacionados con la lógica
de diseño implementada en ella.
Evitar la redundancia de datos.
Evitar errores en lo que se refiere a la
inserción,actualización y borrado de registros.
Aplicar las reglas de normalización nos asegura, en principio,
las dos siguientes cosas:
Uno de los principios fundamentales en lo que respecta al
diseño de bases de datos es el evitar la redundancia de
datos. A continuación un ejemplo en donde se explicará
cuando se tiene redundancia de datos:
Normalización
DATOS
REDUNDANTES
Se tiene una tabla de clientes con los siguientes datos:
Aquí el campo que tiene claras posibilidades de repetir
datos es Nacionalidad (si tenemos más de un cliente
con la misma nacionalidad, ya hay redundancia, pero
no hay que esperar a que esto suceda: si existe la
posibilidad ya es suficiente).
¿Por qué no pensar lo mismo de Nombre y Apellido o
de Fecha de nacimiento? Porque tanto los nombres
como los apellidos son infinitos y lo mismo ocurre con
las fechas. Incluso a la hora de ingresar los datos de
un cliente, es más seguro que seleccionemos su
nacionalidad desde una lista, y no que la ingresemos
manualmente, ya que esto posibilitaría errores de
tipeo o distintas formas de ingreso (Argentina,
Argentino, Arg.,etc) y, por ende, datos erróneos y
difíciles de tratar en nuestra base.
Si quisiéramos saber la cantidad de clientes por país
que tienen depósitos en el banco, aunque
construyamos correctamente la consulta SQL,
posiblemente los datos recuperados no reflejen la
realidad. Guardando las nacionalidades en una tabla
se pueden listar después. Si no se hiciera, la tabla
quedaría de la siguiente manera:
La idea madre de todo esto es que los índices
numéricos ocupan menos espacio que las cadenas
de caracteres: así, en nuestro ejemplo, escribimos la
palabra "Argentina" sólo una vez, y el número 1
(código correspondiente a Argentina) varias veces en
reemplazo de "Argentina". Por eso, casi nunca se
habla de redundancia de datos cuando los campos
en cuestión son numéricos.
Para solucionar el problema anterior y otros derivados
que surgen a partir de la redundancia de datos,
modificamos la estructura de la tabla de esta menera:
Reglas normales
Aunque existen 5
formas normales, una
base de datos ya se
considera normalizada
al llegar a la tercera
forma normal.
En la tabla anterior existe una serie de problemas. A
través de instrucciones SQL no podríamos contestar,
por ejemplo, cuántos productos compró Juan López
o cuál es el producto más vendido de la empresa.
Estos inconvenientes se dan posiblemente porque
no se respeta la primera forma normal: la columna
Producto contiene más de un valor por registro. Es
importante mencionar que aplicando la primera
forma normal, nuestra tabla original se divide en dos
y queda de la siguiente manera:
Una tabla se encuentra en la primera forma normal si
cada una de las columnas admite un único valor para
cada registro. Veamos un ejemplo:
Primera Forma Normal - 1FN:
En esta forma normal, lo que se trata de lograr es que
cada uno de los campos de una tabla depende
directamente de la clave primaria. Pensemos en el
siguiente ejemplo que consiste en guardar datos de
empleados(nombre,empresa en la que trabaja,
dirección de la empresa):
El campo Nombre_empleado depende directamente de la
clave Cod_empleado. En cambio, Dirección_empresa no
depende de Cod_empleado. En cambio, Dirección_empresa
no depende de Cod_empleado, sino de la empresa.
Ver este tipo de situaciones depende de la experiencia que
se vaya logrando. En definitiva la situacióon final podría ser
la siguiente manera:
Segunda Forma Normal - 2FN:
En el primer caso podríamos suponer que un
empleado puede trabajar en más de una empresa.
Una tabla está en tercera forma normal si sus campos
dependen únicamente de la clave, es decir, no
dependen unos de otros. Si repasamos el ejemplo
anterior veremos que esto nos sucede. Veamos otro
ejemplo de esto:
O también:
Tercera Forma Normal - 3FN:
Si se presta atención, veremos que el campo Duración
depende más del campo DVD que de Cliente.
Aplicando la tercera forma normal obtendríamos el
siguiente escenario:
Gestor de base de datos:
MYSQL
SQL Server
Oracle
MongoDB
Cassandra
PostgreSQL
MariaDB
Se dispone de varias herramientas para la gestión de
base de datos, por nombrar algunos esta:
En este documento se trabajará con MYSQL.
Rapidez
Posibilidad de trabajar en diferentes plataformas
Múltiples formatos de tablas para cada necesidad
Seguridad
Gran estabilidad
Administración simple
¿Por qué MySQL?
MySQL es un sistema gestor de bases de datos muy
utilizados en la actualidad por los siguientes motivos:
Si bien todavía le queda mucho camino por recorrer,
en corto tiempo ha logrado darse a conocer en el
ámbito informático y fue afianzándose
progresivamente en el mundo de las bases de datos
relacionales. Desde hace algún tiempo, se ha ido
dando una particular unión entre base de datos y el
lenguaje de programación PHP, por este motivo,
MySQL se utiliza principalmente en sitios web.
En la siguiente pantalla seleccionamos "No thanks, just
start my download." y procedemos a descargar el
instalador de MySQL (este programa luego nos descargará
la última versión)Una vez descargado el archivo "mysql-
installer-web-community-8.0.12.0.msi" (o una versión
posterior) procedemos a ejecutarlo y luego de aceptar "los
términos y condiciones" dejaremos la mayoría de las
opciones por defecto:
Link de descarga:
https://dev.mysql.com/downloads/windows/installer/8.0.html
INSTALACIÓN DE MYSQL
En la segunda pantalla dejamos seleccionado
"Developer Default" que nos instalará la mayoría de
las herramientas que necesitaremos como
programador:
La pantalla siguiente nos informa algunos otros
programas que se instalarán para el correcto
funcionamiento de MySQL:
El siguiente paso es el que más tiempo demorará
debido a que se descargarán de internet el servidor de
MySQL propiamente dicho, manuales, drivers de
conexión para distintos lenguajes etc, una vez
descargados se ejecuta el proceso de instalación:
La siguiente ventana nos informa que se procederá a
configurar el "MySQL Server", "MySQL Router" y
"Samples":
Para configurar el servidor debemos indicar en
"Connectivity" el puerto de comunicaciones que por
defecto está configurado con el valor "3306" (si ya tiene
instalada otra versión de MySQL en su computadora
cambie este puerto por "3307" y no tendrá conflictos con
la versión anterior):
Dejemos seleccionada la opción por defecto "Standalone
MySQL Server":
Dejemos el método de autenticación recomendado:
En el siguiente paso debemos definir la clave para el
usuario "root" o raiz del servidor de base de datos. No
debemos olvidar dicha clave ya que cada vez que
necesitemos acceder al servidor MySQL se nos pedirá
dicha clave para el usuario "root":
No crearemos en este momento otras cuentas de
usuarios para el servidor MySQL (lo veremos más
adelante en este curso)
Dejamos los valores por defecto para la pantalla de
"Window Service":
Finalmente confirmamos la configuración definida en
los diálogos anteriores:
Los mismos pasos ahora damos para configurar el
"MySQL Router", dejamos datos por defecto:
La siguiente pantalla nos permite verificar el correcto
funcionamiento del servidor, debemos ingresar la clave
que creamos anteriormente:
La última pantalla inicia las aplicaciones "Workbench" y
"MySQL Shell".
Tenemos ya todo el software necesario para desarrollar
en forma local el curso de MySQL instalado en nuestro
sistema operativo Windows:
Comenzar con MYSQL
TIPOS DE DATOS:
Para crear una nueva base de datos usaremos la
sentencia create database:
Para eliminar una base de datos, usamos la sentencia
drop database:
MySQL es sensible al uso de mayúsculas y minúsculas,
tanto en la definición de base de datos como de tablas
o columnas.
CREAR BASE DE DATOS:
USAR BASE DE DATOS CREADA:
Para trabajar con una base de datos, se tiene que
abrir, para eso se utiliza el comando "USE", para
indicar que base de datos se va a utilizar.
CREAR TABLA:
En este caso, la sentencia create table construye una
nueva tabla en la base de datos en uso. La tabla
contiene tres columnas, nombre,dirección, y teléfono,
todas de tipo carácter y de longitudes 30, 40 y 15
respectivamente. Si se intenta guardar en ellas valores
que sobrepasen esos límites, serán truncados para
poderlos almacenar. Por ese motivo, es importante
reservar espacio suficiente para cada columna. Si se
prevé que muchos registros ocuparán sólo una fracción
del espacio reservado, se puede utilizar el tipo varchar,
similar a char, con la diferencia de que el valor ocuparía
un espacio menor al especificado si la cadena es más
corta que el máximo indicado, ahorrando así espacio de
almacenamiento.
id int unsigned NOT NULL auto_increment crea la
columna id , este tipo de campo asignará una ID
numérica única a cada registro en la tabla (lo que
significa que no hay dos filas que tengan la misma id
en este caso), MySQL asignará automáticamente una
nueva, valor único para el campo de id del registro
(comenzando con 1).
Las tablas puedden eliminarse con drop table:
Alternativamente, se pueden utilizar la sintaxis
siguiente con condicional:
Aunque la creación de una clave primaria puede
declararse como atributo de columna, es conveniente
definirla como restricción de tabla. También es posible
indicar restricciones sobre la tabla y no sobre
columnas especificas:
La primera restricción se refiere a la clave primaria,
compuesta por las columnas nombre y nacimiento: no
puede haber dos personas que se llamen igual y que
hayan nacido en la misma fecha. La clave primaria
permite identificar de manera unívoca cada registro.
La segunda restricción define que la pareja de una
persona debe ser única: dos personas no pueden
tener la misma pareja. Too intento de insertar un
nuevo registro donde el nombre de la pareja ya exista,
será rechazado. Cuando se restringe una columna con
unique, los valores null reciben un trato especial, pues
permiten múltiples valores nulos.
La tercera restricción afecta a la columna proveedor,
sólo puede tomar valores que existan en la clave
primaria de la tabla proveedor.
Las restricciones de la tabla pueden definirse con un
identificador útil para hacer referencias posteriores a
la restricción:
INSERTAR UNA FILA EN UNA TABLA:
Las strings varchar también se pueden insertar
utilizando comillas simples:
ACTUALIZAR UNA FILA EN TABLA:
El valor int se puede insertar en una consulta sin
comillas. Las cadenas y las fechas deben estar entre
comillas simples ' o comillas dobles "
update usuarios set nombre='GustavoGarcia'
where nombre='Gustavo';
update usuarios set nombre='MarceloDuarte',
clave='Marce' where nombre='Marcelo';
ELIMINAR UNA FILA DE UNA TABLA:
Esto borrará la fila que tiene id es 8.
MOSTRAR LISTA DE BASE DE DATOS:
MOSTRAR TABLAS EN UNA BASE DE DATOS:
SELECCIONANDO FILAS:
Use la cláusula ORDER BY para ordenar el resultado
de una tabla en una o más columnas.
Si se desea que, al momento de hacer una consulta,
los datos aparezcan en un orden determinado, es
preciso utilizar la cláusula ORDER BY en la
sentencia SELECT.
MOSTRAR LOS CAMPOS DE UNA TABLA:
ORDENAR DATOS (ORDER BY):
FUNCIONES AGREGADAS:
AGRUPAR DATOS (GROUP BY):
La cláusula MySQL GROUP BY se usa en una
declaración SELECT para recopilar datos en varios
registros y agrupar los resultados por una o más
columnas. Ejemplo utilizando la función SUM:
La función SUM sumará todos los valores que se
encuentren en la columna quantity,mostrará el
resultado como "Total quantity" gracias a "AS" que se
utiliza para asignar un nombre alias a la nueva
columna que mostrará el resultado de la suma.
A continuación un ejemplo:
Supongamos una tabla de empleados en la que cada fila
es un empleado que tiene un name , un department y
un salary .
Esto le diría qué departamento contiene el empleado con
el salario más bajo y cuál es ese salario.
GRUPO USANDO LA FUNCIÓN MIN:
GRUPO USANDO LA FUNCIÓN COUNT:
GRUPO POR USO QUE TIENE:
Usar GROUP BY ... HAVING para filtrar registros agregados
es análogo a usar SELECT ... WHERE para filtrar registros
individuales.También podrías decir HAVING Man_Power >=
10 ya que HAVING entiende "alias".
La cláusula HAVING especifica condiciones de
búsqueda para grupos de filas; lleva a cabo la misma
función que antes cumplía la cláusula WHERE para las
filas de todas las tablas, pero ahora las condiciones se
aplican a los grupos obtenidos.
HAVING:
Se usan para mostrar los resultados de grupos de
filas en lugar de filas individuales.
GROUP BY CON FUNCIONES AGREGADAS:
Tabla de pedidos:
Devuelve el número de filas que satisfacen un criterio
específico en la cláusula WHERE .
Ej .: Número de pedidos para cada cliente.
Contar:
Resultado:
Sumar
Devuelve la suma de la columna seleccionada.
Ej : Suma del total y artículos para cada cliente
Devuelve el valor más alto de una determinada
columna o expresión.
Por ejemplo: el mayor total de pedidos para
cada cliente.
Resultado:
MAX:
Devuelve el valor más bajo de una determinada
columna o expresión.
Ej .: El pedido más bajo para cada cliente.
Resultado:
MIN:
Resultado:
SELECCIONAR POR NOMBRE DE COLUMNA:
SELECCIONAR TODAS LAS COLUMNAS:
Consulta:
Resultado:
Ejemplo:
Consulta:
Resultado:
SELECCIONAR CON WHERE:
Consulta:
Resultado:
SELECCIONAR CON LIKE (%):
"adm" en cualquier lugar:
Comienza con "adm":
Al igual que el carácter % en una cláusula LIKE
coincide con cualquier número de caracteres, el
carácter _ solo coincide con un carácter. Por ejemplo:
Los alias de SQL se utilizan para cambiar temporalmente
el nombre de una tabla o una columna.Generalmente se
utilizan para mejorar la legibilidad.
Termina con "adm":
SELECCIONAR CON ALIAS:
Consulta:
Resultado:
SELECCIONAR CON CASE O IF:
Consulta:
Resultado:
Con IF:
Nota:
Esto significa que: SI st.percentage> = 35 es TRUE
luego devuelva 'Pass' ELSE return 'Fail'
REFERENCIAS
BIBLIOGRÁFICAS
PHP + MYSQL DESDE CERO
Francisco Minera. (2014)
DESARROLLO PHP + MYSQL
Francisco Minera. (2011)
FUNDAMENTOS DE BASE DE DATOS
Silberschatz, Korth, Sudarshan. (2006)
BASES DE DATOS
Rafael Camps Paré, Luis Alberto Casillas
Santillán, Marc Gibert Ginestà, Carme Martín
Escofet, Oscar Pérez Mora. (2005)
PROCESAMIENTO DE BASES DE DATOS
David M. Kroenke. (2003)
APRENDIZAJE MYSQL
EBOOK. (2019)
AXEL
AMAVIZCA
BASE DE DATOS
MYSQL
Ebook: Realizado el 25/08/2020

Base de datos

  • 1.
    AXEL AMAVIZCA Estudiante enTI BASE DE DATOS MYSQL
  • 2.
    ÍNDICE TEMA ¿Qué es unabase de datos?. Modelo de datos. Lenguaje SQL. Base de datos relacional . Diagramas Entidad-Relación. Esquema E-R a relacional. Normalización. MYSQL. PÁGINA 3 4 6 7 15 20 26 32
  • 3.
    ¿Qué es unabase de datos? Las bases de datos son estructuras organizadas de datos relacionados entre sí que nos permiten obtener, eventualmente, información actualizada acerca de una organización. El propósito de una base de datos es ayudar a las personas a dar seguimiento a las cosas. Un sistema gestor de bases de datos (SGBD) consiste en una colección de datos interrelacionados y un conjunto de programas para acceder a dichos datos. La colección de datos, normalmente denominada base de datos, contiene información relevante para una empresa. Los sistemas de bases de datos se diseñan para gestionar grandes cantidades de información. La gestión de los datos implica tanto la definición de estructuras para almacenar la información como la provisión de mecanismos para la manipulación de la información.
  • 4.
    La idea primariade los sistemas informáticos es poder plasmar, a través de diferentes herramientas, situaciones del mundo real. Para traspasar la realidad de una situación en concreto a una base de datos. Una estas herramientas es el modelo de datos, que permite describir de modo abstracto en qué forma se van almacenar y a recuperar la información existente en una base. El modelo relacional usa una colección de tablas para representar tanto los datos como sus relaciones. Cada tabla tiene varias columnas, y cada columna tiene un nombre único. El modelo relacional es un ejemplo de un modelo basado en registros. Los modelos basados en registros se denominan así porque la base de datos se estructura en registros de formato fijo de varios tipos. Cada tabla contiene registros de un tipo dado. Cada tipo de registro define un número fijo de campos, o atributos. Modelo de Datos Modelo relacional
  • 5.
    Modelo Entidad- Relación El modelo dedatos entidad-relación (E-R) se basa en una percepción del mundo real que consiste en una colección de objetos básicos, denominados entidades, y de las relaciones entre ellos. Una entidad es una “cosa” u “objeto” del mundo real que es distinguible de otros objetos. El modelo entidad-relación se usa mucho en el diseño de bases de datos es una parte importante de este. Ejemplo: Modelo entidad-relación Ejemplo: Modelo relacional
  • 6.
    Structure Query Language (Lenguajede Consulta Estructurado) es un lenguaje de programacion para trabajar con base de datos relacionales como MySQL, Oracle, etc. SQL es un lenguaje estándar para acceder y manipular bases de datos. Lenguaje SQL ¿Qué se puede hacer con SQL? SQL Puede ejecutar consultas en una base de datos Puede recuperar datos de una base de datos Puede insertar registros en una base de datos Puede actualizar registros en una base de datos Puede eliminar registros de una base de datos Entre otros... Ejemplo: Select * from clientes;
  • 7.
    Entendemos el modelorelacional como una propuesta para ver los datos como objetos del mundo real, diferenciales entre sí por sus características básicas. Un objeto dado puede ser descrito por la colección de características que tiene (llamadas atributos) y distinguido de otros objetos a partir de eso mismo. Este modelo admite relaciones uno a varios, uno a uno y varios a varios, haciendo referencia a la información que guardamos, por ejemplo: (mundo real) una factura de una casa de computación alberga los datos de uno a muchos productos; esto equivaldría a una relación de uno (factura) a muchos (productos). A continuación se explica uno por uno los componentes de una base de datos relacional. Base de datos relacional TABLA Es una colección de una o más columnas y cero o más filas. Puede entenderse como una estructura de datos simple que se asemeja a una matriz de dos niveles: el primero podría representar el número de fila, y el segundo, el número de columna. La tabla permite organizar los datos en filas (también llamadas tuplas o registros) y columnas (atributos, campos). Cada una de estas filas (así como los datos que se encuentran contenidos en ella) debe ser distinta con respecto a las demás.
  • 8.
    Cada columna dentrode una fila es el valor de un atributo de esa fila. ATRIBUTOS Un atributo define y diferencia una entidad de otra. Los atributos pueden verse como características de las entidades. Por ejemplo: un perro puede tener un nombre, un dueño, un color de pelo, una edad, una comida preferida y demás. Entendemos al perro como una (entidad) y su nombre como (atributo) de esa entidad.
  • 9.
    RELACIÓN Una relación esuna vinculación entre ideas, un modo de asociar entidades/tablas para lograr el objetivo que tienen en común. Es decir que mediante esa vinculación es posible realizar una función. La relación es una asociación entre entidades. Por ejemplo, podemos decir que la entidad factura tiene una relación con la entidad productos (de donde se obtienen los detalles de lo que vamos a registrar). CLAVE PRIMARIA Para diferenciar una entidad de otra, debemos remitirnos a sus atributos y, para distinguir una fila de otra dentro de una tabla, nos guiamos por la clave primaria o llave primaria.
  • 10.
    Una clave primariaofrece la particularidad de no tener valores repetidos. Para decidir cual de todos los atributos formarán parte de la clave primaria, debemos buscar uno que cumpla con el requisito anterior,y, si no existe, demos crear una clave primaria artificial para que actue como llave primaria. Si se tuvieran los siguientes atributos de una tabla llamada alumnos: En la tabla alumnos no hay ningún atributo que no pueda llegar a repetirse en los distintos alumnos. Por lo que se tiene que crear una clave y asignarla a cada alumno, por ejemplo, puede ser codigo_alumno.
  • 11.
    CLAVE FORÁNEA Las clavesforáneas permiten establecer conexiones entre las filas de las relaciones. Para hacer la conexión, una clave foránea tiene el conjunto de atributos de una relación que referencian la clave primaria de otra relación (o incluso de la misma relación). Las claves foráneas tienen por objetivo establecer una conexión con la clave primaria que referencian. Por lo tanto, los valores de una clave foránea deben estar presentes en la clave primaria correspondiente, o bien deber ser valores nulos. En caso contrario, la clave foránea representa una referencia incorrecta. Acontinuación un ejemplo: En el ejemplo anterior, se tienen dos tablas relacionadas, una tabla llamada cliente con clave primaria Codigo_cliente y otra tabla llamada factura con clave primaria Numero_factura y clave foránea Codigo_cliente que referencia a la clave primaria de la tabla clientes. De esta forma, con la relación entre cliente y factura se pueden obtener datos como que facturas tiene tal cliente o que cliente tiene tal factura
  • 12.
    RELACIONES ENTRE TABLAS Unabase de datos está compuesta por tablas que se relacionan de alguna manera para darle un sentido al sistema y plasmar lo más fielmente posible lo que sucede en el mundo real. Las relaciones pueden catalogarse según sus propiedades, como por ejemplo sus cardinalidades. La cardinalidad específica el número de instancias de una entidad que se puede relacionar con un número de instancias de otra entidad. Existen tres tipos de cardinalidades: Una relación de uno a uno entre dos tablas tiene lugar cuando, a cada elemento de la clave de la tabla A, se le asigna un único elemento de la tabla B y, para cada elemento de la clave de la tabla B, existe un único elemento en la tabla A. Por ejemplo, cada país tendrá solo un presidente, y cada presidente tendrá a su cargo solo un país. Uno a uno Uno a varios Varios a varios Cardinalidad uno a uno:
  • 13.
    Se dice queexiste una relación de uno a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y cuando una clave de la tabla B posee un único elemento relacionado en la tabla A. Por ejemplo, cada ciudadano vota por un candidato, y cada candidato tendrá la posibilidad de ser votado por más de un ciudadano. Una relación es de varios a varios entre las tablas A y B cuando una clave de la tabla A posee varios elementos relacionados en la tabla B y, a su vez, una clave de la tabla B posee varios elementos relacionados en la tabla A. Por ejemplo, un libro pudo haber sido escrito por varios autores, y cada autor pudo haber escrito varios libros. Cardinalidad uno a varios: Cardinalidad varios a varios:
  • 14.
    Cardinalidad uno a uno Cardinalidad unoa varios Cardinalidad varios a varios Las cardinalidades apropiada para un conjunto de relaciones particular depende obviamente de la situación del mundo real que el conjunto de relaciones modela. Por ejemplo, si en un banco particular un préstamo puede pertenecer únicamente a un cliente y un cliente puede tener varios préstamos, entonces el conjunto de relaciones de cliente a préstamo es uno a varios. Si un préstamo puede pertenecer a varios clientes el conjunto de relaciones es varios a varios.
  • 15.
    Los diagramas E-Rpueden expresar gráficamente las estructuras lógica general de las bases de datos. Los diagramas E-R son sencillos y claros, cualidades que pueden ser responsables en gran parte de la popularidad del modelo E-R. Estos diagramas consta de las siguientes componentes principales: Rectángulos, que representan conjuntos de entidades. Elipses, que representan atributos. Rombos, que representan conjuntos de relaciones. Lineas, que unen los atributos con los conjuntos de entidades y los conjuntos de entidades con los conjuntos de relaciones. Elipses discontinuas, que denotan atributos derivados. Líneas dobles, que indican participación total de una entidad en un conjunto de relaciones. Rectángulos dobles, que representan conjuntos de entidades débiles. Diagramas Entidad-Relación
  • 16.
    1 a 1- Uno a uno 1 a N - Uno a varios N a N / N a M - Varios a varios Cardinalidades: Tipos de cardinalidades: Un maestro imparte a un solo alumno y a un alumno le imparte un solo maestro. Un maestro imparte a varios alumnos y a un alumno le imparte un solo maestro. Un maestro imparte a un solo alumno y a un alumno le imparten varios maestros. Un maestro imparte a varios alumnos y a un alumno le imparten varios maestros. Nota: Cuando la cardinalidad es 1, la línea debe tener una punta de flecha hacia la entidad.
  • 17.
    En la imagenanterior, se tiene un esquema E-R con dos entidades (cliente y cuenta). Cliente tiene como atributos nombre,calle,ciudad y su identificador único llamado id-cliente. Cuenta tiene como atributos número-préstamo que es su identificador único y saldo. Ambas entidades tienen una relación llamada impositor con un atributo unido llamado fecha-acceso. Note que los identificadores de cada entidad (clave primaria), deben estar subrayados. En este ejemplo, la relación tiene un atributo. Si un conjunto de relaciones tiene también algunos atributos asociados a él, entonces se unen esos atributos a ese conjunto de relaciones. En el ejemplo, se tiene el atributo descriptivo fecha- acceso unido al conjunto de relaciones impositor para especificar la fecha más reciente en la que un cliente accedió a esa cuenta. Los atributos descriptivos son propiedades que brindan información extra  en la relación de las entidades.
  • 18.
    Si desea informatizarla gestión de una tienda informática. La tienda dispone de una serie de productos que se pueden vender a los clientes." De cada producto informático se desea el código, descripción, precio y número de existencias. Un cliente puede comprar varios productos en la tienda y un mismo producto puede ser comprado por varios clientes. Cada vez que se compre un articulo quedara registrada la compra en la base de datos junto con la fecha en la que se ha comprado el articulo. La tienda tiene contactos con varios proveedores que son los que suministran los productos. Un mismo producto puede ser suministrado por varios proveedores. De cada proveedor se desea guardar el código, nombre, apellidos, dirección, y número de teléfono. 1. Ejercicios de ejemplo:
  • 19.
    2. Se deseadiseñar una base de datos para almacenar y gestionar la información empleada por una empresa dedicada a la venta de automóviles, teniendo en cuenta los siguientes aspectos: La empresa dispone de una serie de coches para su venta. Se necesita conocer la matrícula, marca y modelo, el color y el precio de venta de cada coche. Los datos que interesa conocer de cada cliente son el NIF, nombre, dirección,ciudad y número de teléfono: además, los clientes se diferencian por un código interno de la empresa que se incrementa automáticamente cuando un cliente se da de alta en ella. Un cliente puede comprar tantos coches como desee a la empresa. Un coche determinado solo puede ser comprado por un único cliente. El concesionario también se encarga de llevar a cabo las revisiones que se realizan a cada coche. Cada revisión tiene asociado un código que se incrementa automáticamente por cada revisión que se haga. De cada revisión se desea saber si se ha hecho cambio de filtro, si se ha hecho cambio de aceite, si se ha hecho cambio de frenos u otros. Los coches pueden pasar varias revisiones en el concesionario.
  • 20.
    Transformación de un esquemaE-R a un esquema relacional. Una vez obtenido el esquema conceptual mediante el modelo E-R, hay que definir el modelo lógico de datos. Las reglas básicas para transformar un esquema conceptual E-R a un esquema relacional son: Toda entidad se transforma en una tabla. Todo atributo se transforma en columna dentro de una tabla. El identificador único de la entidad se convierte en clave primaria. Toda relación N:M se transforma en una tabla que tendrá como clave primaria la concatenación de los atributos clave de las entidades que asocia. Imagen-1
  • 21.
    En Imagen-1: 1. Cadaentidad se convierte en una tabla y los atributos de las entidades se convierten en columnas de las tablas. Lo representamos así: Clientes(Cod_cliente,nombre,dirección,teléfono). Artículos(Cod_articulo,precio,strock,denominación). 2. La relación N:M se convierte a tabla. El nombre que se la da es el que pongamos a la relación, en este caso COMPRA. La clave estará formada por la concatenación de claves de las tablas anteriores. Estas a su vez pasan a ser claves ajenas y referencian a las tablas CLIENTE y ARTÍCULO. En esta relación, además de añadir las claves de las entidades anteriores, se añaden los atributos que intervienen en la relación. La tabla nos queda así: Compra(cod_cliente (FK),cod_articulo (FK),Uni_ventas,Fecha_ventas). El esquema relacional queda de la siguiente manera: Nota: La tabla compra también tiene que tener un identificador (clave primaria), FK significa Foreign Key - Llave Foránea.
  • 22.
    En la transformaciónde relaciones 1:N existen dos soluciones posibles: Transformar la relación en una tabla. Se hace como si se tratara de una relación N:M. Esta solución se realiza cuando se prevé que en un futuro la relación se convertirá en N:M y cuando la relación tiene atributos propios. También se crea una nueva tabla cuando la cardinalidad es opcional, es decir, (0,1) y (0,M). La clave de esta tabla es la de la entidad del lado muchos. Propagar la clave. Este caso se aplica cuando la cardinalidad es obligatoria, es decir, cuando tenemos cardinalidad (1,1) y (0,M) o (1,M). Se propaga el atributo principal de la entidad que tiene de cardinalidad máxima 1 a la que tiene de cardinalidad máxima N, desapareciendo el nombre de la relación. Si existen atributos propios en la relación, éstos también se propagarán. Imagen-2
  • 23.
    En la imagen-2: 1.Se convierten a tabla las dos entidades: TEMAS (COD_TEMA, DESCRIPCIÓN). LIBROS (COD_LIBRO, AUTOR, ISBN, TÍTULO, NUM_EJEMPLARES). 2. Se propaga la clave, de la entidad TEMAS a la entidad LIBROS. La entidad LIBROS quedará así: LIBROS (COD_LIBRO, AUTOR, ISBN, TÍTULO, NUM_EJEMPLARES, COD_TEMA(FK)). El esquema relacional queda de la siguiente manera: En la transformación de relaciones 1:1 se tienen en cuenta las cardinalidades de las entidades que participan. Existen dos soluciones: Transformar la relación en una tabla. Si las entidades poseen cardinalidades (0,1), la relación se convierte en una tabla.
  • 24.
    Propagar la clave.Si una de las entidades posee cardinalidad (0,1) y la otra (1,1), conviene propagar la clave de la entidad con cardinalidad (1,1) a la tabla resultante de la entidad de cardinalidad (0,1). Si ambas entidades poseen cardinalidades (1,1), se puede propagar la clave de cualquiera de ellas a la tabla resultante de la otra. En este caso, también se pueden añadir los atributos de una entidad a otra, resultando una única tabla con todos los atributos de las entidades y de la relación, si los hubiera, eligiendo como clave primaria una de las dos. Imagen-3 En este caso, la clave se propaga desde la entidad PUESTOTRABAJO, con cardinalidad (1,1), a la entidad EMPLEADO, con cardinalidad (0,1). Las tablas las representaremos así: PUESTOTRABAJO (COD_PUESTO, DESCRIPCIÓN, OFICINA, DESPACHO, MESA). EMPLEAD (COD_EMPLE, NOMBRE, DIRECCIÓN, TELEFONO, COD_PUESTO(FK)).
  • 25.
    El esquema relacionalqueda de la siguiente manera: Resumiendo: 1 a 1 La llave primaria de una de las 2 cardinalidades (1), se ira como foránea a la otra entidad. 1 a N Opción 1: La llave Primaria de la Cardinalidad (1), se va como llave foránea, a la entidad de Cardinalidad de Muchos (N). Opción 2: Si la relación tiene atributos, se resolverá igual que N a M N a M La Relación se Convertirá en una Nueva Entidad, y se nombrará con el mismo nombre de la relación. Se debe crear una llave primaria para la nueva entidad.
  • 26.
    Cuando normalizamos unabase de datos lo que hacemos es aplicar una serie de reglas con el objetivo fundamental de evitar problemas futuros relacionados con la lógica de diseño implementada en ella. Evitar la redundancia de datos. Evitar errores en lo que se refiere a la inserción,actualización y borrado de registros. Aplicar las reglas de normalización nos asegura, en principio, las dos siguientes cosas: Uno de los principios fundamentales en lo que respecta al diseño de bases de datos es el evitar la redundancia de datos. A continuación un ejemplo en donde se explicará cuando se tiene redundancia de datos: Normalización DATOS REDUNDANTES Se tiene una tabla de clientes con los siguientes datos:
  • 27.
    Aquí el campoque tiene claras posibilidades de repetir datos es Nacionalidad (si tenemos más de un cliente con la misma nacionalidad, ya hay redundancia, pero no hay que esperar a que esto suceda: si existe la posibilidad ya es suficiente). ¿Por qué no pensar lo mismo de Nombre y Apellido o de Fecha de nacimiento? Porque tanto los nombres como los apellidos son infinitos y lo mismo ocurre con las fechas. Incluso a la hora de ingresar los datos de un cliente, es más seguro que seleccionemos su nacionalidad desde una lista, y no que la ingresemos manualmente, ya que esto posibilitaría errores de tipeo o distintas formas de ingreso (Argentina, Argentino, Arg.,etc) y, por ende, datos erróneos y difíciles de tratar en nuestra base. Si quisiéramos saber la cantidad de clientes por país que tienen depósitos en el banco, aunque construyamos correctamente la consulta SQL, posiblemente los datos recuperados no reflejen la realidad. Guardando las nacionalidades en una tabla se pueden listar después. Si no se hiciera, la tabla quedaría de la siguiente manera:
  • 28.
    La idea madrede todo esto es que los índices numéricos ocupan menos espacio que las cadenas de caracteres: así, en nuestro ejemplo, escribimos la palabra "Argentina" sólo una vez, y el número 1 (código correspondiente a Argentina) varias veces en reemplazo de "Argentina". Por eso, casi nunca se habla de redundancia de datos cuando los campos en cuestión son numéricos. Para solucionar el problema anterior y otros derivados que surgen a partir de la redundancia de datos, modificamos la estructura de la tabla de esta menera: Reglas normales Aunque existen 5 formas normales, una base de datos ya se considera normalizada al llegar a la tercera forma normal.
  • 29.
    En la tablaanterior existe una serie de problemas. A través de instrucciones SQL no podríamos contestar, por ejemplo, cuántos productos compró Juan López o cuál es el producto más vendido de la empresa. Estos inconvenientes se dan posiblemente porque no se respeta la primera forma normal: la columna Producto contiene más de un valor por registro. Es importante mencionar que aplicando la primera forma normal, nuestra tabla original se divide en dos y queda de la siguiente manera: Una tabla se encuentra en la primera forma normal si cada una de las columnas admite un único valor para cada registro. Veamos un ejemplo: Primera Forma Normal - 1FN:
  • 30.
    En esta formanormal, lo que se trata de lograr es que cada uno de los campos de una tabla depende directamente de la clave primaria. Pensemos en el siguiente ejemplo que consiste en guardar datos de empleados(nombre,empresa en la que trabaja, dirección de la empresa): El campo Nombre_empleado depende directamente de la clave Cod_empleado. En cambio, Dirección_empresa no depende de Cod_empleado. En cambio, Dirección_empresa no depende de Cod_empleado, sino de la empresa. Ver este tipo de situaciones depende de la experiencia que se vaya logrando. En definitiva la situacióon final podría ser la siguiente manera: Segunda Forma Normal - 2FN:
  • 31.
    En el primercaso podríamos suponer que un empleado puede trabajar en más de una empresa. Una tabla está en tercera forma normal si sus campos dependen únicamente de la clave, es decir, no dependen unos de otros. Si repasamos el ejemplo anterior veremos que esto nos sucede. Veamos otro ejemplo de esto: O también: Tercera Forma Normal - 3FN: Si se presta atención, veremos que el campo Duración depende más del campo DVD que de Cliente. Aplicando la tercera forma normal obtendríamos el siguiente escenario:
  • 32.
    Gestor de basede datos: MYSQL SQL Server Oracle MongoDB Cassandra PostgreSQL MariaDB Se dispone de varias herramientas para la gestión de base de datos, por nombrar algunos esta: En este documento se trabajará con MYSQL.
  • 33.
    Rapidez Posibilidad de trabajaren diferentes plataformas Múltiples formatos de tablas para cada necesidad Seguridad Gran estabilidad Administración simple ¿Por qué MySQL? MySQL es un sistema gestor de bases de datos muy utilizados en la actualidad por los siguientes motivos: Si bien todavía le queda mucho camino por recorrer, en corto tiempo ha logrado darse a conocer en el ámbito informático y fue afianzándose progresivamente en el mundo de las bases de datos relacionales. Desde hace algún tiempo, se ha ido dando una particular unión entre base de datos y el lenguaje de programación PHP, por este motivo, MySQL se utiliza principalmente en sitios web.
  • 34.
    En la siguientepantalla seleccionamos "No thanks, just start my download." y procedemos a descargar el instalador de MySQL (este programa luego nos descargará la última versión)Una vez descargado el archivo "mysql- installer-web-community-8.0.12.0.msi" (o una versión posterior) procedemos a ejecutarlo y luego de aceptar "los términos y condiciones" dejaremos la mayoría de las opciones por defecto: Link de descarga: https://dev.mysql.com/downloads/windows/installer/8.0.html INSTALACIÓN DE MYSQL
  • 35.
    En la segundapantalla dejamos seleccionado "Developer Default" que nos instalará la mayoría de las herramientas que necesitaremos como programador: La pantalla siguiente nos informa algunos otros programas que se instalarán para el correcto funcionamiento de MySQL:
  • 36.
    El siguiente pasoes el que más tiempo demorará debido a que se descargarán de internet el servidor de MySQL propiamente dicho, manuales, drivers de conexión para distintos lenguajes etc, una vez descargados se ejecuta el proceso de instalación: La siguiente ventana nos informa que se procederá a configurar el "MySQL Server", "MySQL Router" y "Samples":
  • 37.
    Para configurar elservidor debemos indicar en "Connectivity" el puerto de comunicaciones que por defecto está configurado con el valor "3306" (si ya tiene instalada otra versión de MySQL en su computadora cambie este puerto por "3307" y no tendrá conflictos con la versión anterior): Dejemos seleccionada la opción por defecto "Standalone MySQL Server":
  • 38.
    Dejemos el métodode autenticación recomendado: En el siguiente paso debemos definir la clave para el usuario "root" o raiz del servidor de base de datos. No debemos olvidar dicha clave ya que cada vez que necesitemos acceder al servidor MySQL se nos pedirá dicha clave para el usuario "root":
  • 39.
    No crearemos eneste momento otras cuentas de usuarios para el servidor MySQL (lo veremos más adelante en este curso) Dejamos los valores por defecto para la pantalla de "Window Service": Finalmente confirmamos la configuración definida en los diálogos anteriores:
  • 40.
    Los mismos pasosahora damos para configurar el "MySQL Router", dejamos datos por defecto: La siguiente pantalla nos permite verificar el correcto funcionamiento del servidor, debemos ingresar la clave que creamos anteriormente:
  • 41.
    La última pantallainicia las aplicaciones "Workbench" y "MySQL Shell". Tenemos ya todo el software necesario para desarrollar en forma local el curso de MySQL instalado en nuestro sistema operativo Windows:
  • 42.
  • 43.
    Para crear unanueva base de datos usaremos la sentencia create database: Para eliminar una base de datos, usamos la sentencia drop database: MySQL es sensible al uso de mayúsculas y minúsculas, tanto en la definición de base de datos como de tablas o columnas. CREAR BASE DE DATOS:
  • 44.
    USAR BASE DEDATOS CREADA: Para trabajar con una base de datos, se tiene que abrir, para eso se utiliza el comando "USE", para indicar que base de datos se va a utilizar. CREAR TABLA: En este caso, la sentencia create table construye una nueva tabla en la base de datos en uso. La tabla contiene tres columnas, nombre,dirección, y teléfono, todas de tipo carácter y de longitudes 30, 40 y 15 respectivamente. Si se intenta guardar en ellas valores que sobrepasen esos límites, serán truncados para poderlos almacenar. Por ese motivo, es importante reservar espacio suficiente para cada columna. Si se prevé que muchos registros ocuparán sólo una fracción del espacio reservado, se puede utilizar el tipo varchar, similar a char, con la diferencia de que el valor ocuparía un espacio menor al especificado si la cadena es más corta que el máximo indicado, ahorrando así espacio de almacenamiento.
  • 45.
    id int unsignedNOT NULL auto_increment crea la columna id , este tipo de campo asignará una ID numérica única a cada registro en la tabla (lo que significa que no hay dos filas que tengan la misma id en este caso), MySQL asignará automáticamente una nueva, valor único para el campo de id del registro (comenzando con 1). Las tablas puedden eliminarse con drop table: Alternativamente, se pueden utilizar la sintaxis siguiente con condicional:
  • 46.
    Aunque la creaciónde una clave primaria puede declararse como atributo de columna, es conveniente definirla como restricción de tabla. También es posible indicar restricciones sobre la tabla y no sobre columnas especificas:
  • 47.
    La primera restricciónse refiere a la clave primaria, compuesta por las columnas nombre y nacimiento: no puede haber dos personas que se llamen igual y que hayan nacido en la misma fecha. La clave primaria permite identificar de manera unívoca cada registro. La segunda restricción define que la pareja de una persona debe ser única: dos personas no pueden tener la misma pareja. Too intento de insertar un nuevo registro donde el nombre de la pareja ya exista, será rechazado. Cuando se restringe una columna con unique, los valores null reciben un trato especial, pues permiten múltiples valores nulos. La tercera restricción afecta a la columna proveedor, sólo puede tomar valores que existan en la clave primaria de la tabla proveedor. Las restricciones de la tabla pueden definirse con un identificador útil para hacer referencias posteriores a la restricción:
  • 48.
    INSERTAR UNA FILAEN UNA TABLA: Las strings varchar también se pueden insertar utilizando comillas simples: ACTUALIZAR UNA FILA EN TABLA: El valor int se puede insertar en una consulta sin comillas. Las cadenas y las fechas deben estar entre comillas simples ' o comillas dobles " update usuarios set nombre='GustavoGarcia' where nombre='Gustavo'; update usuarios set nombre='MarceloDuarte', clave='Marce' where nombre='Marcelo'; ELIMINAR UNA FILA DE UNA TABLA: Esto borrará la fila que tiene id es 8.
  • 49.
    MOSTRAR LISTA DEBASE DE DATOS: MOSTRAR TABLAS EN UNA BASE DE DATOS: SELECCIONANDO FILAS:
  • 50.
    Use la cláusulaORDER BY para ordenar el resultado de una tabla en una o más columnas. Si se desea que, al momento de hacer una consulta, los datos aparezcan en un orden determinado, es preciso utilizar la cláusula ORDER BY en la sentencia SELECT. MOSTRAR LOS CAMPOS DE UNA TABLA: ORDENAR DATOS (ORDER BY):
  • 51.
    FUNCIONES AGREGADAS: AGRUPAR DATOS(GROUP BY): La cláusula MySQL GROUP BY se usa en una declaración SELECT para recopilar datos en varios registros y agrupar los resultados por una o más columnas. Ejemplo utilizando la función SUM: La función SUM sumará todos los valores que se encuentren en la columna quantity,mostrará el resultado como "Total quantity" gracias a "AS" que se utiliza para asignar un nombre alias a la nueva columna que mostrará el resultado de la suma. A continuación un ejemplo:
  • 52.
    Supongamos una tablade empleados en la que cada fila es un empleado que tiene un name , un department y un salary . Esto le diría qué departamento contiene el empleado con el salario más bajo y cuál es ese salario. GRUPO USANDO LA FUNCIÓN MIN: GRUPO USANDO LA FUNCIÓN COUNT: GRUPO POR USO QUE TIENE: Usar GROUP BY ... HAVING para filtrar registros agregados es análogo a usar SELECT ... WHERE para filtrar registros individuales.También podrías decir HAVING Man_Power >= 10 ya que HAVING entiende "alias".
  • 53.
    La cláusula HAVINGespecifica condiciones de búsqueda para grupos de filas; lleva a cabo la misma función que antes cumplía la cláusula WHERE para las filas de todas las tablas, pero ahora las condiciones se aplican a los grupos obtenidos. HAVING: Se usan para mostrar los resultados de grupos de filas en lugar de filas individuales. GROUP BY CON FUNCIONES AGREGADAS: Tabla de pedidos:
  • 54.
    Devuelve el númerode filas que satisfacen un criterio específico en la cláusula WHERE . Ej .: Número de pedidos para cada cliente. Contar: Resultado: Sumar Devuelve la suma de la columna seleccionada. Ej : Suma del total y artículos para cada cliente
  • 55.
    Devuelve el valormás alto de una determinada columna o expresión. Por ejemplo: el mayor total de pedidos para cada cliente. Resultado: MAX:
  • 56.
    Devuelve el valormás bajo de una determinada columna o expresión. Ej .: El pedido más bajo para cada cliente. Resultado: MIN: Resultado:
  • 57.
    SELECCIONAR POR NOMBREDE COLUMNA: SELECCIONAR TODAS LAS COLUMNAS: Consulta: Resultado: Ejemplo: Consulta: Resultado:
  • 58.
    SELECCIONAR CON WHERE: Consulta: Resultado: SELECCIONARCON LIKE (%): "adm" en cualquier lugar: Comienza con "adm":
  • 59.
    Al igual queel carácter % en una cláusula LIKE coincide con cualquier número de caracteres, el carácter _ solo coincide con un carácter. Por ejemplo: Los alias de SQL se utilizan para cambiar temporalmente el nombre de una tabla o una columna.Generalmente se utilizan para mejorar la legibilidad. Termina con "adm": SELECCIONAR CON ALIAS: Consulta: Resultado:
  • 60.
    SELECCIONAR CON CASEO IF: Consulta: Resultado: Con IF: Nota: Esto significa que: SI st.percentage> = 35 es TRUE luego devuelva 'Pass' ELSE return 'Fail'
  • 61.
    REFERENCIAS BIBLIOGRÁFICAS PHP + MYSQLDESDE CERO Francisco Minera. (2014) DESARROLLO PHP + MYSQL Francisco Minera. (2011) FUNDAMENTOS DE BASE DE DATOS Silberschatz, Korth, Sudarshan. (2006) BASES DE DATOS Rafael Camps Paré, Luis Alberto Casillas Santillán, Marc Gibert Ginestà, Carme Martín Escofet, Oscar Pérez Mora. (2005) PROCESAMIENTO DE BASES DE DATOS David M. Kroenke. (2003) APRENDIZAJE MYSQL EBOOK. (2019)
  • 62.