Data">
APUNTES FINALES Fundamentos de Bases de Datos
APUNTES FINALES Fundamentos de Bases de Datos
APUNTES FINALES Fundamentos de Bases de Datos
2. Entidades y atributos
*Entidades:
- Es algo similar a un objeto (programación orientada a objetos) y representa algo en el
mundo real, incluso algo abstracto.
- Se representan con su nombre encerradas en un rectángulo
- Tienen atributos que son las cosas que los hacen ser una entidad
- Por convención las entidades se ponen en plural (porque una entidad representan un
grupo de objetos)
- Tipos de entidades:
+ Fuertes - No dependen de nadie para existir
+ Débiles - Dependen de una entidad fuerte para existir, se representan con un rectángulo
pero tienen doble línea
# Por identidad: No se diferencian entre sí más que por la clave de su identidad fuerte.
# Por existencia: Se les asigna una clave propia.
• Atributos:
o Los atributos pueden ser:
▪ Atributos - son representados con óvalos
▪ Atributos Multivaluado - Son aquellos que son dos o más del mismo, representados con
DOS óvalos (son varios en uno, como llantas, ojos, piernas)
▪ Atributos Compuestos - Son aquellos que están compuestos por más atributos
▪ Atributos Derivados - Se obtienen a partir de otros y usan un ovalo con línea punteada
▪ Atributos Llave - Son aquellos que identifican a la entidad y no pueden ser repetidos,
pueden ser: <h1>Naturales - Inherentes al objeto como un número de serie</h1>
<h1>Clave artificial - No son inherentes al objeto y se asigna de manera arbitraria</h1>
Las relaciones nos permiten ligar o unir nuestras diferentes entidades y se representan
con rombos. Por convención se definen a través de verbos.
Las relaciones tienen una propiedad llamada cardinalidad y tiene que ver con números.
Cuántos de un lado pertenecen a cuántos del otro lado:
• Cardinalidad: 1 a 1
• Cardinalidad: 0 a 1
• Cardinalidad: 1 a N
• Cardinalidad: 0 a N
5. Diagrama ER
Un diagrama es como un mapa y nos ayuda a entender cuáles son las entidades con las
que vamos a trabajar, cuáles son sus relaciones y qué papel van a jugar en las
aplicaciones de la base de datos.
• Lógicos: BOOLEAN
Constraints (Restricciones)
• NOT NULL: Se asegura que la columna no tenga valores nulos
• UNIQUE: Se asegura que cada valor en la columna no se repita
• PRIMARY KEY: Es una combinación de NOT NULL y UNIQUE
• FOREIGN KEY: Identifica de manera única una tupla en otra tabla
• CHECK: Se asegura que el valor en la columna cumpla una condición dada
• DEFAULT: Coloca un valor por defecto cuando no hay un valor especificado
• INDEX: Se crea por columna para permitir búsquedas más rápidas.
En MySQL workbench, tenemos estas opciones cuando se está creando una tabla
• Primary Key
• Not Null
• Unique
• Binary
• Unsigned
• Zero Filled
• Autoincremental:
• Columna generada.
I. DATOS NUMÉRICOS
Listado de cada uno de los tipos de dato numéricos en MySQL, su ocupación en disco y
valores.
◼ INT (INTEGER): Ocupación de 4 bytes con valores entre -2147483648 y
2147483647 o entre 0 y 4294967295.
◼ SMALLINT: Ocupación de 2 bytes con valores entre -32768 y 32767 o entre 0
y 65535.
◼ TINYINT: Ocupación de 1 bytes con valores entre -128 y 127 o entre 0 y 255.
◼ MEDIUMINT: Ocupación de 3 bytes con valores entre -8388608 y 8388607 o
entre 0 y 16777215.
BIGINT: Ocupación de 8 bytes con valores entre -8388608 y 8388607 o entre 0 y 16777215.
◼ DECIMAL (NUMERIC): Almacena los números de coma flotante como cadenas
o string.
◼ FLOAT (m,d): Almacena números de coma flotante, donde ‘m’ es el número
de dígitos de la parte entera y ‘d’ el número de decimales.
◼ DOUBLE (REAL): Almacena número de coma flotante con precisión doble.
Igual que FLOAT, la diferencia es el rango de valores posibles.
◼ BIT (BOOL, BOOLEAN): Número entero con valor 0 o 1.
◼ DATE: Válido para almacenar una fecha con año, mes y día, su rango oscila
entre ‘1000-01-01′ y ‘9999-12-31′.
◼ DATETIME: Almacena una fecha (año-mes-día) y una hora (horas-minutos-
segundos), su rango oscila entre ‘1000-01-01 00:00:00′ y ‘9999-12-31
23:59:59′.
◼ TIME: Válido para almacenar una hora (horas-minutos-segundos). Su rango
de horas oscila entre -838-59-59 y 838-59-59. El formato almacenado es
‘HH:MM:SS’.
◼ TIMESTAMP: Almacena una fecha y hora UTC. El rango de valores oscila entre
‘1970-01-01 00:00:01′ y ‘2038-01-19 03:14:07′.
◼ YEAR: Almacena un año dado con 2 o 4 dígitos de longitud, por defecto son 4.
El rango de valores oscila entre 1901 y 2155 con 4 dígitos. Mientras que con
2 dígitos el rango es desde 1970 a 2069 (70-69).
La normalización como su nombre lo indica nos ayuda a dejar todo de una forma
normal. Esto obedece a las 12 reglas de Codd y nos permiten separar componentes
en la base de datos:
I. Primera forma normal (1FN): Atributos atómicos (Sin campos repetidos)
II. Segunda forma normal (2FN): Cumple 1FN y cada campo de la tabla debe
depender de una clave única.
III. Tercera forma normal (3FN): Cumple 1FN y 2FN y los campos que NO son
clave, NO deben tener dependencias.
IV. Cuarta forma normal (4FN): Cumple 1FN, 2FN, 3FN y los campos
multivaluados se identifican por una clave única.
EXPLICACIÓN DETALLADA:
La normalización en las bases de datos relacionales es uno de esos temas que, por un lado,
es sumamente importante y por el otro suena algo esotérico. Vamos a tratar de entender
las formas normales (FN) de una manera simple para que puedas aplicarlas en tus proyectos
profesionales.
a. Primera Forma Normal (1FN)
Esta FN nos ayuda a eliminar los valores repetidos y no atómicos dentro de una base de
datos.
Formalmente, una tabla está en primera forma normal si:
• Todos los atributos son atómicos. Un atributo es atómico si los elementos del
dominio son simples e indivisibles.
• No debe existir variación en el número de columnas.
• Los campos no clave deben identificarse por la clave (dependencia funcional).
• Debe existir una independencia del orden tanto de las filas como de las columnas;
es decir, si los datos cambian de orden no deben cambiar sus significados.
Se traduce básicamente a que, si tenemos campos compuestos como por ejemplo “nombre
completo” que en realidad contiene varios datos distintos, en este caso podría ser
“nombre”, “apellido paterno”, “apellido materno”, etc.
También debemos asegurarnos de que las columnas son las mismas para todos los registros,
que no haya registros con columnas de más o de menos.
Todos los campos que no se consideran clave deben depender de manera única por el o los
campos que si son clave.
Los campos deben ser tales que, si reordenamos los registros o reordenamos las columnas,
cada dato no pierda el significado.
b. Segunda Forma Normal (2FN)
Esta FN nos ayuda a diferenciar los datos en diversas entidades.
Formalmente, una tabla está en segunda forma normal si:
• Está en 1FN
• Sí los atributos que no forman parte de ninguna clave dependen de forma completa
de la clave principal. Es decir, que no existen dependencias parciales.
• Todos los atributos que no son clave principal deben depender únicamente de la
clave principal.
Lo anterior quiere decir que sí tenemos datos que pertenecen a diversas entidades, cada
entidad debe tener un campo clave separado. Por ejemplo:
En la tabla anterior tenemos por lo menos dos entidades que debemos separar para que
cada uno dependa de manera única de su campo llave o ID. En este caso las entidades son
alumnos por un lado y materias por el otro, ya que una materia. En el ejemplo anterior,
quedaría de la siguiente manera:
c. Tercera Forma Normal (3FN)
Esta FN nos ayuda a separar conceptualmente las entidades que no son dependientes.
Formalmente, una tabla está en tercera forma normal si:
Se encuentra en 2FN
No existe ninguna dependencia funcional transitiva en los atributos que no son clave
Esta FN se traduce en que aquellos datos que no pertenecen a la entidad deben tener una
independencia de las demás y debe tener un campo clave propio. Continuando con el
ejemplo anterior, al aplicar la 3FN separamos la tabla alumnos ya que contiene datos de los
cursos en ella quedando de la siguiente manera.
d. Cuarta Forma Normal (4FN)
Esta FN nos trata de atomizar los datos multivaluados de manera que no tengamos datos
repetidos entre rows.
Formalmente, una tabla está en cuarta forma normal si:
• Se encuentra en 3FN
• Los campos multivaluados se identifican por una clave única
Esta FN trata de eliminar registros duplicados en una entidad, es decir que cada registro
tenga un contenido único y de necesitar repetir la data en los resultados se realiza a través
de claves foráneas.
Aplicado al ejemplo anterior la tabla materia se independiza y se relaciona con el alumno a
través de una tabla transitiva o pivote, de tal manera que si cambiamos el nombre de la
materia solamente hay que cambiarla una vez y se propagara a cualquier referencia que
haya de ella.
De esta manera, aunque parezca que la información se multiplicó, en realidad la
descompusimos o normalizamos de manera que a un sistema le sea fácil de reconocer y
mantener la consistencia de los datos.
Algunos autores precisan una 5FN que hace referencia a que después de realizar esta
normalización a través de uniones (JOIN) permita regresar a la data original de la cual partió.
9. Clientes gráficos
Son aplicaciones que permiten conectarse al servidor y enviarle conjuntos de órdenes para
manipular las bases de datos y los datos que contienen, a través de secuencias de órdenes
en SQL. Los más clásicos son los que ofrecen una línea de órdenes («comandos» para los
incultos), pero los más interesantes para usuarios de tipo novel y medio son aquellos que
ofrecen una interfaz gráfica. Si además incluyen herramientas gráficas de diseño de
modelos de datos E-R, pues mejor que mejor.
10. SQL – Tipos de lenguaje
◼ REVOKE:
Es la que ofrece a los usuarios estar sin permiso de lectura / escritura en objetos de la BD.
IV. TLC - Lenguaje de Control de Transacciones
Instrucciones que permiten administrar transacciones y tener integridad de datos dentro
de las declaraciones SQL. Se gestiona a través de las siguientes declaraciones
◼ BEGIN Transaction: Nos permite abrir una transacción
◼ COMMIT Transaction: Ofrece confirmar una transacción
◼ ROLLBACK Transaction: Devuelve una transacción en caso de error cometido.
◼ UPDATE people
SET last_name = 'Chávez', city= 'Mérida'
WHERE person_id = 1; = 1;
III. Delete: Esta sentencia es riesgosa porque puede borrar el contenido de una
tabla.
“NO OLVIDES PONER EL WHERE EN EL DELETE FROM”
Las consultas o queries a una base de datos son una parte fundamental ya que esto podría
salvar un negocio o empresa.
Alrededor de las consultas a las bases de datos se han creado varias especialidades como
ETL o transformación de datos, business intelligence e incluso machine learning.
Notas:
✓ * Booleano: Un valor booleano representa un valor que puede ser verdadero (TRUE)
o falso (FALSE). Una expresión o predicado booleano puede producir como resultado
un valor desconocido, que se representa como el valor nulo.
19. SELECT
SELECT se encarga de proyectar o mostrar datos.
Estructura:
i. Select (*) →trae toda la tabla
ii. SELECT (nombre de un atributo) (se pueden traer varios atributos separados por
coma).
SELECT portada, posts, comments.
iii. FROM (Nombre de la tabla a seleccionar).
FROM posts;
iv. FROM (NOMBRE DE LA BD/SCHEMA SI NO ESTA POR DEFAULT) (nombre de la tabla
seleccionada)
FROM platziblog.posts;
◼ El nombre de las columnas o campos que estamos consultando puede ser
cambiado por AS después del nombre del campo y poniendo el nuevo que
queremos poner.
SELECT titulo AS encabezado
FROM posts;
◼ Existe una función de SELECT para poder contar la cantidad de registros. Esa
información (número ) será el resultado del Query.
SELECT COUNT (*)
FROM POSTS;
En este ejemplo está diciendo que tráiganme todos los campos de la tabla usuarios y todos
los usuarios, tengan o no tengan posts.
b. SELECT*
FROM posts
WHERE titulo LIKE '%escandalo%';
%escandalo → trae solo lo que termina en la palabra
escandalo% → trae todo lo que empieza con la palabra
Nota 2: %% → este signo trae lo que se escriba dentro. No olvidar poner en comillas
ya que es un string.
c. SELECT*
FROM posts
WHERE fecha_publicacion > ‘2025-01-01’
d. SELECT*
FROM posts
WHERE fecha_publicacion BETWEEN ‘2023-01-01’ AND ‘2025-12-31’
e. SELECT*
FROM posts
WHERE YEAR( fecha_publicacion) BETWEEN ‘2023’ AND ‘2024’;
f. SELECT*
FROM posts
WHERE MONTH( fecha_publicacion) = 04;
Utilizando la sentencia WHERE nulo y no nulo
a. SELECT*
FROM posts
WHERE usuario_id IS NOT NULL;
b. SELECT*
FROM posts
WHERE usuario_id IS NULL;
c. SELECT*
FROM posts
WHERE usuario_id IS NOT NULL
AND estatus =’activo’
AND id < 50
AND categoria_id = 2
AND YEAR(fecha_publicacion) = ‘2025’
;
23. GROUP BY
SELECT estatus, COUNT (*) post_quantity
FROM posts
GROUP BY estatus;
ESTATUS l POST_QUANTITY
Activo l 17
Inactivo l 5
Es útil cuando se necesita para agrupar por alguna categoría o por algún parámetro
y que te arroje una cantidad por grupos.
Es interesante para datos agregados para informes por ejemplo cantidades de
posts en un tiempo, un gasto por parámetro, etc.
Esto lo que nos está diciendo es: seleccionar solo el año del campo
(fecha_publicacion) nombrarlo como “post_year”, luego contar todos los registros
y nombrar la columna como “post_quantity) De Posts, agrupado por “post_year”.
Y nos lo traerá de la siguiente manera:
Post_year I Post_quantity
2022 I 5
2021 I 2
2020 I 3 ……….. etc
EJEMPLO 1:
SELECT *
FROM posts
ORDER BY fecha_publicacion ASC;
SELECT *
FROM posts
ORDER BY fecha_publicacion DESC;
SELECT *
FROM posts
ORDER BY título ASC/DESC;
SELECT *
FROM posts
ORDER BY usuario_id ASC/DESC;
EJEMPLO 2:
SELECT *
FROM posts
ORDER BY fecha_publicación DESC
LIMIT 5;
Con esta opción Podemos traer información definida previamente, como un top 5,
10, etc, de algo.
HAVING → tiene una similitud con where. La diferencia está en que cuando
quieras hacer filtros de duplas o filas agrupadas (usando group by, agrupando por
fecha y mostrando la cantidad de datos en esa fecha) se debe usar “having” ya que
where no reconoce estas agrupaciones de filas y ni cambios de nombres. Campos
dinámicos
EJEMPLO 3:
SELECT MONTHNAME(fecha_publición) AS post_month, estatus, COUNT(*) AS
post_quantity
FROM posts
WHERE post_quantity > 1 ---→ ERROR. ya que post_quantity no ocurre hasta la
sentencia “group by” y no reconoce también el nombre.
GROUP BY estatus, post_month
ORDER BY past_month
(forma correcta)
SELECT MONTHNAME(fecha_publición) AS post_month, estatus, COUNT(*) AS
post_quantity
FROM posts
GROUP BY estatus, post_month
HAVING post_quantity > 1 -→ después del group by debido que es aquí donde se
agrupan los posts, dando el número y es llamado de esa manera.
ORDER BY past_month
Los nested query hay que tener cuidado porque se puede convertir en un producto
cartesiano es decir se multiplican los datos de las tablas y al crecer la cantidad de datas
entonces se vuelve pesado el query. Se vuelve query ya que cada vez que aumente la
cantidad de operación en el query padre se hace lo mismo en el segundo entonces se hace
muy pesado.
Es mejor hacerlo en consultas que sabemos que no van a ser escalables.
• Las consultas anidadas son la mejor opción cuando los valores dependen de otras
tablas, y estas no se encuentran relacionadas entre sí.
• Las consultas anidadas son la mejor opción para casos de INSERT, DELETE,
UPDATE, cuya condición dependa del escenario explicado en el punto anterior
• Los JOINS son la mejor opción para casos de SELECT
Significan que dentro de un query podemos hacer otro query. Esto sirve para
hacer join de tablas, estando una en memoria. También teniendo un query como
condicional del otro.
.
Este proceso puede ser tan profundo como quieras, teniendo infinitos queries
anidados.
Se le conoce como un producto cartesiano ya que se multiplican todos los
registros de una tabla con todos los del nuevo query. Esto provoca que el query
sea difícil de procesar por lo pesado que puede resultar.
.
Ejemplos:
SELECT new_table_projection.date, COUNT(*) AS post_count
FROM (
SELECT DATE(MIN(fecha_publicacion)) AS date, YEAR(fecha_publicacion) AS
post_year
FROM posts
GROUP BY post_year
) AS new_table_projection
GROUP BY new_table_projection.date
ORDER BY new_table_projection.date;
.
SELECT *
FROM posts
WHERE fecha_publicacion = (
SELECT MAX(fecha_publicacion)
FROM posts
);
◼ Ejercicio práctico 1:
SELECT customer_city, group_concat(review_score)
from customers
left join orders_status ON customers.id = orders_status.customer_id
left join order_reviews ON orders_status.order_id = order_reviews.order_id
group by customer_city;
28. Atajo en SQL
Puedes usar una abreviación para evitar escribir lo mismo cada vez.
Ejemplo:
- FROM categorias AS c
29. ¿Qué son y cuáles son los tipos de bases de datos no relacionales?
Respecto a las bases de datos no relacionales, no existe un solo tipo aunque se engloben en
una sola categoría.
Tipos de bases de datos no relacionales:
Clave - valor: Son ideales para almacenar y extraer datos con una clave única. Manejan los
diccionarios de manera excepcional. Ejemplos: DynamoDB, Cassandra.
Basadas en documentos: Son una implementación de clave valor que varía en la forma
semiestructurada en que se trata la información. Ideal para almacenar datos JSON y XML.
Ejemplos: MongoDB, Firestore.
Basadas en grafos: Basadas en teoría de grafos, sirven para entidades que se encuentran
interconectadas por múltiples relaciones. Ideales para almacenar relaciones complejas.
Ejemplos: neo4j, TITAN.
En memoria: Pueden ser de estructura variada, pero su ventaja radica en la velocidad, ya
que al vivir en memoria la extracción de datos es casi inmediata. Ejemplos: Memcached,
Redis.
Optimizadas para búsquedas: Pueden ser de diversas estructuras, su ventaja radica en que
se pueden hacer queries y búsquedas complejas de manera sencilla. Ejemplos: BigQuery,
Elasticsearch.
La primera pista que te puedo dar es que pienses en un inicio en la manera en que los datos
serán extraídos. En el caso de una aplicación, la mejor forma de pensarlo es en términos de
las vistas que vas a mostrar a un momento determinado en la aplicación.
Es decir, al armar la estructura en la base de datos que sea un espejo o que al menos
contenga todos los datos necesarios para llenar las necesidades que tiene nuestra parte
visual en la aplicación.
En el caso de Platziblog por ejemplo si tienes una vista de un blog post individual,
generalmente conviene mostrar además de los datos inherentes al post como el contenido,
datos adicionales como las etiquetas que tiene o por ejemplo el autor (o autores si es
colaborativo), en este caso tal vez convenga guardar estas dos “entidades” (autores y
etiquetas) como subcolecciones de cada documento blog post.
Esta regla se refiere a que la excepción a la regla 1 es cuando tenemos un caso en que la
“entidad” que tiene necesidad de vivir y modificarse constantemente de manera
independiente a las otras colecciones. Por ejemplo en Platziblog podemos en el ejemplo
anterior hacer una excepción a autores porque nos conviene tenerlas como top level
collection en el sentido que se añadan, borren, cambien o listen los usuarios sin depender
del blog post.
Experimenta aplicando estas dos reglas a un proyecto que ya conozcas en una base de datos
relacional y trata de convertirla en un proyecto de Firestore y comentanos los retos a los
que te enfrentaste.
35. BASES DE DATOS EN LA VIDA REAL
Hoy en dia, se utilizan diversos tipos de bases de datos segun el problema que se quiera
resolver:
Las bases de datos relacionales, durante mucho tiempo, fueron utilizadas para resolver
todo tipo de situaciones, pero al aumentar enormemente el numero de datos a
manejar, se volveron ineficientes en muchos casos.
Firestore o MongoDB nos permiten obtener los datos actuales de la aplicacion de
manera simple. Sin embargo, no nos permite hacer, por ejemplo, queries muy
complejos.
En una misma disciplina, es probable que haya que utilizar mas de un tipo de bases de
datos.
36. BIG DATA
Big Data es un concepto que nace de la necesidad de manejar grandes cantidades de datos.
La tendencia comenzó con compañías como YouTube al tener la necesidad de guardar y
consultar mucha información de manera rápida.
Es un gran movimiento que consiste en el uso de diferentes tipos de bases de datos.
En otras palabras es guardar muchos datos por segundo o por milisegundo para ser
consultados de entrada o en un instante (ejemplo una aplicación)
LINK
o https://noticias.universia.es/ciencia-
tecnologia/noticia/2017/09/12/1155659/machine-learning-como-usa-big-data.html
otros apuntes
Grandes cantidades de datos, el reto que empezo a cerrar las puertas fueron que se
estuvieron manejando cada vez mas grandes, grandes volumenes de datos. Se refiere a que
en este momento en milesimas de segundos vamos a guardar grandes cantidades de datos.
Es un gran movimiento que surgio con Youtube y Facebook ya que necesitaban guardar
muchoos datos rapido.
39. ETL
ETL son las siglas de Extract, Transform, Load (extraer, transformar y cargar). Es una técnica
basada en una idea que se trata de tomar datos de archivos muertos y convertirlos en algo
que sea de utilidad para el negocio.
ETL systems extract data from one system, transform the data and load the data into a
database or data warehouse.
LINKS
o https://www.alooma.com/blog/what-is-a-data-pipeline
Las ETL se usan en el ambito del DataWarehouse, sin embargo con el desarrollodel
cloud nace el DataLake que usa las ELT, entonces, la diferencia entre ETL y ELT
depende de dónde se transforman los datos y cuántos datos se retienen en
almacenes de datos operativos.
o ETL
o ELT
40. BUSINESS INTELLIGENCE
Business Intelligence es una parte muy importante de las carreras de datos ya que es
el punto final del manejo de estos. Su razón de ser es tener la información lista, clara y
que tenga todos los elementos para tomar decisiones en una empresa.
Es necesario tener una buena sensibilidad por entender el negocio, sus necesidades y
la información que puede llevar a tomar decisiones en el momento adecuado al
momento de realizar business intelligence.
Business Intelligence es la habilidad para transformar los datos en información, y la
información en conocimiento, de forma que se pueda optimizar el proceso de toma de
decisiones en los negocios.
LINKS
- https://www.sinnexus.com/business_intelligence/
- Datastudio
Apuntes extra
Son una serie de tecnicas que involucran la inteligencia artificial y deteccion de patrones.
A diferencia de Business Intelligence que queremos buscar un patron en especifico con la
informacion que ya tenemos, mientras que con Machine Learning dado un conjunto de
datos buscamos encontrar patrones que no esperas o no eran obvios para un ser humano,
ademas que busca saber en un futuro como se comportarian nuestros usuarios. Una bd
muy buena para esto es BigQuery que nos sirve como warehouse y ademas nos permite
hacer queries que nos podrian ayudar con BusinessIntelligence como son Data Studio.
Entre los dos casos de uso principales de ML son: clasificacion y prediccion.
Con la clasificacion nos referimos a que si tenemos varios datos historicos y queremos
conocer por ejemplo cuales temas fueron mas interesantes durante un periodo en
especifico, no serviria con buscar palabras claves, para este tipo de casos se utiliza la
tecnica de ML denominada Procesamiento de Lenguaje Natural lo que hace es tomar un
texto o reconocimiento de voz que utiliza el lenguaje natural humano nada estructurado,
lo empieza a procesar y nos devuelve los patrones que encontro. Por ejemplo con el
Platziblog: Si tenemos un modelo muy bien entrenado, es decir, que le hayamos pasado
una buena cantidad de articulos que si sabemos que son de politica y reconoce estos
patrones. Cuando le pasamos toda la informacion de Platziblog nos devuelve articulos que
no especificaban por ninguna parte que se trataban de politica pero gracias al modelo
pudimos identificarlos.
Con la prediccion nos ayuda a la toma de decisiones. Por ejemplo le damos las ventas de
unos años pasados, procesa las ventas y genera un modelo, que cuando le pasemos las
ventas actuales nos ayuda a identificar las relaciones y patrones que nos ayuda a visualizar
a donde nos dirigimos, es decir, si le pasamos ventas proyectadas a futuro este nos dice
que va a pasar, si se va a comportar igual, etc.