Download Modelos de Base de Datos
Document related concepts
Transcript
Base de Datos
Una base de datos o banco de datos es un conjunto de datos
pertenecientes a un mismo contexto y almacenados
sistemáticamente para su posterior uso.
Ej:
Fichas Médicas
Agenda Telefónica
Etc.
Base de Datos
Definición:
Conjunto de datos pertenecientes a un mismo contexto y
almacenados sistemáticamente para su posterior uso.
Modelos de Base de Datos
Jerárquicas
De Red
Transaccionales
Relacionales
Multidimensionales
Orientadas a Objetos
Modelos de Base de Datos - Jerárquicas
En este modelo los datos se organizan en forma de árbol.
Modelos de Base de Datos – De Red
Éste es un modelo ligeramente distinto del jerárquico; su diferencia
fundamental es la modificación del concepto de nodo: se permite
que un mismo nodo tenga varios padres
Modelos de Base de Datos – Transaccionales
Son bases de datos cuyo único fin es el envío y recepción de datos
a grandes velocidades.
Un ejemplo habitual de transacción es el traspaso de una cantidad
de dinero entre cuentas bancarias.
Modelos de Base de Datos – Relacionales
Su idea fundamental es el uso de "relaciones". Estas relaciones podrían
considerarse en forma lógica como conjuntos de datos llamados "tuplas".
Esto es pensando en cada relación
como si fuese una tabla que está
compuesta por registros (las filas de una
tabla), que representarían las tuplas, y
campos (las columnas de una tabla).
Modelos de Base de Datos –
Multidimensionales
Básicamente no se diferencian demasiado de las bases de datos relacionales (una tabla
en una base de datos relacional podría serlo también en una base de datos
multidimensional), la diferencia está más bien a nivel conceptual; en las bases de datos
multidimensionales los campos o atributos de una tabla pueden ser de dos tipos, o bien
representan dimensiones de la tabla, o bien representan métricas que se desean
aprender.
Modelos de Base de Datos – Orientadas a
Objetos
Trata de almacenar en la base de datos los objetos completos
Incorpora los conceptos importantes del paradigma de objetos:
Encapsulamiento
Herencia
Polimorfismo
Modelos de Base de Datos – NoSQL
Ausencia de esquema en los registros de datos
Escalabilidad horizontal sencilla
Velocidad
Base de Datos
DBMS
Database Management System – Sistema de Administración de
Base de Datos
Sirve para:
Almacenamiento
Modificación
Extracción de la información en una base de datos
Añadir, borrar, modificar y analizar los datos
Proporcionar métodos para mantener la integridad de los datos
Administrar el acceso concurrente de usuarios a los datos
Etc.
DBMS
DBMS - Funciones
Administración de Transacciones
Control de Concurrencia
Administración de Recuperación
Administración de Seguridad
Administración de Almacenamiento
Administración del Catálogo de Base de Datos
Administración de Consultas
Usuarios
Usuario Final/Normal: interactúan con el sistema mediante un programa de
aplicación con una interfaz de formularios
Desarrollador: escriben los programas de aplicación, utilizando herramientas
para desarrollar interfaces de usuario
Usuarios sofisticados: Interactúan con el sistema sin programas escritos, usando el
lenguaje de consulta de base de datos para hacer sus consultas.
Administrador de la Base de Datos:Son las personas que tienen el control central
del SGBD.
SQL – Structured Query Language
Estándar ANSI (SQL-86 o SQL1 el primero en 1986) y ISO (en 1987)
Si bien es estándar, cada motor agrega funciones que no
pertenecen al estándar
Indices
Un índice es una estructura de disco asociada con una tabla o una vista que acelera la
recuperación de filas de la tabla o de la vista.
Un índice contiene claves generadas a partir de una o varias columnas de la tabla o la
vista. Dichas claves están almacenadas en una estructura (árbol b), permitiendo una
búsqueda rápida y eficiente.
Precisan mantenimiento
Normalización - Definición
La normalización es una técnica que se utiliza para crear relaciones lógicas apropiadas
entre tablas de una base de datos. La normalización se adoptó porque el viejo estilo de
poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos,
era ineficiente y conducía a errores de lógica cuando se trataba de manipular los datos.
La normalización es el proceso mediante el cual se transforman datos complejos a un
conjunto de estructuras de datos más pequeñas, que además de ser más simples y más
estables, son más fáciles de mantener.
Normalización - Objetivos
Minimizar la redundancia
Minimizar el mantenimiento de datos
Minimizar el impacto de futuros cambios (anomalías de actualización y anomalías de
borrado) de de datos, e ingreso de información (anomalías de inserción).
Normalización - Ventajas
Evita anomalías en inserciones, modificaciones y borrados.
Mejora la independencia de datos.
No establece restricciones artificiales en la estructura de los datos.
Facilidad de uso.
Flexibilidad.
Precisión.
Seguridad.
Facilidad de implementación.
Independencia de datos.
Claridad.
Facilidad de gestión.
Mínima redundancia.
Máximo rendimiento de las aplicaciones.
Normalización – Formas Normales
Primera Forma Normal (1FN)
Segunda Forma Normal (2FN)
Tercera Forma Normal (3FN)
Forma Normal de Boyce Codd(FNBC)
Cuarta Forma Normal (1FN)
Quinta Forma Normal (1FN)
Normalización – Dependencia Funcional
"Dados dos atributos A y B de una relación R, se dice que B es funcionalmente
dependiente de A, si para cada valor de A existe un valor de B, y sólo uno,
asociado con él”. Edgar Frank Codd
Si dos tuplas de una relación R tienen el mismo valor en el atributo A deben tener el
mismo valor en el atributo B
Si conocemos el valor de A podemos conocer el valor de B
Si se tiene R = {A1, A2, A3, … , An} , R es una relación y A es un conjunto de atributos.
Sea X, Y subconjuntos de A:
Dependecia Funcional: X Y
Se lee: X determina o implica Y
Y depende funcionalmente de X
Si y sólo si cada valor de X tiene asociado en todo momento un único valor de Y
Normalización – Clave Primaria
Las claves primarias son campos, o conjuntos de campos que identifica de forma única a
un registro.
Ningún registro puede tener la misma clave primaria que otro.
La clave primaria se utiliza para distinguir un registro con el fin de que se pueda tener
acceso a los diferentes registros, organizarlos y manipularlos.
Normalización – Clave Foránea
La clave foránea (o Foreing key FK) es una limitación referencial entre dos tablas.
La clave foránea identifica una columna o grupo de columnas en una tabla (tabla hija)
que se refiere a una columna o grupo de columnas en otra tabla (tabla padre o
referenciada).
Normalización – Primera Forma Normal 1FN
Definición: Para que una base de datos sea 1FN, es decir, que cumpla la primera forma
normal, cada columna debe ser atómica. Atómica significa "indivisible", es decir, cada
atributo debe contener un único valor del dominio, lo que significa que son únicos, y no
contiene conjuntos de valores.
La tabla contiene una clave primaria única.
Normalización – Segunda Forma Normal 2FN
Definición:
Se encuentra en 1FN
Todo atributo secundario (aquéllos que no pertenecen a la clave principal) depende de
la clave.
Normalización – Segunda Forma Normal 2FN
Muchos a Muchos
Uno a Muchos
Normalización – Tercera Forma Normal 3FN
Definición:
Se encuentra en 2FN
Todas las columnas que no son clave son funcionalmente dependientes por completo de
la clave primaria
Normalización – Tercera Forma Normal 3FN
Normalización – Ejercicio
Id_orden
Fecha
Id_cliente
Nom_cliente
Pcia
Num_art
nom_art
cant
Precio
2301
23/02/11
101
Peres Martin
CABA
3786
Red
3
35,00
2301
23/02/11
101
Peres Martin
CABA
4011
Raqueta
6
65,00
2301
23/02/11
101
Peres Martin
CABA
9132
Paq-3
8
4,75
2302
25/02/11
107
Diaz Herman
Mendoza
5794
Paq-6
4
5,00
2303
27/02/11
110
Gomez Pedro
BA
4011
Raqueta
2
65,00
2303
27/02/11
110
Gomez Pedro
BA
3141
Funda
2
10,00
Álgebra Relacional
Es un lenguaje con una serie de operadores que trabajan sobre
uno o varios conjuntos de datos (en este caso tablas) para obtener
otro conjunto como resultado sin modificar los originales.
El producto de una operación puede ser la entrada para otra
operación. Esto permite anidar expresiones.
Operaciones
Unión
Intersección
Diferencia
Producto
Selección
Proyección
Reunión
División
Asignación
Operaciones – Conjuntos
Operaciones – Unión
Combina datos de distintos conjuntos que tienen la
misma estructura
Operaciones – Intersección
Obtención de Filas comunes a varios conjuntos que tienen la misma estructura
Operaciones – Diferencia
Filas que se encuentran en un conjunto pero no en otro
Operaciones – Producto
Obtención de todas las posibilidades
posibles de combinaciones entre dos
conjuntos
Operaciones – Selección
Obtención de un subconjunto de uno más
conjuntos dada una condición específica
Operaciones – Proyección
Es una caso específico de selección que
permite discriminar las columnas que se
desean obtener
Operaciones – Reunión
Permite obtener datos de conjuntos
diferentes que tienen diferentes estructuras
(equivalente a JOIN)
Operaciones – División
Obtención de un conjunto C al dividir un
conjunto A por un conjunto B que da
como resultado los campos que están en B
y no están en A con las filas de B que están
asociadas a A
Operaciones – Asignación
Asignación de valores a uno o más
elementos de un conjunto
Vistas
Una vista es una alternativa para mostrar datos de varias tablas. Una vista es
como una tabla virtual que almacena una consulta. Los datos accesibles a
través de la vista no están almacenados en la base de datos como un objeto.
En general, se puede dar un nombre a cualquier consulta y almacenarla como
una vista.
Permiten ocultar información permitiendo el acceso a algunos datos y
manteniendo oculto el resto
Permiten simplificar la administración de los permisos de usuario
Permiten mejorar el rendimiento evitando la confección de consultas
repetidamente
Vistas – Creción
Create view nombre_de_la_vista
As
Sentencia de consulta (select)
Vistas – Consulta
Select * from nombre_de_la_vista
Transacciones
Una transacción es una unidad de trabajo compuesta
por diversas tareas, cuyo resultado final debe ser que se
ejecuten todas o ninguna de ellas.
Transacciones – Propiedades (ACID)
Atomicidad : Todas las sentencias dentro de la transacción deben ejecutarse sin
errores. Si por algún motivo no se cumplen, la transacción se interrumpe ruptura y
deshace todo los cambios realizados.
Consistencia: Se debe asegurar que todos los cambios en la base de datos sean
correctos y estén guardados.
Aislamiento: La transacción debe actuar independientemente de otra, dos
transacciones no pueden estar visualizando la misma información al mismo
tiempo.
Durabilidad: La transacción debe asegurar que los cambios que hará persistirán
aunque el sistema falle.
Transacciones – Controles
BEGIN TRANSACTION: da inicio a una nueva transacción.
COMMIT: guarda los cambios.
ROLLBACK: deshace los cambios.
Transacciones – Propiedades
Atomicidad : Todas las sentencias dentro de la transacción deben ejecutarse sin
errores. Si por algún motivo no se cumplen, la transacción se interrumpe ruptura y
deshace todo los cambios realizados.
Consistencia: Se debe asegurar que todos los cambios en la base de datos sean
correctos y estén guardados.
Aislamiento: La transacción debe actuar independientemente de otra, dos
transacciones no pueden estar visualizando la misma información al mismo
tiempo.
Durabilidad: La transacción debe asegurar que los cambios que hará persistirán
aunque el sistema falle.
Triggers
Un “Trigger" (disparador o desencadenador) es un tipo de procedimiento
almacenado que se ejecuta cuando se intenta modificar los datos de una tabla
(o vista).
Un Trigger se asocia a un evento sobre una tabla: inserción, actualización o
borrado.
Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la
que se definió un Trigger para alguna de estas acciones (inserción, actualización
y eliminación), el Trigger se ejecuta en forma automática.
Triggers – Creación
create trigger nombre_del_trigger
on nombre_de_la_tabla
for evento (insert, update o delete)
as
SENTENCIAS
Triggers – Ejemplo
create trigger DIS_ventas_insertar
on ventas
for insert
as
declare @stock int
select @stock= stock from libros join inserted on inserted.codigolibro=libros.código where libros.codigo=inserted.codigolibro
if (@stock>=(select cantidad from inserted))
update libros set stock=stock-inserted.cantidad from libros join inserted on inserted.codigolibro=libros.codigo
where codigo=inserted.codigolibro
else
begin
raiserror ('Hay menos libros en stock de los solicitados para la venta', 16, 1)
end
SQL - Comandos
Insert
Select
Delete
Update
SQL – Operadores
Operadores Lógicos:
And
Or
Not
Operadores de Comparación:
<, >, <>, >=, <=, !=
Like (Comodines: % y _)
In
Between
SQL - Cláusulas
From
Where
Group by
Having
Order by
SQL – Aliases
Alias para:
Tablas
Campos
SQL – Funciones
Max
Min
upper
lower
substring: SELECT substring(column_name,start[,length]) AS
some_name FROM table_name;
Len:
Round: SELECT ROUND(column_name,decimals) FROM
table_name;
Now / Getdate
SQL – Agrupamiento
Group By
Funciones
Count
Sum
AVG
SQL – Having
Restricciones
Count
Sum
AVG
SQL – Joins (Combinación)
LEFT JOIN
RIGHT JOIN
INNER
OUTER
SQL – Joins (Combinación)
LEFT JOIN
RIGHT JOIN
INNER
OUTER
SQL – Union
Combina el resultado de dos o más consultas
Las diferentes consultas debe tener la misma cantidad de
campos y cada campo debe ser del mismo tipo de datos
Union: devuelve solamente registros diferentes
Union All: devuelve registros duplicados, si los hay
Ej:
SELECT nombre_columna(s) FROM tabla1
UNION (ALL)
SELECT nombre_columna(s) FROM tabla2;
SQL – Subconsultas
SELECT Ord.SalesOrderID, Ord.OrderDate,
(SELECT MAX(OrdDet.UnitPrice)
FROM AdventureWorks.Sales.SalesOrderDetail AS OrdDet
WHERE Ord.SalesOrderID = OrdDet.SalesOrderID) AS
MaxUnitPrice
FROM AdventureWorks2008R2.Sales.SalesOrderHeader AS
Ord
SQL – Subconsultas
SELECT Name
FROM AdventureWorks2008R2.Production.Product
WHERE ListPrice =
(SELECT ListPrice
FROM AdventureWorks2008R2.Production.Product
WHERE Name = 'Chainring Bolts' );
SQL – Subconsultas - Referencias
SELECT numemp, nombre,
(SELECT MIN(fechapedido) FROM pedidos
WHERE rep = numemp)
FROM empleados;
SQL – Subconsultas
SELECT
M.MVC_FECHAX, M.MVC_TIPDOC, M.MVC_NRODOC,
M.MVC_IDECLI, MJ.CLI_NOMBRE
FROM MOVIMCAB M
JOIN
(SELECT
CLI_IDENTI,
CLI_NOMBRE FROM
CLIENTES)
AS MJ
ON M.MVC_IDECLI = MJ.CLI_IDENTI