Parcial II Flashcards

1
Q

¿Para qué se utiliza la normalización? ¿Qué fin persigue?

A

La normalización en bases de datos se utiliza para diseñar una estructura de datos eficiente que elimine redundancias y minimice las anomalías de actualización. Esto se logra mediante la organización de los datos en esquemas que permiten almacenar información de manera
consistente y sin duplicaciones. La normalización facilita la modificación de los datos sin ambigüedades y mejora la eficiencia en la recuperación de información.

El objetivo final de la normalización es diseñar una base de datos que permita manejar y mantener los datos de manera eficiente y coherente, evitando problemas como la redundancia de datos, las anomalías de inserción, modificación y borrado, y mejorando la independencia de los datos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Cuál es la segunda forma normal, enúnciela y de un ejemplo.

A

La Segunda Forma Normal (2FN) establece que una relación está en 2FN si y solo si está en Primera Forma Normal (1FN) y todos los atributos no clave son completamente dependientes de la clave primaria. Esto significa que no puede haber dependencias parciales de la clave, es decir, cada atributo no clave debe depender de toda la clave primaria y no solo de una parte de ella.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Enuncie la primera forma normal. De un ejemplo

A

La primera forma normal se encarga de eliminar grupos repetitivos de las tuplas. Para esto, se particiona la tabla ensalada, o tabla cero, de manera que cada columna contenga valores atómicos y no haya grupos repetitivos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿En qué consiste la tercera forma normal. De un ejemplo.

A

La Tercera Forma Normal (3FN) consiste en que una relación está en 3FN si y solo si está en Segunda Forma Normal (2FN) y no hay dependencias transitivas entre los atributos no clave. Es decir, cada atributo no clave debe depender únicamente de la clave primaria y no de otros atributos no clave.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué relación tiene la normalización con la redundancia?

A

La normalización en bases de datos está directamente relacionada con la reducción de la redundancia. Su objetivo principal es diseñar un conjunto de esquemas que permitan
almacenar información sin redundancias, facilitando modificaciones sin ambigüedades y
mejorando la eficiencia en la recuperación de datos. A través de la normalización, se eliminan las anomalías de actualización (inserción, modificación y borrado) que son causadas por la redundancia de datos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué diferencia hay entre las tres formas normales y la forma normal Boyce / Codd.

A

Las tres formas normales (1FN, 2FN y 3FN) y la Forma Normal de Boyce-Codd (FNBC) son etapas sucesivas en el proceso de normalización que se utilizan para eliminar redundancias y
asegurar la integridad de los datos en las bases de datos relacionales. La Primera Forma Normal (1FN) se encarga de eliminar grupos repetitivos y asegurar que cada columna contiene valores atómicos. La Segunda Forma Normal (2FN) va un paso más allá al eliminar dependencias parciales, asegurando que todos los atributos no clave son completamente dependientes de la clave primaria completa. La Tercera Forma Normal (3FN) elimina dependencias transitivas entre atributos no clave, garantizando que cada atributo no clave depende directamente de la clave primaria.
La Forma Normal de Boyce-Codd (FNBC) es una extensión más estricta de la 3FN. FNBC establece que para cualquier dependencia funcional 𝑋 → 𝑌, 𝑋 debe ser una clave candidata, lo
que asegura que no haya dependencias funcionales innecesarias que puedan causar
redundancias. En otras palabras, FNBC garantiza que todas las dependencias funcionales son adecuadamente normalizadas, previniendo ciertas anomalías que 3FN no puede resolver. Mientras que 3FN elimina dependencias transitivas, FNBC asegura que todos los determinantes en la relación son claves candidatas, proporcionando un diseño de base de datos aún más robusto y libre de redundancias.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué es SQL y que sub-lenguajes lo compone? Describa brevemente cada uno de ellos

A

SQL (Structured Query Language) es un lenguaje estándar para gestionar y manipular bases de datos relacionales. Se compone de varios sub-lenguajes, cada uno especializado en diferentes aspectos del manejo de datos.

  • Lenguaje de Definición de Datos (DDL). El DDL se utiliza para definir y modificar la estructura de las bases de datos, incluyendo tablas, vistas e índices. Las sentencias DDL
    incluyen: CREATE, ALTER, DROP, Restricciones (Constraints)
  • Lenguaje de Manipulación de Datos (DML). El DML se usa para manipular los datos dentro de las estructuras definidas por el DDL. Las sentencias DML incluyen: INSERT, UPDATE, DELETE, SELECT (Incluye cláusulas como WHERE, ORDER BY, GROUP BY, y funciones de agregación como COUNT y SUM.)
  • Lenguaje de Control de Datos (DCL). El DCL se emplea para controlar el acceso a los datos dentro de la base de datos. Las sentencias DCL incluyen: GRANT, REVOKE

Lenguaje de Control de Transacciones (TCL). El TCL gestiona las transacciones dentro de la base de datos, asegurando que las operaciones se completen correctamente y de manera coherente. Las sentencias TCL incluyen: COMMIT, ROLLBACK, SAVEPOINT

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Cómo es la sintaxis para la creación de una tabla?

A

La sintaxis básica para crear cualquier tabla es la siguiente:
CREATE TABLE nombre_tabla (
nombre_columna1 tipo_dato restricciones,
nombre_columna2 tipo_dato restricciones,

nombre_columnaN tipo_dato restricciones
);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué comando se utiliza para eliminar una tabla? Cite un ejemplo

A

El comando que se utiliza para eliminar una tabla es el de “DROP TABLE nombre_tabla”.
Un ejemplo podría ser: DROP TABLE empleados;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Si necesito modificar algún objecto de la estructura de la base de datos ¿Qué comando utilizo?

A

El comando que se utiliza para modificar la estructura de la base de datos es “ALTER”.
Sintaxis General para Modificar Tablas:
ALTER TABLE nombre_tabla
[ ADD nombre_columna tipo_dato restricciones ]
[ DROP nombre_columna ]
[ ALTER nombre_columna tipo_dato restricciones ]
[ ADD CONSTRAINT tipo_restriccion (nombre_columna) ]
[ DROP CONSTRAINT nombre_restriccion ];

Ejemplos:
* Agregar una columna: ALTER TABLE empleados ADD direccion VARCHAR(255);
* Eliminar una columna: ALTER TABLE empleados DROP COLUMN fecha_contratacion;
* Modificar una columna: ALTER TABLE empleados ALTER COLUMN salario DECIMAL(12, 2);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Identifique y describa los principales comandos que permiten la manipulación de datos en una Base de datos.

A

Los principales comandos que permiten la manipulación de datos en una base de datos se encuentran en el sub-lenguaje DML (Data Manipulation Language).

INSERT: Se utiliza para añadir nuevos registros a una tabla existente.
Ejemplo: INSERT INTO nombre_tabla (columna1, columna2) VALUES (valor1, valor2);

UPDATE: Se utiliza para modificar registros existentes en una tabla.
Ejemplo: UPDATE nombre_tabla SET columna1 = valor1, columna2 = valor2, … WHERE
condición;

DELETE: Se utiliza para eliminar registros de una tabla.
Ejemplo: DELETE FROM nombre_tabla WHERE condición;

SELECT: Se utiliza para consultar datos de una o más tablas. Puede incluir varias clausuras opcionales para especificar condiciones, ordenar columnas, agrupar datos.
Ejemplo: SELECT columnas FROM nombre_tabla [WHERE condición] [ORDER BY
columnas] [GROUP BY columnas] [HAVING condición];

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Con SQL puedo hacer cálculos de cuenta, suma o promedio? Cite un ejemplo.

A

Sí, con SQL se pueden realizar cálculos de cuenta, suma, promedio, entre otros, utilizando funciones de agregación.
Suponiendo que se tiene una tabla de “empleados” con las siguientes columnas: id, nombre, puesto, salario. Se quiere obtener el número total de empleados, la suma total de los salarios, el salario promedio, el salario máximo y el salario mínimo.

La consulta SQL sería:
SELECT
COUNT(*) AS total_empleados,
SUM(salario) AS suma_salarios,
AVG(salario) AS salario_promedio,
MAX(salario) AS salario_maximo,
MIN(salario) AS salario_minimo
FROM empleados;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Nombre los cuatro comandos más importantes para manipular los datos en una base de datos

A

Los cuatro comandos mas importantes para manipular los datos en una base de datos son:

  • INSERT: Se utiliza para agregar nuevos registros a la tabla.
  • UPDATE: Se utiliza para actualizar registros de la tabla.
  • DELETE: Se utiliza para eliminar registros de la tabla
  • SELECT: Se utiliza para seleccionar datos de la tabla.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Cuáles son las cláusulas que se utilizan para seleccionar o manipular los datos en una consulta SQL?

A

Las cláusulas que se utilizan para seleccionar o manipular los datos en una consulta SQL son:
- WHERE: Se utiliza para filtrar registros que cumplen una condición específica.
Ejemplo: SELECT * FROM empleados WHERE puesto = ‘Desarrollador’;

ORDER BY: Se utiliza para ordenar los resultados de la consulta según una o más columnas.
Ejemplo: SELECT * FROM empleados ORDER BY salario DESC;

GROUP BY: Se utiliza para agrupar los resultados de la consulta según una o más columnas.
Ejemplo: SELECT puesto, COUNT(*) FROM empleados GROUP BY puesto;
HAVING: Se utiliza para filtrar los grupos de resultados creados por la cláusula GROUP BY según una condición específica.
Ejemplo: SELECT puesto, AVG(salario) FROM empleados GROUP BY puesto HAVING AVG(salario) > 50000;

FROM: Especifica la tabla de la cual se seleccionarán o manipularán los datos.
Ejemplo: SELECT nombre, puesto FROM empleados;

JOIN: Se utiliza para combinar filas de dos o más tablas, basadas en una columna relacionada entre ellas.
Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados JOIN departamentos ON empleados.departamento_id = departamentos.id;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Nombre las funciones de agregación que se utilizan para realizar cálculos con los datos

A

COUNT: Cuenta el número de filas que cumplen con un criterio.
Ejemplo: SELECT COUNT(*) AS total_empleados FROM empleados;

SUM: Calcula la suma de un conjunto de valores.
Ejemplo: SELECT SUM(salario) AS suma_salarios FROM empleados;

AVG: Calcula el promedio de un conjunto de valores.
Ejemplo: SELECT SUM(salario) AS suma_salarios FROM empleados;

MAX: Encuentra el valor máximo de un conjunto de valores.
Ejemplo: SELECT MAX(salario) AS salario_maximo FROM empleados;

MIN: Encuentra el valor mínimo de un conjunto de valores.
Ejemplo: SELECT MIN(salario) AS salario_minimo FROM empleados;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué comando se utiliza para conectar datos que están relacionados entre dos o más
tablas?

A

El comando que se utiliza para conectar datos relacionados entre dos o más tablas es el JOIN.
Existen varios tipos de JOIN que se pueden usar dependiendo de cómo se desee combinar los datos.

  • INNER JOIN: Devuelve las filas cuando hay coincidencias en ambas tablas.
    Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados INNER JOIN departamentos ON empleados.departamento_id = departamentos.id;
  • LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda y las filas coincidentes de la tabla de la derecha. Si no hay coincidencia, se devuelve NULL para las filas de la
    tabla de la derecha.
    Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados LEFT JOIN departamentos ON empleados.departamento_id = departamentos.id;
  • RIGHT JOIN:Devuelve todas las filas de la tabla de la derecha y las filas coincidentes de la tabla de la izquierda. Si no hay coincidencia, se devuelve NULL para las filas de la tabla de la izquierda.
    Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados RIGHT JOIN departamentos ON empleados.departamento_id = departamentos.id;
  • FULL JOIN:Devuelve todas las filas cuando hay una coincidencia en una de las tablas. Si no hay coincidencia, devuelve NULL para la tabla que no tiene coincidencias.
16
Q

¿Cuáles son las posibilidades que puedo utilizar para obtener datos relacionados o no utilizando los JOINS?

A

Al utilizar JOINs, se pueden obtener datos relacionados o no relacionados de diferentes formas, dependiendo del tipo de JOIN que se utilice.

  • INNER JOIN: Devuelve solo las filas que tienen coincidencias en ambas tablas.
    Uso: Cuando se desea obtener datos que existen en ambas tablas.
    Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados INNER JOIN departamentos ON empleados.departamento_id = departamentos.id;
  • LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda y las filas coincidentes de la tabla de la derecha. Si no hay coincidencia, devuelve NULL para las filas de la tabla de la derecha.
    Uso: Cuando deseas obtener todos los datos de la tabla de la izquierda, incluyendo aquellos que no tienen coincidencia en la tabla de la derecha.
    Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados LEFT JOIN departamentos ON empleados.departamento_id = departamentos.id;
  • RIGHT JOIN:Devuelve todas las filas de la tabla de la derecha y las filas coincidentes de la tabla de la izquierda. Si no hay coincidencia, devuelve NULL para las filas de la tabla de la izquierda.
    Uso: Cuando deseas obtener todos los datos de la tabla de la derecha, incluyendo aquellos que no tienen coincidencia en la tabla de la izquierda.
    Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados RIGHT JOIN departamentos ON empleados.departamento_id = departamentos.id;
  • FULL JOIN:Devuelve todas las filas cuando hay una coincidencia en una de las tablas. Si no hay coincidencia, devuelve NULL para la tabla que no tiene coincidencias.
    Uso: Cuando deseas obtener todos los datos de ambas tablas, incluyendo aquellos que no tienen coincidencias.
    Ejemplo: SELECT empleados.nombre, departamentos.nombre FROM empleados FULL JOIN departamentos ON empleados.departamento_id = departamentos.id;
17
Q

¿Qué es una Subconsulta y para que se utiliza?

A

Una subconsulta es una consulta anidada dentro de otra consulta, que puede devolver un solo valor o un conjunto de valores. Se utiliza para realizar operaciones complejas donde una consulta depende de los resultados de otra.

Usos Comunes de las Subconsultas:

  • WHERE: Filtrar resultados basados en una condición que involucra otra consulta.
    Ejemplo: SELECT nombre FROM empleados WHERE salario > (SELECT AVG(salario) FROM empleados);
    Esta consulta selecciona los nombres de los empleados cuyo salario es mayor que el salario promedio de todos los empleados.
  • FROM: Utilizar una subconsulta como una tabla derivada.
    SELECT depto.nombre, subquery.salario_promedio
    FROM departamentos depto
    JOIN ( SELECT departamento_id, AVG(salario) AS salario_promedio
    FROM empleados
    GROUP BY departamento_id
    ) subquery ON depto.id = subquery.departamento_id;
    Esta consulta obtiene el nombre del departamento y el salario promedio de los empleados en cada departamento.
  • SELECT: Devolver un valor calculado a partir de otra consulta.
    SELECT nombre,
    (SELECT COUNT(*)
    FROM proyectos
    WHERE proyectos.empleado_id = empleados.id) AS total_proyectos
    FROM empleados;
    Esta consulta selecciona los nombres de los empleados junto con el número total de proyectos en los que trabajan
  • Subconsultas Correlacionadas: Una subconsulta que se refiere a columnas en la consulta externa
    SELECT e1.nombre
    FROM empleados e1
    WHERE salario > (
    SELECT AVG(salario)
    FROM empleados e2
    WHERE e2.departamento_id = e1.departamento_id
    );
    Esta consulta selecciona los nombres de los empleados cuyo salario es mayor que el salario promedio de su propio departamento.