Bases de Datos Resumidas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 19

Resumen-BD-.

pdf

user_2414776

Bases de Datos

2º Grado en Ingeniería Informática

Facultad de Ciencias
Universidad de Cantabria

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
BASES DE DATOS

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
RESUMEN.

-La clave ajena (FOREIGN KEY) delimita los valores que puede tomar la columna. NO siempre
se define sobre una sola columna. NO es una restricción inherente al modelo relacional.

-Relación cardinalidad

-0:1, “cada alumno puede tener o no un avatar y el avatar es único para el alumno”.

-n:1, “tabla de asignaturas y plan de estudio”.

-El tipo de dato que ha de tener una columna según los datos que debe almacenar y el tipo de
operaciones que se realizará con ellos.

-Regla de integridad de entidad del MR: ningún atributo de la clave primaria puede ser nulo.

Reservados todos los derechos.


-Gestor de transacciones: garantiza comportamiento ACID.

-Razones que justifican el uso de técnicas de bases de datos: seguridad, integridad y


consistencia, adecuación a distintos problemas de gestión de datos (flexibilidad), 24x7.

-Esquema: definición de relación (nombre: atributos, dominio)

-Estado: esquema + tuplas de la relación

-UPDATE: permite modificar una o más filas (tuplas) de UNA tabla.

-COMMIT: confirma cambios.

-ROLLBACK: revierte cambios.

-CHECK: a nivel de base de datos y a nivel de fila y columna.

-NULL: IS null (no usar = ).

-Aridad/grado: número de columnas de una relación/tabla.

-Pérdida de consistencia: mal uso de transacciones.

-Índice: estructura de datos adicional (árbol balanceado) para agilizar las consultas e
implementar restricción de unicidad.

-Transacción: conjunto de operaciones que se ejecutan todo o nada. Cumplen ACID (definir).

-Vista: tabla lógica que resulta de la ejecución de una consulta. Puede ser temporal o
persistente. Puede materializarse (guardarse físicamente). Es una consulta que se define sobre
el esquema conceptual para mostrar al usuario/aplicación la información que se requiere.
Puede presentar información repetida.

-Base de datos: colección organizada de datos, relativa a un problema de información, que


puede ser compartida por usuarios y aplicaciones.

-Concatenar con espacios: concat(nombre, ‘ ‘, apellido) / nombre+’ ‘+ap. (no sirve para null)

-Quitar espacios extra en varchar: trim(nombre) -> concat(trim(nombre), ‘ ‘, trim(apellido))

-ORDER BY: por defecto es ASC. Ordena el resultado de una consulta.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Comience por vocal: like ‘[aeiou]%’ // es expresión regular (like) si no sería (=)

-Comience entre F y N: like ‘[f-n]%’

-Fecha entre dos fechas: between '02/05/2018' and '31/12/2018'

-En la inscripción tenían 23 años: datediff(year, fechaNacimiento, fechaInscripción)=23

- if ( (select datediff(day,fechaInclusion, getdate()) from cerveza) < 14)

-Tipo es A o B: tipo in (‘A’, ‘B’) // tipo =’A’ or tipo =’B’// fecha: year() in (f1, f2) SIN COMILLAS

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
-De tres formas diferentes: INNER JOIN: select DISTINCT, IN y EXISTS: where exists (select *
from fabricacion f where e.idempleado=f.idempleado)

--número de ingredientes por cerveza: select idcerveza, count(*) as ingPorCerv from


ingredientecerveza group by idcerveza.

-DISTINCT: para que una consulta devuelva valores únicos.

-GROUP BY: todos los campos del SELECT no contenidos en una función de agregado

-Distinto de: <> / !=

-HAVING COUNT: Obtener el id de los depósitos que han sido usados en un proceso de

Reservados todos los derechos.


fabricación más de 1 vez.

select iddeposito from fabricaciondeposito

group by iddeposito

having count(iddeposito) > 1

-Orden: where, group by, having count, order by

-LEFT JOIN: incluir también datos de la tabla izqda. sin coincidencias con la tabla dcha.

-RIGHT JOIN: lo mismo pero al revés.

-Tabla temporal: SELECT * INTO ##tmp

-Vista:

CREATE OR ALTER VIEW nombre AS

SELECT (TOP) … // con top se puede ORDER BY

WITH CHECK OPTION // solo se actualizan datos si cumplen where

GO

-Son como tablas, se pueden seleccionar (select * from nombre) e insertar a través de
ellas: INSERT INTO nombre(campo) VALUES (valor).

-Vista actualizable: SELECT no tiene valor agregado (SUM,AVG) ni DISTINCT. Cualquier atributo
que no aparezca en la cláusula SELECT puede definirse como NULL. Cualquier modificación,
UPDATE, INSERT y DELETE, referencia a las columnas de una única tabla base. Las columnas a
modificar no están afectadas por cláusulas GROUP BY, HAVING o DISTINCT. Tienen que estar
todos los campos de la tabla base.

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Vista materializada (Indexed views SCHEMABINDING): es una vista computada y almacenada
(tabla física). Se crea al definir un índice clúster sobre ella. Adecuadas para consultas
frecuentes sobre datos agregados sobre muchas filas. No adecuadas para datos que cambien
frecuentemente (bien para históricos). Limita la modificación de las tablas base incluidas.

-Las tablas con dbo.nombre

CREATE VIEW nombre WITH SCHEMABINDING as

SELECT … FROM dbo.tabla t INNER JOIN tabla2 t2…

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
GO

-A continuación, se crea índice clustered y único para ordenarla físicamente:

CREATE UNIQUE CLUSTERED INDEX nombre ON vista(campos)

-Función:

--Retorna escalar:

CREATE OR ALTER FUNCTION nombre(param tipo)

Reservados todos los derechos.


RETURNS tipo_dato

AS BEGIN

DECLARE @nombre tipo

SET @nombre= (select…)

RETURN (select …)

END

GO

-Ejecutar: SELECT dbo.nombre(param) // si retorna ESCALAR

--Retorna tabla: 2 opciones

1) Implícita

CREATE OR ALTER FUNCTION nombre(@param tipo)

RETURNS TABLE

AS // OJO NO HAY BEGIN/END

RETURN (SELECT…) //poner los uniques como AS nombre

GO

2) Explícita

CREATE OR ALTER FUNCTION nombre(@param tipo)

RETURNS @nombre TABLE(campo tipo)

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
AS BEGIN // OJO SÍ HAY BEGIN/END

INSERT INTO @nombre SELECT…

RETURN @nombre

END

GO

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
-Ejecutar: SELECT * from dbo.nombre(param) //retorna TABLA

-Eliminar columna: ALTER TABLE tabla DROP COLUMN columna

-Añadir campo/columna: ALTER TABLE table ADD columna tipo check defaul null…

-Convertir a string: convert(varchar,@param)

-Procedimiento:

CREATE OR ALTER PROCEDURE nombre @param tipo // sin ()

AS

Reservados todos los derechos.


BEGIN TRY

BEGIN TRANSACTION

IF (NOT EXISTS (SELECT…)) // tratar errores

RAISERROR(‘Error’, 16, 1) //salta a catch

INSERT INTO nombre(campo) VALUES(valor)

UPDATE nombre SET campo=getdate() WHERE…

END TRANSACTION

END TRY

BEGIN CATCH

ROLLBACK TRANSACTION

EXEC usp_showerrorinfo

END CATCH

GO

-Ejecutar: exec dbo.nombre param1, param2

@error in out: variable en procedimientos devuelve 0 si no hubo error y -1 si sí.

@@error: variable de SQL Server que recoge el nº de error. 0 si no hubo error.

Alternativa a try-catch: @@erorr <> 0 begin rollback raiserror RETURN end

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Procedimiento error:

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
CREATE PROCEDURE usp_showerrorinfo

AS

SELECT ERROR_NUMBER() AS [Numero de Error],

ERROR_STATE() AS [Estado del Error],

ERROR_SEVERITY() AS [Severidad del Error],

ERROR_LINE() AS [Linea],

ISNULL(ERROR_PROCEDURE(), 'No esta en un proc') AS [Procedimiento],

ERROR_MESSAGE() AS [Mensaje]

Reservados todos los derechos.


GO

-Diferencias procedimientos-funciones: funciones no sirven para modificar el estado de la


base de datos. Procedimientos sí. Funciones se pueden combinar con instrucciones SELECT.
Procedimientos no. Función devuelve un valor o una tabla. Procedimiento puede devolver
parámetros proporcionados por el usuario.

-Ventajas procedimientos-funciones: mejor rendimiento al estar compilados y almacenados


en la base de datos. Mejor gestión de memoria. Mayor productividad e integridad. Facilidad
para gestionar la seguridad.

-Insertar valor explícito en campo identity:

SET IDENTITY_INSERT tabla ON

INSERT tabla(campo) VALUEs valor

SET IDENTITY_INSEERT tabla OFF

-Disparador:

-Controlar:

CREATE OR ALTER TRIGGER ON tabla INSERT, UPDATE

AS BEGIN

IF EXISTS (SELECT * FROM INSERTED I INNER JOIN…)

ROLLBACK TRANSACTION

RAISERROR

END

GO

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Sustituir acción:

CREATE OR ALTER TRIGGER ON tabla INSTEAD OF

AS BEGIN

UPDATE tabla SET fechaFin=getdate() WHERE id in (SELECT id from


DELETED)

END

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
GO

-After DELETE: rollback transaction + raiserror

-After INSERT/UPDATE: comprobación IF + rollback transaction + raiserror

-Instead of DELETE: ya hace rollback, pero no lanza errores (no incluir rollback)

-Inserte y Deleted se usan para garantizar el control de reglas de integridad.

-CURSOR: variable que recoge el conjunto de resultados devuelto por un SELECT y permite
volcar cada fila en variables para realizar un tratamiento individualizado de cada una de ellas.

Reservados todos los derechos.


NO USAR para ser más eficientes.

Disparadores, Funciones y Procedimientos


Aplicaciones -Implementación de reglas de integridad complejas
-Tareas administrativas (auditoría, gestión de log, ETL, replicación…)
-Flujos de trabajo o proceso (actualizaciones, datos derivados, tablas
resumen, etc.)
Ventajas -Semántica del problema en un solo sitio: preserva la integridad
-Facilita construcción de aplicaciones
*Procedimientos y funciones almacenados permiten:
- lógica de negocio compartida por aplicaciones
- reutilización de código
- seguridad de acceso a los usuarios
- reducción del tráfico de red
- mantenimiento más sencillo de aplicaciones
Desventajas -Deben escribirse con cuidado: ejecución infinita de disparos
-Control complejo de condiciones
-Mayor carga computacional del servidor

-Delete: DELETE FROM tabla WHERE…

-CLUSTER: el orden de los valores de clave determina el orden físico de las filas
correspondientes de la tabla. NONCLUSTER: el orden lógico es independiente del físico.

-Combinación Simple: la condición de la cláusula FROM (o WHERE) contiene una comparación


de igualdad entre campos de dos tablas distintas.

-Combinación Múltiple: combinación que relaciona varios campos de más de dos tablas.

-Autocombinación: combinación de una tabla consigo misma.

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Combinación Externa: da preferencia a una tabla sobre otra, es decir, las filas de la tabla
dominante serán seleccionadas, aunque la condición de enlace no se haya verificado
(LEFT/RIGHT JOIN).

-DATEPART(dw,fecha): devuelve el día de la semana de fecha: 1 domingo, 2 lunes…

-ALTER TABLE: añade columna a la tabla. WITH CHECK: aplica a todas (con null o default para
filas anteriores). WITH NO CHECK: no aplica a filas ya insertadas.

-UNION: combina resultados de 2 o más consultas, sin incluir duplicados: SELECT(…) UNION

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
SELECT(…). UNION ALL: incluye duplicados.

-EXCEPT: devuelve los valores distintos de la primera consulta que no son devueltos por la
segunda consulta.

-INTERSECT: devuelve los distintos valores que son devueltos por ambas consultas.

-CASE:

SELECT ‘rangoPrecio' =

CASE

WHEN precio IS NULL THEN ‘No hay’

Reservados todos los derechos.


WHEN precio <0 THEN ‘Negativo’

ELSE ‘Positivo’

END,

otrosCampos FROM tabla

Conceptos cuestionarios:

-ERP: sistema que requiere una BD.

-Los gestores de BD relacionales garantizan independencia física y lógica. Son el software que
gestiona una o más bases de datos.

-ALTER: para alterar la estructura de la base de datos.

-Consulta: SELECT (puede repetir información).

-El diseño de una tabla está determinado por la problemática del dominio del problema a
recoger.

-Las restricciones de negocio que dependen del estado de la base de datos se implementan
con disparadores de manipulación de datos.

-El modelo lógico implementado tiene los mismos requisitos y limitaciones que el teórico.

-SQL: Structured Query Language.

-Restricción referencial: garantiza coherencia.

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-PK: no necesita NOT NULL, es redundante.

-Mejor decimal que smallmoney para precios.

-Tablas maestras: sirven de infraestructura para la operativa diaria, las que la BD tiene rellenas
antes de poner en marcha el sistema, en general, son aquellas que no tienen FK.

-CASCADE/NO ACTION: propaga el UPDATE/DELETE de la tabla que se referencia.

FOREIGN KEY campo REFERENCES tabla(campo) ON UPDATE/DELETE

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
-CASCADE: si se hace UPDATE en tabla, se extiende también a FK.

-NO ACTION: solo se puede hacer UPDATE en tabla si la FK no se ha usado.

-DROP: DROP TABLE nombre // DROP FUNCTION dbo.nombre

P9:

ROLE sysadmin (modo Dios)

Login: para conectar a BD: solo usa sus usuarios asignados. Si lo creamos con sysadmin, no hay

Reservados todos los derechos.


que crear usuarios para él.

Usuario: solo existen en una BD concreta (Databases->maestBD->Security->users).

Execute as user = “pepeU”.

Db_datareader: role predefinido que da permisos de lectura (no sirve para func/proc).

Db_datawriter: permisos escritura/update/delete

Para ejecutar funciones: dar permisos de una en una.

Permisos: grant y revoke.

No se puede borrar un rol sin quitar a los usuarios de ese rol.

T4:

Usuarios finales: usan aplicaciones.

Integridad: no falsear datos.

No repudio: monitorización.

T6:

BD semiestructuradas: XML y JSON.

Diferencias MDR y MDD.

Definición de nuevos tipos de datos: Objetual.

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
Escalamiento horizontal y operaciones ACID: NewSQL.

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Gestión de datos semiestructurados: BD XML.

NoSQL: prima la disponibilidad antes que la precisión en la respuesta, estructuras de datos


sencillas, arquitecturas distribuidas, NO transacciones ACID. No adecuadas para gestión
cuentas corrientes (banca).

BD temporales: incorporadas al estándar SQL.

Los almacenes de datos son esencialmente de consulta (toma de decisiones).

BD XML nativas NO trabajan a nivel de tupla.

T5:

Reservados todos los derechos.


Aplicación: programa informático que realiza una tarea.

Aplicación de BD: interactúa con una BDR.

Formularios (entrada):

-Sencillos: de tablas maestras (nº limitado de campos y no referencian otras tablas).

-Maestro-detalle: pedido con sus líneas.

Usabilidad: izqda.-dcha. y arriba-abajo, colores cálidos, mismos criterios campos obligatorios,


terminología consistente y coherente, misma etiqueta (label) para referirse al mismo campo
de la base de datos, agrupar la información del mismo concepto mediante frames, mostrar
mensajes al usuario, lo antes posible, que le informen si los datos introducidos no son válidos
(el paso del cursor NO).

Informes (salida): imprime información textual o gráfica de la BD.

Niveles: modelo n-capas (mínimo 3)

-Presentación: campos de formularios, navegador web.

-Procesamiento: estructura de datos, módulo en servidor de aplicaciones.

-Datos: invocar instrucciones SQL, gestor en servidor de centros de datos.

Flujo de datos: proceso que sigue la aplicación de BD.

1. Leer los campos introducidos en pantalla.


2. Construir la instrucción SQL correspondiente.
3. Gestor devuelve resultado de la instrucción ejecutada + variable error.
4. Mostrar información al usuario.

Patrones: para construir aplicaciones

-N-capas: divide la lógica en 3 niveles: Presentación (interfaz), Lógica de negocio


(dominio) y Persistencia (mapear clases como tablas asociadas de la BD). En paralelo,
la capa sistema (cuestiones transversales: seguridad, monitorización…).

-Modelo MVC (vista-controlador): habitual en aplicaciones web de acceso a datos

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
ODBC (Microsoft usa C, configuración en aplicación del cliente), JDBC (Java, config. por
código), OLDC (Microsoft para cualquier fuente de datos, no solo BDR).

Servicios web: conexión con otro servidor por sobres (ej: banco).

Lenguaje de script del servidor: JSP, ASP, PHP (CSS NO).

Interfaz de usuario: formularios, informes textuales, barras de herramientas y navegación


(conexión de acceso JDBC NO).

Resultset JDBC de tipo TYPE_SCROLL_INSENSITIVE puede ver sólo los registros que cumplen

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
las condiciones de la consulta en el momento de ejecutar la consulta.

CallableStatement: NO ES interfaz para invocar funciones almacenadas desde las aplicaciones.

ResultSet: NO es interfaz para ejecutar una consulta.

SQLERROR: NO es clase que proporciona información sobre los errores devueltos por el DBMS.

PreparedStatement: interfaz que ofrece un mejor rendimiento para enviar queries, ya que se
compilan previamente.

Tipos de drivers JDBC: tipo 4 mejor rendimiento.

La instrucción Class.forName () carga el driver JDBC. Al cargarse la clase, se registra como

Reservados todos los derechos.


driver JDBC. En función de la URL que le pasas, DriverManager localiza, entre los drivers de BD
que tiene registrados, el que se usa para acceder a la base de datos indicada. Java delega en
este driver toda la comunicación con la base de datos.

Tema 1:

Base de datos: colección organizada de datos, relativa a un problema de información, que


puede ser compartida por un conjunto de usuarios y/o aplicaciones. Sirven para almacenar,
actualizar, consultar y controlar información (datos, índices, metadatos, estadísticas,
relaciones, restricciones). No es un fichero, consta de al menos 2 ficheros: el de datos y
metadatos (.mdf) y el de log (.ldf).

Sistema Gestor de Bases de Datos: programa (o conjunto) para mantener BBDD y responder
eficientemente consultas sobre ellas.

Abstracción en tres niveles: para separar aplicaciones de datos

-Nivel interno: estructura de almacenamiento físico (árboles B+, montones, estructura


de índices…). Los datos se almacenan en este nivel. Cada SGBD implementa su propio
nivel interno. No estándar.

-Nivel conceptual: representación del conjunto de datos. Recoge el esquema


conceptual o estructura lógica (entidades, atributos, relaciones y restricciones).

-Nivel externo o de vistas: recoge perspectivas de los usuarios y aplicaciones para cada
proceso (compras, matrícula, expedientes, etc.). Permite ocultar información por
cuestiones de seguridad (Ley de protección de datos, datos sensibles…).

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
Independencia: inmunidad de las aplicaciones ante cambios de la estructura del
almacenamiento y de los métodos de acceso.

-Independencia lógica: capacidad de cambiar el nivel conceptual sin cambiar las vistas
ni los programas de aplicación: añadir restricciones de dominio, nuevos atributos o
relaciones…

-Independencia física: capacidad de cambiar el nivel interno sin cambiar ni el nivel


conceptual ni nivel externo: añadir índices, ampliar espacio de almacenamiento,
realizar particiones…

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No usar BDR en: ficheros o NoSQL

Índices: búsquedas más ágiles, aunque suponen una sobrecarga para las actualizaciones de
datos. Sirven para crear un diccionario de datos. Conviene definirlos sobre las columnas con FK
cuando se utilice en consultas (join). Restricciones de unicidad: no permiten repeticiones de un
valor.

Relaciones: simétrica n a n con otra tabla o foreign key n a 1.

Restricciones:

Reservados todos los derechos.


-Columna: NOT NULL, UNIQUE, CHECK, DEFAULT (no es restricción, sino CONSTRAINT).

-Fila

-Trigger (disparador)

Transacción: conjunto de operaciones de lectura o actualización de datos que deben ser


consideradas como una unidad. Son responsabilidad del programador. Las operaciones
individuales por defecto son transaccionales.

Propiedades (ACID):

-ATOMICIDAD: todo o nada

-CONSISTENCIA: coherencia de los datos

-AISLAMIENTO: serialización de transacciones

-DURABILIDAD: cambios permanentes

BEGIN TRANSACTION

UPDATE CUENTA SET saldo = saldo + 50 WHERE numero_cuenta = ‘00’

UPDATE CUENTA SET saldo = saldo – 50 WHERE numero_cuenta = ‘01’

Si no ha habido ningún error, se confirman los cambios

COMMIT TRANSACTION

Y si ha habido algún error, NO se almacenan los cambios

ROLLBACK TRANSACTION

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
Elementos de un SGBDR:

-Procesador de consultas: interpreta las instrucciones de definición y las registra en el


diccionario de datos, traduce las instrucciones LMD en el lenguaje del motor de
evaluación para determinar el plan de ejecución y ejecutar las consultas solicitadas.

-Gestor de almacenamiento: proporciona la interfaz entre los datos de bajo nivel de la


BD, los programas de aplicación y las consultas. Responsable de interacción con el
gestor de archivos, almacenamiento eficiente, recuperación y actualización de datos y
cumplimiento de restricciones y seguridad.

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
-Gestor de Transacciones: asegura la Atomicidad y la Durabilidad de las
transacciones a pesar de fallos en el sistema (ej. corte de luz, caída del S.O. ) o
de las transacciones establecidas en los programas.

-Gestor de Concurrencia: controla la interacción entre las transacciones


concurrentes (aislamiento) para garantizar la consistencia de la información

- Gestor de Recuperación: permite retornar a una situación estable.

-Gestor de Archivos: gestiona la asignación de espacio en disco y las


estructuras de datos

Reservados todos los derechos.


-Gestor de Memoria Intermedia: trae los datos del disco a la caché.

Tipos de usuario:

-Usuarios normales: invocan programas de aplicación que se han escrito previamente.


Interactúan con una interfaz.

-Programadores de aplicación: ingenieros software que escriben programas que


embeben las llamadas a la BD.

-Usuarios especializados (data analysts, data designers): interactúan con el sistema sin
escribir programas, trabajan con el LDD y LMD; herramientas analíticas (OLAP)

-Administrador de bases de datos: responsable de mantenimiento del gestor


instalación, sintonizado, rendimiento, seguridad…)

Tema 2:

Modelo de datos: conjunto de herramientas conceptuales para describir la representación de


la información en términos de datos. Esto es un conjunto de conceptos y reglas que permiten
especificar datos, las relaciones entre ellos, su semántica asociada y las restricciones de
integridad.

Modelo relacional (MR): sencillo y uniforme (colección de tablas y lenguajes declarativos), bien
fundamentado teóricamente para la independencia lógica y física de los datos.

Elementos básicos de un MR:

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Relación = esquema de relación: tiene un nombre de relación R, una cabecera:

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
conjunto de n pares atributo-dominio, un cuerpo o instancia: conjunto de m tuplas, un
esquema: constituido por el nombre de relación y la cabecera, y un estado:
constituido por el esquema y el cuerpo. Se representa mediante una tabla.

*Cardinalidad: nº de filas máximo. Grado o aridad: nº de atributos (columnas).

Esquema: Persona [nombre: Nombres, calle: Calles, ciudad: Ciudades]

Instancia: (Carmen, Calvo Sotelo, Santander)

-Dominio: conjunto nominado, finito y homogéneo (mismo tipo) de valores atómicos


que toma un atributo. Existen con independencia de cualquier otro elemento.

Definido por:

-Extensión (dando sus posibles valores): días = {lunes, martes, …, domingo}

Reservados todos los derechos.


-Intensión (mediante un tipo de datos): peso = decimal

-Atributo (A): interpretación de un dominio en una relación, es decir representa una


propiedad de una relación. Toma valores del dominio. Notación: D = Dom(A) => D es el
dominio de A. Se representa mediante una columna.

-Tupla: una ocurrencia de la relación. Se representa mediante una fila.

Base de datos relacional: conjunto finito de relaciones (abstración)

Una relación no es una tabla ni una tabla un fichero

Restricciones inherentes: una relación tiene propiedades (está formalizada) que no tiene una
tabla por ser un conjunto:

-Relación: concepto abstracto de origen matemático:

-No puede haber dos tuplas iguales => obligatoriedad de KEY

-El orden de las tuplas o los atributos no es significativo.

-Cada atributo sólo toma un único valor del dominio subyacente

-Regla de integridad de entidad: ningún atributo que forme parte de la clave


primaria de una relación puede tomar un valor nulo

-Tabla: forma de representar (implementar) una relación (una estructura de datos).

-Puede haber dos filas iguales.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Las filas están ordenadas en el orden de grabación física por defecto o según
el valor de la clave primaria.

-Los atributos se ordenan según se han definido en la tabla.

-En cada celda puede haber uno o varios valores (en este caso se puede
obtener una tabla equivalente que cumple la regla de normalización).

Clave Candidata (CK): conjunto de atributos que identifican unívoca y mínimamente cada tupla

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
de la relación. Una relación tiene 1 o más CK.

-Clave Primaria (Primary Key): clave candidata que el usuario escoge para identificar las
tuplas de la relación. Cuando sólo hay una CK, es la PK.

-Claves Alternativas (Alternative Key): claves candidatas que no han sido escogidas
como clave primaria.

-Clave Ajena (FK): conjunto no vacío de atributos de una relación R2 cuyos valores han de
coincidir con los de una clave candidata de una relación R1 (vínculo de referencia). Las dos
claves se definen sobre el mismo dominio. R1 y R2 puede ser la misma relación.

-Restricciones semánticas: definidas por el usuario.

Reservados todos los derechos.


-Clave Primaria (PRIMARY KEY): Sus valores no se pueden repetir ni ser nulos. La
impone el modelo teórico (ni SQL ni SGBD).

-Unicidad (UNIQUE): valores del conjunto de atributos no pueden repetirse.

-Obligatoriedad (NOT NULL): conjunto de atributos no admite nulos.

-Integridad Referencial (FOREIGN KEY): R2.FK = R1.CK

-NO ACTION: rechazar la operación de borrado o modificación.

-CASCADE: propagar modificación o borrado de tuplas de la tabla que


referencia.

-SET NULL: poner nula la FK.

-SET DEFAULT: poner valor por defecto en la FK.

-Verificación (CHECK): dentro de un CREATE o ALTER TABLE

-CHECK (porcentaje > 0 and porcentaje < 100) sobre un elemento

-CHECK (fecha_fin >= fecha_ini) a nivel de relación

-Aserción (CREATE ASSERTION): igual que check pero puede afectar a varios
elementos.

-Disparador (TRIGGER): procesos predefinidos que entran en acción en respuesta a


eventos específicos de manipulación de datos (insert, update, delete). Se usa para
restricciones estructurales, recoger restricciones complejas (reglas de negocio),
automatizar procesos, anotar acciones (log). No realiza la gestión de transacciones de
forma transparente.

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Se pueden definir varios triggers para el mismo evento (definir orden de
ejecución sp_settriggerorder). Sólo puede haber un trigger INSTEAD OF por
tipo de operación. Crean tablas temporales inserted (filas afectadas por el
evento como se quieren guardar en la BD) y deleted (filas con sus valores
anteriores o que se quieren borrar), pueden afectar a una o varias filas. Se
ejecutan transaccionalmente, si hay error se debe gestionar el ROLLBACK

CREATE TRIGGER nombre ON tabla FOR INSERT, UPDATE AS BEGIN

IF ( SELECT count(*) FROM inserted WHERE inserted.dni1 = inserted.dni2) > 0

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
BEGIN RAISERROR (‘No puede coincidir el DNI', 16, 1)

ROLLBACK TRANSACTION

RETURN

END

END

-Valor Nulo: para valor desconocido o inaplicable o añadir nuevo atributo

-Resultado de operaciones con nulos da nulos.

Reservados todos los derechos.


-Esquema de una relación: R < A:D, S >

R: nombre de la relación

A: atributos

D: dominios

S: restricciones de integridad intraelementos (en una única relación)

-Esquema de BDR: Ε < {Ri }, {Ii } >

Ε: nombre del esquema relacional

{Ri}: conjunto de esquemas

{Ii}: restricciones de integridad interelementos (en más de una relación o dominio).

-Implementación en SQL: E <R, D, T, V>

R: esquemas de relación (CREATE TABLE)

D: definiciones de dominios (CREATE DOMAIN)

T: restricciones de integridad entre relaciones y sobre dominios (CREATE ASSERTION,


CREATE TRIGGER, ...)

V: vistas (CREATE VIEW).

-Las 12 reglas de Codd: características de un SGBD auténticamente relacional

0. Un SGBD relacional debe emplear para gestionar la BD exclusivamente sus


facilidades relacionales.

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
1. Representación de la información: toda la información en la BD es representada de
forma explícita y única a nivel lógico, por medio de valores en columnas

2. Acceso garantizado: todo dato (valor atómico) debe ser accesible mediante una
combinación de tabla, un valor de su clave y el nombre de una columna.

3. Tratamiento sistemático de valores nulos: debe soportar la representación y


manipulación de información desconocida o no aplicable.

4. Catálogo en línea (diccionario de datos) basado en MR: la descripción de la BD se

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
representa en el nivel lógico igual que los datos ordinarios, de forma que los usuarios
autorizados puedan consultarla con el mismo lenguaje.

5. Sublenguaje de datos completo: al menos un lenguaje relacional:

a) con sintaxis lineal.

b) que pueda ser usado interactivamente o en programas (embebido).

c) con soporte para operaciones de: definición (declaración de vistas) y


manipulación (recuperación y modificación de tuplas) de datos, restricciones de
seguridad e integridad, y gestión de transacciones.

6. Actualización de vistas: toda vista teóricamente actualizable lo es en la práctica.

Reservados todos los derechos.


7. Inserción, modificación y borrado de tuplas de alto nivel: toda operación de
manipulación de datos debe operar sobre conjuntos de filas.

8. Independencia física de los datos: cambios en acceso físico o almacenamiento no


afecta al acceso lógico a los datos.

9. Independencia lógica de los datos: programas de aplicación no afectados por


cambios en las tablas que preservan la integridad.

10. Independencia de la integridad: restricciones de integridad separadas de los


programas, almacenadas en el catálogo de la BD para ser editadas mediante un
sublenguaje de datos.

11. Independencia de la distribución: aplicaciones no afectadas al distribuir (dividir


entre varias máquinas), o al cambiar la distribución ya existente de la BD.

12. Regla de no subversión: si el sistema posee un interfaz de bajo nivel, este no puede
utilizarse para saltarse reglas de integridad y restricciones del lenguaje de mayor nivel.

-Fases de diseño e implantación de BD:

-Análisis de requisitos: descripción de la información a gestionar y sus procesos.

-Técnicas: entrevistas con usuarios y expertos. Lectura de documentación

-Diseño conceptual: traducción del AR al esquema conceptual. Representación gráfica


de las entidades y sus relaciones. Técnicas: ER, UML u ORM, y DFD. CASE

-Diseño lógico: traducción del conceptual al LDD del gestor correspondiente.

-Diseño físico: transformar el lógico al físico.

¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529
-Carga de datos y pruebas: validación de requisitos

No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
-Operación: puesta en marcha, mantenimiento y monitorización

-Crear tabla:

CREATE TABLE nombre (

campo CHAR(10) NOT NULL CONSTRAINT pk_nombre PRIMARY KEY,

campo INT CONSTRAINT fk_nombre FOREIGN KEY REFERENCES tabla(campo)

);

Reservados todos los derechos.


MANIPULACIÓN DATOS:

-Insertar fila:

INSERT INTO tabla (campo1, campo2) VALUES (‘valor1’, ‘valor2’)

-Buscar (consulta):

SELECT campo1, campo2 a devolver FROM tabla1 INNER JOIN tabla2 ON


campo1 = campo2 WHERE condición

Join: combinar tablas. Inner: por igualdad

-Modificar filas:

UPDATE tabla SET campoA =’valor’ WHERE campoB= ‘valor‘

-Borrar:

DELETE FROM tabla WHERE condición

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4752529

También podría gustarte