Logo Studenta

Resumen Sistemas de Datos xd

¡Este material tiene más páginas!

Vista previa del material en texto

INTERNAL
Link de clases:
https://web.microsoftstream.com/channel/f3dd7f95-3a89-42dd-976a-d96485678a35
https://www.youtube.com/playlist?list=PLMPUhRH1EEj-WCGsouxkEoPidYhw-NlJo
Sistemas de Datos – Final
(UT 1) Introducción a los Sistemas de Datos
Los sistemas de datos son un sistema de información que busca manipular los datos con el objetivo de obtener información relevante para un sistema objeto. Éste debe ser una representación lo más fiel posible de algún aspecto de la realidad.
El sistema objeto puede tratarse de personas, cosas, procedimientos, documentos, etc. De éstos se obtienen datos que ingresan al SI para ser almacenados y procesados, para luego convertirse en información. Para realizar un SI mediante un sistema de datos se necesita comprender cómo símbolos registrados (datos) pueden utilizarse para representar información (conocimiento) acerca del sistema objeto. Para estar en condiciones de entender la realidad (y el sistema objeto), el hombre organiza los objetos y los fenómenos en clases de objetos. Similarmente, las propiedades son organizadas en tipos o clases de propiedades o atributos o relaciones.
Dado que propósito de los sistemas de datos es proveer información acerca del mundo real, la definición de los datos y del procesamiento a incluir en el sistema debe desarrollarse a partir de las concepciones que los usuarios tengan de sus mundos y no de los requerimientos de los programas de una computadora. Se atiende al diseño de los sistemas de datos antes de comenzar una tarea de construcción detallada. Un SI está bien diseñado sólo si provee la información adecuada, en cuanto a su tipo, calidad y oportunidad, y lo hace en una forma económica, lo cual presenta dos problemas:
A partir de estos 5 problemas es que se definen las áreas principales del diseño de los SI:
1. Análisis y diseño del sistema objeto.
2. Análisis infológico (la cual puede relacionarse con la capacidad de entender cuáles de los datos externos que posibilita el “big data” son de utilidad).
3. Arquitectura del sistema de datos.
4. Construcción del sistema de datos.
5. Implementación y operación del sistema de datos.
Los sistemas de datos han cobrado mucha importancia, dado que los datos son un activo importante de cada organización, que podrían generarle ventajas competitivas. Los denominados datos abiertos (open data) habilitan a las organizaciones la posibilidad de usar datos externos, que sino serían muy difíciles de conseguir.
El término “Big Data” podría traducirse como datos masivos. requiere también, abordar nuevas problemáticas tecnológicas en la gestión de datos, que se las resume con las tres V: Volumen (cantidad de bytes), Velocidad (tiempo de respuesta) y Variedad (de formatos). También se agrega una cuarta V, que es la veracidad, ya que es un desafío verificar la confiabilidad de los datos (sobre todo cuando provienen de diversas fuentes y no hay poco tiempo para validar).
Big data y los desafíos de las V
· Volumen
· Velocidad
· Variedad
· Veracidad
 
Sistemas gestores de bases de datos (SGBD)
Los usuarios finales trabajan con software aplicativo que accede a datos almacenados en el almacenamiento secundario. Entre ambos existe un Sistema de Gestión de Bases de Datos (SGBD). Éste consiste en una colección de datos interrelacionados y un conjunto de programas para acceder a dichos datos. La colección de datos, denominada base de datos, contiene información relevante para una empresa. El objetivo principal de un SGBD es proporcionar una forma de almacenar y recuperar la información de una base de datos de manera que sea tanto práctica como eficiente. Se diseñan para gestionar grandes cantidades de información.
Los SGBD se implementan siempre sobre un sistema operativo y brindan servicios que permiten gestionar varios problemas de datos:
· Transacciones: Una transacción es un conjunto de operaciones que lleva a cabo una única función lógica en una aplicación de bases de datos. Cada transacción es una unidad de atomicidad y consistencia. Por tanto, se exige que, si la base de datos era consistente cuando la transacción comenzó, debe ser consistente cuando la transacción termine con éxito. El SGBD garantiza que la base de datos quede en un estado consistente (correcto) a pesar de los fallos del sistema, y que la ejecución concurrente de transacciones transcurra sin conflictos.
· Concurrencia: control de la interacción entre las transacciones concurrentes (2 o más peticiones sobre un mismo objeto) para garantizar la consistencia de la base de datos.
· Acceso: a partir de la gestión de usuarios y contraseñas, se diferencia a los usuarios en cuanto al tipo de acceso que se les permite a diferentes valores de los datos de la base de datos. Estas diferenciaciones se expresan en términos de autorización, las cuales pueden ser de lectura, inserción, actualización y eliminación de los datos.
· Restricciones: un SGBD dispone de elementos que permiten asegurar restricciones en los datos que se carguen en la base de datos. Las restricciones pueden ser:
· De dominio: Se debe asociar un dominio de valores posibles a cada atributo. La declaración de un atributo como parte de un dominio concreto actúa como restricción de los valores que puede adoptar.
· Integridad referencial: asegurar que un valor que aparece en una relación para un conjunto de atributos dado aparece también para un determinado conjunto de atributos en otra relación. Las modificaciones de la base de datos pueden causar violaciones de la integridad referencial. Cuando se viola una restricción de integridad, el procedimiento normal es rechazar la acción que ha causado esa violación.
· Archivos: gestiona la asignación de espacio de almacenamiento de disco y las estructuras de datos usadas para representar la información almacenada en el disco.
· Memoria intermedia: es responsable de traer los datos desde el disco de almacenamiento a la memoria principal y decidir los datos a guardar en la memoria caché. Es una parte fundamental de los sistemas de bases de datos, ya que permite que la ésta maneje tamaños de datos que son mucho mayores que el tamaño de la memoria principal.
· Optimizar consultas: las consultas ayuda al sistema de bases de datos a simplificar y facilitar el acceso a los datos. Por ello, el rápido procesamiento de las actualizaciones y de las consultas es importante.
El hecho de que se implemente un SGBD no quita la posibilidad de que exista un software aplicativo por cada proceso de la organización para cargar los datos en la base.
Estructura física
El SGBD implementa varias estructuras de datos como parte de la implementación física del sistema:
· Archivos de datos: almacenan la base de datos en sí misma.
· Diccionario de datos: Para poder guardar un dato, éste debe respetar una cierta estructura (tipo de dato, longitud, etc.). Por ello, los SGBD poseen un tipo especial de tabla, denominada diccionario de datos en donde se guarda esta información (metadatos) que hace que la base de datos se defina a sí misma. Antes de leer o modificar los datos reales, el SGBD consulta el diccionario de datos: es decir, provee los metadatos a las instrucciones de Lenguaje de Manipulación de Datos (DML). El diccionario de datos sólo puede ser accedido y actualizado por el propio SGBD (no por los usuarios normales).
· Índices: Pueden proporcionar un acceso rápido a los elementos de datos. Facilitan punteros a los elementos de datos que tienen un valor concreto. La asociación es una alternativa a la indexación que es más rápida en algunos casos, pero no en todos.
Administrador de Bases de Batos (DBA)
Una de las principales razones de usar SGBD es tener un control centralizado tanto de los datos como de los programas que tienen acceso a esos datos. La persona que tiene ese control central sobre el sistema se denomina administrador de bases de datos (DBA). Las funciones del DBA incluyen:
· Definición del esquema: crea el esquema original de la base de datos mediante la ejecución de un conjunto de instrucciones de definición de datos en el DDL.
· Definiciónde la estructura y del método de acceso.
· Modificación del esquema y de la organización física: el DBA es el responsable de hacer las modificaciones en el esquema de la base de datos para reflejar las necesidades cambiantes de la organización, o para alterar la organización física a fin de mejorar el rendimiento. Lo hace mediante herramientas que facilitan escribir el Lenguaje de Definición de Datos (DDL).
· Concesión de autorización para el acceso a los datos: puede regular las partes de la base de datos a las que puede tener acceso cada usuario.
· Mantenimiento rutinario:
· Back up periódico para impedir la pérdida de datos en caso de desastres.
· Asegurarse de que se dispone de suficiente espacio libre en disco para las operaciones normales y aumentar el espacio en disco según sea necesario.
· Supervisar los trabajos que se ejecuten en la base de datos y asegurarse de que el rendimiento no se degrade debido a que algún usuario haya remitido tareas muy costosas.
Los niveles de Abstracción de los datos
Para que el sistema sea útil debe recuperar los datos eficientemente. Esto implica usar estructuras de datos complejas para la representación de los datos. Dado que muchos de los usuarios de sistemas de bases de datos no tienen formación en informática, los desarrolladores ocultan esa complejidad a los usuarios mediante varios niveles de abstracción para simplificar la interacción de los usuarios con el sistema:
· Nivel conceptual (de vistas, externo): nivel más elevado de abstracción. Sólo describe parte de la base de datos. Si bien es el menos complejo, aún queda algo de complejidad debido a la variedad de información almacenada en las grandes bases de datos. Muchos usuarios del sistema no necesitan toda esta información; en su lugar sólo necesitan tener acceso a una parte de la base de datos. El nivel conceptual existe para simplificar su interacción con el sistema. Éste puede proporcionar muchas vistas para la misma base de datos.
· Nivel lógico (esquema): El nivel inmediatamente inferior de abstracción describe qué datos se almacenan en la base de datos y qué relaciones existen entre esos datos. Este nivel, por tanto, describe toda la base de datos en términos de un número pequeño de estructuras relativamente simples. Aunque la implementación de esas estructuras simples en el nivel lógico puede involucrar estructuras complejas del nivel físico, los usuarios del nivel lógico no necesitan preocuparse de esta complejidad. Los DBA, que deben decidir la información que se guarda en la base de datos, usan el nivel de abstracción lógico.
· Nivel físico (interno): El nivel más bajo de abstracción describe cómo se almacenan realmente los datos. Describe en detalle las estructuras de datos complejas de bajo nivel.
Ciclo de vida y diseño
Dentro del ciclo de vida de un sistema de base de datos, en la etapa de diseño se definen cómo se construirán y funcionarán los distintos niveles de abstracción:
· Diseño conceptual: escoger el modelo de datos y traducir requisitos relevados en un esquema conceptual de la base de datos.
· Diseño lógico: Relacionar el esquema conceptual con el modelo de implementación de los datos del sistema de base de datos que se va a usar
· Diseño físico: Uso del esquema de base de datos específico para el sistema resultante. Se especifican las características físicas de la base de datos (organización de archivos, estructuras de almacenamiento interno, etc.).
Arquitectura de las bases de datos
La arquitectura de los sistemas de bases de datos se ve muy influida por el sistema informático subyacente sobre el que se ejecuta el sistema de bases de datos. Los sistemas de bases de datos pueden estar:
· Centralizados.
· Tipo cliente-servidor: Hoy en día la mayor parte de los usuarios de los sistemas de bases de datos no está presente en el lugar físico en que se encuentra el sistema de bases de datos, sino que se conectan a él a través de una red. Por tanto, se puede diferenciar entre los sistemas clientes, en los que trabajan los usuarios remotos de la base de datos, y los sistemas servidores, en los que se ejecutan los sistemas de bases de datos.
· Paralelos.
· Distribuidos: se extienden por varias máquinas geográficamente separadas.
 
(UT 2) Diseño conceptual y lógico de las bases de datos
El diseño conceptual de una base de datos consiste en representar el sistema objeto cuyos datos serán almacenados en la base de datos.
Al momento de diseñar, el diseñador releva cómo es el sistema objeto a través de personas, documentos y procedimientos. Se deben representar aquellos aspectos del sistema objeto que sean relevantes para la toma de decisiones. Dicha relevancia viene dada por las necesidades actuales y futuras de información. Existen técnicas de diseño que brindan herramientas para hacer esta representación y capturar la mayor cantidad de datos posibles.
Aplicando la normalización y otros criterios de diseño, se llega a un modelo implementable. Este es el modelo de datos lógico, que consiste en el esquema de la base de datos.
Modelo Entidad-Relación (E-R)
Para garantizar que se obtiene una comprensión precisa de la naturaleza de los datos y del modo en que éstos se utilizan en la empresa, se requiere disponer de un modelo de comunicación que no sea técnico y que esté libre de ambigüedades. El modelo Entidad-Relación (E-R) es una representación que permite formalizar cuáles son los datos, y las relaciones entre éstos, que debe guardar el SI.
El modelo E-R es una técnica de diseño de base de datos de tipo arriba a abajo que comienza identificando los datos más importantes, denominados entidades, y las relaciones entre los datos que deben presentarse en el modelo. Después se añaden más detalles, como la información que se requiere almacenar acerca de las entidades y relaciones, lo que se denomina atributos y sobre cualesquiera restricciones que haya que aplicar a las entidades, relaciones y atributos.
Entidad
El modelo E-R está basado en una percepción del mundo real que consiste en un conjunto de objetos básicos, denominados entidades, y de las relaciones entre esos objetos. Una entidad es una cosa, persona o hecho del mundo real que es distinguible de otros objetos (es decir, algo que existe y que puede ser representado) sobre el cual el sistema debe guardar información. Las entidades son un grupo de objetos con las mismas propiedades, que la empresa identifica como poseedores de una existencia independiente. Puede tratarse de objetos con una existencia física (real) o de objetos con una existencia conceptual (abstracta).
Para cada entidad es necesario definir atributos, ocurrencias y clave primaria.
Ocurrencia o instancia de la entidad
Cada uno de los elementos concretos en los que se manifiesta esta entidad es una ocurrencia o instancia de la entidad. Se trata de un objeto identificable de forma unívoca dentro de un tipo de entidad. Se da cuando en una entidad los distintos atributos asumen un valor para representar una determinada instancia de la misma en la realidad.
Atributos
Las entidades se describen en las bases de datos mediante un conjunto de atributos. Un atributo es toda aquella característica o propiedad que se desee registrar de una ocurrencia de una entidad. Los atributos de una entidad son acordes con las características de la realidad que se desea representar, por ello varían en cada diseño particular. No se trata de representar todas las características de esa entidad, sino solamente las que son relevantes, es decir, las propiedades que representan a la entidad para esa organización.
Los atributos contienen valores que describen cada ocurrencia. Lo que se guarda en una base de datos son los valores posibles que pueden tener cada una de esas instancias. Cada atributo está asociado a un dominio, es decir, un conjunto de valores permitidos para uno o más atributos. El dominio es único y define los valores potenciales que un atributo puede tener.
Claves
Una superclave es un conjunto de uno o más atributos de una entidad que, cuando toman un valor, identificanunívocamente una ocurrencia de una entidad. Se trata de uno o varios atributos que, considerados conjuntamente, permiten identificar de manera unívoca una tupla (fila) de la relación. Las superclaves no son suficientes ya que pueden contener atributos innecesarios. Si C es una superclave, entonces también lo es cualquier subconjunto de C. Aquellas superclaves para las que ninguno de sus subconjuntos constituya una superclave se los denomina superclave mínima o clave candidata.
La clave candidata es el conjunto mínimo de atributos cuyos valores identifican de forma unívoca cada instancia de una entidad. Es aquella superclave a la que, si se elimina cualquier atributo del conjunto, deja de ser superclave. No puede contener valores no obligatorios (nulos). Una clave candidata es compuesta si está formada por 2 o más atributos. Ocurre en los casos donde la clave está compuesta por varios atributos cuyos valores, tomados conjuntamente, son unívocos para cada instancia de la entidad, pero no lo son si se los considera por separado.
La clave primaria (PK) es una clave candidata (por ende, es superclave) a la que se la elige como el principal criterio de identificación. Es la clave candidata que ha elegido el diseñador de la base de datos como medio principal para la identificación de las tuplas de una relación. Es obligatoria por definición y escogerse de manera que los valores de sus atributos no se modifiquen nunca, o muy rara vez (no admite duplicados). Se suele elegir teniendo en cuenta:
· Número mínimo de atributos.
· Menor frecuencia de cambios.
· Menor longitud.
· Más afín a la perspectiva del usuario.
Las claves (sean primarias, candidatas o superclaves) son propiedades de toda la relación, no de cada una de las tuplas. Ninguna pareja de tuplas de la relación puede tener simultáneamente el mismo valor de los atributos de la clave. La selección de una clave representa una restricción de la empresa del mundo real que se está modelando.
Las claves alternas son todas las claves candidatas no elegidas como clave primaria. No necesariamente son obligatorias.
Las claves subrogadas aparecen cuando, en ciertos casos, no es posible determinar una superclave, por lo que se inventa un atributo autogenerado para identificar unívocamente una ocurrencia de un evento. Es una clave inventada para ser primaria. Solamente se considera subrogada si no existía como atributo del sistema objeto al momento del diseño.
La clave foránea (FK) es una clave de una entidad que también es clave primaria de otra entidad. Es un atributo o conjunto de atributos que hacen referencia a la clave primaria de otra entidad (o a la misma, en el caso de relaciones recursivas).
Relación
Una relación es un conjunto de asociaciones significativas entre instancias de entidades. Representa las conexiones que existen entre los datos que se almacenan.
Las relaciones se definen por las claves foráneas (son la manera mecánica de dar existencia a una relación). Se clasifican según:
Restricciones
Además de entidades y relaciones, el modelo E-R representa ciertas restricciones que los contenidos de la base de datos deben cumplir. Las mismas existen para, y entre, los datos del modelo. Las restricciones pueden estar dadas por:
	Atributos
	Entidad
	Relaciones
	Generales
	· Dominio: se restringen los valores válidos que pueden asumir los atributos.
· Obligatoriedad: no se puede ingresar una ocurrencia sin un valor asignado para todos los atributos obligatorios.
· Unicidad.
	· Clave primaria
· Clave alterna
· Relaciones entre atributos: restricciones que deben existir entre los valores de distintos atributos entre sí, para que la realidad no sea falseada.
	· Cardinalidad máxima y mínima
· Integridad referencial: reglas que deben cumplirse respecto a las operaciones de inserción, modificación y eliminación de ocurrencias que se encuentran en los extremos de cada una de las relaciones existentes.
	Se da entre atributos de distintas entidades. Existen restricciones que no caen en alguno de los grupos anteriores que entran en esta categoría.
 
 
Transformar modelo en esquema
El modelo E-R no es la representación formal que se utilizará para diseñar el futuro esquema de la base de datos porque:
· Las entidades débiles no llevan PK, sino discriminante.
· No se formalizan las FK.
· Existen relaciones N a M.
· Se permiten atributos multivalorados y entidades débiles.
Es por eso que para realizar el esquema de la base de datos el modelo se utiliza el diagrama Entidad-Relación (DER). Convertir el modelo en el diagrama requiere de la aplicación de una serie de reglas de transformación:
1. En las entidades fuertes se crea una relación que incluya los atributos simples.
2. En las entidades débiles se crea una relación que incluya los atributos simples y se agrega la PK de la entidad identificadora, definiéndola luego como PK de la entidad.
3. Incluir FK en las entidades, del lado del “muchos” de las relaciones.
4. Incluir la FK en las relaciones de 1 a 1 (del lado en que es subtipo, participación opcional) en donde será, además, PK.
5. Crear una tabla para representar las relaciones N a M, su PK se compone de las PK de las entidades que relaciona (por otro lado, cada una actúa como FK), y se le agregan los atributos de la relación si los tuviese.
6. Crear una tabla para representar un atributo multivalorado e incluir también un atributo de la PK de la entidad propietaria (identificadora) en la nueva tabla, la misma actuará como clave externa. También hay que definir su PK.
7. Aplicar la técnica de normalización para validar que las entidades estén bien formadas.
Trampas de conexión
Al realizar un modelo E-R pueden aparecer problemas derivados de una mala interpretación del significado de ciertas relaciones. Estos problemas se llaman trampas de conexión, las cuales deben resolverse para evitar crear un modelo que no sea una representación veraz del mundo real.
Los dos tipos más comunes de trampas de conexión son:
· Trampas multiplicativas: ocurre cuando un modelo representa una relación entidades, pero la ruta entre ciertas instancias de entidad es ambigua. Puede existir cuando salen de la misma entidad dos o más relaciones del tipo 1 a n. Se resuelve reestructurando el modelo E-R original con el fin de representar la asociación correcta entre las entidades.
· Trampas de corte: ocurre cuando un modelo sugiere la existencia de una relación entre ciertas entidades, pero no existe ninguna ruta entre ciertas instancias de entidad. Puede existir cuando hay una o más relaciones con una multiplicidad mínima de 0 (es decir, participación opcional) formando parte de la ruta que conecta a dos entidades relacionadas. Se resuelve identificando la relación que falta.
 
Normalización
La normalización es un método de diseño que permite estructurar las entidades del modelo de datos de una forma tal que sea más eficiente la actualización de los datos cuando el modelo sea implementado. El objetivo es generar un conjunto de esquemas de relaciones que permita almacenar información sin redundancias innecesarias, pero que también permita recuperar la información con facilidad.
La normalización es necesaria para evitar propiedades no deseables:
· Repetición de la información.
· Imposibilidad de representar determinada información.
Una vez que se aplica la normalización a las entidades se dice que éstas se encuentran normalizadas. Para lograrlo es conveniente ir pasando por distintos estados de las entidades, llamados formas normales. Las formas normales representan pruebas que tratan de identificar el agrupamiento óptimo de los atributos de estas entidades, con el fin de identificar un conjunto de relaciones que soporten adecuadamente los requisitos de datos de la organización. Las características de un conjunto adecuado de relaciones incluyen:
· Número mínimo de atributos necesarios para soportar los requisitos de datos de la organización.
· Los atributos con una relación lógica fuerte (dependencia funcional) se encuentran en la misma relación.
· Una redundancia mínima, estandocada atributo representado una sola vez, con la importante excepción de aquellos atributos que constituyan o formen parte de claves externas, los cuales son esenciales para la combinación de relaciones.
Ejemplo para ver Dependencia Funcional, en una planilla de notas alumnos:
 
 
Anomalías de actualización
Las relaciones con datos redundantes pueden presentar problemas que se denominan anomalías de actualización, las cuales se clasifican en:
Formas normales
Primera forma normal (1FN)
Una entidad está en primera forma normal (1FN) si se trata de una relación en la que la intersección de toda fila y columna contiene un valor y sólo un valor. Está basada en el concepto de grupo repetitivo. Existe grupo repetitivo cuando un atributo puede asumir más de un valor en una misma ocurrencia.
Para que una entidad se encuentre en 1FN debe cumplir dos condiciones:
1. Tener definida su clave primaria.
2. No contener grupos repetitivos.
Segunda forma normal (2FN)
Una entidad está en segunda forma normal (2FN) si se trata de una relación que está en 1FN y en la que todo atributo que no sea de clave candidata depende funcionalmente de modo completo de cualquier clave candidata. 
La 2FN está basada en el concepto de dependencia funcional. Se dice que un atributo B depende funcionalmente de un atributo A si el valor que asume el atributo A determina el valor que asumirá el atributo B. En otras palabras, cada valor de A está asociado con exactamente un valor de B. Esto se simboliza como . En este caso se dice que A es determinante de B, lo que implica que dos instancias que tengan el mismo valor para A tendrán el mismo valor para B; sin embargo, para un determinado valor de B puede haber varios valores diferentes de A.
Se dice que hay dependencia funcional completa si la eliminación de cualquier atributo de A hace que la dependencia funcional deje de existir. En cambio, es parcial si existe algún atributo que puede eliminarse de A y la dependencia continúa verificándose.
La 2FN se aplica a las relaciones con PK compuestas, es decir, PK conformadas por 2 o más atributos. Por ende, una relación con PK de un único atributo está automáticamente en 2FN.
Para que una entidad se encuentre en 2FN debe cumplir dos condiciones:
1. Encontrarse en 1FN.
2. No tener dependencias funcionales parciales respecto de la clave primaria. Es decir, todo atributo que no forme parte de la clave primaria debe depender funcionalmente del total de la clave primaria.
Tercera forma normal (3FN)
Una entidad está en tercera forma normal (3FN) si se trata de una relación que se encuentra en 1FN y 2FN y en la que ningún atributo que no sea de clave candidata depende transitivamente de ninguna clave candidata.
La 3FN se basa en el concepto de dependencia funcional transitiva:
Una condición en la que A, B y C son atributos de una relación tales que si y , entonces C depende transitivamente de A a través de B (suponiendo que A no sea funcionalmente dependiente de B o C).
Para que una entidad se encuentre en 3FN debe cumplir dos condiciones:
1. Encontrarse en 2FN.
2. No existir dependencias funcionales transitivas, es decir, que no existan dependencias funcionales entre atributos que no formen parte de la clave primaria.
Formas normales avanzadas
Forma normal de Boyce-Codd (FNBC) (ya debería estar en forma normal 3)
La forma normal de Boyce-Codd (FNBC) analiza si la dependencia funcional es trivial o no. En una dependencia funcional, un subconjunto de atributos A determina el valor de un subconjunto de atributos B. Dicha dependencia es trivial cuando B está incluido en A.
Una relación está en FNBC cuando, dada una dependencia funcional , ocurre una de las siguientes posibilidades:
· A es superclave.
· es trivial, estando previamente en 3FN.
La diferencia entre 3FN y FNBC es que para la dependencia funcional , 3FN permite que exista esta dependencia en una relación si B es un atributo de clave principal y A no es superclave, mientras que FNBC exige, para que esta dependencia permanezca en una relación, que A sea superclave. Por tanto, FNBC es más fuerte que 3FN, de modo que toda relación en FNBC está también en 3FN.
Una entidad cuyos atributos son todos PK está automáticamente en FNBC.
Cuarta forma normal (4FN)
La cuarta forma normal (4FN) se basa en el concepto de dependencia multivalorada, las cuales ocurren cuando, dado un valor para el atributo A éste determina n valores para el subconjunto de atributos B. Se simboliza .
Una entidad está en 4FN cuando, dada una dependencia multivalorada , ocurre una de las siguientes posibilidades:
· es trivial, es decir B está incluido en A ().
· A es superclave de (siendo en este caso la dependencia no trivial).
4FN es más fuerte que FNBC ya que impide que las relaciones contengan dependencias multivaloradas no triviales y, por tanto, redundancia en los datos. La normalización de FNBC a 4FN implica la eliminación de las dependencias multivaloradas de la relación, colocando los atributos en una nueva relación junto con una copia de los determinantes.
Quinta forma normal (5FN)
La quinta forma normal (5FN) se basa en el concepto de dependencia de reunión. Cuando al descomponer una entidad en dos entidades no se preservan los datos de la relación original y, al querer volver a combinarlas, se generan tuplas espurias adicionales se dice que hay descomposición con pérdida. En el caso contrario, la descomposición es sin pérdida.
Si hay descomposición sin pérdida se dice que hay dependencia de reunión o de combinación. Esta es trivial cuando, para que no haya pérdida, siempre tiene que haber una tabla con todos los atributos de la PK de la entidad original.
En función de esto, una entidad está en 5FN cuando no contiene dependencias de reunión no triviales.
	Forma Normal
	Características que debe cumplir
	Acciones a tomar cuando la entidad no cumple estas características
	1FN
	· Tener definida PK.
· No contener grupos repetitivos.
	1. Eliminar en dicha entidad el o los atributos que sean grupos repetitivos.
2. Seleccionar la PK.
3. Crear una nueva entidad que tenga como atributos:
a. El o los atributos eliminados en la otra entidad.
b. El o los atributos que es PK en la otra entidad. En esta entidad, dicho atributo puede formar parte de una PK compuesta, o de lo contrario no será PK.
4. Poner nombre a la nueva entidad y seleccionar su PK.
	2FN
	· Encontrarse en 1FN.
· No existir dependencias funcionales parciales respecto de la PK.
	1. Eliminar el o los atributos que dependan funcionalmente en forma parcial de la PK.
2. Crear una nueva entidad que tenga como atributos:
a. El o los atributos eliminados en la otra entidad.
b. El atributo del cual dependían funcionalmente. Este atributo deberá ser seleccionado como la PK de esta nueva entidad.
3. Debe dársele nombre a la nueva entidad.
	3FN
	· Encontrarse en 2FN.
· No existir dependencias funcionales entre atributos que no formen parte de la PK.
	1. Eliminar el o los atributos que tengan dependencias funcionales entre sí y no sean parte de la PK.
2. Crear otra entidad que tenga como atributos:
a. El o los atributos eliminados en la otra entidad.
b. El atributo del cual dependían funcionalmente. Este atributo deberá ser seleccionado como la PK de esta nueva entidad.
3. Debe dársele nombre a la nueva entidad.
	FNBC
	Dada una dependencia funcional , ocurre una de las siguientes posibilidades:
· A es superclave.
· es trivial, estando previamente en 3FN.
	Se crea una nueva entidad con los atributos que forman parte de la dependencia funcional, eliminando de la entidad original sólo el atributo dependiente funcionalmente (subconjunto B).
	4FN
	Dada una dependencia multivalorada , ocurre una de las siguientes posibilidades:
· es trivial, es decir B está incluido en A ().
· A es superclave de (siendo en este caso la dependencia no trivial).
	La entidad se separa en dos entidades que tienen en común el atributo A, repartiendo los atributos del subconjunto B entre ambas entidades creadas.
	5FN
	No poseer dependencias de reunión no triviales.
	Se descompone la relaciónen n relaciones, según la cantidad de atributos, representando en cada entidad creada las distintas combinaciones posibles entre ellos (revisando siempre que su existencia tenga sentido).
Dilema de la restricción
Puede ocurrir que, por aplicación de las reglas de normalización, no se pueda incluir dentro de una tabla un atributo que permitiría establecer una FK necesaria para validar dicho atributo contra otra tabla. Esto se denomina dilema de la restricción. Para resolverlo, se debe elegir entre agregar el atributo y establecerlo como FK (desnormalizando la entidad) o dejarlo así y establecer la restricción de otra manera.
Criterios de buen diseño
Representar información
El objetivo de todo modelo es representar un sistema objeto. Siempre que surjan dudas de cómo representar la información del mismo, se debe buscar aquella manera que mejor lo describa. Para ello, se debe tener en cuenta:
· Evitar valores indefinidos: son aquellos atributos donde no corresponde valor, corresponde pero falta o no se sabe si corresponde.
· Definir nivel de desagregación: se trata de tener el mayor nivel de desagregación de los datos, dentro de lo razonable. El nivel se decide según las necesidades del modelo.
· Capacidad de generar información: el modelo debe poder responder las consultas que se le realicen para que el usuario obtenga la información que requiere.
Evitar redundancia
Es un buen criterio evitar atributos derivados almacenados y la repetición en los valores. El objetivo de esto es:
· Reducir espacio de almacenamiento.
· Menor costo de actualización.
· Menor probabilidad de generar inconsistencias.
· En el costo de consultas el impacto puede ser positivo o negativo:
· La redundancia puede servir para encontrar más fácilmente un dato y hacer más sencilla la consulta.
· Tener datos redundantes, en el caso de atributos derivados, hace que en una consulta la información tarde más tiempo en obtenerse porque los registros que la base debe leer son más largos.
Asegurar consistencia
Añadir restricciones al modelo tiene un costo, el cual tiene que ver con la validación de los datos que se ingresan. Si los costos de asegurar la consistencia son mayores que los beneficios, se debe tomar la decisión profesional de no validar esa restricción y compensar esa falta de alguna otra manera.
Claridad conceptual
Tiene que ver con la semántica del modelo: debe ser comprensible y fácil de entender. Se debe establecer un criterio para nombrar los atributos y seguirlos durante todo el desarrollo del mismo. Esto ayuda a que el usuario sepa que existen ciertos atributos sin necesidad de ir a buscarlos.
(UT 3) Esquema de las bases de datos
Antes de la creación de los SGBD, los datos se guardaban en archivos almacenados en el sistema operativo. Los mismos eran leídos por diferentes programas, lo cual traía una serie de problemas:
· Datos dependientes del programa (y del programador).
· Menor productividad.
· Redundancia (duplicación de datos) que daba lugar a problemas de inconsistencia.
· Dificultad de acceso.
· Datos aislados (no integrados).
· Era responsabilidad exclusiva de cada programador asuntos tales como:
· Restricciones de datos.
· Atomicidad.
· Anomalías de acceso concurrente.
· Seguridad.
· Performance.
El esquema de la base de datos es el modelo de datos lógico, es el diseño general de la estructura de la base de datos. Un esquema se especifica con un conjunto de definiciones que se expresan usando un lenguaje de definición de datos (DDL). Éste incluye órdenes para definir, modificar o borrar las tablas en las que se almacenan los datos, las relaciones entre éstos, definir restricciones de integridad, de acceso, de índices, etc.; es decir, todo lo que se refiera a la definición de la base de datos. El diseño del esquema de la base de datos depende del software SGBD que se va a usar.
Un esquema posee los siguientes elementos:
· Tablas.
· Tipos de datos.
· Integridad.
· Índices.
· Vistas.
· Stored procedures.
· Triggers.
· Seguridad (usuarios, permisos).
El diseño general de la estructura base de datos se denomina el esquema de la base de datos. Un esquema de base de datos se especifica con un conjunto de definiciones que se expresan usando un lenguaje de definición de
datos (DDL).
 
Tablas
Al crear una tabla se deben añadir sus atributos, representados en columnas. Para cada atributo se debe especificar:
· Nombre.
· Tipo de dato, lo que define el dominio de los valores que puede asumir el atributo.
· Longitud.
· Si se permite valor null, es decir un valor vacío. De permitirse, el dato será no obligatorio.
· Si toman valor predeterminado.
Tipos de dato
	Numéricos
	Exactos
	· Entero pequeño (smallint): entero de dos bytes con una precisión de 5 dígitos. El rango de pequeños enteros va de -32.768 a 32.767.
· Entero grande (integer): entero de cuatro bytes con una precisión de 10 dígitos. El rango de enteros grandes va de -2.147.483.648 a +2.147.483.647.
· Entero superior (bigint): entero de ocho bytes con una precisión de 19 dígitos. El rango de enteros grandes va de -9 223 372 036 854 775 808 a +9 223 372 036 854 775 807.
· Decimal (decimal o numeric): número decimal empaquetado con una coma decimal implícita. La posición de la coma decimal la determinan la precisión y la escala del número. La escala, que es el número de dígitos en la parte de la fracción del número, no puede ser negativa ni mayor que la precisión. La precisión máxima es de 31 dígitos. Todos los valores de una columna decimal tienen la misma precisión y escala. El rango de una variable decimal o de los números de una columna decimal es de -n a +n, donde el valor absoluto de n es el número mayor que puede representarse con la precisión y escalas aplicables. El rango máximo va de -1031+1 a 1031-1.
	
	Aproximados
	· Coma flotante de precisión simple (real): aproximación de 32 bits de un número real. El número puede ser cero o puede estar en el rango de -3,4028234663852886e+38 a -1.1754943508222875e-38, o de 1,1754943508222875e-38 a 3,4028234663852886e+38.
· Coma flotante de doble precisión (double o float): aproximación de 64 bits de un número real. El número puede ser cero o puede estar en el rango de -1,7976931348623158e+308 a -2,2250738585072014e-308, o de 2,2250738585072014e-308 a 1,7976931348623158e+308.
	Carácter
	· Char: permite almacenar cadenas de texto de longitud fija.
· Varchar: permite almacenar cadenas de texto de longitud variable.
	Booleanos
	Permite almacenar valores lógicos (verdadero o falso).
	Fecha/hora
	· Date: permite almacenar valores de fecha.
· Time: permite almacenar valores de hora.
· Timestamp: permite almacenar valores de fecha y hora.
	Objetos de gran tamaño
	· BLOB (binary large object): almacena basado en binario, donde los bytes no representan caracteres (sirve para, por ej.: video, audio, etc.).
· CLOB (character large object): almacena basado en caracteres, donde los bytes tienen sentido representándose como tales (sirve para, por ej.: documentos de texto).
Datos requeridos (not null)
Al crear el esquema de la base de datos se deben indicar aquellos atributos que serán optativos de completar (es decir, que permiten valor null) y los que serán obligatorios (not null). Null representa la ausencia de valor (valor desconocido o no aplicable). Aparece en aquellos campos de un registro de la base de datos donde no haya un valor asignado. La forma especial de tratarlos puede generar problemas. En las consultas a la base de datos, por ejemplo, si no se especifica en la misma que traiga datos null, la consulta no los va a considerar.
Las PK, por definición, no admiten null ya que, al permitir identificar unívocamente a un registro, son datos obligatorios. Además, la PK valida que no exista otro registro con el mismo valor.
Las claves alternativas son tratadas en el esquema como UNIQUE: pese a no ser PK, esta característica obliga a esos atributos a cumplir con el criterio de unicidad y, así, no permitir que los mismos posean valores duplicados en diferentes registros de una misma entidad.
Integridad referencialCuando se define una FK, se indica qué se debe hacer cuando se realiza alguna de las siguientes operaciones:
· Inserción (INSERT): para insertar un registro en una tabla con FK, la base de datos validará que el valor insertado en el atributo que es FK exista en la tabla a la que hace referencia.
· Actualización (UPDATE) y borrado (DELETE): para la actualización y borrado de registros con atributos que son FK se debe decidir qué acción tomar:
· Restringir (RESTRICT): restringe la modificación o borrado de los datos en la tabla a la que referencia el atributo que es FK.
· Cascada (CASCADE): la actualización de los datos en la tabla a la que hace referencia el atributo que es FK actualiza los registros en la tabla con el nuevo valor de dicho atributo. En el caso del borrado, se borran los registros que tenían ese valor.
· Fijarlos como nulos (SET NULL): igual que en el caso anterior, sólo que los atributos referenciados por la FK son seteados como null cuando se actualizan o borran los registros de la tabla a la que referencian.
Vistas
No resulta deseable que todos los usuarios vean el modelo lógico completo. Las consideraciones de seguridad pueden exigir que se oculten ciertos datos a los usuarios. Por otro lado, puede que se desee crear un conjunto personalizado de relaciones que se adapte mejor a la intuición de un usuario determinado que el modelo lógico.
Las relaciones que no forman parte del modelo lógico, pero se hacen visibles a los usuarios como relaciones virtuales se denominan vistas. Las vistas son consultas a la base de datos cuya estructura (es decir, la consulta) se guarda en el diccionario de datos. Es un medio para ofrecer al usuario un modelo personalizado de la base de datos. Las vistas pueden ocultar datos que éste no necesite ver. La capacidad de las vistas de ocultar datos sirve tanto para simplificar el uso del sistema como para mejorar la seguridad. Las vistas simplifican el uso del sistema porque restringen la atención de los usuarios a los datos de interés. Aunque se puede negar a un usuario el acceso directo a una relación, se le puede permitir a ese usuario el acceso a parte de esa relación mediante una vista. Por tanto, una combinación de seguridad en el nivel relacional y de seguridad en el nivel de las vistas limita el acceso de los usuarios precisamente a los datos que necesitan.
Una vez creada una vista, la misma puede reutilizarse para no repetir nuevamente la consulta que le dio origen. Incluso se puede recuperar una vista en otra consulta añadiendo otras sentencias.
Cuando se define una vista, el sistema de la base de datos guarda la definición de la vista, en vez del resultado de la evaluación de la expresión del álgebra relacional que la define, es decir que los datos (obtenidos de la consulta) no se almacenan. Siempre que aparece una relación de vistas en una consulta, se sustituye por la expresión de consulta almacenada. Por tanto, la relación de vistas se vuelve a calcular siempre que se evalúa la consulta (no se actualizan automáticamente).
Las relaciones de vistas pueden aparecer en cualquier lugar en que puedan hacerlo los nombres de las relaciones, salvo las restricciones al uso de las vistas en expresiones de actualización. Por tanto, se pueden utilizar vistas en las expresiones que definen otras vistas.
Esquemas semiestructurados (bases de datos no relacionales)
Varias áreas de aplicaciones de los sistemas de bases de datos están limitadas por las restricciones del modelo de datos relacional. En consecuencia, los investigadores han desarrollado varios modelos de datos para tratar con estos dominios de aplicación. Por ejemplo, existen algunas razones por las cuales un esquema podría no tener un diccionario de datos:
· Aplicaciones que recolectan datos ad-hoc, sin conocer previamente cómo se almacenarán o se utilizarán los mismos.
· Es posible que se conozca parte de la estructura, pero no su totalidad.
· Hay atributos que son exclusivos para ciertas ocurrencias de una entidad.
· Pueden existir ocurrencias de una entidad nuevas que posean nuevos atributos.
Los SGBD relacionales, sus modelos y protocolos, tienen la fuerte premisa de cuidar al máximo la consistencia de las bases de datos, lo que implica límites en el desempeño de estas soluciones. Es por esto que surgen nuevas arquitecturas y modelos de gestión de datos bajo la denominación de no relacionales.
Los esquemas semiestructurados permiten la especificación de los datos en los que cada elemento de datos del mismo tipo puede tener conjuntos de atributos diferentes. No utilizan un diccionario de datos; no obstante, manejan el concepto de tipo de dato. Estos esquemas son autodefinidos, es decir, se van construyendo a medida que se insertan los datos. No se utilizan PK, FK, claves UNIQUE ni claves de cualquier otro tipo.
Por defecto, no hay un esquema predefinido para las entidades. Se pueden configurar restricciones de manera adicional, pero cuantas más se agreguen, peor va a funcionar el esquema y menos eficiente va a hacer. Cualquier restricción o validación que sea necesario hacer debe ser implementada en la aplicación por el programador.
Los elementos de un esquema relacional funcionan de manera diferente en los semiestructurados:
	Tablas
	Colecciones
	Filas
	Documentos
	Columnas
	Campos
Al crear la base de datos, se define el nombre de la colección y, a partir de ahí, ya se pueden guardar datos. Al agregar un documento (registro) se le añade automáticamente un atributo definido como objeto, que es un documento embebido. Dos campos de dos documentos distintos pueden ser completados con tipos de datos distintos. Sin embargo, existen atributos exclusivos a los distintos documentos.
La herramienta visual permite ver el contenido de una colección como lista o como tabla.
Las referencias guardan las relaciones entre los datos a través de links o punteros de un documento a otro. Se trata de modelos de datos normalizados: las aplicaciones requieren acceder a más de un documento para recuperar datos relacionados.
Los documentos embebidos establecen las relaciones entre los datos, almacenando datos relacionados dentro de su estructura como subdocumentos, dentro de un campo o array. Estos modelos desnormalizados permiten a las aplicaciones recuperar y manipular datos relacionados en una sola operación de base de datos.
Comparativo Mongo DB con BDs Relacionales
Mongo DB
El documento tiene un atributo que define como “Objeto”, que es un documento embebido.
La herramienta visual, me permite ver el contenido de una colección como lista o como tabla.
Me permite insertar un documento con el valor “No” en FinalizoCBC y otro con el valor Verdadero en un atributo con el mismo nombre. Ambos en la misma colección.
Por otro lado, hay atributos exclusivos a los distintos documentos.
Creo una validación, asociada a la colección “Alumno”, que indique que el campo “NroRegistro” es un entero y es obligatorio.
Intento insertar un documento que no tiene el campo NroRegistro. El sistema no permite la operación
Esquemas no estructurados
En los esquemas no estructurados hay muy poca información respecto a los datos embebidos en ellos, como es el caso de bases de datos que guardan archivos HTML, de audio o de video.
· Hay muy poca información respecto a los datos embebidos en estos esquemas.
· Ejemplo: HTML, audios o videos.
· Caso HTML:
· Está pensado para su proceso y posterior visualización por seres humanos.
· Está centrado en el diseño en pantalla.
· Es muy difícil de interpretar automáticamente.
· Todos los tags están predefinidos. No se puede “extender”.
· Alternativa para intercambiar datos en la web: XML
· ¿Por qué trabajar sin un diccionario de datos?
· Aplicaciones que recolectan datos “ad-hoc” sin conocer previamente como se almacenará o cómo se utilizará.
· Es posible que se conozca parte de la estructura pero no su totalidad.
· Hay atributos que son exclusivos a muy pocas ocurrencias.
· Ocurrencias “nuevas” pueden incluir nuevos atributos.
· Diferencias con esquemas estructurados
· ¿Cómo se construyeel esquema?
· Mezclado con los datos. Esquemas autodefinidos.
· Nombre: Juana
· Apellido: Perez
· Restricciones
· Por defecto, no hay un esquema predefinido para las entidades.
· Se pueden configurar restricciones, de manera adicional.
Lenguaje de etiquetado extensible (XML)
El Extensible Markup Languaje (XML, lenguaje de etiquetado extensible) es un estándar no licenciado, independiente de plataformas, y soportado por toda la industria de software. Permite representar los datos de bases de datos, así como muchas clases de datos estructurados. Es útil como formato de datos cuando las aplicaciones deben comunicarse con otras, o cuando hay que integrar información de varias aplicaciones.
A diferencia de HTML, XML no impone las etiquetas permitidas, y se pueden elegir como sea necesario para cada aplicación. Esta característica es la clave de la función principal de XML en la representación e intercambio de datos, mientras que HTML se usa principalmente para el formato de documentos.
El constructor fundamental en un documento XML es el elemento. Un elemento es sencillamente un par de etiquetas de inicio y finalización coincidentes y todo el texto que aparece entre ellas. XML permite estructuras anidadas: los elementos complejos se componen de otros elementos de manera jerárquica. En cambio, los elementos simples se componen de un solo valor. Esta estructura posibilita guardar elementos simples diferentes que formen parte del mismo elemento complejo. Posee dos grandes usos:
	Transmisión de datos
	XML permite el intercambio de datos con ampliaciones de actores externos o internos a la organización. Sus características son:
· Estructura regular, conjuntos de atributos-valor, poco o ningún contenido adicional.
· El orden en el que se presenta el contenido no es relevante.
· Resultados de las consultas no ranqueados; sólo importa que éstos cumplan con las condiciones de la consulta.
· Se puede categorizar como esquema semiestructurado o estructurado.
	Basado en información-documentos
	Otro de los usos del XML es para presentar información. En estos casos se lo usa como medio de estructurar, almacenar y recuperar documentos y/o información. Es el estándar de facto para almacenar documentos por su capacidad de almacenar y utilizar su estructura (párrafos, secciones, notas al pie, etc.) y metadatos (autor, año de publicación, etc.). En estos casos, XML se caracteriza por:
· Estructura no regular, baja granularidad en la información (la más pequeña unidad de información tiene contenido mixto o es el documento entero). Hay mucho contenido mixto.
· Puede ser un esquema no estructurado o mixto (parte semiestructurada, parte no estructurada).
· El orden en el que se presenta el contenido es relevante.
· XML como medio de estructurar, almacenar y recuperar documentos/información.
· Estándar de facto para almacenar documentos por su capacidad de almacenar y utilizar su estructura (párrafos, secciones, notas de pie, etc.) y metadatos (autor, año de publicación, etc.)
· Puede ser un esquema no estructurado o mixto (parte semi-estructurada, parte no estructurada) 
· El orden en el que se presenta el contenido es relevante. 
· Ejemplos: libros, leyes, email, etc.
· Estructura no regular, baja granularidad en la información (la más pequeña unidad de información tiene contenido mixto o es el documento entero), mucho contenido mixto. 
La validación de un documento en como un contrato:
· El creador verifica que el documento ha sido creado apropiadamente,
· El consumidor verifica que posee el formato esperado.
La validación de un esquema en XML se hace con un archivo adicional que define la estructura. Así, se tiene un archivo XML con los datos (que sería el diccionario) y otro que, con una herramienta, valida la estructura. La aplicación creadora verifica que el documento ha sido creado apropiadamente y la aplicación receptora verifica que posee el formato esperado.
Existen dos posibilidades para validar un documento:
· Document Type Definition (DTD): define la estructura de los datos de un XML. Restringe el tipo de información presente en el documento, estableciendo:
· Qué elementos pueden existir.
· Qué atributos puede/debe tener.
· Qué subelementos pueden/deben existir dentro de cada elemento y cuántas veces.
Sin embargo, no define los tipos de datos: todos los valores son representados como cadenas de texto:
· Los subelementos pueden ser definidos como:
· Elementos.
· Datos (#PCDATA)
· Sin subelementos (EMPTY) o pueden existir subelementos (ANY).
· La especificación de subelementos puede tener expresiones regulares. La notación es | (alternativas), + (1 o más ocurrencias), * (0 o más ocurrencias).
· XML Schema Definition (XSD): es definido utilizando sintaxis de XML. Se trata de una representación más estándar, pero más compleja. Es más sofisticado que DTD. Soporta:
· Tipos de datos:
· Enteros, cadenas de texto, etc.
· CONSTRAINTS sobre valores mínimos y máximos.
· Tipos de datos definidos por el usuario y complejos.
· Más funciones, incluyendo restricciones de unicidad, herencia y claves foráneas.
(UT 4) Diseño físico y organizaciones de archivo
https://www.xataka.com/basics/raid-discos-duros-que-sus-principales-tipos 
Las decisiones que se toman en el diseño físico de la base de datos impactan en el almacenamiento en disco y en el sistema operativo. Tienen que ver con el almacenamiento y configuración de los parámetros del SGBD:
· Arquitectura de hardware para la base de datos: procesadores, discos RAID, etc.
· Estructuras de almacenamiento y acceso que permite el SGBD: tipos de indexación, agrupamiento, tamaños de bloques, buffers, etc.
· Parámetros de configuración del SGBD: tamaño de memoria intermedia, intervalos de tiempo en proceso, uso de multiprocesadores, etc.
Hardware y jerarquía de almacenamiento
 El medio de almacenamiento utilizado para los datos con los que se opera es la memoria principal. Se define por su uso: es la memoria con la que trabaja casi directamente el procesador. Es volátil: su contenido suele perderse en caso de fallo del suministro eléctrico o de caída del sistema. La más común es la RAM (memoria de acceso aleatorio), la cual se caracteriza por poder acceder a cualquier posición de memoria a la misma velocidad sin tener que recorrer dichas posiciones secuencialmente. Como el procesador es muy rápido, la memoria con la que debe trabajar tiene que ser lo más rápida posible para no generar cuellos de botella. El procesador pide datos, lee y escribe todo el tiempo, necesita estar el menor tiempo posible esperando a que ese dato llegue. Por eso es más importante la velocidad que la capacidad de la memoria principal. La RAM le permite al procesador tener acceso más rápido a una mayor cantidad de datos. Si se llena, el procesador envía los datos que no usa al almacenamiento auxiliar y deja en la RAM aquellos que va a utilizar en ese momento.
La caché es una pequeña memoria ubicada entre la RAM y el procesador con la que éste trabaja directamente. Le indica qué archivos deben ser traídos desde el almacenamiento auxiliar hacia la memoria principal para trabajar con ellos.
Como el procesador es volátil y trabaja con las memorias RAM y caché, no es un costo que ambas memorias sean volátiles también y que sus datos se pierdan cuando no reciban corriente eléctrica (después de todo, el procesador no podrá usarlos. El problema entonces pasa por definir dónde almacenar los datos para que no se borren permanentemente. El almacenamiento secundario cumple esa función: almacena los archivos hasta que sean requeridos por el procesador y sean enviados a la memoria principal. Es un almacenamiento no volátil: para mantener los datos guardados no depende de estar conectado a una fuente de alimentación.
El disco rígido es esencial para los sistemas de datos, ya que es allí donde se almacenarán los datos ingresados a la base. De hecho, generalmente se guarda en ellos toda la base de datos. Para acceder a ellos es necesario trasladarlos desde el disco hacia la memoria principal. Se compone de unaserie de discos, con sus cabezales, uno arriba del otro, que giran sobre un eje. El cabezal se mueve hacia delante y hacia atrás (más lejos y más cerca del centro) para recorrer el disco y de leer la información en ambas caras del mismo. Se ubica en la pista correcta y espera a que la rotación del disco lo lleve a la posición de memoria que necesita. Cuanto más rápido giren los discos, más velozmente se accede a esa posición. Una vez ubicado allí puede leer o escribir la información de esa ubicación. Los tiempos de acceso dependen de la localización de los datos y la latencia, es decir, qué tan distanciado esté el dato del eje rotacional del disco y de la posición del cabezal.
Acceso físico al dispositivo
Una página o bloque de memoria es la unidad de lectura y escritura. Es el conjunto de bytes transferidos del disco a la RAM en un solo acceso (generalmente 4 kB). Como los archivos suelen ser mayores a esta unidad, se dividen en varios bloques. Es más fácil de leerlos si se guardan en forma secuencial ya que serán leídos también de forma secuencial, dando lugar a las extensiones.
Una extensión es un conjunto de páginas contiguas físicamente que el Adm. de disco asigna y libera. Se persigue que páginas contiguas lógicamente lo estén también físicamente, reduciendo al mínimo el acceso.
Acceso a los datos
El SGBD posee una memoria intermedia (buffer de la BD:RAM almacenamiento primario del server) entre éste y el almacenamiento secundario. Es un espacio reservado en la memoria principal para el sistema de gestión de bases de datos. Éste recibe peticiones de escritura, lectura, actualización y borrado de registros. Cada uno de ellos se van a convertir en archivos y, por ende, en bloques que estarán en esa memoria intermedia (sean actuales o bloques ya trabajados).
Cuando se llena el buffer se deben borrar del mismo algunos bloques para que su lugar sea ocupado por otro que se esté requiriendo para una determinada operación en ese momento. En función de la prioridad que se haya establecido para determinar cuáles bloques borrar, si éstos no fueron modificados, pueden eliminarse de la memoria intermedia sin problemas porque, en caso de necesitarlo, se lo puede traer otra vez desde el almacenamiento secundario.
En cambio, si los bloques a eliminar de memoria principal sufrieron modificaciones, primero se escriben las mismas en el almacenamiento secundario para poder recuperar el valor actualizado, de ser necesario. Una vez hecho eso, se trae a memoria intermedia el bloque que estaba esperando. Esto también ocurre cuando el bloque a eliminar no existe en memoria secundaria.
Considerando que el SGBD hace uso de la memoria intermedia para mejorar su desempeño de acceso a memoria secundaria, es factible que, al actualizar el valor de un atributo de un registro de una tabla de una base de datos, esa modificación esté en memoria principal y no en memoria secundaria (aunque sea temporalmente).
Arreglo redundante de discos independientes (RAID)
Un arreglo redundante de discos independientes (RAID) es un arreglo de dos o más discos rígidos que se presentan ante el sistema operativo como uno solo. Cada disco trabaja de manera independiente y es el controlador de RAID el que administra su funcionamiento.
Un RAID persigue dos objetivos muy distintos, que a veces se logran complementar según el tipo de RAID:
· Performance: obtener mayor velocidad en las operaciones de lectura/escritura y mejor rendimiento.
· Tolerancia a fallos: si se rompe un disco no se pierden los datos.
Al tratarse de discos que trabajan en paralelo, es recomendable que todos posean la misma velocidad de lectura y escritura e igual capacidad de almacenamiento. En caso de que sean diferentes, todo el arreglo funcionará a la velocidad del disco más lento y reflejara la capacidad de aquel disco que posea menor cantidad de almacenamiento.
Niveles de RAID
· RAID 0: Divide cada bloque en n partes (según la cantidad de discos), distribuyendo cada una de ellas en un disco. Cuando se necesite leerlos, se recupera cada parte guardada en los n discos. Si se rompe un disco, se pierden todos los datos que estaban almacenados en el arreglo, ya que los bloques no pueden ser reconstruidos (cada parte es incompleta).
· RAID 1: Cada bloque se escribe en los n discos de forma paralela. Al estar multiplicados los bloques, si se rompe un disco no se pierde la información almacenada en el arreglo y el sistema sigue funcionando.
· RAID 10 (o RAID 0+1): se trata de 2 o más arreglos RAID 1 en donde cada bloque se divide en partes y cada una de ellas se escribe en 2 discos, como en el RAID 0. La situación si se rompe un disco dependerá de cuál disco se rompa. Se pierden todos los datos si se rompe una cantidad de discos tal que resulte imposible reconstruir los bloques.
· RAID 5: divide el bloque de datos en p partes, distribuyendo cada una en discos, almacenando en el disco información de paridad. La misma consiste en una función que, aplicada sobre una de las p partes del bloque, permite reconstruir la parte que falta. Este tipo de paridad se denomina paridad por bloque distribuida ya que puede guardar la paridad en diferentes discos del arreglo, a veces en uno y otras veces en otro distinto, en bloques reservados (y no en un disco reservado). Un bloque de paridad no puede guardar la paridad de los bloques del mismo disco, ya que un fallo del disco supondría la pérdida de los datos y de la paridad y, por tanto, no sería recuperable. Existen niveles inferiores de RAID que dividen por bit (paridad por bit en RAID 3) o por bloque (paridad por bloque en RAID 4).
	Nivel de RAID
	Cantidad de discos
	Velocidad de E/S
	Objetivo
	Cantidad mínima de discos
	Tolerancia de ruptura
	Capacidad de almacenamiento
	Sin RAID
	1
	m segundos
	Sólo guardar datos
	1
	0 discos
	x GB
	RAID 0
	n
	 segundos
	Performance
	2
	0 discos
	 GB
	RAID 1
	n
	m segundos para escritura; sin embargo, se puede leer la mitad de un bloque de cada disco, tardando segundos en lectura
	Tolerancia a fallos y mayor performance en lectura.
	2
	 discos
	x GB
	RAID 10
	n
	 segundos
	Tolerancia a fallos y performance de lectura y escritura
	4
	Variable
	 GB
	RAID 5
	n
	 segundos + cálculo de paridad y distribución
	Tolerancia a fallos; mínima mejora de performance
	3
	1 disco
	 GB
· El nivel 2 de RAID, también conocido como organización de códigos de corrección de errores tipo memoria (memory-style-error-correcting-code organization, ECC), emplea bits de paridad. Hace tiempo que los sistemas de memoria utilizan los bits de paridad para la detección y corrección de errores. Cada byte del sistema de memoria puede tener asociado un bit de paridad que registra si el número de bits del byte que valen uno es par (paridad = 0) o impar (paridad = 1). 
· El nivel 3 de RAID, organización de paridad con bits entrelazados, mejora respecto al nivel 2 al aprovechar que los controladores de disco, a diferencia de los sistemas de memoria, pueden detectar si los sectores se han leído correctamente, por lo que se puede utilizar un solo bit de paridad para la corrección y para la detección de los errores. La idea es la siguiente: si uno de los sectores se deteriora, se sabe exactamente el sector que es y, para cada uno de sus bits, se puede determinar si es un uno o un cero calculando la paridad de los bits correspondientes de los sectores de los demás discos. Si la paridad de los bits restantes es igual que la paridad guardada, el bit perdido es un cero; en caso contrario, es un uno.
· El nivel 4 de RAID, organización de paridad con bloques entrelazados, emplea la distribución del nivel de bloques, como RAID 0, y, además, guarda un bloque de paridad en un disco independiente para los bloques correspondientes de los otros N discos. Este esquema se muestra gráficamente en la Figura 11.3e. Si falla uno de los discos, se puede utilizar el bloque de paridad con los bloques correspondientes de los demás discos para restaurar los bloques del disco averiado.
Almacenamiento de registros
En un bloque puede almacenarsefilas o columnas de una tabla de la base de datos. Esto permite distinguir:
· Bases de datos orientadas a filas: Los valores de las filas se almacenan físicamente en forma contigua dentro del archivo. Este tipo es más eficiente para, por ej., leer todos los datos de un registro ya que para ello sólo debería leer 1 bloque.
· Bases de datos orientadas a columnas: Los valores de las columnas se almacenan físicamente en forma contigua dentro del archivo, en donde uno de los bloques contendrá los atributos de la tabla. Este tipo es más eficiente para, por ej., obtener promedios o cantidades de un atributo de varios registros, ya que para eso también debería leer 1 bloque. Por este motivo son más analíticas. Permite comprimir los datos que se almacenan porque no se guardan valores repetidos: dos registros para el mismo valor del mismo atributo apuntan a la misma PK. Además, no guarda los valores vacíos o nulos. Cuanto más repetidos estén los datos, mayor será la posibilidad de compresión.
· Los valores de las columnas se almacenan físicamente en forma contigua dentro del archivo.
· Los datos se guardan comprimidos, almacenándose valores únicos (no se repiten valores). 
· El concepto de “Familia de columnas” o grupos de columnas.
· Son eficientes para consultas en entornos OLAP.
Las bases de datos relacionales poseen mayoritariamente almacenamiento orientado a filas. Para separar los datos, se utilizan caracteres separadores que:
· Separan el nombre del campo del valor del campo.
· Separan los campos.
· Indican el fin del registro.
Cada bloque posee un factor de bloqueo, que es la cantidad de registros que entran en un bloque para una tabla determinada. Los espacios de longitud fija no utilizados se almacenan en blanco.
Almacenamiento orientado a columnas – Bases de datos columnares
Beneficios:
· Mayor rapidez en lecturas. Se leen solamente las columnas necesarias para el procesamiento de una consulta determinada. 
· Optimización de los accesos al disco.
· Ocupan menos espacio, dado que los datos se guardan comprimidos.
· Ideales para calcular datos agregados.
· Recomendada para entornos OLAP, donde existen altos índices de lectura pero poca escritura
Almacenamiento orientado a filas: Registros y Archivos
(a) registro de longitud fija con 6 campos y 71 bytes. 
(b) un registro con dos campos de logitud variable y tres de longitud fija. 
(c) un registro de longitud variable con tres campos variables.
Asignación de archivos a bloques
Existen diversas maneras de ordenar en el disco los distintos bloques que componen un archivo:
· Asignación contigua: los bloques se almacenan en extensiones, uno al lado del otro. Esto acelera la lectura del archivo. Tiene el problema de que, si el bloque consecutivo está ocupado por otro archivo, el sistema se ve obligado a usar un bloque de desbordamiento no consecutivo para almacenar la parte que falta (enlazándolas a través de un puntero) y esperar a poder hacer una reorganización que permita ponerlos en orden otra vez.
· Asignación enlazada: se indica cuál es el primer bloque donde está almacenado el archivo y cada bloque tiene un puntero al siguiente. El problema que presenta es que, si sólo se debe leer un bloque que no es el primero, para llegar al deseado deben leerse primero los anteriores.
· Asignación con índice: utiliza un bloque que indica dónde están el resto de los bloques en donde se almacena el archivo. Así, para leer un bloque que no es el primero, sólo debe leerse éste para llegar inmediatamente al buscado.
Operaciones con archivos
Es importante saber cuál es la operación que más se va a hacer con los archivos. En función del método de acceso es que se puede determinar cuál es la mejor manera de asignación:
	Métodos de acceso
	Recuperación
· Lectura de primer registro.
· Lectura del siguiente.
· Lectura de todos los registros en un orden.
	Actualización
· Inserción.
· Borrado.
· Modificación.
	Reorganización
· Recuperación 
· Lectura primer registro,
· lectura del siguiente,
· lectura de todos en un orden.
· Actualización
· Inserción, 
· borrado, 
· Modificación
· Reorganización.
Organización de registros ordenados
Guardar los registros ordenados utilizando como criterio alguno de los atributos permite reducir la cantidad de bloques que se leen para acceder a los datos que se están buscando. Existen distintas alternativas de guardar los registros ordenados en un archivo para optimizar el funcionamiento:
· Dejar espacios en blanco por bloque: evita que la inserción de un registro implique traer a memoria principal 2 bloques en vez de uno para reorganizarlos.
· Área de derrame con punteros: se asigna el registro a otro bloque añadiendo un puntero en el bloque en el que debería estar almacenado. Esto permanecerá así hasta que se reorganicen los bloques.
· Bitácora de transacciones (offline): se guardan todos los registros sin orden para distribuirlos ordenados cuando la base de datos tenga menos peticiones de acceso.
· Secuenciales indexados e índices agrupados: se puede utilizar un índice agrupado para recorrer, buscar y ordenar los registros en el archivo.
Organización de registros desordenados
Existen dos formas de organizar registros desordenados:
· Organización de montón: almacena los datos sin orden, lo cual facilita la inserción de registros.
· Organización directa: se aplica una función sobre los valores de ciertos atributos que indica en qué bloque se va a guardar ese registro. Es preciso elegir un atributo útil que permita tener una buena distribución de los bloques.
Organización de archivos en montículo. 
En esta organización se puede colocar cualquier registro en cualquier parte del archivo en que haya espacio suficiente. No hay ninguna ordenación de los registros. Generalmente sólo hay un archivo por cada relación.
SE crea un índice con id=0, que esta desordenado. Tabla sin índice cluster (o agrupado)
Páginas IAM: Las páginas IAM son páginas que administran los extents que una tabla o indice utilizan.
Las páginas IAM contienen la localidad de las 8 páginas iniciales y un bitmap de extents indicando que extents pertenecen al objeto. Una sola página IAM puede administrar hasta 512,000 páginas de datos.
Las páginas IAM siempre son alojadas en extents mixtos, y pueden estar en cualquier archivo o filegroup. SQL Server trata de mantener a todas las páginas IAM agrupadas para mejorar el performance.
Organización directa
Índices
Un índice es un lugar donde se puede buscar por una clave de búsqueda, encontrar (si existe) lo buscado y tiene un puntero que indica en dónde se encuentra el dato buscado. La clave de búsqueda consiste en uno o varios atributos. Si los registros están ordenados, existe una clave de orden, que es el atributo según el cual se ordenan los registros.
El índice se guarda en otro bloque de memoria. La idea de utilizarlo es, cuando se busca un dato, poder traerlo a la memoria principal primero para recorrerlo y determinar en qué bloques buscar los datos que se necesiten, y también determinar si éstos existen antes de leer los bloques de datos.
Clasificación de índices
· Índices ordenados: están basados en una disposición ordenada de los valores.
· Según la coincidencia entre la clave de búsqueda y la clave de orden:
· Primario: cuando la clave de búsqueda del índice coincide con la clave de orden. Pueden ser:
· Disperso: cuando el índice no contiene un registro índice por cada valor de atributo que es clave de búsqueda. Si el valor de atributo buscado no está en el índice, se comienza a buscar a partir del valor anterior en el que debería estar aquél.
· Denso: si el índice contiene un registro índice por cada valor de atributo que es clave de búsqueda.
· Secundario: cuando la clave de búsqueda no coincide con la clave de orden. Si los registros no están ordenados, no existe clave de orden, por lo que el índice sólo podrá ser de este tipo. Los índices secundarios nunca pueden ser dispersos, siempre son densos.
· Según el nivel:
· Sin niveles.
· Multinivel: para encontrar un valor hace faltarecorrer distintos niveles en los que esté dividido el índice.
· Según su agrupación:
· Agrupado: cada registro del índice contiene el registro buscado.
· No agrupado: cada registro del índice contiene un puntero que indica en qué bloque de memoria se encuentra el registro buscado.
· Índices asociativos: se aplica una función de asociación (hash) sobre la clave de búsqueda para identificar el bloque donde se encuentra el registro buscado.
Índices ordenados
Cada estructura de índice está asociada con una clave de búsqueda concreta. Los registros en el archivo indexado pueden estar a su vez almacenados siguiendo un orden, semejante a como los libros están ordenados en una biblioteca por algún atributo como el número decimal Dewey. Un archivo puede tener varios índices según diferentes claves de búsqueda. Si el archivo que
contiene los registros está ordenado secuencialmente, el índice cuya clave de búsqueda especifica el orden secuencial del archivo es el índice con agrupación (clustering index).
En la figura se muestra un archivo secuencial de los registros cuenta tomados del ejemplo bancario. los registros están almacenados según el orden de la clave de búsqueda: nombre_sucursal.
Estos archivos con índice primario según una clave de búsqueda se llaman archivos secuenciales indexados. Representan uno de los esquemas de índices más antiguos usados por los sistemas de bases de datos. Se emplean en aquellas aplicaciones que demandan un procesamiento secuencial del archivo completo así como un acceso directo a sus registros.
Índices densos y dispersos
Un registro índice o entrada del índice consiste en un valor de la clave de búsqueda y punteros a uno o más registros con ese valor de la clave de búsqueda. El puntero a un registro consiste en el identificador de un bloque de disco y un desplazamiento en el bloque de disco para identificar el registro dentro del bloque. Hay dos clases de índices ordenados que se pueden emplear: 
• Índice denso. Aparece un registro índice por cada valor de la clave de búsqueda en el archivo. El registro índice contiene el valor de la clave y un puntero al primer registro con ese valor de la clave de búsqueda. El resto de registros con el mismo valor de la clave de búsqueda se almacenan consecutivamente después del primer registro, dado que, ya que el índice es primario, los registros se ordenan sobre la misma clave de búsqueda. Las implementaciones de índices densos pueden almacenar una lista de punteros a todos los registros con el mismo valor de la clave de búsqueda; esto no es esencial para los índices primarios.
• Índice disperso. Sólo se crea un registro índice para algunos de los valores. Al igual que en los índices densos, cada registro índice contiene un valor de la clave de búsqueda y un puntero al primer registro con ese valor de la clave. Para localizar un registro se busca la entrada del índice con el valor más grande que sea menor o igual que el valor que se está buscando. Se empieza por el registro apuntado por esa entrada del índice y se continúa con los punteros del archivo hasta encontrar el registro deseado.
Índices secundarios
Los índices secundarios deben ser densos, con una entrada en el índice por cada valor de la clave de búsqueda, y un puntero a cada registro del archivo. Un índice primario puede ser disperso, almacenando sólo algunos de los valores de la clave de búsqueda, ya que siempre es posible encontrar registros con valores de la clave de búsqueda intermedios mediante un acceso secuencial a parte del archivo. Si un índice secundario almacena sólo algunos de los valores de la clave de búsqueda, los registros con los valores de la clave de búsqueda intermedios pueden estar en cualquier lugar del archivo y, en general, no se pueden encontrar sin explorar el archivo completo. Un índice secundario sobre una clave candidata es como un índice denso primario, excepto en que los registros apuntados por los sucesivos valores del índice no están almacenados secuencialmente. Si la clave de búsqueda de un índice primario no es una clave candidata, es suficiente si el valor de cada entrada en el índice apunta al primer registro con ese valor en la clave de búsqueda, ya que los otros registros podrían ser alcanzados por una búsqueda secuencial del archivo. Por tanto, un índice secundario debe contener punteros a todos los registros. Se puede usar un nivel adicional de indirección para implementar los índices secundarios sobre claves de búsqueda que no sean claves candidatas. Los punteros en estos índices secundarios no apuntan directamente al archivo. En vez de eso, cada puntero apunta a un cajón que contiene punteros al archivo. Se muestra la estructura del archivo cuenta, con un índice secundario que emplea un nivel de indirección adicional, y teniendo como clave de búsqueda el saldo
Índices multinivel
Incluso si se usan índices dispersos, el propio índice podría ser demasiado grande para un procesamiento eficiente. En la práctica no es excesivo tener un archivo con 100.000 registros, con 10 registros almacenados en cada bloque. Si tenemos un registro índice por cada bloque, el índice tendrá 10.000 registros. Como los registros índices son más pequeños que los registros de datos, podemos suponer que caben 100 registros índices en un bloque. Por tanto, el índice ocuparía 100 bloques. Estos índices de mayor tamaño se almacenan como archivos secuenciales en disco. Si un índice es lo bastante pequeño como para guardarlo en la memoria principal, el tiempo de búsqueda para encontrar una entrada será breve. Sin embargo, si el índice es tan grande que se debe guardar en disco, buscar una entrada implicará leer varios bloques de disco.
Para resolver este problema el índice se trata como si fuese un archivo secuencial y se construye un índice disperso sobre el índice con agrupación, como se muestra.
Índice multinivel: Árbol B+
· Los índices de árbol B+ son una alternativa a los archivos secuenciales indexados.
· Inconvenientes de los archivos secuenciales indexados: el rendimiento baja cuando el archivo crece, dado que se crean muchos bloques de desbordamiento. Es necesario reorganizar periódicamente todo el archivo. 
· Ventajas de los archivos de índice de árbol B+: se reorganiza automáticamente por sí mismo con pequeños cambios locales, a pesar de las inserciones y los borrados. No es necesario reorganizar todo el archivo para mantener el rendimiento. 
· Inconvenientes de los árboles B+: inserciones extras, sobrecarga de borrados y costes de espacio.
· Las ventajas de los árboles B+ superan a los inconvenientes, por lo que se emplean ampliamente. 
Un árbol B+ es un árbol con raíz que satisface las siguientes propiedades:
· Todos los caminos, desde la raíz a las hojas, tienen la misma longitud
· Cada nodo que no es ni raíz ni hoja, tiene entre [n/2] y n hijos.
· Un nodo hoja tiene entre [(n–1)/2] y n–1 valores
· Casos especiales:
·  Si la raíz no es una hoja, tiene al menos 2 hijos.
·  Si la raíz es una hoja (es decir, no hay otros nodos en el árbol), puede tener entre 0 y (n–1) valores.
Estructura de nodos del árbol B+
Nodo típico
·  Ki son los valores de la clave de búsqueda
·  Pi son los punteros a los hijos (para nodos no hoja) o a los registros o cajones de registros (para nodos hoja).
· En un nodo las claves de búsqueda están ordenadas
K1 < K2 < K3 < . . . < Kn–1
Propiedades de un nodo hoja:
Para i = 1, 2, . . ., n–1, el puntero Pi apunta a un registro del archivo con valor de clave de búsqueda Ki, o a un cajón de punteros a los registros del archivo, cada registro con valor de clave de búsqueda Ki. Sólo es necesaria una estructura de cajones si la clave de búsqueda no es una clave primaria.
· Si Li, Lj son nodos hoja e i < j, los valores de clave de búsqueda de Li son menores que los de Lj
· Pn apunta al siguiente nodo hoja, ordenado por clave de búsqueda
Un índice Árbol B+ es un índice multinivel equilibrado invertido denso:
· Es equilibrado porque se puede estimar con precisión cuántos bloques hay que leer para recorrer el índice

Continuar navegando