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