Está en la página 1de 22

Acreditación Institucionald eA lta Calidad

ANALISTA
DE DATOS
Autor de contenido
John Freddy Parra Peña

Autor de contenido

EMPEZAR
Tabla de
Contenido
Presentación

Objetivos del curso (competencias)


Objetivo general
Objetivo específico

Mapa de contenido de la unidad

Unidad 5: Fundamentos de bases de datos

5.1. Fundamentos de diseño de bases de datos


5.2. Fundamentos de SQL
5.3. DML

Otros materiales para profundizar

Recursos de video

Referencias bibliográficas de la unidad

2
Presentación

En la sociedad actual se ha desarrollado una economía basada en datos e infor-


mación, a tal punto que en este momento existen empresas líderes en merca-
dos tradicionales, sin tener la infraestructura requerida para participar en dichos
mercados tales como los conocíamos, por ejemplo hoy es fácil encontrar que la
empresa líder en servicios de transporte individual de pasajeros, es una compañía
que no cuenta con vehículos, así como en el mercado hotelero podemos ver que
este es liderado por una empresa que no cuenta con camas ni cuartos de hotel.
Estos nuevos participantes solo cuentan con datos e información y la infraestruc-
tura necesaria para conectar a quienes sí tienen disponible esa infraestructura
con quienes requieren estos servicios.
En este curso se busca formar al estudiante en competencias relacionadas con el
análisis de datos usando herramientas tecnológicas tales como: Hojas de cálculo,
bases de datos, y el lenguaje de programación Python. Dentro de las temáticas
a abordar se puede encontrar desde el procesamiento de datos usando hojas de
cálculo hasta el uso del aprendizaje automático para la extracción de conocimien-
to a partir de conjuntos de datos.
Al finalizar este curso, los participantes deben estar en capacidad de apoyar pro-
cesos de análisis de datos que agreguen valor a los procesos de las empresas don-
de vayan a desempeñarse en este rol.

Objetivos del curso (competencias)

Objetivo general
Capacitar a los estudiantes en las diferentes partes del proceso de análisis de
datos, iniciando desde la preparación y la limpieza de estos hasta la presenta-
ción de informes resultantes del procesamiento y representación de los datos.

Objetivo específico
- Presentar al estudiante las herramientas de uso común que pueden ser
utilizadas para el procesamiento y análisis de los datos.
- Capacitar al estudiante en las técnicas para obtener y preparar los datos
que van a ser analizados posteriormente
- Enseñar al estudiante a usar las herramientas para procesar y presentar
los datos de forma visual, extrayéndoles valor
- Enseñar técnicas de aprendizaje automático para que estén en capaci-
dad de predecir escenarios futuros a partir de información pasada y ac-
tual.

3
Mapa de contenido de la unidad

IMAGEN

Módulo 5
Fundamentos de
bases de datos

Ideas clave

Las bases de datos constituyen la persistencia de los sistemas de información, por esta
razón resultan siendo el centro de dichos sistemas, dentro de las responsabilidades
de los sistemas gestores de bases de datos se encuentra la de velar por la integridad
de los datos. En la actualidad existen muchos modelos de bases de datos, pero para
efectos de este curso, el estudio se centrará en las bases de datos relacionales, que son
actualmente las más usadas para gestionar lo referente a la información estructurada.

4
5.1. Fundamentos de diseño de bases de datos

Al almacenar la información en una base de datos relacional, se busca evitar la redun-


dancia innecesaria, en aras de garantizar que no se presenten errores de consistencia.
Por otra parte, para poder manejar el acceso concurrente de los usuarios a los sistemas
de bases de datos, se busca que las unidades lógicas sean lo suficientemente pequeñas,
de tal manera que no se generen bloqueos innecesarios. Para lograr esto se requiere
realizar una tarea de modelado previa a la construcción de los sistemas de bases de da-
tos.

5.1.1. Modelo E-R

El modelo E-R planteado por Peter Chen parte de la división del objeto de estudio en
una serie de entidades de las que se desea almacenar información, entidades que inte-
ractúan entre ellas. Por ejemplo, si se quiere modelar la información de un colegio, las
entidades serían: estudiantes, cursos, docentes, salones, entre otras.
Una vez determinada la lista de entidades relevantes, se procede a identificar cada uno
de los atributos de esa entidad, para el caso de un estudiante, esas características po-
drían ser: nombre, apellido, documento, entre otras. En el modelo una entidad con sus
atributos se representa así:

Para representar la entidad estudiante, se vería así:

5
Existen dos tipos de entidades, las entidades fuertes, que son las que ya se presenta-
ron y las débiles, que son entidades que no tienen significado por sí solas, sino que su
significado depende de otras entidades., estas se representan así:

Los atributos que tiene una entidad pueden tener varios tipos, siendo estos:

• Atributos simples: son atributos normales, que solo aparecen una vez y no se pue-
den dividir

• •Atributos compuestos: son atributos que se pueden dividir, por ejemplo, docu-
mento, el cual se podría dividir en tipo y número

6
• Atributos multivaluados: puede tener varias ocurrencias dentro de una entidad,
por ejemplo, los productos vendidos en una factura.

• Atributos identificadores: son los que identifican única e inequívocamente a cada


uno de los registros en la entidad, por ejemplo, el código de un estudiante debe
existir uno por entidad

• Atributo derivado: es aquel se puede calcular a partir de otros, por ejemplo, la


edad, esta se puede calcular a partir de la fecha de nacimiento

7
Acompañando a las entidades aparecen las relaciones, que son las encargadas de vin-
cular a las entidades con otras. Una relación se lee de una forma similar a cuando un
estudiante cursa una o más asignaturas.
Las relaciones se representan así:

En esta representación el 1 y la n, son las cardinalidades, que son la cantidad de regis-


tros de un lado que interactúan con la cantidad de registros del otro, para el caso del
ejemplo, la relación se leería así: un estudiante cursa muchas asignaturas, pero una
asignatura es cursada por 1 estudiante, lo cual no es cierto, dado que una asignatura
puede ser cursada por muchos estudiantes.

8
Completando el diagrama, el resultado sería de la siguiente forma:

Este modelo tal como se construyó, no es implementable en un motor de bases de


datos relacional, para ello debe pasar por un proceso de normalización, el cual se pre-
senta a continuación.

5.1.2. Normalización

La normalización consiste en aplicar una serie de reglas que organicen el modelo y evi-
ten las redundancias, a continuación, se presentan las primeras 3 formas normales.

5.1.2.1. Primera Forma Normal

Esta primera forma se basa en 4 reglas, en caso de que no se cumplan, se deben hacer
modificaciones al modelo.

• Existencia de una llave primaria o identificador único e inequívoco, en caso de no


existir uno, se debe agregar.
• No existencia de grupos repetitivos, lo cual significa que:
• No existen varias columnas con el mismo significado.
• No existen columnas que en un mismo registro tengan varios valores.
• No existen atributos multivaluados, si existen, estos deben conformar otra entidad.
• No se puede depender del orden de inserción de las filas.
• No depende del orden de las columnas.

Aplicando la primera forma normal, el modelo quedaría así:

9
5.1.2.2. Segunda Forma Normal

Para la segunda forma normal se valida si existen llaves primarias compuestas, es decir
que la llave esté integrada por más de un atributo., en caso de que dichas llaves com-
puestas no existan, automáticamente se cumple la segunda forma normal, en caso de
que si existan se debe validar que todos los demás atributos dependen de toda la llave
y no de solo una parte de ellas. Para el caso del ejemplo, como no hay llaves compues-
tas, el modelo está automáticamente en segunda forma normal

5.1.2.3. Tercera Forma normal


En la tercera forma normal se valida que no existan dependencias transitivas, es decir
que todos los atributos dependan directamente de la llave y no a través de otro atri-
buto, como pasa en el caso el documento, razón por la cual el documento debe irse a
formar otra entidad.

El modelo una vez pasa por esta forma normal quedaría así:

10
5.1.2.4. No relaciones muchos a muchos

Es importante tener en cuenta que, por restricciones del modelo, las relaciones mu-
chos a muchos no son posibles, dado que se crearía una dependencia circular entre las
dos entidades, es decir que ambas dependen mutuamente.

Por esta razón estas relaciones se rompen creando una entidad que generalmente es
débil, con relaciones a las dos entidades originales con cardinalidades muchos a uno.

11
5.1.3. Modelo relacional

El modelo relacional parte de un modelo E-R normalizado a tercera forma normal, y


básicamente lo que hace es cambiar la representación a una más sencilla, hoy en día
esta es la representación usada para las diferentes herramientas case generadoras de
código SQL.

En el modelo relacional las entidades pasan a ser unas cajas, donde internamente se
agregan filas por cada uno de los atributos, así:

Esta notación generalmente tiene variaciones dependiendo del editor usado, en este
caso se usó el editor mysql workbench.

En la representación de la entidad se puede ver:

• Nombre de la entidad
• Nombre y tipo de los atributos
• Si el atributo es opcional u obligatorio (rombo azul obligatorio, rombo blanco op-
cional)
• Si el atributo es identificador (aparece con una llave como ícono)

Para las relaciones el modelo incluye las llaves foráneas, que son simplemente invoca-
ciones de las llaves primarias de otras tablas, para esto se debe crear un atributo en la
tabla que está en el lado muchos de la relación que coincida en tipo con el atributo de
la llave primaria de otra tabla.

Por ejemplo, para la entidad inscripción se adicionan los atributos que corresponden a
las llaves tanto de estudiante como de asignatura.

12
La relación se representa como una línea que une a una entidad con otra, la finaliza-
ción de esta línea indicará la cardinalidad así:

Si la línea fuese continua se indicaría que la llave primaria de la tabla del lado muchos
incluiría a la llave primaria del lado 1.

Completando el modelo se tendría

13
Este modelo, construido en una herramienta case, permite generar el código SQL
necesario para construir l base de datos. Por ejemplo, en mysql workbench se pue-
de generar el siguiente código

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;


USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Tipo_documento`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Tipo_documento` (
`id` INT NOT NULL,
`Nombre` VARCHAR(45) NOT NULL,
`Abreviatura` VARCHAR(3) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;

14
-- -----------------------------------------------------
-- Table `mydb`.`Estudiante`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Estudiante` (
`id` INT NOT NULL,
`nombre` VARCHAR(45) NOT NULL,
`apellido` VARCHAR(45) NULL,
`numero` VARCHAR(45) NOT NULL,
`Tipo_documento_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_Estudiante_Tipo_documento1_idx` (`Tipo_documento_id` ASC) VISI-
BLE,
CONSTRAINT `fk_Estudiante_Tipo_documento1`
FOREIGN KEY (`Tipo_documento_id`)
REFERENCES `mydb`.`Tipo_documento` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Asignatura`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Asignatura` (
`codigo` INT NOT NULL,
`Nombre` VARCHAR(45) NULL,
PRIMARY KEY (`codigo`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Inscripcion`
-- -----------------------------------------------------

15
CREATE TABLE IF NOT EXISTS `mydb`.`Inscripcion` (
`id` INT NOT NULL,
`Estudiante_id` INT NOT NULL,
`Asignatura_codigo` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_Inscripcion_Estudiante_idx` (`Estudiante_id` ASC) VISIBLE,
INDEX `fk_Inscripcion_Asignatura1_idx` (`Asignatura_codigo` ASC) VISIBLE,
CONSTRAINT `fk_Inscripcion_Estudiante`
FOREIGN KEY (`Estudiante_id`)
REFERENCES `mydb`.`Estudiante` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Inscripcion_Asignatura1`
FOREIGN KEY (`Asignatura_codigo`)
REFERENCES `mydb`.`Asignatura` (`codigo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `mydb`.`Tema`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Tema` (
`id` INT NOT NULL,
`nombre` VARCHAR(45) NOT NULL,
`Asignatura_codigo` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_Tema_Asignatura1_idx` (`Asignatura_codigo` ASC) VISIBLE,

16
CONSTRAINT `fk_Tema_Asignatura1`
FOREIGN KEY (`Asignatura_codigo`)
REFERENCES `mydb`.`Asignatura` (`codigo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
El detalle de este código generado se abordará en el siguiente tema.

5.2. Fundamentos de SQL

El Lenguaje estructurado de consulta, es el lenguaje que permite gestionar la informa-


ción dentro de las bases de datos relacionales, este lenguaje está compuesto por sub
lenguajes que se enfocan en responsabilidades diferentes de esta gestión.

5.2.1. DDL

El sub lenguaje de definición de datos tiene la responsabilidad de gestionar los objetos


de bases de datos, es decir, las tablas, las vistas, los usuarios, entre otros.

5.2.2. CREATE

La sentencia CREATE se encarga de crear los objetos de bases de datos, su sintaxis es


muy sencilla, lo cual se puede ver a continuación:
CREATE tipo de objeto nombre propiedades

Tablas

CREATE TABLE nombreTabla (atributo1 tipo opciones, atributo1 tipo opciones, atri-
buto1 tipo opciones);
Por ejemplo, para crear una tabla estudiante como la del modelo del tema ante-
rior, se puede hacer así:
CREATE TABLE Estudiante (
id INT NOT NULL PRIMARY KEY,

17
nombre VARCHAR(45) NOT NULL,
apellido VARCHAR(45) NULL,
numero VARCHAR(45) NOT NULL,
Tipo_documento_id INT NOT NULL)
Nota: el modificador NOT NULL hace que el atributo sea obligatorio, el modificador
primary key fija a una columna como identificador.

Nota: los tipos de datos pueden variar dependiendo del motor de bases de datos, estos
tipos aplican para Mysql y MariaDB entre otros.

5.2.3. ALTER

La modificación de objetos se hace usando la sentencia ALTER, seguida del tipo de ob-
jeto a modificar y el nombre del objeto, después se especifica que va a cambiar,

Por ejemplo, para modificar una tabla adicionando una llave foránea, esto se hace
usando la sentencia ALTER de esta forma:

ALTER TABLE inscripción

ADD CONSTRAINT isc_est_fk

FOREIGN KEY(estudiante_id)

REFERENCES estudiante(id);

En esta sentencia se adiciona una restricción de nombre isc_est_fk, la restricción es de


llave foránea sobre la columna estudiante_id y hace referencia a la columna id de la
tabla estudiante.

5.2.4. DROP

La sentencia se encarga de borrar los objetos de las bases de datos, solo se requiere el
tipo de objeto y el nombre, por ejemplo, para borrar la tabla estudiante, la sintaxis sería:

DROP TABLE estudiante;

18
5.3. DML

El lenguaje de manipulación de datos es el encargado de gestionar la información pre-


sente en los objetos de base de datos

5.3. DML

Con la sentencia INSERT, se pueden adicionar registros a las tablas de las bases de da-
tos, su sintaxis consiste en indicar a qué tabla se le va a hacer la inserción, luego entre
paréntesis listar los campos de la tabla, después se ubica la palabra VALUES seguida de
los valores encerrados entre paréntesis.

Por ejemplo, para insertar un tipo de documento se haría así:

INSERT INTO Tipo_documento(id, Abreviatura, nombre) values (1,’CC’,’Cédula de ciuda-


danía’) ;

5.3.2. UPDATE

La sentencia UPDATE permite actualizar los datos de una tabla, la sintaxis es la siguien-
te:

UPDATE nombre de tabla SET columna=valor where condición.

Por ejemplo, se va a cambiar la abreviatura de la cédula, esto se haría así:


UPDATE Tipo_documento SET abreviatura=’CED’ where id=1;

NOTA: importante, si no se especifica condición se actualizarán todos los datos

5.3. DML

Para borrar datos de las bases de datos se usa esta sentencia, acompañada de la tabla
a la cual se le van a borrar los datos, así:

DELETE FROM nombre_tabla WHERE condición;

Por ejemplo, para borrar la cédula se haría así:

DELETE FROM Tipo_documento where id=1;

19
NOTA: importante, si no se especifica condición se borrarán todos los datos

5.3.4. SELECT

Esta es la sentencia que permite consultar los datos de una o más tablas en la base de
datos, la sintaxis puede resultar siendo la más compleja de las que se han visto hasta
ahora, dado que tiene varias cláusulas, las cuales se presentan a continuación.

SELECT campos a seleccionar


FROM tablas de las cuales se traerán los datos
WHERE condición o condiciones de búsquedas unidas con AND u OR
GROUP BY campos por los cuales se va a agrupar
HAVING condiciones sobre las agrupaciones hechas
ORDER BY criterio de ordenamiento.

Por ejemplo, se quieren listar todas las asignaturas que tienen los estudiantes, para ello
se haría

select estudiante.nombre , asignatura.nombre

from estudiante,asignatura,inscripcion

where estudiante.id=inscripcion.estudiante_id and asignatura.id=inscripon.asignatu-


ra_id;

20
Otros materiales para profundizar

Material complementario

Libro Online SQL Básico http://rua.ua.es/dspace/handle/10045/24076

¡Aprende SQL ahora! curso completo gratis desde cero


https://www.youtube.com/watch?v=uUdKAYl-F7g

Referencias bibliográficas de la unidad

Silberschatz, Abraham., Korth, H. F., & Sudarshan, S. (2002). Database system con-
cepts. McGraw-Hill.

Suárez Cueto, A. (2012). SQL básico.

21
21

También podría gustarte