Download Modelos de Base de Datos

Document related concepts

SQL wikipedia , lookup

Normalización de bases de datos wikipedia , lookup

Base de datos relacional wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Modelo de base de datos wikipedia , lookup

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