You are on page 1of 9

Model de Dades:

Un model de dades és una representació estructurada de la informació que una base de dades
contindrà. Els models de dades s'utilitzen per definir com s'organitzaran i es relacionaran les
dades en una base de dades. Els conceptes clau en un model de dades inclouen:

- Primary Key (Clau Primària): És un atribut o conjunt d'atributs que identifica de manera única
cada fila en una taula. La clau primària s'utilitza per garantir la integritat de les dades i per
establir relacions amb altres taules.

- Secondary Key (Clau Secundària): No és una clau única, però encara s'utilitza per cercar
registres de manera eficient. Pot haver-hi diverses claus secundàries en una taula.

- Relació entre Taules: Les relacions entre taules s'estableixen mitjançant claus primàries i
secundàries. Per exemple, si tens una taula de "Clients" amb una clau primària "ID_Client" i
una taula de "Comandes" amb una clau forana "ID_Client" que es relaciona amb la clau
primària a la taula de "Clients", això estableix una relació entre les dues taules.

ETL (Extract, Transform, Load):

ETL és un procés utilitzat per extreure dades de diferents fonts, transformar-les en un format
adequat i carregar-les en un sistema d'emmagatzematge, com una base de dades, per a una
anàlisi posterior. Aquí tens un exemple senzill de com podria ser el procés ETL:

- Extract (Extreure): Obtenir dades de fonts com arxius CSV, bases de dades, APIs, etc.

- Transform (Transformar): Netejar, processar i manipular les dades segons les necessitats. Això
pot incloure la conversió de tipus de dades, l'agregació d'informació, l'eliminació de valors nuls,
etc.

- Load (Carregar): Inserir les dades transformades en una base de dades o sistema
d'emmagatzematge per a la seva anàlisi posterior.

- Anàlisi de Dades amb Python i Pandas:

Pandas és una llibreria de Python molt útil per a l'anàlisi de dades. Aquí tens un exemple bàsic
de com utilitzar Pandas:

Aquesta és només una introducció molt bàsica del que pots fer amb Pandas. La llibreria ofereix
moltes més funcionalitats per a l'anàlisi de dades, com ara l'agregació, la agrupació, els gràfics i
més.

import pandas as pd

# Cargar datos desde un archivo CSV

data = pd.read_csv('archivo.csv')

# Visualizar las primeras filas del DataFrame

print(data.head())

# Filtrar datos

filtered_data = data[data['columna'] > 100]


# Agregar una nueva columna

data['nueva_columna'] = data['columna1'] + data['columna2']

# Resumen estadístico

summary = data.describe()

# Guardar datos en un nuevo archivo CSV

filtered_data.to_csv('nuevo_archivo.csv', index=False)

**Pregunta de Programación de Análisis de Datos con Python:**

**Pregunta:** Dado el siguiente conjunto de datos en un DataFrame de Pandas llamado


`ventas_df`:

| Fecha | Producto | Cantidad | Precio |

|-------------|----------|----------|--------|

| 2023-01-01 | A | 10 | 5.0 |

| 2023-01-01 | B |5 | 7.0 |

| 2023-01-02 | A |8 | 5.0 |

| 2023-01-02 | C | 12 | 6.0 |

| 2023-01-03 | B |7 | 7.0 |

Escribe un código en Python utilizando Pandas para calcular el total de ventas por producto en
enero de 2023 y mostrar el resultado en un nuevo DataFrame.

import pandas as pd

# Suponiendo que ya tienes el DataFrame ventas_df

# Convertir la columna 'Fecha' a tipo datetime si aún no está en ese formato

ventas_df['Fecha'] = pd.to_datetime(ventas_df['Fecha'])

# Filtrar las ventas de enero de 2023

ventas_enero_2023 = ventas_df[(ventas_df['Fecha'] >= '2023-01-01') & (ventas_df['Fecha'] <=


'2023-01-31')]

# Calcular el total de ventas por producto

total_ventas_por_producto = ventas_enero_2023.groupby('Producto')
['Cantidad'].sum().reset_index()

# Mostrar el resultado

print(total_ventas_por_producto)
```

Este código filtra las ventas de enero de 2023, agrupa los datos por producto y calcula la suma
de las cantidades vendidas por producto.

**Pregunta sobre Gobernanza de Datos:**

**Pregunta:** ¿Qué es la gobernanza de datos y por qué es importante en una organización


que maneja grandes volúmenes de información? Proporciona al menos tres prácticas clave que
se utilizan en la gobernanza de datos.

**Respuesta:**

La gobernanza de datos se refiere al conjunto de políticas, procedimientos y prácticas que se


utilizan para administrar y controlar los datos en una organización. Es importante en una
organización que maneja grandes volúmenes de información por varias razones:

1. **Calidad de los Datos:** La gobernanza de datos garantiza la calidad de los datos al


establecer estándares y procedimientos para la captura, almacenamiento y procesamiento de
datos. Esto asegura que los datos sean precisos, coherentes y confiables.

2. **Cumplimiento Normativo:** En muchas industrias, existen regulaciones y leyes que


requieren la protección y la privacidad de los datos. La gobernanza de datos asegura que la
organización cumpla con estas normativas, evitando posibles sanciones legales.

3. **Toma de Decisiones Informadas:** La gobernanza de datos facilita la toma de decisiones


informadas al proporcionar acceso a datos de alta calidad y garantizar que los datos estén
disponibles para quienes los necesitan. Esto mejora la eficiencia operativa y la competitividad.

Prácticas clave en la gobernanza de datos incluyen la designación de responsabilidades claras


(por ejemplo, un Chief Data Officer o CDO), la documentación de políticas y estándares de
datos, la implementación de medidas de seguridad de datos, la gestión de la calidad de los
datos y la creación de un catálogo de datos que describa los datos disponibles en la
organización.

¡Por supuesto! Aquí tienes un ejercicio de examen relacionado con bases de datos y modelado
de datos, incluyendo un proceso ETL (Extract, Transform, Load).

**Ejercicio de Examen - Bases de Datos y ETL**

**Descripción del Ejercicio:**

Supongamos que tienes una base de datos de una tienda en línea con dos tablas principales:
`Clientes` y `Pedidos`. Debes realizar una tarea de ETL para obtener un resumen mensual de los
ingresos totales por cliente.

**Estructura de las Tablas:**

Tabla `Clientes`:
| ID_Cliente | Nombre | Email |

|------------|------------|----------------------|

|1 | Ana | ana@example.com |

|2 | Carlos | carlos@example.com |

|3 | Elena | elena@example.com |

Tabla `Pedidos`:

| ID_Pedido | Fecha | ID_Cliente | Monto |

|-----------|-------------|------------|-------|

| 101 | 2023-01-15 | 1 | 50.0 |

| 102 | 2023-01-20 | 2 | 75.0 |

| 103 | 2023-02-05 | 1 | 30.0 |

| 104 | 2023-02-10 | 3 | 45.0 |

**Tarea:**

Escribe un código SQL para realizar la extracción, transformación y carga (ETL) de datos para
obtener un resumen mensual de ingresos totales por cliente durante el primer trimestre del
año 2023 (enero, febrero y marzo).

```sql

-- Extracción: Seleccionar los datos necesarios de la base de datos (se haría el insert into para la
carga al final)

INSERT INTO ResumenIngresos (ID_Cliente, Nombre, Mes, Ingresos)

-- Crear la tabla ResumenIngresos si aún no existe

CREATE TABLE IF NOT EXISTS ResumenIngresos (

ID_Cliente INT,

Nombre VARCHAR(255),

Mes INT,

Ingresos DECIMAL(10, 2)

);

SELECT
C.ID_Cliente,

C.Nombre,

MONTH(P.Fecha) AS Mes,

SUM(P.Monto) AS Ingresos

FROM

Clientes C

JOIN

Pedidos P ON C.ID_Cliente = P.ID_Cliente

WHERE

YEAR(P.Fecha) = 2023

AND MONTH(P.Fecha) BETWEEN 1 AND 3

GROUP BY

C.ID_Cliente,

C.Nombre,

MONTH(P.Fecha)

ORDER BY

C.ID_Cliente,

Mes;

```

**Explicación:**

- En la extracción, seleccionamos los datos necesarios de las tablas `Clientes` y `Pedidos` y


realizamos una unión (JOIN) basada en el ID del cliente.

- En la transformación, utilizamos la función `MONTH` para extraer el mes de la fecha del


pedido y calculamos la suma de los montos para cada cliente y mes.

- Utilizamos la cláusula `WHERE` para limitar los resultados al primer trimestre del año 2023
(enero, febrero y marzo).

- En la carga, presentamos el resultado en una tabla que muestra el ID del cliente, el nombre
del cliente, el mes y los ingresos totales por cliente y mes.

¡Por supuesto! Los ejercicios pueden ser mucho más complejos y pueden abordar temas
avanzados relacionados con las claves primarias, claves foráneas y el uso de índices en bases de
datos. Aquí tienes un ejercicio que incluye diferentes escenarios con claves primarias y cómo
funcionan los índices:
**Ejercicio Avanzado de Bases de Datos: Claves Primarias, Claves Foráneas e Índices**

**Escenario:**

Supongamos que estás diseñando una base de datos para una tienda en línea que vende
productos electrónicos. Debes crear las tablas necesarias para gestionar productos, categorías
de productos, clientes y pedidos. Además, debes definir las claves primarias y claves foráneas
adecuadas, así como explicar el uso de índices.

**Instrucciones:**

1. Crea una tabla llamada `Productos` que contenga la información de los productos. Cada
producto debe tener un nombre, precio y cantidad en stock. Define una clave primaria
adecuada.

2. Crea una tabla llamada `Categorias` que almacene las categorías de productos. Cada
categoría debe tener un nombre único. Define una clave primaria.

3. Crea una tabla llamada `Clientes` que almacene la información de los clientes, incluyendo su
nombre, dirección y dirección de correo electrónico. Define una clave primaria.

4. Crea una tabla llamada `Pedidos` que registre los pedidos realizados por los clientes. Cada
pedido debe estar relacionado con un cliente y contener la fecha del pedido. Define una clave
primaria y una clave foránea que vincule los pedidos a los clientes.

5. Explica la importancia de las claves primarias y las claves foráneas en este diseño de base de
datos.

6. Explica cómo y por qué usarías índices en estas tablas. Proporciona ejemplos de consultas
que se beneficiarían de la presencia de índices y cómo mejorarían el rendimiento de esas
consultas.

**Respuestas:**

1. Tabla `Productos`:

```sql

CREATE TABLE Productos (

ID_Producto INT PRIMARY KEY,


Nombre VARCHAR(255),

Precio DECIMAL(10, 2),

Stock INT

);

```

2. Tabla `Categorias`:

```sql

CREATE TABLE Categorias (

ID_Categoria INT PRIMARY KEY,

Nombre VARCHAR(255) UNIQUE

);

```

3. Tabla `Clientes`:

```sql

CREATE TABLE Clientes (

ID_Cliente INT PRIMARY KEY,

Nombre VARCHAR(255),

Direccion VARCHAR(255),

Email VARCHAR(255)

);

```

4. Tabla `Pedidos`:

```sql

CREATE TABLE Pedidos (

ID_Pedido INT PRIMARY KEY,

Fecha DATE,

ID_Cliente INT,

FOREIGN KEY (ID_Cliente) REFERENCES Clientes(ID_Cliente)


);

```

5. **Explicación:** Las claves primarias garantizan que cada fila en una tabla sea única y
permite una identificación única de los registros. Las claves foráneas establecen relaciones
entre las tablas y aseguran la integridad referencial, garantizando que los registros se
relacionen adecuadamente. En este diseño, la clave primaria en cada tabla garantiza la
unicidad de los datos, y la clave foránea en la tabla `Pedidos` vincula cada pedido a un cliente
específico.

6. **Índices:** Los índices se utilizan para mejorar la velocidad de recuperación de datos en


consultas SELECT. Se pueden crear índices en columnas que se utilizan con frecuencia en
cláusulas WHERE o JOIN para acelerar la búsqueda de registros. Por ejemplo, podríamos crear
un índice en la columna `ID_Cliente` de la tabla `Pedidos` para acelerar las consultas que
buscan pedidos de un cliente específico. El uso de índices mejora el rendimiento de las
consultas al evitar la exploración completa de la tabla y permitir un acceso más rápido a los
datos relevantes.

En la mayoría de los sistemas de gestión de bases de datos (DBMS, por sus siglas en inglés),
puedes crear un índice utilizando una sentencia SQL específica. A continuación, te mostraré
cómo crear un índice en una columna en una tabla utilizando SQL estándar. Ten en cuenta que
la sintaxis exacta puede variar ligeramente según el DBMS que estés utilizando (por ejemplo,
MySQL, PostgreSQL, SQL Server, etc.), pero los conceptos básicos son los mismos.

La sintaxis general para crear un índice es la siguiente:

CREATE INDEX nombre_del_indice

ON nombre_de_la_tabla (nombre_de_la_columna);

- `nombre_del_indice`: Es el nombre que asignas al índice. Debe ser único dentro de la base de
datos.

- `nombre_de_la_tabla`: Es el nombre de la tabla en la que deseas crear el índice.

- `nombre_de_la_columna`: Es el nombre de la columna en la que deseas crear el índice.

Por ejemplo, si tienes una tabla llamada `Empleados` y deseas crear un índice en la columna
`Apellido`, la sentencia SQL sería la siguiente:

```sql

CREATE INDEX idx_apellido

ON Empleados (Apellido);

```SELECT * FROM Empleados WHERE Apellido = 'Smith';

El DBMS reconoce que hay un índice en la columna Apellido y lo utiliza para realizar una
búsqueda más rápida de los registros con el apellido 'Smith'.
Esta sentencia crea un índice llamado `idx_apellido` en la columna `Apellido` de la tabla
`Empleados`.

Recuerda que la creación de un índice puede tener un impacto en el rendimiento de las


operaciones de escritura (inserción, actualización y eliminación) ya que el DBMS debe
mantener el índice actualizado. Por lo tanto, debes considerar cuidadosamente qué columnas
indexar y cuándo hacerlo, basándote en las consultas más frecuentes que ejecutarás en tu base
de datos. Los índices son útiles para acelerar consultas de búsqueda, pero pueden ralentizar las
operaciones de escritura si se abusan de ellos.

El Departament d’Estadística (DE), òrgan responsable de l’estadística oficial, amb la


independència professional i la integritat necessària, té per missió gestionar el sistema
estadístic d’Andorra.

Mitjançant la planificació, la coordinació i la normalització de l’activitat estadística ha de


proporcionar a les autoritats públiques, als responsables de les polítiques, als agents
econòmics i socials, i a la resta de ciutadans, informació objectiva i imparcial.

Aquesta informació ha de permetre adoptar decisions amb coneixement de causa, que


permetin alhora la formulació, l’aplicació, el seguiment i l’avaluació de les polítiques públiques.

Les funcions del DE són les següents:

- La coordinació i homogeneïtzació estadística


- L’execució de l’activitat estadística
- La promoció i garantia de la metodologia estadística
- La producció estadística
- La difusió dels resultats estadístics oficials
- Les relacions institucionals en matèria estadística

L’estratègia per a l’acompliment de les funcions és:

- Marc legal: Establiment de la regulació de la funció de l’estadística pública


- Innovació tecnològica

You might also like