ER - RELACIONAL/NORMALIZACIÓN/SQL Flashcards

(73 cards)

1
Q

SBBDD RELACIONALES

A
  • BD2
  • Informix
  • MariaDB(3306)
  • MySQL(3306)
  • SQL Server(1433)
  • SQL Lite (Librería SQL+ACID)
  • Oracle (1521)
  • PostgreSQL(5432)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Lenguaje DDL (DATA DEFINITIONS LANGUAGE)

A
  • Create
  • Drop
  • Alter

+Table, Index, View, Procedure, Sequence, Function, Type, Trigger, Domain, Schema, Role (OBJETOS)

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

Cuales son y que diferencias hay entre tipos de jerarquía en las relaciones de generalización especialización del modelo E/R

A
  • Exclusiva-Total: 1:1
  • Exclusiva-Parcial: 0:1
  • Solapada-Total: 1:N
  • Solapada-Parcial: 0:N

La exclusiva tiene curva abajo, la solapada no. La total tiene un ° encima triángulo al revés y la parcial no. En el triángulo a veces se pone un atributo llamado discriminador.

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

Tipos de flujos de datos DFD

A

Consulta, actualización o diálogo en función de si están leyendo, escribiendo o ambas cosas.

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

Qué elementos intervienen en un DFD

A

Entidades externas en el nivel 0, almacenes, procesos y flujo de datos del nivel 1 en adelante (nivel 2 y FLUJOGRAMAS)

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

Flujos permitidos en DFD

A
  • Entre dos procesos (se dice que es síncrono)
  • Entre proceso y almacén
  • Entre proceso y entidad externa
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qué es un DFD

A

Es una técnica de programación estructura de descomposición funcional (tod-down)

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

Como tienen que estar todos los niveles de un DFD

A

Balanceados

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

Cosas que saber de flujogramas

A
  • En UML, el diagrama de actividad
  • Hubo unos diagramas de flujo de Nassi-Shneiderman
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cuales son los 3 niveles de la arquitectura ANSI/SPARC

A
  • Nivel externo (vistas)
  • Nivel conceptual (tablas/relaciones)
  • Nivel Interno (Detalles almacén, Índices)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Versiones Modelo E/R

A
  • Basico
  • Extendido: entidades fuertes y débiles (de existencia o de identidad), generalización/especialización + agregación (exclusiva/solapada y total/parcial)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cómo se llama al conjunto de todos los atributos de una relación en el modelo relacional?

A

Esquema o Intensión

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

¿Cómo se llama al conjunto o número de tuplas de una relación en el modelo relacional?

A

Extensión (conjunto) o Cardinalidad (número)

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

¿Cómo se llama al número de atributos de una relación en el modelo relacional?

A

Grado

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

¿Cómo se llama al conjunto de valores que tiene cada atributo de una relación en el modelo relacional?

A

Dominio

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

Características y restricciones modelo relacional

A
  • Atomicidad de los valores de los atributos
  • No repetición de tuplas
  • No orden en tuplas
  • No orden en atributos
  • Valores nulos como ausencia de valor
  • Integridad de Entidad: ningún atributo de la PK puede tomar valor nulo
  • Integridad Referencial: si en una relación existe una clave ajena, sus valores deben coincidir con los de la clave primaria referenciada o ser nulos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Reglas de transformación del modelo E/R al modelo Relacional

A
  • Relaciones 1 a n – Propagación de clave del lado del 1 al lado de n
  • Relaciones M a N – Relación nueva
  • Relaciones herencia –
    •Opcion 1 - una sola relación
    •Opcion 2 - relación para cada subtipo
    •Opcion 3 - relación para cada subtipo y otra para el supertipo
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Tipos de clave en el modelo Relacional

A
  • Superclave : cualquier conjunto de atributos que identifica a una dupla
  • Clave Candidata : una superclave que no puede ser reducida
  • Clave Primaria : la clave candidata elegida
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

En qué consiste la Normalización y qué niveles existen

A

En analizar si hay mucha repetición de información, ya que eso supone gasto de almacenamiento e inconsistencias de datos

Las formas normales son 1FN, 2FN, 3FN, FNBC, 4FN, 5FN (de peor a mejor)
Siempre que estemos en una de estas formas, estaremos en todas las anteriores también.

Con esto vamos a generar más relaciones/tablas, lo que supone menos repeticiones e inconsistencias (bueno), pero el rendimiento de consultas cae (malo, porque hay que hacer muchas más join)

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

Dependencia funcional

A
  • Dependencia funcional: siempre que se da un valor en un atributo, se va a dar el mismo valor en otro atributo. Uno es DETERMINANTE y otro es el DEPENDIENTE.
  • Dependencia funcional entre atributos de tropa (no claves) : mal, porque produce redundancia (repetición de información)
  • Dependencia funcional entre la clave y los demás atributos : INHERENTE/NECESARIO/CONTINGENTE
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Qué niveles de aislamiento existen?

A
  • Read Uncommited : Lectura Sucia, Lectura no Repetible, Lectura Fantasma (0 bloqueos)
  • Read Commited : Lectura Sucia, Lectura no Repetible (1 bloqueos)
  • Repeatable Read : Lectura Fantasma (2 bloqueos)
  • Serializable : NADA (3 bloqueos)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Qué dos tipos de transacciones existen?

A
  • Locales y distribuidas (two-phase commit)
  • Configuración de niveles de aislamientos y bloqueos (SET TRANSACTION)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Cuál es la desventaja del nivel de aislamiento (isolation) Serializable?

A

Que una transacción no entra hasta que no acabe la transacción anterior, con lo cual hemos eliminado la concurrencia. Es la técnica que más impacto tiene en el rendimiento, dado que es el más lento.

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

¿Cómo se podría definir a un nivel de aislamiento?

A

Básicamente, es lo que se permite ver entre transacciones

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué es la lectura fantasma?
La lectura fantasma tiene que ver con el rango de filas, dado que si desde una tx1 se ha hecho una consulta cuyo resultado son varias filas, si en la tx2 se inserta una nueva y se realiza un commit, ese cambio ya se visualizaría desde la tx1. Esto sucede con los niveles de aislamiento Read Uncommited, Read Commited y Repeatable Read.
26
¿Qué es la lectura sucia?
La lectura sucia tiene que ver con que, desde una tx1 se va a visualizar una modificación que se ha hecho desde otra tx2 sin haber realizado un commit. Esto sucede únicamente con un nivel de aislamiento Read Uncommited.
27
¿Qué es la lectura no repetible?
La lectura no repetible tiene que ver con que desde la tx1 se va a visualizar una modificación que se ha hecho desde la tx2, una vez que se haya realizado un commit. Esto sucede con los niveles de aislamiento Read Uncommited y Read Commited.
28
Lenguaje DML (Data Manipulation Language)
DML: consulta / borrado / modificación / inserción de datos - SELECT (joins, agrupaciones, subconsultas) - UPDATE - INSERT INTO - DELETE FROM - MERGE
29
Lenguaje DCL (Data Control Language)
DCL: control sobre permisos y transacciones - GRANT: dar permisos - REVOKE: quitar permisos - COMMIT / ROLLBACK: confirmar o deshacer cambios en una TX (TCL) - SAVEPOINT: para no deshacer todo / RELEASE SAVEPOINT (TCL) - SET TRANSACTION / START TRANSACTION: configuración e inicio de TX (TCL)
30
¿Cómo se da permisos con GRANT?
GRANT privilegios ON objeto TO usuarios/roles [WITH GRANT OPTION] privilegios: SELECT, UPDATE, INSERT, DELETE, ALL, USAGE (Ej: secuencia) + lista columnas EXECUTE
31
¿Qué quiere decir WITH GRANT OPTION?
Que si añadimos WITH GRANT OPTION a la hora de darle permisos a un usuario con GRANT, ese usuario podrá dar esos mismos permisos a otro usuario.
32
¿Cómo se eliminan permisos?
REVOKE privilegio ON objeto FROM usuarios/roles
33
¿Qué palabra clave se utiliza en la cláusula SELECT para recuperar valores únicos de una tabla y no recuperar duplicados o repetidos?
DISTINCT Ej. SELECT [ALL | DISTINCT ] item1 (con ALL se indica que se incluyan todos los resultados)
34
¿Hay alguna manera de poner alias a las columnas que recuperamos en una consulta?
Sí, con AS Ej. SELECT item1 AS alias
35
¿Con qué función de agregación se calcula la media de una columna numérica?
Con la función de agregación AVG() en la cláusula SELECT. Ignora valores NULL. Ej. SELECT AVG(salario) FROM empleados;
36
¿Con qué función de agregación se cuentan las filas de una columna?
Con la función COUNT - COUNT(*): sí cuenta nulos - COUNT(columna): no cuenta null - COUNT(DISTINCT columna): devuelve valores únicos y no cuenta null
37
¿Qué funciones de agregado existen?
SUM, MAX/MIN, AVG
38
¿Cómo se insertan valores en una tabla?
INSERT INTO tabla (col1, col2, …) VALUES (’…’,’…’,…)
39
¿Cómo se modifican los datos de una tabla?
UPDATE tabla SET col1 = val1, col2 = val2 [WHERE condicion] val1 o val2 puede ser: DEFAULT / NULL / Query
40
¿Cómo se eliminan datos de una tabla?
DELETE FROM tabla WHERE condicion
41
Orden de escritura de una query
SELECT [ALL | DISTINCT ] item1 AS alias FROM tabla | vista AS alias, … [[tipo join] JOIN condicion_join] WHERE condicion_busqueda [AND | OR | NOT + condicion_busqueda]… GROUP BY campo(s) HAVING condicion_sobre_los_grupos ORDER BY campo1 [ASC | DESC], … Nota: GROUP BY y HAVING van de la mano.
42
¿Qué operadores hay en las subconsultas?
Las SUBCONSULTAS se hacen dentro del Where. - EXISTS : si la subconsulta devuelve alguna tupla, el exists será true, con lo cual, la tupla de la consulta principal va a ser seleccionada. Ej. SELECT … FROM tabla1 WHERE EXISTS (subquery) - IN : operador de conjuntos. Si la tupla de la consulta principal está dentro del conjunto de la subconsulta. Ej. WHERE col1 [NOT] IN (SELECT col2 FROM …) - ALL/ANY/SOME : operadores de comparación. Ej. WHERE col1 <= >= < … funciones de agregado> ANY/ALL/SOME (SELECT col2 FROM …)
43
Orden de ejecución de una query
1. FROM/JOIN 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. ORDER BY 7. LIMIT/OFFSET
44
¿Qué resultado muestra un Inner Join?
[INNER] JOIN: el resultado son las filas coincidentes según la condición
45
¿Qué resultado muestra un left outer Join?
LEFT [OUTER] JOIN: el resultado son todas las filas de la tabla de la izquierda (coincidan o no con la tabla derecha) y todas las filas (sólo) coincidentes de la tabla derecha. En las filas de la tabla izquierda no coincidentes con la tabla derecha rellenará a null.
46
¿Qué resultado muestra un right outer Join?
RIGHT [OUTER] JOIN: igual que el LEFT pero manda la tabla de la derecha
47
¿Qué resultado muestra un full outer Join?
FULL [OUTER] JOIN: mandan las 2 tablas
48
¿Qué resultado muestra un cross Join?
Un producto cartesiano
49
¿Para qué se utiliza la sentencia UNION?
Para unir dos consultas que tengan compatibilidad de columnas
50
¿Existe algún operador importante dentro de la sentencia UNION?
Sí, el operador ALL, ya que no elimina repetidos. Ej.
51
¿Para qué se utiliza la sentencia MERGE?
Para mezclar tuplas de una tabla con tuplas de otra tabla. La mezcla se realiza de una tabla sobre la otra. Una tabla hace de origen, y otra tabla hace de destino. Coge tuplas de la tabla de origen y bajo una cierta condición, mira en la tabla de destino si coinciden. En caso de que coincidan, hace un update, y en caso de que no coincidan hace un insert.
52
¿Qué restricciones tienen los disparadores / triggers?
- No aceptan parámetros (porque funcionan por eventos) - No se pueden usar transacciones dentro (START TRANSACTION / COMMIT / ROLLBACK) porque la transaccionalidad la gestiona el gestor de base de datos por nosotros y no podemos interferir.
53
¿Qué tipos de triggers existen?
- De fila : si queremos que el disparador se dispare por cada fila (for each row) - De sentencia : si queremos que el disparador se dispare una sola vez aunque afecte a varias filas (for each statement)
54
¿Cómo se indica cuando queremos que se lance el disparador?
- AFTER + INSERT / UPDATE / DELETE - BEFORE + INSERT / UPDATE / DELETE - INSTEAD OF + INSERT / UPDATE / DELETE
55
¿Qué hace un trigger con INSTEAD OF?
INSTEAD OF (en lugar de): Anula la sentencia disparadora y solo tiene efecto el cuerpo del trigger. Ej. si hacemos un update de 100 filas, y ese update dispara el trigger INSTEAD OF, automáticamente se ejecuta el código del trigger y anula totalmente la sentencia update de las 100 filas que se ha ejecutado y que ha disparado ese trigger.
56
¿Cómo indicamos al crear una tabla que una columna no admite valores nulos?
En la creación de una tabla con CREATE TABLE, al definir las columnas, en la que no admite valores nulos hay que poner "NOT NULL". Ej. CREATE TABLE distribuidores (dist_id CHAR(4) NOT NULL, dist_nombre VARCHAR(40), sales_rep INT, zip char(5), ...);
57
¿Cómo indicamos al crear una tabla que una columna va a ser nuestra clave primaria?
Con la palabra CONSTRAINT nombre_de_la_constraint PRIMARY KEY (columna). Ej. CONSTRAINT pk_dist_id PRIMARY KEY (dist_id),
58
¿Cómo indicamos al crear una tabla que una columna va a ser nuestra clave foránea?
Con la palabra CONSTRAINT nombre_de_la_constraint FOREIGN KEY (columna). Ej. CONSTRAINT fk_emp_id FOREIGN KEY (sales_rep) -- campos REFERENCES empleados (empid) -- tabla y campos
59
¿Cómo indicamos al crear una tabla que una columna no admite duplicados?
Con la palabra CONSTRAINT nombre_de_la_constraint UNIQUE (columna). Ej. CONSTRAINT uniq_zip UNIQUE (zip) -- clave candidata Nota: UNIQUE admite NULL, pero sólo uno dado que no admite valores duplicados
60
¿Cómo indicamos al crear una tabla que en una columna los valores coincidan exactamente con una cadena de cinco dígitos (del 0 al 9)?
Con CONSTRAINT nombre_de_la_constraint CHECK (columna operador cadena que sea). CONSTRAINT chk-zip CHECK (zip LIKE '[0-9][0-9][0-9][0-9][0-9]')
61
¿Cómo añadimos una nueva columna a una tabla?
Con ALTER TABLE nom_tabla ADD COLUMN nom_col tipo atributos
62
¿Cómo modificamos una columna existente en una tabla para establecer un valor por defecto?
ALTER COLUMN nom_col SET DEFAULT valor
63
¿Cómo modificamos una columna existente en una tabla para establecer que no admita nulos?
ALTER COLUMN nom_col SET NOT NULL
64
¿Cómo modificamos una columna existente en una tabla para modificar el tipo de dato?
ALTER COLUMN nom_col SET DATA TYPE tipo
65
¿Cómo eliminamos una columna de una tabla existente?
DROP COLUMN nom_col
66
¿Cómo añadimos una nueva restricción a una columna de una tabla existente?
ADD restriccion ej. ADD CONSTRAINT...
67
¿Qué diferencia hay entre borrar con DELETE y borrar con TRUNCATE?
Que el DELETE es transaccional y por lo tanto, se puede deshacer, dado que lo que ha "borrado" realmente lo ha almacenado en el Log de transacciones. TRUNCATE no es transaccional, y por lo tanto, elimina con muchísima eficiencia, ya que con DELETE puede haber errores si se llena el log de transacciones. Nota: TRUNCATE, en algunos gestores hace primero un DROP (borra la tabla) y luego un CREATE (crea la tabla)
68
¿Con qué operador podría filtrar para que me salgan los precios que sean mayor de 50 de una tabla Products?
Con >50 dentro del where. Ej. SELECT ProductID, ProductName, UnitPrice FROM Products WHERE UnitPrice > 50;
69
¿Con qué operador podría filtrar para que me salgan los nombres de productos que empiecen por "M"?
SELECT ProductID, ProductName FROM Products WHERE ProductName like 'M%';
70
¿Cómo podría ordenar el resultado de la consulta de manera ascendiente en función de la columna UnitPrice?
SELECT ProductID, ProductName FROM Products WHERE ProductName like 'M%' ORDER BY UnitPrice asc;
71
¿Qué es una vista en SQL?
Proporcionar el resultado de una consulta a alto nivel (sin ver detalles, join, etc)
72
¿Qué comando se usa para crear una vista?
create view nombre-vista AS select ...
73
Vista materializada es un