Ingeniero Técnico en Informática de Gestión


Bases de datos


BASES DE DATOS

TEMA 1

INTRODUCCIÓN A LAS BASES DE DATOS

  • DE LOS SISTEMAS DE FICHEROS A LAS BASES DE DATOS

  • DEFINICIÓN DE BASE DE DATOS

  • ELEMENTOS DE UNA BASE DE DATOS

  • DATOS OPERATIVOS

  • VENTAJAS DE LAS BASES DE DATOS FRENTE A LOS FICHEROS CLÁSICOS

  • INDEPENDENCIA DE DATOS

  • TIPO DE BASES DE DATOS

  • DE LOS SISTEMAS DE FICHEROS A LAS BASES DE DATOS.

  • Tenemos una serie de proveedores que suministran piezas de una cantidad, un proveedor puede suministras mas de una pieza y una pieza puede ser suministrada por mas de un proveedor.

    S#

    NomS

    Estado

    Ciudad

    P#

    NomP

    Color

    Peso

    Cantidad

    S1

    X

    10

    OU

    P1

    Tuerca

    A

    10

    100

    S1

    X

    10

    OU

    P3

    Tornillo

    R

    20

    100

    S2

    Y

    20

    PO

    P1

    Tuerca

    A

    10

    200

    S2

    Y

    20

    PO

    P4

    Perno

    V

    30

    50

    S3

    Z

    30

    LU

    P1

    Tuerca

    A

    10

    100

    Problemas

    • Redundancia

    • Inconsistencia : Cambio de datos

    • Integridad : Dos códigos de proveedor para diferentes registros.

    • No se permite compartir información.

    En los años 70 aparece el concepto de Base de Datos e intenta solucionar todos los problemas.

    Para solucionar estos problemas lo que haríamos seria dividirlo en tres ficheros uno guardando los proveedores, otro guardando las piezas y otro para hacer la relación entre los dos.

  • DEFINICIÓN DE BASE DE DATOS

  • Sistema de captación y manutención de registros computerizados que permite añadir, modificar y borrar datos y que permiten añadir modificar y borrar información.

    Dato : Seria modificar los datos de una tabla, un campo.

    Información : Es la posibilidad de modificar, añadir o borrar un registro o la estructura de la Base de Datos.

  • ELEMENTOS DE UNA BASE DE DATOS

  • Hay cuatro elementos en la Base da Datos:

    • Los Datos

    • Hardware

    • Software

    • Usuarios

    Datos: Tienen q cumplir dos características:

  • Que estén integrados.

  • Que estén compartidos.

  • Integrada: La unión de los ficheros deben recoger toda la información con redundancia mínima.

    Compartidos: Los elementos individuales de información en una Base de Datos puedan compartirse entre diversos usuarios.

    Hardware: Se componen de los dispositivos de almacenamiento, el procesador y la memoria principal. Dependiendo de la arquitectura hay dos tipos:

    Local: Todo concentrado en un único punto.

    Distribuido: Conectada mediante sistemas de red.

    Usuarios: Programador de Aplicaciones.

    Usuarios Finales.

    Administradores de la Base de Datos.

    Software: Sistema de gestión de la Base da Datos que permite la comunicación entre la Base de Datos física y los usuarios mediante paquetes Software que aportan facilidades de modificación, inserción borrado, etc.

    Usuarios:

    Programador de Aplicaciones: Encargado de escribir los programas que utilizan la Base de datos, para ello interactúa con el Sistema de Gestión de Base de Datos (SGBD).

    Usuario Final: Usuario que interactúa con el sistema o bien desde un terminal, una interfaz o un programa del programador de aplicaciones.

    Administrador de la Base de Datos: Encargado del diseño y mantenimiento de la Base de Datos.

  • DATO OPERATIVO.

  • Es toda información que necesita una empresa para su funcionamiento, se componen de entidades y de las conexiones que existen entre los mismos. A todo el conjunto de entidades y conexiones se le denomina diseño lógico de la Base de Datos.

    Ejemplo:

    Datos por sistema: Datos que se almacenan en la Base de Datos y que no son de Entrada-Salida. Se pueden almacenar. Al no ser datos de Entrada-Salida no son datos operativos.

  • VENTAJAS DE LAS BASES DE DATOS.

    • Que ventajas nos ofrecen las Bases de Datos frente al archivo en papel

      • Compactación : Poder estar la información mas compacta.

      • Rapidez de acceso a la información: Mucho más sencillo y rápido.

      • Facilidad de Trabajo.

      • Actualización.

    • La Base de Datos permite un control centralizado de la información.

    Administrador de Datos: Quien dirige o plantea la política de la empresa del uso de los datos que hay q manejar.

    El administrador (Crea, modifica y gestiona) de datos le dice al Administrador de la Base para saber cuales son sus necesidades.

    Como consecuencia del poder centralizado aparece lo siguiente:

    • Reducir redundancias.

    • Reducir inconsistencia.

    • Los datos pueden compartirse.

    • Se mantienen los estándares.

    • Mayor seguridad

    • Mayor facilidad de chequeo de errores.

    • Se equilibran requerimientos opuestos.

    • Permite el manejo de transacciones (Serie de operaciones que dan como resultado una información)

  • INDEPENDENCIA DE DATOS

  • Inpugnidad de las aplicaciones existentes posibles cambios en la estructura de almacenamiento y en la forma de acceso de la Base de Datos.

    ¿Por qué es necesaria la independencia de datos?

    • Porque cada aplicación puede requerir una vista diferente de los mismos datos.

    • Que el administrador de la Bases de Datos debe tener libertad de modificar la estructura de almacenamiento o las técnicas de acceso para adaptarlas a cambios en los requerimientos sin tener que modificar las aplicaciones ya existentes.

    ¿Qué modificaciones son las más usuales que podría hacer el administrador de la Base de Datos y a las que las aplicaciones deberían ser inmunes?

    Campo Almacenado: Mínima cantidad de información q se almacena reconocible como un nombre.

    Los valores que toman cada campo se denominan ocurrencia.

    Registro almacenado: Un conjunto de campos almacenados, relacionados entre si y reconocibles por un nombre, y ocurrencia de registros almacenados serian los datos de ese registro almacenado.

    Fichero (o archivo) almacenado: Conjunto de ocurrencias de un determinado tipo de registros almacenados reconocidos por un nombre.

    + Representación de datos numéricos.

    + Representación de datos carácter.

    + Unidades para datos numéricos: Medidas de peso, medidas de longitud...

    + Codificación de datos.

    + Materialización de los datos:

    • Materialización directa: Cuando el campo lógico coincide con el campo almacenado.

    • Materialización virtual: Cuando el campo lógico coincide con mas de un campo almacenado.

    + Estructura de los registros almacenados.

    + Estructura de archivos almacenados.

  • TIPOS DE BASES DE DATOS.

  • En los mundos de las Bases de datos existen dos tipos de enfoques.

    Enfoque relacional: Estructura de datos basca, la tabla.

    Enfoque segundo: Estructura de datos básica, el grafo. Si el grafo es abierto (árbol) tenemos los sistemas jerárquicos y si el grafo es cerrado tenemos la estructura en red.

    TEMA 2

    ARQUITECTURA DE UN SISTEMA DE BASE DE DATOS.

  • NIVELES GENERALES DEL SISTEMA.

  • NIVEL EXTERNO

  • NIVEL CONCEPTUAL

  • NIVEL INTERNO

  • CORRESPONDENCIAS

  • EL ADMINISTRADOR DE LA BASE DE DATOS.

  • 2.1 NIVELES GENERALES DEL SISTEMA

    El grupo ANSI/SPARC fue el que normalizo el uso de la Base de Datos haciendo estos niveles.

    NIVEL EXTERNO.

    Vistas individuales de cada uno de los usuarios

    NIVEL CONCEPTUAL

    Vista comunitaria de los usuarios (Vista de toda la Base de Datos)

    NIVEL INTERNO

    Formada por la vista de almacenamiento

    EXTERNO

    CONCEPTUAL

    INTERNO

    2.1.1 NIVEL EXTERNO.

    Nivel del usuario individual. El programador de aplicaciones tiene que tener un lenguaje de alto nivel (Cobol, Pascal...) y para el usuario final, el nivel externo, tiene q proporcionar un lenguaje de consultas (SQL) o bien un lenguaje de aplicaciones (Programas desarrollados mediante programador de aplicaciones, con menús, ventanas...) todos estos lenguajes de alto nivel deben incluir un sublenguaje de datos que están incluidos en el lenguaje anfitrión que se denomina DSL. Ejemplo: SQL " C (el lenguaje SQL esta contenido en C)

    Si el DSL es indistinguible el anfitrión se dice que están fuertemente acoplados pero si se pueden separar con nitidez son débilmente acoplados.

    El DSL se compone a su vez de 2 lenguajes de datos:

    DDL: Un lenguaje de definición de Datos.

    DHL: Un lenguaje de gestión o manejo de Datos.

    La vista individual de cada usuario se le denomina Vista Externa (el conjunto de ocurrencias será vista externa) esta vista está formada por el conjunto de ocurrencias de los distintos registros externos (registros lógicos). Toda vista externa se define mediante su Esquema externo donde el esquema externo son las definiciones de los tipos de registros externos en esa vista externa. El esquema externo se define mediante el DDL Externo.

    2.1.2 NIVEL CONCEPTUAL.

    - Vista conceptual: Representación de toda la información (ocurrencia) contenida en la BD.

    Se compone, la vista, de todas las ocurrencias de los diferentes tipos de los registros conceptuales.

    La vista se define mediante el esquema conceptual que está formado por las definiciones de cada tipo de registro conceptual. El esquema conceptual se escribe mediante el DDL conceptual.

    ¿En el esquema conceptual hay q tener consideraciones sobre la estructura de almacenamiento?

    No, por la independencia de datos, por que si no tendríamos que cambiar los datos en el nivel externo y en el nivel conceptual.

    ¿Qué medidas de seguridad e integridad en que nivel?

    En el nivel conceptual por que es donde está toda la información de la Base de Datos.

    2.1.3 NIVEL INTERNO.

    - Vista Interna: Representación de bajo nivel de toda la Base de Datos, se compone del conjunto de ocurrencias de los distintos tipos de registros internos. Se define mediante el esquema interno que además de las definiciones de los distintos tipos de registros internos también debe especificar lo siguiente:

    • Tipo de índices que hay.

    • Representación de los campos almacenados.

    • Secuencia física de los registros almacenados

    • Etc.

    2.1.4 LAS CORRESPONDENCIAS

    Correspondencia conceptual interna: Define la correspondencia entre la vista conceptual y la Base de Datos almacenada y especifica como están representados los registros y campos conceptúales en el nivel interno, es decir, me permite enlazar los valores y tipos de con el nivel interno.

    El que modifica la estructura de almacenamiento el administrador de la Base de Datos será el encargado de modificar la correspondencia conceptual interna para que esos cambios no afecten al nivel conceptual y, por tanto, se puede conservar la independencia de datos.

    Correspondencia externa conceptual: Define la correspondencia entre la vista externa particular y la vista conceptual, Se encargará de enfocar campos con mas tipos de los campos, los nombres de los registros, los valores de los campos, que varios campos conceptuales pueden combinarse en un solo registro externo...

    2.2 EL ADMINISTRADOR DE LA BASE DE DATOS

    -Funciones del Administrador de la Base de Datos.

  • Describir el contenido de la información en la Base de Datos, equivale a implementar el esquema conceptual. Para ello haremos el diseño lógico de la Base de Datos y luego mediante el DDL conceptual definimos los registros conceptuales. (Esto equivale a definir las tablas)

  • Decidir sobre la estructura de almacenamiento. Equivale a definir el esquema interno, mediante el DLL interno. También a esto se le denomina diseño físico de la Base de Datos. Y debe contener los siguientes aspectos:

    • Representación de campos.

    • Indexación.

    • Tipos de acceso

    • Seguridad Física.

    • Etc.

  • Conexión con los usuarios. Si el usuario final el Administrador de la Base de Datos debe captar la vista externa de cada uno y en función de ello escribe el esquema externo asociado, también debe definir del usuario final la correspondencia externa conceptual asociado a este esquema. Por ultimo debe crear al usuario final un entorno amigable.

  • Al programador de Aplicaciones. El Administrador de la Base de Datos le debe dar:

    • Le tiene que dar ayuda para la implementación de la vista externa, es decir, el DLL externo.

    • Le tiene que permitir que el programador escriba sus aplicaciones (lenguaje anfitrión)

    • Definir la correspondencia externa y conceptual.

    • Le debe permitir explorar el entorno utilizando el DML externo.

  • Debe definir la política de seguridad e integridad para ello utiliza el DLL conceptual.

  • Definir la estrategia de recuperación de fallos.

  • Ocuparse de problemas de rendimiento: Llamado AFINAMIENTO.

  • TEMA 3

    EL NIVEL INTERNO

    3.1 INTRODUCCIÓN.

    3.2 ETAPAS DE ACCESO A UNA BASE DE DATOS.

    3.3 PAGINAS Y FICHEROS.

    3.4 INDEXACIÓN.

    3.5 HASHING.

    3.6 CADENAS DE PUNTEROS.

    3.7 TÉCNICAS DE COMPRENSIÓN.

    3.1 INTRODUCCIÓN.

    Dos aspectos a tener en cuenta.

    • Minimizar al máximo los accesos a disco, ya que esta es más lenta que la memoria principal.

    • Tener diferentes estructuras de almacenamiento, q depende de los requisitos que necesitemos en cada momento. Independencia de datos al cambiar las estructuras de almacenamiento, las aplicaciones que corren sobre ella deben de seguir funcionando.

    3.2 ETAPAS DE ACCESO A UNA BASE DE DATOS.

    Solicita registros almacenados Envía el registro correspondiente

    Ocurrencia de registros almacenados

    Envía una pagina

    Pagina: Cantidad de memoria que se

    puede leer o escribir en una sola

    operación de Entrada/Salida.

    Operación de Entrada/Salida

    (Física) Datos leídos de disco.

    • El Gestor de Ficheros y Gestor de Disco forman siempre parte del Sistema Operativo.

    - GESTOR DE DISCO

    Es un componente del sistema operativo subyacente, se encarga de todas las operaciones de E/S, por tanto, necesita conocer todas las direcciones físicas del disco, en contraposición el Gestor de Ficheros percibe el disco como un conjunto de paginas, donde cada conjunto de paginas esta formado por grupos de paginas de tamaño fijo, donde cada conjunto de paginas y cada pagina de ese conjunto tienen un identificador único.

    El G.D. mantiene la correspondencia entre el identificados de pagina y la dirección física en disco de dicha pagina.

    Necesitamos saber el numero de paginas q hay libre para la introducción de nuevos datos. Se tiene un conjunto de paginas especiales llamado conjunto de paginas de espacio libre.

    OPERACIONES QUE PUEDE SOLICITAR EL G.F. AL G.D.

    • Leer la pagina “p” del conjunto de paginas “c”.

    • Reemplazar la pagina “p” por la pagina “p´” en el conjunto de paginas “c”.

    • Añadir la pagina “p” al conjunto de paginas “c”.

    • Eliminar la pagina “p” del conjunto “c”.

    GESTOR DE FICHEROS

    El G.F. utiliza al G.D. para que el Sistema de Gestión de Bases de Datos perciba al disco como un conjunto de archivos almacenados. Cada conjunto de paginas puede contener a uno o más archivos almacenados. Cada archivo almacenado debe tener un identificados que lo diferencia de los demás dentro del conjunto de paginas. Habitualmente forma parte del Sistema Operativo.

    OPERACIONES QUE EL SGBD PUEDE SOLICITAR EL GF

    • Leer el registro almacenado “r” del fichero almacenado “a”.

    • Reemplazar el registro almacenado “r” del fichero almacenado “a”.

    • Añadir al fichero almacenado “a” un registro y devolver el nuevo identificador.

    • Eliminar el registro “r” del archivo almacenado “a”.

    • Crear un nuevo archivo almacenado “a”.

    • Eliminar un archivo almacenado “a”.

    • AGRUPAMIENTO

    El agrupamiento es una utilidad que permite que los registros que se utilizan tengan acceso de entrada y salidas más rápidos. Hay 2 tipos:

    Interarchivo

    Entrearchivo.

    INTERARCHIVO

    Los registros están o bien en la misma pagina o bien en paginas que físicamente son cercanas, es necesario buscar un criterio de secuencialidad (utiliza un campo clave que identifica el registro almacenado).

    ENTREFICHEROS

    Lo que se pretende es unir registros que se van a tratar juntos, aunque no sean del mismo fichero. Tenemos dos posibilidades. O bien mediante cadenas de punteros y la otra es intercalar registros de diferentes ficheros, en el mismo conjunto de paginas.

    3.3 PAGINAS Y FICHEROS

    Ejemplo:

    Tres tipos de ficheros

    Proveedores

    Piezas

    Envíos

    Administración de pagina: Logran que el Gestor de Ficheros perciba la entrada y salida física como “entrada y salida de paginas”. De esta transformación se encarga el Gestor de Disco.

    Ejemplo:

    Supongamos un único registro por paginas y q cada fichero almacenado le vamos a asignar un conjunto de paginas.

    Para hacer un agrupamiento de secuencialidad vamos a tener en cuenta el código.

    Conjunto paginas:

    1 a 5: Proveedores

    6 a 11: Piezas

    12 al 23: Envíos

    23... Conjunto de paginas libres

    Realizar las siguientes operaciones:

    Inserción del Proveedor S6

    Borrar el Proveedor S2

    Insertar S7

    Borrar S4

    - Ahora tenemos que cuando necesitamos buscar la P7 tenemos que recorrer todo el disco, por lo cual utilizamos punteros.

    La pagina Ø nos tiene que dar la siguiente información (y por eso la hemos representado vacía).

    0

    Conjunto de Paginas

    Dirección de las paginas

    Vacías

    Proveedores

    Piezas

    Envíos

    4

    1

    6

    12

    De todo esto se encarga el Gestor de Disco

    MISIONES DEL GESTOR DE DISCO

    • Mantener el orden lógico de la pagina (punteros).

    • Mantener información general de la pagina (pagina Ø).

    • Optimizar las Entradas/Salidas a nivel de pagina.

    MISIÓN DEL GESTOR DE FICHEROS

    El gestor de Ficheros debe de intentar mantener la secuencia lógica de los registros en las paginas.

    ¿Qué sucede si tenemos mas de un registro por pagina?

    - El RID tiene que ser invariable

    Registro

    RID

    S1

    11

    S2

    12

    S3

    13

    S4

    14

    S5

    15

    Sí borro el S2 no puedo cambiar el numero de RID.

    Para que el RID no varíe almacenamos la posición, tenemos 1 registro donde hay tantas posiciones como registros entren en esa pagina cambio la información de la pagina.

    RID: Tiene el numero de la pagina

    Posición en la pagina / en vez de este tengo un puntero donde esta la posición de la pagina.

    Desde el Gestor de Ficheros solicito un registro almacenado y necesito saber donde es rápidamente el RID. Para ello hay dos tipos de técnicas para localizar el RID.

    • Indexación.

    • Técnicas de acceso directo o Hashing.

    3.4 INDEXACIÓN

    Técnica que permite encontrar paginas de la forma más rápida que se pueda y por tanto el numero de operaciones de E/S.

    Una tabla índice es un archivo almacenado cuyos registros almacenados se componen de dos partes:

    1º parte del registro esta formado por un valor semántico.

    2º parte esta formada por el RID que posee ese valor semántico

    Ejemplo.

    Empresa que necesita proveedores de muchas ciudades.

    Tendremos una tabla índice que apunta a archivos almacenados de proveedores

    Prov

    RID

    LU

    LU

    OU

    OU

    PO

    PO

    Prov#

    Pieza

    Cant

    Provincia

    S6

    X

    20

    LU

    S1

    X

    10

    OU

    S2

    X

    20

    LU

    S3

    Z

    10

    OU

    S4

    W

    30

    PO

    S5

    X

    30

    PO

    • En la tabla índice tienen que estar los valores ordenados de forma secuencial ordeno las ciudades alfabéticamente luego pongo su RID.

    • Si tuviéramos que hacer barrido secuencial seria fácil, es una ventaja que aporta la tabla índice.

    • Desventaja: Ocupa mucho espacio.

    • Puedo tener tantas tablas índice como campos tenga. Aquí como mucho tendría cuatro, también es un problema, por que genera mucho espacio.

    Las tablas índice también tiene las siguientes ventajas:

    • Facilidad de acceso secuencial en los registros se minimiza el numero de operaciones de E/S, la tabla índice es más pequeña y caben mas registros en una tabla y puedo leer mas registros de un tirón.

    • La búsqueda directa es simple, no me obliga a leer todas las paginas.

    Inconvenientes:

    • Ocupa mas espacio, hay mas archivos almacenados, tantos como índices tengamos.

    • Tenemos muchas tablas. Posible solución: Tablas índice múltiples.

    • Tamaño de las tablas. (Un registro en la tabla índice por un registro de la tabla a la que apunta) Para minimizar el problema usamos índices no densos. Esta manera los índices se llaman tablas de índices densos

    TABLAS DE ÍNDICES MÚLTIPLES

    Suponemos Que hay que indexar por mas de un campo, la ciudad y el estado, por ejemplo. Se hace la búsqueda por un solo campo: o ciudad o estado.

    Ciud/Est

    RID

    LU/20

    LU/20

    OU/10

    OU/10

    PO/30

    PO/30

    TABLAS DE ÍNDICES NO DENSOS

    • Se utilizan para reducir el tamaño de las tablas índice y para ellos se utiliza el mayor valor que se almacena en una pagina.

    Ejemplo:

    • El tamaño de pagina permite almacenar tres registros por pagina entonces el RID seria (mostrado en la tabla)

    • Como funciona: Necesito el proveedor S7 miro en la tabla de índices densos y si no es mayor es cuando lo encuentro entonces voy a la pagina y solo leo esa.

    S#

    RID2

    S1

    11

    S2

    12

    S3

    13

    S4

    21

    S5

    22

    S6

    23

    S7

    31

    S8

    32

    Prov#

    RID1

    S3

    S6

    S8

    ÁRBOLES B

    Son la clase de índices no densos más importantes, ya que la mayoría de los sistemas relacionables incluyen árboles B como principal estructura de almacenamientos (y en muchísimos casos la única)

    • Los árboles B son árboles equilibrados cuyos nodos son las paginas de sucesivas tablas índice siendo los nodos terminales del árbol las propias paginas de la tabla índice. Hago tablas mas pequeñas y las voy encadenando. (índices no densos)

    • Se denomina conjunto secuencia de un árbol B a los nodos terminales y conjunto índice a los nodos no terminales a si mismo la profundidad del árbol viene marcada por el numero de niveles.

    • El orden del árbol es el numero mínimo de anotaciones que hay en cada pagina.

    3.5 DIRECCIONAMIENTO DIRECTO HASHING.

    • Permite obtener acceso directo rápido a un registro almacenado especifico en base a un valor dado por un cierto campo (clave). En el modelo relacional coincide con claves.

    • Tres etapas de acceso o tres pasos para asignar el RID:

    1.- Cada registro almacenado se coloca en la Base de Datos en un lugar cuya dirección (RID) se calcula mediante una función, que se denomina algoritmo de direccionamiento (No permite la secuencialidad).

    2.- El SGBD calcula la dirección (mediante ese algoritmo de direccionamiento) y le ordena al GF que lo grabe (el RID) en esa dirección calculada.

    3.- Para localizar el registro a partir de la dirección el SGBD realiza el mismo calculo y le ordena al GF que lea el registro en la posición calculada.

    Si tengo una función que me genera el mismo RID, se dice que son sinónimos.

    Tienen tres problemas que vienen dados por el algoritmo de direccionamiento:

    • Encontrar una función de distribución eficiente.

    • Sinónimos.

    • Huecos.

    Hashing tiene problemas que vienen dados por el algoritmo de las direcciones si este no hace una distribución uniforme de las direcciones se producen colisiones, y a esto se le denomina sinónimos.

    La función devuelve el mismo RID para funciones distintas y se producen colisiones y a su vez se producen huecos, hay direcciones que nunca se ocupan. Para evitar los huecos y colisiones es necesario encontrar un buen algoritmo de almacenamiento.

    Los algoritmos de almacenamiento mas usados son:

    • Técnicas de direccionamiento aleatorio intentando minimizar el numero de colisiones.

  • Transformación de plegamiento: utilizada en claves que se almacenan en binario.

  • Ejemplo:

    Utilizo 8 bits, se suman: 4+4=8 ! RID

  • Cuadros centrales: Se eleva al cuadrado la clave y se utilizan los dígitos centrales como dirección.

  • Ejemplo:

    F = (3600)²= 129(600)00

    600 es la dirección.

  • Métodos de convergencia.

  • La Clave la multiplico por algo, le sumo algo y hago modulo de un numero primo y el resultado es la dirección

    (ak + b)mod m

  • Desplazamiento

  • 256381 lo voy sumando hasta dejarlos en el margen que yo quiera

    256 + 381 = 637

    63 + 7 = 70 (70) será el RID

    De todas formas siempre va a haber colisiones, por tanto hay que tener lo que se denomina zonas de desbordamiento o overflow, de manera que cuando se produce colisión el registro se almacena en esta zona de desbordamiento, pero a la hora de buscarlos si no está en la posición que le correspondería hay que hacer una búsqueda secuencial en la zona de desbordamiento y en el peor de los casos es hacer una búsqueda en toda la zona de desbordamiento.

    Otra posible solución es dejar huecos vacíos en las paginas de manera que cuando se produce una colisión lo almacena en esta página y así solo tendré una operación de E/S para buscar un registro (ya que está todo en la pagina). Pero si se llena la pagina pues haremos como antes en la zona de overflow. La desventaja es que se desperdicia mucho espacio.

    3.6 CADENAS DE PUNTEROS

    Se utilizan cuando se trabaja con campos que no son claves para que sean eficientes estos campos deben contener pocos valores y repetirse mucho en los registros. Aparece como solución a las tablas con índices densos. En estas tablas hay que recolocar toda la información y con las cadenas de punteros lo que hacemos es:

    Archivo

    Ciudades

    Archivo

    Proveedores

    Problemas: Para leer un proveedor que esta en la posición n hay que leer antes los proveedores n-1, todos los que están antes. Además también hay otro problema. Por ejemplo, obtener la ciudad del proveedor S4, habrá que leer ciudad por ciudad, solución repetir el campo ciudad en el archivo proveedores.

    Para solucionar el problema de leer n-1 antes lo solucionamos con apuntadores simples a los padres.

    Ventajas: - Facilidad de inserción y borrado

    - Se pueden tener tantos índices como se quiera

    3.7 TÉCNICAS DE COMPRENSIÓN

    • Permiten el ahorro de memoria masiva.

    • Hay tres técnicas:

  • Diferencial

  • Jerárquica

  • Código Huffman

  • Se basen las tres en el siguiente principio:

    Los valores de los datos casi nunca son completamente aleatorios si no que existe un grado de parecido que permite que exista secuencia entre ellos.

  • DIFERENCIAL

  • Esta técnica consiste en remplazar cada valor del dado individual por alguna representación de la diferencia que existe entre el y el valor que lo precede. Tienen que estar ordenados de forma secuencial y alfabéticamente

  • DIFERENCIAL (Es igual al agrupamiento)

  • Esta define de la forma que los registros se agrupan según una clave que contiene duplicados entonces se realiza una compresión dentro del archivo determinando registros de longitud variable que contienen 1 parte fija y otra variable.

  • CÓDIGO HUFFMAN

  • Se base en la codificación interna de los datos, se trata de cambiar esa codificación de los registros.

    Los datos que mas se repiten tienen una codificación mas beneficiosa.

    REG

    Posibilidad

    de aparición

    Codificación

    E

    35%

    1

    A

    30%

    01

    D

    20%

    001

    C

    10%

    0001

    B

    5%

    00001

    -Le añado dígitos a aquellos que tengan menos probabilidad de aparición y así será mas rápido la operación de lectura.


    TEMA 4 ESTRUCTURAS DE DATOS: DISTINTOS ENFOQUES

    4.1 INTRODUCCIÓN

    4.2 EL ENFOQUE RELACIONAL

    4.3 EL ENFOQUE JERÁRQUICO

    4.4 EL ENFOQUE EN RED

    4.1 INTRODUCCIÓN

    Ejemplo de diagrama de entidad-relación para proveedores-piezas.

    Diseño Lógico de la Base de Datos

    4.2 ENFOQUE RELACIONAL

    Vamos a ver en como se trata cada uno de estos enfoques.

    Una base de datos relacional equivale a una tabla. La estructura básica de este enfoque es la tabla. (relación " tabla).

    Las tablas están formadas por filas y columnas, donde las filas son las ocurrencias de los distintos tipos de registros y las columnas son los atributos. Los atributos se definen sobre dominios.

    Dominio: Se define como deposito de valores del cual se obtienen los que aparecen en una columna especifica.

    Ejemplo: Dominio de color son azul, amarillo...

    Las tablas para nuestro diseño se representan:

    Cada entidad genera una tabla:

    S#

    NumS

    Estado

    Ciudad

    P#

    NumP

    Color

    Peso

    S#

    P#

    Cantidad


    • Las conexiones generan tablas dependiendo de su cardinalidad, más concretamente cuando sus conexiones de cardinalidad de muchos a muchos.

    VENTAJAS:

    • Simplicidad de la representación, y por tanto simplicidad en su manejo.

    • Sus algoritmos son simétricos (es decir iguales son los algoritmos para las distintas entidades). Son iguales para una misma operación independientemente con la entidad que se trabaja.

    INCONVENIENTES:

    • Inserción: Habrá siempre problemas, ya que no se puede insertar un envío de una pieza o un proveedor que no existe

    • Borrado: Un envío se borra sin ningún problema, se borra la fila y ya esta. Para borrar un proveedor o una pieza hay que actualizar la información de envío eliminando las apariciones de proveedor o pieza.

    IMPORTANTE

    Relación " tabla " archivo secuencial.

    (en relación a las filas se le llama tupla)

    Tupla " fila " registro

    Atributo " columna " campo

    4.3 EL ENFOQUE JERÁRQUICO

    La estructura básica de este enfoque es el árbol.

    En nuestro caso con cardinalidad de mucho a muchos, en principio no podemos saber la cardinalidad del padre o la del hijo.

    Entonces la elección es aleatoria, podremos por ejemplo la pieza como padre.

    La implementación de este enfoque se puede hacer basándose en dos estructuras de datos:

    • Registros de longitud variable.

    • Cadena de punteros (es la que se implementa).

    Ponemos piezas como padre y proveedores como hijo.

    Ventaja: no crear nuevas entidades con los distintos proveedores se hace una cadena de punteros.

    Inconveniente:

    Los algoritmos son asimétricos, no es lo mismo insertar en el padre que un hijo. Algoritmos distintos para padre e hijo.

    Insertar: Cualquier padre, pero solo puedo insertar nuevos hijos si tienen padre. No puedo insertar ningún proveedor si no hay piezas.

    Borrado: Si borro una pieza, desaparece todo. Cuando se borra un padre se pierde información de los hijos que no aparece en otros padres, es un gran inconveniente.

    Modificación: Leo todas y cada una de las piezas para ver el proveedor, tengo que leer árbol a árbol para ver si el proveedor esta en cada una de las piezas.

    Si la relación es de 1 a 1: El problema de modificación desaparece pero el de borrado e inserción aun existen, pero es mucho menor, o de 1 a muchos es lo mismo.

    4.4 ENFOQUE EN RED

    La estructura básica es el grafo. Aquí los datos, la información se representa mediante registros . Permite trabajar con cualquier tipo de cardinalidad.

    Para implementar las conexiones se utilizan un tipo de registros denominados conector.

    Desventaja: La complejidad

    Los algoritmos son simétricos, son listas conectando grafos.

    Inserción: Sencillas, sin problemas. Permite insertan cualquier tipo de registros sin que nadie lo suministre

    Borrado: Fácil, lo borro, y sus hijos y ya esta.

    Modificación: También muy sencilla

    Modelo en red: Es bastante bueno, pero tiene un problema, que exige una gran cantidad de memoria.

    TEMA 5 EL MODELO RELACIONAL

    5.1 ELEMENTOS DEL MODELO

    5.2 ESQUEMA DE RELACIÓN

    5.3 DEPENDENCIAS FUNCIONALES

    5.4 DEPENDENCIAS TRANSITIVAS, DEPENDENCIAS PARCIALES, CLAVES.

    5.5 CIERRE DE UN DESCRIPTOS RESPECTO DE UN CONJUNTO DE DEPENDENCIAS FUNCIONALES

    5.6 RECUBRIMIENTO NO REDUNDANTE

    5.7 PARTICIÓN FUNCIONAL

    5.8 ALGORITMO DE SIMPLIFICACIÓN-REDUCCIÓN

    5.9 ALGORITMO DE SÍNTESIS

    5.1 ELEMENTOS DEL MODELO

    Todos los modelos de datos constan de tres partes.

    1ª Parte: Modelo estructurado: Estructura de datos que va a soportar el modelo.

    2ª Parte: Parte semántica, formado por el conjunto de restricciones que debe cumplir el modelo.

    3ª Parte: Manipulativa, formada por el conjunto de operadores asociados al modelo.

    PARTE ESTRUCTURADA

    La estructura de datos para el modelo relacional es la relación.

    Ejem:

    A1

    A2

    A3

    ...

    An

    a11

    a21

    a31

    an1

    a21

    a22

    a32

    an2

    a1m

    a2m

    a3m

    anm

    ¿Como defino todos los valores de tabla?

    Dominio (A1), que operación hago para que todos los dominios se relacionen, es mediante el producto cartesiano:

    R " Dom(A1) x Dom(A2) x … x Dom(An)

    Relación: Es un subconjunto del producto cartesiano del dominio, donde el atributo A definido como cada caso particular de una dominio en una relación está restringido a tomar sus valores en un dominio.

    Los dominios de dos o mas atributos diferentes para una relación pueden ser iguales aunque no los nombres asociados a esos atributos. (No dos atributos iguales en una relación).

    Ejemplo:

    Nombre

    DNI

    Apellidos

    Nombre

    Apellidos y nombre si que tiene igual dominio.

    No puede haber dos atributos con el mismo nombre, no pueden existir dos Nombre.

    Grado: El grado de una relación es el valor `n', es decir el numero de atributos, mientras que la cardinalidad seria el numero de tuplas.

    El orden de las tuplas es irrelevante y por eso las tablas las vemos como si fueran conjuntos.

    • PARTE MANIPULATIVA

    Viene definida como el álgebra relacional.

    • PARTE SEMÁNTICA

    Clave: Se define como un conjunto mínimo de atributos cuyo valor determina el de todos los demás de las relación.

    Es equivalente a la clave candidata " clave.

    SuperClave: Es equivalente a la clave primaria. Clave elegida entre mis claves candidatas.

    El dominio sobre el que se definen los atributos de una clave primaria se denominan dominio primario.

    Para solventar problemas de inserción y borrado se definen dos reglas de integridad:

    1ª Regla de integridad de entidad:

    Ningún valor de la clave primaria de la relación puede ser nulo o tener componentes nulos (desconocido, vacío).

    2ª Integridad Referencial

    Intenta controlas las conexiones que existen entre las entidades.

    S#

    ...

    S1

    A

    P#

    ...

    P1

    T


    S#

    P#

    ...

    S1

    P1

    S# Es clave externa respecto al código del proveedor.

    P# Es clave externa respecto al código de la pieza.


    Para poder haber en la 3 entidad una tupla S1 P1, S1 necesariamente tiene que existir en la 1 entidad y P1 tiene que existir en la 2 entidad.

    Supongamos que un atributo A es una clave primaria en una relación R y está definida en un dominio primario, entonces para cada valor A de A en R tiene que existir una relación S con clave primaria simple B tal que A ocurre como un valor de B en S.

    Al atributo A se le denomina clave externa de R respecto a S.

    5.2 ESQUEMA DE RELACIÓN

    Dos ocurrencias R y R que pertenecen a un conjunto de atributos denominados T.

    R y R " T = { A1, A2, ... An,} verifican el mismo conjunto de reglas de integridad que vamos a denominas L y que está formado por las regla de integridad-entidad y regla de integridad referencial mas todas las restricciones que permiten definir la semántica del problema.  (RE, RL, restricciones que definen la semántica del problema)

    Al par formado por el conjunto de atributos T y L se le denomina esquema relacional R(T, ).

    A cualquier subconjunto de T se le denomina descriptos

    Ejemplo

    S#

    NomS

    Estado

    Ciudad

    S1

    X

    10

    OU

    S2

    Y

    20

    PO

    S3

    X

    20

    LU

    S4

    Z

    10

    OU

    x, y " T (Conjunto de atributos)

    x ! y

    Si conozco x puedo saber de forma segura y. Esto significa dependencia funcional.

    Ciudad ! Estado? No es cierto

    Estado ! Ciudad? No lo se por que no se si se puede repetir o no con toda seguridad

    S# ! NomS Si es cierto, por que teniendo el código del proveedor se con toda seguridad su nombre.

    NomS ! Ciudad? No, por que puede ser de Ou, Lu, etc y seguir siendo el mismo proveedor.

    S# ! Estado?

    S# ! Ciudad? Estas dos ultimas si son ciertas

    Ejemplo:

    Para las piezas que dependencias funcionales habría?

    P#! NumP, Color, Peso " P# ! NumP

    P# ! Color

    P# ! Peso

    Para el envío que dependencias funcionales hay?

    S# ! P# S#,P# ! Cantidad.

    S# ! Cantidad

    Ojo, no equivale a S# ! Cantidad, S# ! Cantidad

    Dependencia Funcional : Se representa x ! y donde x e y son descriptores que pertenecen a L (Conjunto de descriptores.

    Si para toda ocurrencia r de R el valor x determina unívocamente al valor y. (r : esquema de relaciones).

    x ! y (Conocido el valor de x conozco el de y)

    Dado un conjunto de dependencias funcionales L, este conjunto permite deducir nuevas dependencias funcionales, este nuevo conjunto se denomina cierre y se representa L+.

    Para deducir las dependencias funcionales tenemos lo que se denomina Axiomas de Amstrong.

    Estos axiomas son 5:

  • Reflexividad: "x, x ! y

  • Aumentatividad: Si x !y, x' ! y "x' " x

  • Ejemplo: S# ! NomS

    S#, Ciudad ! NomS

  • Proyectividad: Si x ! y, x ! y' "y' " y

  • Ejemplo: S# ! NomS, Estado, Ciudad

    S# ! NomS

    S# ! Estado

    S# ! Ciudad

  • Adictividad: Si x !y, u !w ! xvu ! yuw

  • Transitividad: Si x ! y, y ! z ! x ! z

  • DEPENDENCIAS TRANSITIVAS, DEPENDENCIAS FUNCIONALES, CLAVES.

  • Las dependencias transitivas crean anomalías en las tablas, por esto son muy importantes, se representan x- ! y, y se da entre dos descriptores x e y si solo si se cumple las siguientes condiciones.

  • Los descriptores son disjuntos x " y = Ø

  • z es disjunto respecto a x e y. "z: x"z = Ø; y"z = Ø

  • x ! z, z ! x; z ! y

  • Ejemplo:

    S# - ! Ciudad

    E = estado

    S# ! Estado; Estado - ! S#; Estado ! Ciudad

    La dependencia x ! y es parcial si solo si existe un x' tal que x ! y es parcial si y solo si " x'/ x' " x ! x' ! y

    En caso contrario se dice que la dependencia es total y se representa así: x ! y.

    Clave: Un descriptor K " T es clave de R(T,) cuando se cumple lo siguiente:

    K ! T (Cuando no hay un subconjunto mas pequeño de K y todos los atributos dependen de la clave)

    Los atributos que dependen de las claves se denominan atributos principales y aquellos que no pertenecen a la clave se denominan no principales.

  • CIERRE DE UN DESCRIPTOS RESPECTO DE UN CONJUNTO DE DEPENDENCIAS FUNCIONALES

  • Si un descriptor `x' y `L' un conjunto de dependencias funcionales, el cierre de `x' respecto a L (se pone X+) es un descriptor que verifica lo siguiente:

    (x ! x+) " L+ Con el cierre, así obtengo todos loa atributos que puedo obtener a partir de un descriptor.

    Además, el cierre tienen que ser máximo: x+ es máximo.

    -Algoritmo de cierre de un descriptor:

    Determina descriptores de la forma X(i) con la propiedad x ! x(i) " L+ de forma que x(i) = x(i-1) incrementando en los atributos Ak de la forma:

    X(i) = X(i-1) " Ak / (u ! v) " L

    u " X(i-1) y Ak " v, partiendo de x(0) = x

    Si x(i-1) = x(i) ! x(i) = x+

    El proceso es finito por que T es finito, el conjunto de atributos es finito (T).

    EJERCICIO:

    L:

    AB ! C D ! EG

    C ! A BE ! C

    BC ! D CG ! BD

    ABC ! B CE ! AG

    T: {A,B,C,D,E,G}

  • Calcular el cierre de BD: (BD)+.

  • x(0) = BD

    x(1) = BDEG Aquí añado de los de arriba los que están contenidos

    x(2) = BDEGC en BD en la parte izquierda es así, por que conocida

    x(3) = BDEGCA la parte izquierda conozco la parte derecha

    x(4) = ABCDEG

    BD+ = BD

    Puedo decir que BD es clave, por que a partir de el obtengo todos los atributos.

  • Calcular el cierre de CE: (CE)+

  • x(0) = CE

    x(1) = CEAG

    x(2) = CEAG

    x(3) = ABCDEG

    Entonces CE también es clave.

  • Calcular el cierre de CD: (CD)+

  • x(0) = CD

    x(0) = CDB

    x(0) = CDB

    CD no seria clave, ya que con ella no obtengo T, el conjunto de todos los atributos.

  • RECUBRIMIENTO NO REDUNDANTE.

  • Ejemplo:

    BC ! D

    A ! D

    AC ! D Dependencia redundante

    Dos conjuntos de dependencias funcionales L y M son equivalentes si y solo si sus cierres son iguales.

    L y M son equivalentes sii L+ = M+.

    También se dice que L recubre a M y que M recubre a L.

    Esto sucederá cuando : " x ! y " L+ ! x ! y " M+

    " u ! v " M+ ! u ! v " L+

    Esta forma es muy complicada por que hay que calcular todos los cierres y hay una forma mejor.

    (X)+ respecto a M+ ! y " (X)+ ! x ! y " M+

    (Calculo el cierre de x respecto a la dependencia M+)

    Se dice que un conjunto de dependencias funcionales M no es redundante si solo si ocurre:

  • Todas sus dependencias tienen que ser de la forma x ! Ai, es decir, los segundos miembros tienen que ser simples.

  • No pueden existir dependencias reduntandes.

  • (x ! Ai) " M+ es redundante sii (M - (x ! Ai))+ = M+

    Una dependencia es redundante cuando su eliminación no altera el cierre.

  • No pueden existir atributos extraños.

  • Una atributo Bi es extraño en la dependencia x ! Ai si y solo si llamamos Z al descriptor z= x - {Bi} el cierre de M no se altera al sustituir x ! Ai por z ! Ai, es decir:

    (M - {x ! Ai} " {z ! Ai})+ = M+ (El cierre no varia)

    Ejemplo:

    D ! E

    D ! EG

    D ! G

    BE ! C

    CG ! B

    CG ! BD

    CG ! D

    Si tengo ACD ! B y CD ! B Tengo que A es un atributo extraño, por que si ya puedo obtener B sabiendo solamente CD, A no me hace falta, y lo puedo eliminar.

    ALGORITMO QUE CALCULA EL RECUBRIMIENTO NO REDUNDANTE PARA UN CONJUNTO DE DEPENDENCIAS FUNCIONALES.

    Siempre existe recubrimiento no redundante en un conjunto de dependencias funcionales.

    El algoritmo consta de tres pasos:

  • Paso

  • Para toda dependencia x ! y de L

    x ! y " L " x ! y " L

    Sustituimos x ! y por

    x ! A1, x ! A2,..., x ! Ar

    Donde A1, A2,..., Ar son atributos de y

  • Paso

  • Para toda dependencia x ! Ai " L

    Calculamos x+ (cierre de x) respecto a (L(1) - { x ! Ai })

    - Si Ai " x+ entonces x ! Ai es redundante y se elimina

    - Obtenemos un conjunto L(2) que es el resultante.

  • Paso

  • " x ! Ai " L(2)

    Si Bi " x tal que z = x - {Bi} calculamos z+ (cierre de z) respecto a L2

    Si Ai " z+, entonces sustituimos x ! Ai por z ! Ai .

    El resultado de esta sustitución daría como resultado L3 = M (recubrimiento no redundante).

    EJERCICIOS EN LOS FOLIOS ADJUNTOS DE EJERCICIOS (PAG. 1, 2)

  • ALGORITMO DE DETERMINACIÓN DE LAS CLAVES DE UN ESQUEMA

  • Sea M un recubrimiento no redundante definimos atributos esenciales como aquellos que solo aparecen en el lado izquierdo de alguna dependencia funcional o bien o bien en ninguno.

    Atributos posibles, son aquellos atributos que aparecen a los dos lados de la dependencia funcional.

    Atributos no esenciales: Son aquellos que solo aparecen en el lado derecho de las dependencias y nunca aparecen en la clave.

    De estas definiciones obtenemos las propiedades.

    Atributo esencial: Pertenece a todas las claves.

    Atributo no esencial: No pertenece a ninguna de la claves.

    Atributo posible: No se sabe si pertenece o no a alguno clave excepto si esta incluido en el cierre de los esenciales, en cuyo caso no pertenecerá a ninguna clave.

  • ALGORITMO DE SIMPLIFICACIÓN-REDUCCIÓN

  • Sea R el esquema relacional

    R = <T;M>

    Donde:

    M = [xi ! Ai ] I = 1…n (es el recubrimiento mínimo)

    Sigue en las fotocopias...<

    ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..

    EJEMPLO Y EJERCICIOS EN HOJAS DE EJERCICIOS (PAG 2 POR ATRÁS Y SIGUIENTES)

  • ALGORITMO DE SÍNTESIS

  • EJEMPLO Y EJERCICIOS DEL ALGORITMO DE SÍNTESIS EN HOJAS DE EJERCICIOS (PAG 5 POR ATRÁS Y SIGUIENTES)

  • PARTICIÓN FUNCIONAL

  • Basándose en el concepto de relaciones de equivalencia, son clases de equivalencia en una relación de equivalencia:

    Si tengo un conjunto de dependencias funcionales M lo descompongo en:

    M: M1! K1

    M1! K1 " Ki = K

    M1! K1 i=n

    .....................

    M1! K1

    En subconjuntos de dependencias funcionales

    Sea Fi una dependencia funcional de la forma si! xi y sea fi otra dependencia de la forma fj = sj! xj definimos la matriz de adyacencia y se representa ~ de la siguiente manera:

    fi ~ fi sii (si " xi)" (sj " xj) " 0 si tienen atributos comunes son adyacentes

    En caso contrario

    fi " fi sii (si " xi)" (sj " xj) " 0 si no tienen atributos comunes no son adyacentes

    Adyacentes . Esta relación es reflexiva y simétrica pero no transitiva para hacerla transitiva definimos la relación de transición y se representa ", de la forma:

    fi " fi sii fi ~ fi o bien "fki"ri=1 " tal que fi ~ fk1~ fk2~ ...~ fkr~ fj

    Al ser reflexiva, simétrica y transitiva es una relación de equivalencia, en la cual permite dividir a L en clases de equivalencia, de manera que partiendo de un esquema Ri(Ti, Li) "ri=1 Ki = K, de la forma que el calculo de la clave se resume en calcular el calculo de las claves de los subesquemas Ki, donde la unión de los Ki me da la clave del esquema R.

    La relación de adyacencia y la relación de conexión se representan mediante matrices donde las filas y las columnas están etiquetadas por las dependencias funcionales, de manera que un elemento vale un si:

    Adyacencia

    f1 f2 … fr

    f1

    f1

    ….

    fij = 1 sii fi " fi

    ….

    fij = 1 sii no fi " fi

    ….

    fr

    Ojo: para las conexiones es el mismo cuadro


    Las combinaciones de unos y ceros de la matriz de conexión indican las clases de equivalencia, es decir:

    0 0 1 1 0 0

    1 1 0 1 1 1 Si las 2 filas son iguales se trata de la misma clase

    0 0 1 1 0 0 de equivalencia

    Me interesa que salgan muchas clases de equivalencia para reducir el numero de clases que tenemos que calcular.

    EJEMPLO EN HOJAS DE EJERCICIOS (PAG 8 POR ATRÁS)

    TEMA 6 EL ÁLGEBRA RELACIONAL

  • DEFINICIÓN INTUITIVA E INTRODUCCIÓN.

  • SÍNTESIS PARA EL MANEJO DE EXPRESIONES RELACIÓNALES.

  • LOS OPERADORES TRADICIONALES.

  • LAS OPERACIONES RELACIÓNALES TÍPICAS.

  • 6.1 DEFINICIÓN INTUITIVA E INTRODUCCIÓN.

    Se basa en lenguajes imperativos de la forma K1" K2 - (R3) = RT.

    Los conjuntos de operadores son:

    • Unión (Union).

    • Intersección (Intersect). Se definen como conjuntos binarios

    • Diferencia (Minus). Conjuntistas o tradicionales

    • Producto cartesiano (Times).

    Y por otro lado tenemos:

    • Selección (Select)

    • Proyección Denominados operadores propios o

    • Reunión (Join) relacionales

    • División (Divide by)

    La unión de dos tablas es una nueva tabla que contiene las tuplas de unión de ambas tablas:

    R1 Union R2

    La intersección da como resultado una tabla que contiene las tuplas que estas en R1 y en R2.

    La diferencia entre R1 y R2 son aquellas tuplas que están contenidas en R1 y no en R2.

    R1 Minus R2

    El producto cartesiano crea una combinación de tuplas de manera que:

    A

    B

    a

    x

    b

    y

    c

    z

    times

    C

    1

    2

    Genera una nueva tabla de la forma:

    A

    B

    C

    a

    x

    1

    a

    x

    2

    b

    y

    1

    b

    y

    2

    c

    z

    1

    c

    z

    2

    Selección: Consiste en la creación de filas de una selección de 1 relación, obtiene tuplas de una relación.

    Proyección : Obtiene columnas de una relación.

    Reunión: (Join) Consiste en reunir tablas, aquellas que tienen atributos en común.

    A

    B

    x

    1

    y

    1

    z

    2

    B1

    B2

    x

    a

    y

    b

    JOIN


    C1

    C2

    C3

    x

    a

    1

    y

    b

    1

    Reúne las tablas por valores de igualdad, no queda la columna duplicada.

    El atributo en común será la clave externa.

    División: (Divide by)

    A1

    B1

    x

    1

    x

    2

    x

    3

    y

    1

    y

    2

    z

    3

    Divide by

    C

    1

    2

    3


    .

    D

    x

    Solo vale x por que es el que tienen los valores 1,2,3

    Da como resultado aquellos valores de atributos que tengan todos los atributos valores de la tabla divisor.

    6.3 OPERADORES RELACIÓNALES TÍPICOS

  • Selección:

  • R Where P

    Relación: Tabla donde se verifica un predicado P. Me devuelve aquellas filas donde se verifica esto.

    Ejemplo: Que proveedores hay en la ciudad de Ourense, devolver código de proveedor:

    S Where Ciudad = `Ou'

    Devuelve:

    S1 x 10 OU

    S2 y 20 OU

    Pero me falta sacar la columna, por eso necesito una proyección.

    (S Where Ciudad = `Ou') [S#]

    Entonces después de hacer esto nos devolvería solamente aquello que esta encuadrado:

    S1 x 10 OU

    S2 y 20 OU

  • Reunión:

  • Ejemplo: Me piden proveedores que suministran piezas de color azul.

    (S#, color = `Azul')

    P SP

    P#

    NombreP

    Color

    Peso

    P1

    Tornillo

    Azul

    10

    P2

    Tuerca

    Rojo

    20

    P3

    Perno

    Azul

    30

    S#

    P#

    Cantidad

    S1

    P1

    50

    S1

    P3

    60

    S2

    P2

    10


    SP Join P (Where color = `Azul') Así obtengo una tabla donde luego hago la

    proyección

    tender S#, P#, Cantidad, Color, Peso, NombreP, la tabla resultante será:

    S#

    P#

    NombreP

    Color

    Peso

    Cantidad

    S1

    P1

    Tornillo

    Azul

    10

    50

    S1

    P3

    Perno

    Azul

    30

    10

    Pero aunque ya tengo los proveedores que suministran piezas de color azul, aun me falta proyectar:

    (SP Join P(Where color = `Azul'))[S#]

  • División:

  • M + N (grado del dividendo: Numero de atributos)

    Ejemplo: Encontrar proveedores que suministren todas las piezas:

    S Divide By P = Divide el código del proveedor entre las piezas. No esta correcto, la operación por que no hay atributos con mismo dominio y además no tiene mayor grado sino igual grado.

    SP Divide By P = No por que el código del proveedor y cantidad no están en P y el dividendo no tiene mayor grado que el divisor.

    SP Divide By P [P#], [S#] = Correcto, tiene grado mayor, el divisor esta contenido en el dividendo. Me queda código del proveedor y cantidad entonces hay que proyectar por código de proveedor

    Hay otra forma de hacerlo: SP([S#, P#] Divide By P[P#]). Esta es equivalente a la de arriba.

  • Producto Cartesiano (Times).

  • SP times S[S#] equivalente a tener una nueva tabla

    S#

    P#

    Cantidad

    S#

    Tenemos dos atributos con distintos valores e igual nombre, la solución es etiquetar los productos con el nombre de su relación.

    SP.S#

    SP.P#

    SP.Cantidad

    S.S#

    Pero que ocurre si hacemos: SP times SP, lo que se hace es definir un apodo de la forma: define alias SP for envi de forma que la tabla resultante será:

    SP.S#

    SP.P#

    SP.Cantidad

    Envi.S#

    Envi.P#

    Envi.Cantidad

    Ejemplo: Encontrar parejas de proveedores que suministran la misma pieza:

    Define alias SP for ENVI

    (SP times ENVI Where (SP.P# = ENVI.P#)) [SP.S#, ENVI.S#]

    SP.S#

    SP.P#

    SP.cantidad

    ENVI.S#

    ENVI.P#

    ENVI.cantidad

    S1

    P1

    50

    S1

    P1

    50

    S1

    P1

    50

    S1

    P3

    60

    S1

    P1

    50

    S2

    P2

    10

    S1

    P3

    60

    S1

    P1

    50

    S1

    P3

    60

    S1

    P3

    60

    S1

    P3

    60

    S2

    P2

    10

    S2

    P2

    10

    S1

    P1

    50

    S2

    P2

    10

    S1

    P3

    60

    S2

    P2

    10

    S2

    P2

    10

    Y obtengo:

    S1

    S1

    S1

    S1

    S2

    S2

    S1 con S1 no es una pareja entonces no estaría bien


    (SP Times ENVI Where (SP.P# = ENVI.P#)) [SP.S#, ENVI.S#] and (SP.S# == ENVI.S#)

    Así aun no estaría bien por que al ser así me daría aun las parejas

    S1 S2

    S2 S1

    Entonces tendré que poner:

    (SP Times ENVI Where (SP.P# = ENVI.P#)) [SP.S#, ENVI.S#] and (SP.S# < ENVI.S#)

    Seria lo mismo < que >.

    TEMA 7 CÁLCULO RELACIONAL

    7.1 INTRODUCCIÓN.

    7.2 EL CÁLCULO DE PREDICADOS EN BASES DE DATOS RELACIONALES.

    7.3 EL CÁLCULO RELACIONAL ORIENTADO A TUPLAS. SINTAXIS DE MANEJO.

  • INTRODUCCIÓN

  • El cálculo relacional es una alternativa al álgebra relacional, pero el cálculo relacional se basa en lenguajes descriptivos, es decir nos indica aquello que queremos obtener.

    El cálculo relacional se divide en dos tipos:

    a) Calculo relacional orientado a tuplas: Se generan una serie de variables que se evalúan sobre las tuplas de una relación.

    Este calculo fue enunciado por Codd (1973) y dio un lenguaje denominado Alpha y en un Sistema de Base de Datos denominado Ingres.

    En 1977 Lacrorx y Piolte definen un nuevo tipo de calculo relacional.

    b) Calculo relativo orientado al dominio: Donde las variables se evalúan no sobre las tuplas si no sobre los valores de los atributos.

  • CALCULO DE PREDICADOS EN CASES DE DATOS RELACIONALES

  • - El calculo de predicados son técnicas matemáticas que sirven para la representación del conocimiento.

    - Elementos del calculo de predicados:

  • Dominio del discurso: es un conjunto de objetos de nuestro mundo con una entidad propia.

  • Ejemplo: personas, colores, coches...

  • Los objetos: Son las constantes de un dominio del discurso.

  • Ejemplo: Colores: Azul, rojo, amarillo...

  • Las variables : son la representación en un momento dado de un objeto del dominio

  • Las funciones: permiten enlazar dominios

  • Ejemplo: Padre: persona ! persona

  • El predicado: Son funciones cuya evaluación devuelve verdadero o falso

  • Ejemplo: Padre (Juan, José)

    Se puede representar mediante sentencias sencillas que se denominan formulas atómicas.

    Ejemplo: Escribió (Lorca, Yerma) = Verdadero

    Nació (Lorca, Sevilla) = Falso

    La fórmula atómica se combina mediante juntores:

    " (AND)

    " (OR)

    ~ (NOT)

    ! (IMPLICACIÓN) ~"

    Formando lo que se denominan formulas bien formadas (WFF)

    fa1 ! fa2 " ~ fa1" fa2.

    Ejemplo : Formula bien formada (WFF):

    Si suspendo BD o me meto un tiro o se lo meto al profesor.

    Suspende (yo, BD) ! (Pego (yo, yo) " Pego (yo, profesor))

    Esto se puede sustituir por cualquier valor

    x ! y

    O también se puede sustituir por variables que pueden estar o no cuantificadas, si la variable esta cuantificada se dice que es una variable ligada en caso contrario es una variable libre.

    Tenemos dos tipos de cuantificadores que me indican en que medida es cierta una formula que contiene variables, tenemos dos tipos:

    Cuantificador Universal: "x: Divide By

    "x: Join

    Ejemplo : Si hay un día cualquiera con lluvia entonces yo llevo paraguas

    (Hay (x, lluvia) ! Llevo (Yo, paraguas))

    "x (Hay (x, lluvia) ! Llevo (Yo, paraguas)) que al menos uno de los días llevo paraguas o todos los días. Existe al menos un día o todos.

    "x (Hay (x, lluvia) ! Llevo (Yo, paraguas)): Todos los días que llueve llevo paraguas.

  • CALCULO RELACIONAL ORIENTADO A TUPLAS

  • Las expresiones del cálculo de tuplas se construyen a partir de los elementos siguientes:

    • Variables de tuplas T, U, V... Cada variable de tupla se restringe a variar sobre alguna relación con nombre. Si la variable de tupla T representa a la tupla t, entonces la expresión T.A representa al componente A de t, donde A es un atributo de la relación sobre la cual varía T.

    • Condiciones de la forma x*y donde * es cualquiera de los símbolos =, <>, <, <=, >, >=, y al menos una entre la otra es una expresión semejante o una constante.

    • Formulas bien formadas.

    Variables libre y acotadas

    Cada ocurrencia de una variable de tupla dentro de una FBF es libre o acotada.

  • Dentro de una condición, todas las ocurrencias de las variables de tupla son libres.

  • Las ocurrencias de las variables de tupla en las FBFs (f), ~(f) son libres / acotadas según sean libres / acotadas en f. Las ocurrencias de las variables de tupla en las FBFs (f " g), (f " g) son libres / acotadas según sean libres/ acotadas en f o en g (cualquiera de las dos en donde aparezcan).

  • Las ocurrencias de T que sean libres en f son acotadas en las FBFs "T(f), "T(f).

  • Una expresión del cálculo de tuplas es de la forma

    T.A, U.B, … , V.C [WHERE f]

    Donde T, U, ... , V son variables de tupas; A, B, ... , C son atributos de las relaciones asociadas, y f es un FBF que contiene exactamente T, U, ... , V como variables libres. El valor de esta expresión es una proyección del subconjunto del producto cartesiano T. x U x ... x V para la cual f se evalúa como verdadera.

    SINTAXIS BNF PARA CALCULO RELACIONAL ORIENTADO A TUPLAS

  • rel-definicion ::= DEFINE RELACION nom-rela [nom-atributos]

  • var-definicion ::= RANGE OF nom-var IS expr

  • expr ::= objetivo | objetivo WHERE wff

  • objetivo ::= nom_variable . nom_atributo

  • wff::= predicados | (wff) | ~(wff) | wff " wff | wff " wff | wff ! wff | " nom-variable(wff) | " nom-variable (wff)

  • Predicado::= objetivo compa objetivo | objetivo compa consonante

  • Compa::= = | > | < | <> | >= | <=

  • TEMA 8 TEORÍA DE DISEÑO DE BASES DE DATOS RELACIONALES (I)

  • DESCOMPOSICIÓN DE ESQUEMAS.

  • DESCOMPOSICIÓN CON LA PROPIEDAD DE UNIÓN SIN PERDIDA DE INFORMACIÓN (LJ).

  • TEST DE LA PROPIEDAD LJ.

  • DESCOMPOSICIÓN CON PRESERVACIÓN DE DEPENDENCIAS.

  • ALGORITMO DE TEST DE PRESERVACIÓN DE DEPENDENCIAS.

  • FORMAS NORMALES BASADAS EN DEPENDENCIAS FUNCIONALES.

  • FORMAS NORMALES DE CODD.

  • PRIMERA FORMA NORMAL (1FN).

  • SEGUNDA FORMA NORMAL (2FN).

  • TERCERA FORMA NORMAL (3FN).

  • FORMA NORMAL DE BOYCE-CODD (FNBC)

  • ALGORITMO DE DESCOMPOSICIÓN EN FNBC CON LA PROPIEDAD LJ.

  • DESCOMPOSICIÓN EN 3FN DE CODD CON PRESERVACIÓN DE DEPENDENCIAS.

  • DESCOMPOSICIÓN EN 3FN DE CODD SON PRESERVACIÓN DE DEPENDENCIAS Y VERIFICACIÓN DE LA PROPIEDAD LJ.

  • 8.1 DESCOMPOSICIÓN DE ESQUEMAS

    {

    S#

    NOMS

    ESTADO

    CIUDAD

    P#

    NomP

    COLOR

    PESO

    CANTIDAD

    } = T

    R(T,L)

    L = { S# ! NOMS, ESTADO, CIUDAD

    ESTADO ! CIUDAD

    P# ! NOMP, COLOR, PESO

    S#, P# ! CANTIDAD}

    L = { R1, R2,…, Rk}

    Sea R(T,L) un esquema que presenta anomalías de inserción, borrado y modificación podemos descomponerlo en un conjunto de proyecciones para evitar las anomalías anteriores.

    Anomalía de inserción: Se define como la perdida de información producida por la imposibilidad de insertar una tupla en una relación al no conocerse el valor de algún atributo primario.

    Anomalía de borrado: Pérdida de información como consecuencia del borrado de una tupla.

    Anomalía de modificación: Necesidad de propagar modificaciones debido a un diseño redundante.

    Al proceso de descomposición de R en sus proyecciones (sin anomalías) se le denomina NORMALIZACIÓN, es la base para el diseño de la base de datos.

    Puede suceder esto:

    "r "R ! r " R1[T1] JOIN R2[T2] JOIN … JOIN Rk[Tk]

    "r "R ! r " R1[T1] JOIN R2[T2] JOIN … JOIN Rk[Tk]

    No se puede perder (o ganar) tuplas que están en el esquema original.

    8.2 DESCOMPOSICIÓN CON LA PROPIEDAD DE UNIÓN SIN PÉRDIDA DE INFORMACIÓN

    (LJ: Lossless Join)

    Sea el esquema R(T,L), L = { R1, R2,..., Rk} descomposición de R(T,L), Ri(Ti,, Li) especificación del esquema i-ésimo, decimos que f es una descomposición que cumple la propiedad de unión sin pérdida de información (LJ) respecto de L si y solo si para toda ocurrencia r " R se cumple que:

    r = R1[T1] JOIN R2[T2] JOIN … JOIN Ri[Ti] JOIN … JOIN Rk[Tk]

    Reunión de los atributos de los subesquemas

    8.3 TEST DE LA PROPIEDAD LJ

    Sea el esquema R(T,L), T = { A1, A2, ... ,An}, L = {x ! y " L / x " y " T}, l = { R1, R2, ... , Rk} descomposición de R(T,L), el algoritmo LJ es:

    Para verificar el cumplimiento de l de la propiedad LJ se construye una tabla donde las columnas son etiquetadas con los atributos de T y las filas etiquetadas con los atributos pertenecientes a cada uno de los subesquemas.

    En la intersección de ambas se sitúan el símbolo aj si el atributo Aj " Ti y el símbolo bij en caso contrario

    aj si Aj " Ti

    bij si Aj " Ti

    (i fila, j columna)

    Consideramos a continuación cada una de las dependencias x ! y de L, cada vez que consideramos una dependencia procedemos de la siguiente manera, si encontramos dos o mas filas que coincidan en las entradas correspondientes a x igualamos las correspondientes a y de la forma siguiente:

    Si un símbolo es aj hacemos su homologo = aj

    Si ambos son de tipo b igualamos el subíndice de uno de ellos a los del otro, se repite hasta que la tabla no varie.

    Si finalmente se encuentra una fila de la forma : (a1, a2, ... , an) la descomposición verifica la propiedad LJ y no la verifica en caso contrario.

    ALGORITMO Y EJEMPLO EN HOJAS DE EJERCICIOS (PAG. 9)

    8.4 DESCOMPOSICIÓN CON PRESERVACIÓN DE DEPENDENCIAS.

    Sea el esquema R(T,L) donde L = {x ! y / x " y " T}, l = { R1, R2, ... , Rk}, Ri (Ti, Li) esquema i-ésimo.

    Li = {xi ! yi / xi " yi " Ti}

    k

    Existe presenvacion de dependencias sii ( " Li)+= Li+

    i=1

    8.5 ALGORITMO DE TEST DE PRESENVACIÓN DE DEPENDENCIAS

    Veremos un algoritmo de preservación de dependencias de orden polinomial. Este algoritmo

    k

    calcula el diere de un descriptor x respecto a " Li sin necesidad de calcular L+, para ello hace uso de T-

    i=1

    operación de la siguiente manera:

    Sea Z un descriptor repecto del conjunto de dependencias funcionales L, defiimos T-operación como la sustitución de z por z " ((z^t)+ ^ T) donde el cierre se calcula respecto L. El proceso se repetirá tantas veces como subesquemas haya. Si al calcular la primera iteración z no cambia el resultado seria el

    k

    cierre de z respecto a (" Li).

    i=1

    En casa etapa se modifica el valor del descriptor al aplicar las K-Ti-operaciones para i=1 hasta k,
    k

    si al calcular una etapa no hubiese cambio el resultado es el cierre de z respecto a (" Li), de manera que si

    i=1

    k

    y <= z final ! la dependencia x!y " (" Li), se preserva.

    i=1

    "x!y " L, y " z final, entonces se preservan las dependencias y no lo harán en caso contrario.

    8.6 FORMAS NORMALES BASADAS EN DEPENDENCIAS FUNCIONALES

    8.6.1 FORMAS NORMALES DE CODD

    5FN

    4FN

    FNBC

    3FN

    2FN

    1FN

    8.6.1 PRIMERA FORMA NORMAL (1FN)

    Un esquema R(T,L) está en 1FN cuando todas sus entradas son simples " grupos repetitivos.

    Los valores de un atributo tienes que ser unicos.

    8.6.2 SEGUNDA FORMA NORMAL (2FN)

    Un esquema R(T,L) que está en 1FN está en 2FN cuando todos los atributos que no pertenecen a la clave primaria tienen una dependencia funcional total respecto de cada una de las claves.

    No se permiten dependencias funcionales parciales respecto de la clave primaria.

    8.6.3 TERCERA FORMA NORMAL (3FN)

    No puede existir dependencias funcionales transitivas respecto de la clave primaria. De esta forma se normalizan la mayoría de las Bases de Datos pero hay tres casos especiales.

  • 3FN

  • Mas una clave

  • Atributos solapados.

  • 1FN: Un esquema R(T,L) está en 1FN cuando todas las entradas son simples, no aparecen grupos repetidos.

    2FN: Un esquema R(T,L) que está en 1FN lo está en 2FN cuando todos sus atributos no principales tienen dependencia funcional total respecto a cada una de las claves.

    3FN: Un esquema en 2FN está en 3FN cuando ningún atributo no principal depende transitivamente de ninguna clave. Cuando no existe ninguna dependencia funcional transitiva respecto de la clave primaria.

    FNBC: Un esquema en 1FN está en FNBC cuando para toda dependencia funcional no trivial x ! y, x es clave.

    y " x

    x ! y Trivial si y solo si

    y = 0

    SEGUNDA FORMA NORMAL

    Diagrama funcional:

    Hay anomalías de inserción, borrado y modificación debido a una dependencia transitiva entre proveedor y estado y ciudad.

    Para eliminas esta dependencia transitiva se descompone en:

    Un esquema R(T,L) esta en 3FN si está en 2FN y si no existen dependencias funcionales transitivas respecto a la clave primaria. Con estas tres formar normales se normalizan todos los problemas.

    Hay tres casos especiales que estas tres formas normales no dan resultados idóneos:

    1º Caso: Tenemos mas de una clave candidata, estas son compuestas (mas de un atributo) y además se solapan

    2º Caso: Existen redundancias y la tabla está en 3FN, además hay tres atributos principales donde dos de ellos son independientes entre si y a su vez dependen del tercero.

    3º Caso: Un esquema que no se puede descompones en dos subesquemas pero si es mas de dos.

    Dado un estudiante y una materia solo " un profesor:

    Dado un estudiante y un profesor solo existe una materia:

    Están en 1FN, en 2FN y en 3FN.

    Para este caso aparece la FN de BOYCE-CODD (FNBC), dice:

    Un esquema R(T,M) en 1FN está en FNBC si para toda dependencia no trivial ("x ! y " L no trivial), x es clave.

    1FN

    2FN

    3FN

    FNBC

    Toda FNBC está en 1FN, en 2FN y en 3FN.

    2FN: Un esquema R(T,L) que está en 1FN lo esta en 2FN cuando todos sus atributos no principales tienen dependencia funcional total respecto a cada una de las claves.

    3FN: Un esquema en 2FN está en 3FN cuando ningún atributo no principal depende transitivamente de ninguna clave. Cuando no existe ninguna dependencia funcional transitiva respecto de la clave primaria.

    FNBC: Un esquema en 1FN está en FNBC cuando para toda dependencia funcional no trivial x ! y, x es clave.

    y " x

    x ! y TRIVIAL si y solo si

    y = 0

    EJERCICIO PROPUESTO: “Toda relación binaria esta en FNBC”. Explicación de la afirmación anteriormente citada.

    Relación trivial:

    y " x

    x ! y TRIVIAL si y solo si

    y = 0

    Ejemplo:

    AB ! B

    AB ! A

    AB ! AB

    AB ! Ø

    8.7 ALGORITMOS DE DESCOMPOSICIÓN EN FNBC CON LA PROPIEDAD LJ

    No preservan dependencias.

    Sea R(T,m) donde `m' es un recubrimiento no redundante, si existe una dependencia X ! A que pertenece a m donde X no es clave primaria, proyectamos R en R1 y R2 donde T1 = X " {A} (atributos de la dependencia) y T2 = T - {A} (atributos de la dependencia excepto la parte derecha que hemos escogido) y cumpliendo

    (T1 " T2) ! (T1 - T2).

    El ejercicio acabará siempre:

    Si " k ! A ; Si " k ! A

    EJERCICIO:

    Sea R(T,m) donde:

    T = curso, profesor, hora, aula, estudiante y grado.

    Restricciones semánticas:

    • Cada curso es impartido por un solo profesor.

    • A una hora y en un aula se imparte un solo curso.

    • A una hora un profesor está en una sola aula.

    • Cada estudiante tiene un grado por cada curso que sigue.

    • A una hora cada estudiante está en una sola aula.

    Obtener la descomposición en FNBC. Pasos a seguir:

  • obtener las dependencias.

  • Obtener recubrimiento no redundante.

  • Obtener clave.

  • Resuelto en hojas de ejercicios pagina 11 por detrás y siguientes.

    PUNTOS 8.8 Y 8.9 NO SE DONDE ESTÁN, PQ AQUÍ DESDE LUEGO QUE NO ESTÁN .................................................................. ..................................................................................................................................................................................................................................

    TEMA 9 TEORÍA DEL DISEÑO DE BASES DE DATOS RELACIONALES (II)

  • DEPENDENCIAS MULTIVALORADAS.

  • CUARTA FORMA NORMAL(4FN).

  • DESCOMPOSICIÓN EN 4 FN CON VERIFICACIÓN DE LA PROPIEDAD LJ.

  • DEPENDENCIAS MULTIVALORADAS EMBEBIDAS.

  • DEPENDENCIAS DE UNIÓN (DU).

  • QUINTA FORMA NORMAL (5FN).

  • 9.1 DEPENDENCIAS MULTIVALORADAS.

    Se desea diseñar una Base de Datos formada por profesores, materias y libros con las siguientes restricciones:

    • Un profesor puede impartir mas de una materia

    • Para una materia habrá mas de un libro y este puede ser compartido por varias materias.

    LIBRO

    AUTOR

    -------------

    *

    PROFESOR

    AP

    -----------

    *


    MATERIA

    MATERIA

    ----------

    *

    IMPARTE

    AP

    AUTOR

    MATERIA

    *

    *

    *


    MATERIA

    PROFESOR

    LIBRO

    BD

    I. GRAFICA

    J.F.

    V.W

    V.W.

    DATO

    PRIETO

    FDEZ

    PRIETO

    RDGUEZ

    Lo primero que tengo que hacer es pasarlo a primera forma normal (1FN)

    MATERIA

    PROFESOR

    LIBRO

    BD

    BD

    BD

    BD

    BD

    BD

    IG

    IG

    JF

    JF

    JF

    VW

    VW

    VW

    VW

    VW

    PRIETO

    DATA

    FDEZ

    PRIETO

    DATA

    FDEZ

    PRIETO

    RDGUEZ

    No existe ninguna dependencia funcional, pero hay muchísima redundancia, así que descomponemos la tabla:

    MATERIA

    PROFESOR

    BD

    BD

    IG

    JF

    VW

    VW

    MATERIA

    LIBRO

    BD

    BD

    BD

    IG
    IG

    PRIETO

    DATA

    FDEZ

    PRIETO

    RDGUEZ


    Y así eliminamos la redundancia. Esto se llama dependencia multivalorada (siempre entre tres atributos donde dos de ellos son independientes entre sí, pero a su vez dependen del tercero). En este caso son independientes Profesor y Libro pero dependen los dos de Materia.

    Toda Dependencia funcional es una dependencia multivalorada, pero no al revés, solo en el caso de que sean dos atributos.

    DV

    DMV

    DF

    Las dependencias MULTIVALORADAS son una generalización de las dependencias funcionales en el sentido en que toda dependencia funcional es una dependencia multivalorada aunque no toda dependencia multivalorada es una dependencia funcional.

    Las dependencias MULTIVALORADAS se dan entre tres atributos y se representan de la siguiente manera:

    A ! B | C

    MATERIA ! PROFESOR | LIBRO

    Y se leen de la forma: se dice que el atributo B o el atributo C es multidependendiente del atributo A, o bien que A multidetermina al atributo B o al atributo C.

    Dependencia multivalorada de un esquema R(T,L) donde T = {A, B, C} de la siguiente manera.

    A ! B se cumple en el esquema R si y solo si el conjunto de valores de B correspondiente al par valor de A, valor de C en R depende solo del valor de A y es independiente del valor de C, donde A, B y C pueden ser atributos compuestos.

    9.2 CUARTA FORMA NORMAL (4FN)

    Un esquema R(T,L) con atributos A, B y C se puede descompones en dos proyecciones que verifican la propiedad LJ del tipo:

    R1(A, B) y R2(A,C) si y solo sí en R se cumple las dependencias multivaloradas A ! B | C

    Un esquema R(T,L) esta en 4FN si y solo si siempre que exista una dependencia multivalorada en R tipo A ! B todos loa atributos de R dependen también funcionalmente de A, es decir, las únicas dependencias funcionales o multivaloradas en R son de la forma k! x, o sea, una Dependencia Funcional con respecto a una clave candidata k de algún otro atributo x. O lo que es equivalente: el esquema R esta en 4FN si esta en FNBC y todas las dependencias multivaloradas en R son de hecho dependencias funcionales.

    9.3 DESCOMPOSICIÓN EN 4 FN CON VERIFICACIÓN DE LA PROPIEDAD LJ.

    El algoritmo es el mismo que el de FNBC.

    Sea el esquema R(T,L), si R no es un esquema en 4FN tendrá al menos una dependencia multivalorada de la forma x ! y que no es trivial y con x no clave primaria.

    Descomponemos el esquema R en dos subesquemas: R1 y R2 donde T1 = {x " y} y T2 = T - {y} de esta manera verifica la propiedad LJ.

    EJEMPLO EN LAS HOJAS DE EJERCICIOS PAG. 14 POR DETRÁS.

    9.4 DEPENDENCIAS MULTIVALORADAS EMBEBIDAS.

    Se entiende por aquellas que aparecen en el proceso de descomposición de une esquema en subesquemas.

    EJEMPLO EN LAS HOJAS DE EJERCICIOS PAG. 15.

    9.5 DEPENDENCIAS DE UNIÓN.

    PROV

    PIEZAS

    PROYECTO

    SANCHEZ

    SANCHEZ

    PEREZ

    GARCIA

    PEREZ

    PEREZ

    SANCHEZ

    TORNILLO

    PERNO

    TORNILLO

    PERNO

    TUERCA

    TORNILLO

    TORNILLO

    PROY X

    PROY Y

    PROY Y

    PROY Z

    PROY X

    PROY X

    PROY Y

    PROV

    PIEZA

    SANCHEZ

    SANCHEZ

    PEREZ

    PEREZ

    GARCIA

    TORNILLO

    PERNO

    TORNILLO

    TUERCA

    PERNO

    PIEZA

    PROYECTO

    TORNILLO

    TORNILLO

    PERNO

    PERNO

    TUERCA

    PROY X

    PROY Y

    PROY Y

    PROY Z

    PROY X

    J

    O

    I

    N

    PROV

    PIEZA

    PROYECTO

    SANCHEZ

    SANCHEZ

    SANCHEZ

    SANCHEZ

    PEREZ

    PEREZ

    PEREZ

    GARCIA

    GARCIA

    TORNILLO

    TORNILLO

    PERNO

    PERNO

    TORNILLO

    TORNILLO

    TUERCA

    PERNO

    PERNO

    PROY X

    PROY Y

    PROY Y

    PROY Z

    PROY X

    PROY Y

    PROY X

    PROY Y

    PROY Z

    Este es el resultado al realizar el JOIN de las dos tablas de arriba, pero esto no es correcto, por que aparecen tuplas espureas. Y estas no deberían aparecer, por lo cual tenemos que encontrar otra solución.

    Tuplas espureas.


    La solución es añadir a las dos tablas anteriores (Proveedor-Pieza, Pieza-Proyecto) una tercera con Proveedor-Proyecto, y así arreglaríamos el problema.

    PROV

    PROYECTO

    SANCHEZ

    SANCHEZ

    PEREZ

    PEREZ

    GARCIA

    PROY X

    PROY Y

    PROY Y

    PROY X

    PROY Z

    Y así al realizar el JOIN entre las tres tablas nos daría el resultado buscado.

    PROV

    PIEZA

    PROYECTO

    SANCHEZ

    SANCHEZ

    SANCHEZ

    PEREZ

    PEREZ

    PEREZ

    GARCIA

    TORNILLO

    TORNILLO

    PERNO

    TORNILLO

    TUERCA

    TORNILLO

    PERNO

    PROY X

    PROY Y

    PROY Y

    PROY X

    PROY X

    PROY Y

    PROY Z

    ¿Pueden existir dependencias funcionales embebidas?

    No nunca, las Dependencias Funcionales dependen de la naturaleza de los datos y las Dependencias Multivaloradas dependen del contexto.

    Las Dependencias de Unión aparecen para dar respuesta a aquellos esquemas que tienen redundancias, pero no contienen ni Dependencias Funcionales ni Dependencias Multivaloradas, estos esquemas no se pueden descomponer en dos subesquemas, si no en mas de dos, para manejas estos casos anómalos tenemos las dependencias de reunión o unión y la Quinta Forma Normal (5FN).

    Una Dependencia de Union (DU) definida mediante la sentencia:

    DU (R1, R2, ... , Rn)

    Donde las Ri son esquemas de relación de R que especifican un conjunto de tuplas r " R donde este conjunto de tuplas original de R1, R2, ... , Rn, de la siguiente manera, el conjunto de tuplas original R se forma a través de la proyección R1[T1] JOIN R2[T2] JOIN ... JOIN Rn[Tn].

    Las Dependencias Multivaloradas es un caso especial de la Dependencia de Unión para cuando n=2.

    Una Dependencia de Unión es trivial si alguno de los esquemas de relación Ri es igual a R.

  • QUINTA FORMA NORMAL (5FN).

  • También llamada Forma Normal de Proyección-Unión, se define de la siguiente manera:

    Un esquema R(T,L) esta en 5FN con respecto al conjunto L de Dependencias Funcionales, Dependencias Multivaloradas, y Dependencias de Unión si para toda Dependencia de Unión NO TRIVIAL, DU (R1, R2, ... , Rn) en L+ cada Ri es una clave primaria de R.

    TEMA 10 SEGURIDAD E INTEGRIDAD

  • INTRODUCCIÓN.

  • SEGURIDAD: CONSIDERACIONES GENERALES.

  • INTEGRIDAD: CONSIDERACIONES GENERALES.

  • CONSIDERACIONES FINALES.

  • 10.1 INTRODUCCIÓN.

    Seguridad: Es la protección de los datos contra una alteración, destrucción o revelación no autorizada.

    Integridad: Exactitud o validez de los datos.

    Implicaciones de la Seguridad e Integridad.

    La seguridad que los usuarios estén autorizados para realizar lo que pretenden hacer.

    La integridad implica asegurar que los que tratas de hacer es correcto.

    Similitudes entre Seguridad e Integridad.

  • En ambos casos el sistema necesita saber las restricciones que los usuarios no deben violar.

  • El Sistema de Gestión de Base de Datos será el encargado de que la interacción con los usuarios cumpla las restricciones.

  • 10.2 SEGURIDAD. CONSIDERACIONES GENERALES

  • Aspectos sociales, legales y éticos.

  • Controles físicos. Quien tiene acceso al espacio donde esta la Base de Datos. Se refiere al espacio físico, donde esta el `ordenador' que contiene la Base de Datos.

  • Cuestión de Política interna. Que usuarios pueden acceder a que datos y como accede.

  • Problemas de operación. Tratamiento de contraseñas.

  • Controles de equipos. Dependiendo de las características de CPU pudiéramos considerar el área de almacenamiento para cada usuario.

  • Seguridad del Sistema Operativo. Poder borrar el contenido de las áreas de almacenamiento cuando ya no se necesita.

  • Materias de relevancia especificas para el Sistema de Gestión de Base de Dato. Propiedad de los datos. La unidad de información para seguridad puede ir desde un conjunto de tablas hasta un valor determinado. Así un usuario tendrá diferentes autorizaciones, según con los objetos de información que trate, a esto se le denomina propiedad de los datos. Hay que tener en cuenta que diferentes usuarios pueden tener diferentes derechos sobre un mismo objeto de información. Las decisiones de que derechos se le pueden conceder a cada usuario dependen de la política interna de la empresa. Para llevar a cabo que las decisiones de la política interna de la empresa se lleve a cabo por el Sistema de Gestión de Bases de Datos, este debe saber estas decisiones y debe ser capaz de recordarlas, y además, debe existir alguna forma de verificar una solicitud de acceso dada contra las restricciones de seguridad aplicables. Para saber que restricciones se le aplican a una solicitud, no basta con saber que solicitud es, si no también quien lo hace.

  • 10.3 INTEGRIDAD. CONSIDERACIONES GENERALES

    10.4 CONSIDERACIONES FINALES.

    Seguridad: Protección de la Base de Datos contra usuarios no autorizados.

    Integridad: Protección de la Base de Datos de usuarios autorizados.

    Tanto la seguridad con la integridad implican:

  • La definicion de restricciones

  • Especificar las medidas a tomar si se violan las restricciones.

  • Suspensión por parte del sistema de las operaciones de los usuarios para detectar tales violaciones.

  • Pagina 16

    Proveedores

    Partes

    Vbo de casi

    Lugares

    Departamentos

    Empleados

    Proyectos

    U1

    BD1

    U4

    U3

    U2

    SGBD

    GESTOR DE FICHEROS (G.F.)

    GESTOR DE FICHEROS (G.F.)

    B.D. Almacenamiento Físico

    Solicita 1 pagina

    ATENAS

    PARIS

    LONDRES

    SALAZAR

    S1

    20

    S1

    ACTIVA

    30

    S1

    S1

    CORONA

    JAIMES

    100

    40

    S#

    Cantidad

    NumP

    NumS

    Ciudad

    Peso

    Estado

    Color

    P#

    Proveedores

    Envío

    Proveedores

    Tuerca

    P1

    1

    10

    S1

    S2

    S5

    ----------

    -----------

    -----------

    100

    100

    100

    R

    Tornillo

    P3

    10

    S1

    -----------

    100

    S4

    -----------

    100

    P2

    Perno

    R

    20

    CANTIDAD

    S#

    P#

    NOMS

    CIUDAD

    LOCALIZ

    NOMP

    COLOR

    PESO

    LOCALIZ

    CIUDAD

    NOMS

    S#

    PESO

    COLOR

    NOMP

    P#

    CANTIDAD

    S#

    P#

    S#

    NOMS

    CIUDAD

    CIUDAD

    LOCALIDAD

    1FN

    2FN

    3FN

    FNBC

    S#

    NOMS

    ESTADO

    CIUDAD

    ESTADO

    NOMS

    S#

    S#

    CIUDAD

    E

    M

    P

    M

    P

    E

    K, A

    K ! A

    K: K

    K

    Ø

    K: K

    MATERIA

    PROFESOR

    LIBRO

    AP

    MATE

    AUTOR

    IMPARTE

    PROV

    PIEZA

    PROYECTO




    Descargar
    Enviado por:El remitente no desea revelar su nombre
    Idioma: castellano
    País: España

    Te va a interesar