BASE DE DATOS I OBJETIVO GENERAL DEL CURSO. El alumno será capaz de comparar los diferentes modelos de bases de datos en función de los conocimientos adquiridos y además podrá diseñar una base de datos. PROGRAMA GENERAL: 1 INTRODUCIR LOS CONCEPTOS DE BASE DE DATOS. 1.1 Definición de base de datos 1.2 Objetivos de los sistemas de base de datos 1.3 Arquitectura de los sistemas de base de datos 1.4 Independencia de los datos 1.5 Responsabilidades del administrador de una base de datos 2. CLASIFICACIÓN DE LOS MODELOS DE DATOS 3. MODELO, ENTIDAD, RELACION 3.1 Introducción. 3.2 Entidades y conjuntos de entidades. 3.3 Relación y conjunto de relaciones. 3.4 Diagrama entidad relación. 3.5 Reducción de diagramas de entidad relación. 4. MODELO RELACIONA. 4.1 Definición 4.2 Estructuras de datos relacionales. 4.3 Llaves primarias y foráneas. 4.4 Reglas de integridad. 4.5 Lenguaje de base de datos. 4.6 Algebra relacional. 4.7 Lenguaje estructurado de consultas 5. NORMALIZACIÓN 5.1 Introducción. 5.2 Datos no normalizados. 5.3 Primera y segunda forma normal. 5.4 Tercera forma normal y forma normal de Boyce-Codd. 5.5 Modelo ELKA. 6. MODELO DE DATOS JERARQUICO 6.1 Conceptos básicos. 6.2 Diagramas de estructura de árbol. 6.3 Recuperación de la información. 6.4 Actualización. 1 7. MODELO DE DATOS DE RED. 7.1 Conceptos básicos. 7.2 Modelo CODASYL DBTG. 7.3 Operaciones y procesamiento de conjuntos DBTG. BIBLIOGRÁFIA - Introducción a los sistemas de base de datos. C.J. Date Addison – Wesley Ed. Iberoamericana. Edición. 3 2 BASE DE DATOS I 1. Introducción a los conceptos de base de datos. Base de datos. Definición: - conjunto de datos. relacionados entre sí. que se puedan almacenar. Sin redundancia ( que no se repitan ). Puedan ser compartidos. Es un conjunto de datos relacionados entre sí, que pueden ser almacenados sin redundancia y además puedan ser compartidos. Definición de un sistema de base de datos Sistema constituido por: - HW { equipo físico de computo} - SW { sistema operativo, base de datos management system, aplicaciones }. - Base de Datos { definido en almacenamientos físicos }. - Usuarios { programadores, administradores de la base de datos, finales }. Es un sistema computarizado cuyo objetivo es llevar a cabo un mantenimiento de archivos. Definición de un sistema administrador de una base de datos ( Data Base Management System ). El es sw que se encarga de crear un ambiente en el cual se pueda almacenar y recuperar datos en forma sencilla (optimizar el uso de B.D). OBJETIVOS DE LOS SISTEMAS DE BASE DE DATOS. 1. Se podrá usar los datos definidos en la base de datos de múltiples maneras. Un Sist. De B. D. Va poder atender diversas necesidades de un conjunto de usuarios. 2. Flexibilidad de acceso a los dato. Diferentes maneras de poder accesar los datos (diferentes rutas de acceso ). 3. Facilidades en el uso para los usuarios. El sistema ofrece facilidad para accesar los datos del sist. 4. Claridad cada usuario sabe que datos a cuales va a tener acceso (va a manejar) por que el sistema (admón. de Base de Datos). Les dice que esquemas de datos van a requerir. 5. Desempeño del sistema. Atención rápida y eficiente a los pedidos del usuario. 6. Rápida atención a imprevistos. El sistema tiene un lenguaje de soporte que permite solucionar imprevistos. 7. Disponibilidad constante de los datos para el usuario. 3 8. Protección a la inversión intelectual. Los programadores hacen una inversión intelectual. Si se desarrolla un programa de aplicación este no debera cambiar si la B.D. cambia. 9. Facilidades de cambio. La B.D. puede crecer, disminuir, cambiar sin que los programas de aplicación se vean afectados. 10. Menor proliferación de dato. Que no haya redundancia en los datos. Implica que en diferentes aplicaciones y en diferentes niveles se deba eliminar la redundancia de los datos. 11. Coherencia en los datos. Que haya una relación importante definida en los datos pero sin repetición de los mismos. 12. Reserva. El admón. De la base de datos va a tener una reserva de datos ( sist. De seguridad) para evitar el acceso a todos los usuarios a datos que se consideran confidenciales. 13. Protección y seguridad para la base de datos. El sistema debe tener protección contra perdidas para la base de datos. 14. Disminución de costos. Estos es por la seguridad que proporciona las bases de datos. 1.2 Arquitectura de un sistema de B. D. Lenguajes anfitriones. Para comunicación entre usuarios y sistema. Lenguajes que pueden soportar la B.D. ej. Pascal, Cobol, etc. (para tener acceso a datos ). Lenguaje de definición de datos (DDL) definición de los objetos Definición de los objetos y las estructuras de los mismos El sublenguaje Del sistema de La B.D. (DSL) Lenguaje de manipulación de datos (DML) permite manejar los datos a traves de una serie de consultas. Acceso Datos en forma rápida. Se puede usar este lenguaje o por lenguajes anfitriones. LA1 DSL LA2 DSL VISTA EXTERNA A NIVEL EXTERNO ESQUEMA EXTERNO A 4 Definiciones de los conceptos básicos de la arquitectura anterior: Lenguaje anfitrión . Lenguaje del usuario ( COBOL, PL1, lenguaje de consulta, etc.). Que incluye un sub-lenguaje de datos (D.S.L). El D.S.L. es una combinación de dos lenguajes: - Lenguaje de definición de datos (D.D.L) permite la definición o descripción de los objetos de la base de datos - Lenguaje de manipulación de datos (D.M.L.) que apoya el manejo o procesamiento de esos objetos. La manipulación se lleva acabo mediante proposiciones de llamado suministradas como parte del sistema administrador de la B.D. (D.B.M.S.) Vista externa. Contenido de la base de datos tal como la ve un usuario especifico. Para ese usuario la vista ext. Es la B.D. Esquema externo. Definición de la vista externa a través de registros lógicos externos. El esquema ext. Escribe usando la parte del lenguaje de definición de datos ( D.D.L) del D.S.L., la definición de las proposiciones ejecutables (los llamados) que transfieren información a la base de datos y desde esta se hace usando la parte del D.M.L. Vista conceptual. Representación del contenido total de información de la B.D., en forma relativamente abstracta en comparación con la forma en la cual los datos se almacenan físicamente. Se compone de ocurrencias múltiples de registros conceptuales, un registro conceptual no siempre es idéntico a un registro externo ni aun registro almacenado. Esquema conceptual. Definición de la vista conceptual, por medio de los distintos tipos de registros conceptuales, el esquema conceptual, se escribe utilizando el D.D.L. conceptual. Vista externa. Representación del nivel muy bajo de la D.B. en su totalidad, se compone múltiples ocurrencias de tipos de registros internos (registros almacenados). La vista interna se mantiene a un paso del nivel físico, ya que no atañe o registros físicos o bloques ni a ninguna restricción especifica de dispositivos tales como capacidad de registros o pistas. Esquema interno. Descripción de la vista interna, por medio de los diversos tipos de registros almacenados, especificación de índices, representación de los campos almacenados, definición de la secuencia física de los registros almacenado, etc. El esquema interno se escribe con el D.D.L. interno. 5 Correspondencia externa conceptual. Correspondencia entre una vista externa especifica y la vista conceptual. Especifica de que manera los registros externos y los conceptuales se corresponden. Correspondencia conceptual interna. Define la correspondencia entre la vista conceptual y la vista interna. Especifica de que manera los registros conceptuales y los campos se corresponden con sus contra partes almacenadas. Si se cambia la estructura de la base de datos almacenada, la correspondencia conceptual interna debe cambiarse en reciprocidad para que el esquema conceptual no varíe. D.B.M.S. (sistema de admón. De la base de datos). Software que maneja todos los accesos a la base de datos. 1.3 - INDEPENDENCIA DE LOS DATOS Independencia física. El sistema debe tener la capacidad de si varia la B.D. no será necesario cambiar los programas de aplicación. Independencia lógica. Si el esquema conceptual cambia no deberá cambiar los programas de aplicación. Definición de independencia de los datos: Es la capacidad que debe tener el sistema de si se varían el esquema conceptual de la base de datos no será necesario cambiar los programas de aplicación. 1.4 RESPONSABILIDADES DEL ADMON DE LA B.D. 1. Definir el contenido de la B.D. El administrador deberá definir las entidades y la información que considere relevante de cada uno de ellas que se deberá almacenar en una base de datos. Definición del esquema conceptual. (¿ que se va a guardar?). 2. Definición de las estructuras de almacenamiento. Y las estrategias de acceso a la B.D. (¿ como lo va a guardar ?). Definición del esquema interno. Definición de la correspondencia entre el esquema interno y el esquema conceptual. 3. Vinculación con los usuarios. El administrador deberá vincularse con los diferentes usuarios para las necesidades de los mismos y poder establecer el esquema externo. Además de la correspondencia entre el esquema conceptual y el esquema externo. 4. controles de validación y de autorización. Como extensión del esquema conceptual administrado deberá definir los procesos de validación y los controles de autorización. 5. Estrategias de respaldo y recuperación. El administrador debe diseñar las estrategias de respaldo y de recuperación de datos, ante imprevistos, para evitar daños a la base de datos. 6. Controles de desempeño y respuestas a los cambios de requerimientos. El administrador deberá definir sistema de control desempeño, además de estar continuamente atendiendo a los posibles cambios de requerimientos. 6 II CLASIFICACIÓN DE LOS MODELOS DE DATOS. MODELOS DE DATOS. Son herramientas conceptuales para describir los datos su semántica (significado de los datos), sus relaciones y sus limitaciones. Lógicos: se utilizan en la descripción De los datos en los niveles externo y conceptual. ( son muy usados.) Modelos De Datos Basados en objetos Basados en registros. Físicos: descripción de los datos en el nivel interno. no es necesario describir otra documentación a Parte de la programación. No se utilizan generalmente, porque en la realización Del esquema interno la documentación debe ser Suficiente para describir el desarrollo y el modelo de Datos. Modelos lógicos basados en objetos. La ventaja sobre los basados en registros en esta flexibilidad para describir claramente las limitantes de los datos. MODELO ENTIDAD-RELACIÓN - Modelos lógicos basados en registros. - Modelo relacional - Modelo de red - Modelo jerárquico Diferencias generales entre los modelos basados en registros: Registro. Cuenta habiente Cuenta Nombre Dirección No. Ch No. Cta. Saldo Modelo entidad-relación Es un modelo natural ya que se basa en la definición de objetos existentes a los que les llaman entidades y las asociaciones entre estas entidades los define a través de relaciones 7 RELACIÖN Objeto Existente Cliente objeto existente Modelo Relacional Describe los datos y las relaciones de los mismos a través de tablas CLIENTE Nom # PRODUCTOS Edo Nom. # $ Tabla que Relaciona Las 2 tablas Modelo de redes En este modelo los datos se escriben como registros y la conexión entre ellos se define con el uso de apuntadores. La relación entre los registros se encuentra establecido a través de conjuntos. Modelo jerarquico Los datos y la vinculación entre los mismos se establecen igual que el modelo anterior (usando registros y apuntadores) sin embargo el modelo se organiza de acuerdo a un modelo de arbol Cliente Registro padre Relación 1:n Producto Registro hijo III MODELO ENTIDAD - RELACIÓN 8 Entidad. Es un objeto existente que puede ser diferenciado de otros. Puede ser físico o conceptual. Ejemplo: clientes, días festivos. Conjunto de entidades. Agrupación de entidades del mismo tipo ejemplo : Todos las clientes se agrupan en el grupo llamado clientes. Atributos. Elementos que caracterizan una entidad. Ejemplo: cliente_nom, estados. Dominio. Es el conjunto de valores que puede tomar o serle asignado un determinado atributo. Ejemplo: el dominio de estados serian los edos. de la república. El dominio de Nom_clientes serian todos los números enteros. Conjuntos Edos. de la rep. clientes client dominio Atributo. (definición formal). Es una función que mapea un conjunto de entidades a un dominio. Ejemplo: Juan Pérez Producto. Conjunto de entidades Producto_no, producto nombre, $ unitario atributos 324 Relacion Relación. Es la asociación entre entidades Conjunto de relaciones. Es la agrupación de relaciones del mismo tipo. Estos conjuntos pueden contar también con atributos descriptivos. Ejemplo: compra conj. De relaciones Juan Perez producto no. 324 Compra : fecha de realización unidades compradas Atributos descriptivos. 9 Definición formal de una relación. Es un subconjunto del producto cartesiano generado por los conjuntos de entidades. R <- { E1 * E2 * E3 *........En} Limitantes de mapeo. Son limitantes que se deban satisfacer al asociarse entidades de diferentes conjuntos. Analizaremos dos limitantes de mapeo. Cardinalidad: adjetivos que indica cantidades de objetos. Cardinalidad de mapeo es una limitante que define la cantidad de entidades de las que se puede asociar otra entidad bajo una relación establecida. Considérese un conjunto A de entidades y un conjunto B también de entidades, además de una relación establecida entre los mismos. Las cardinalidades que se pueden definir son: a) Una a Una. Una entidad del conjunto A se asocia con una entidad del conjunto B y una entidad del conjunto B se asocia con una entidad del conjunto A. A B A1 B1 A2 B2 b) Uno a Muchos. Se define esta cardinalidad cuando una entidad en el conjunto A se puede asociar con varias entidades del conjunto B, pero una entidad del conjunto B solo puede asociarse con una entidad del conjunto A. A B A1 B1 A2 B2 A3 B3 Productos -> clientes 1: N un cliente solo puede comprar un tipo de producto, pero un producto puede ser vendido a muchos clientes. 10 c) Muchos a Uno Se define esta cardinalidad cuando una entidad del conjunto A se puede asociar a uno del conjunto B, pero una entidad del conjunto B se puede asociar a varias entidades del conjunto A. A1 Producto cliente N:1 Un clie nte solo puede comprar varios Tipo de producto, pero un tipo de producto puede ser vendido a un clientes. B1 A2 B2 A3 A4 B3 d) Muchos a Muchos Se define esta cardinalidad cuando una entidad del conjunto A puede asociarse con varias entidades del conjunto B y una entidad del conjunto B puede ser asociada en varias entidades del conjunto A. A1 A2 A3 A4 A5 B1 B2 B3 B4 B5 Producto cliente Dependencia existencial. Es otra limitante importante que se refiere para existir una entidad (subordinado) es necesario que exista otra entidad (dominante). Ejemplo: Cuentas transacciones Cuenta_no saldo Tran_no 1 2 3 Dominante trans_tipo X Y V importe $ $ $ subordinado Si se elimina cuenta las transacciones se quedan sin relación, por lo tanto es cuenta una entidad dominante,(si no hay cuenta no hay transacción) sin embargo si se elimina una transacción la cuenta sigue existiendo y es una entidad subordinada. Llaves Super llave. Es un conjunto de atributos que permiten diferenciar las entidades dentro de un conjunto de entidades Ejemplo: 11 En el conjunto de entidades CUENTA C.no { Cuenta_no, saldo } -> super llave saldo { Cuenta_no } super llave. El saldo no puede ser super llave por que por casualidad varios clientes pueden tener el Mismo saldo. El número de cuenta si porque cada Cliente tiene una llave diferente. Llaves candidatas. Son las super llaves mínimas, esto es, aquellas super llaves que no tienen un subconjunto propio que sea super llave. Super llave {cuenta_no, saldo } Esta no puede ser llave candidata porque posee un subconjunto propio que sea super llave que es {Cuenta_no.} {cuenta-no } puede ser llave candidata, por que dentro de este conjunto no hay un subconjunto que sea super llave. Llave primaria. Es la llave candidata elegida por el administrador En el ejemplo seria cuenta_no la llave primaria. Conjunto de entidades débiles. Es un conjunto cuyos atributos no permiten la definición de una llave primaria, por lo tanto al conjunto de entidades que si lo permiten se llama entidad fuerte. Ejemplo: Fuerte: cuenta Débil: transacción. Definición de una llave primaria para un conjunto de entidades débiles. La definición de esta llave se hace asociando la llave primaria de la entidad fuerte con el discriminador de la entidad débil. Un discriminador es un conjunto de atributos que distinguen a las entidades débiles que están asociadas con una entidad fuerte. Ejemplo: Clienta Cuenta_no Transacciones saldo Trans_no trans_tipo importe 2030 Llave primaria: no.cuenta Ejemplo 2030 1 2 3 1 2 no_trans. x y x x x 1 Identifica que elementos de trans. 12 Se asocia con cuentas. Trans_no. Trans_tipo. 1 x Importe $ Definición de llaves primarias La definición se hace asociando las llaves primarias de los conjuntos de entidades que intervienen en esa relación. Diagrama Entidad-Relación. Se define con los siguientes elementos: - Rectángulo. Para identificar conjunto de entidades - Elipses. Para identificar atributos de entidades - Rombos. Que definen las relaciones entre los conjuntos - Flechas. Para definir las cardinalidades. - Líneas. Para asociar atributos con conjuntos de entidades y estos con relaciones Notas : - Cuando se trate de un conjunto de entidades débiles hay que dibujar un rectángulo dentro de otro, además la línea que lo asocia con el conjunto de relaciones debe ser doble. - En la definición de atributos se debe subrayar la llave primaria. El discriminador se subraya con un línea doble . Ejemplos: - Defina el modelo conceptual de una base de datos usando el diagrama entidad relación, para los siguientes incisos: a) Considere una compañía que vende distintos productos clasificándolos por una clave, un nombre y definiéndoles su precio unitario. La venta de los productos se hace a nivel nacional, cobrándose dependiendo del estado una tasa o importe por envío. Lógicamente se requiere de información de los clientes como: nombre, dirección No_cliente, etc. cantidades dirección 2 productos M M ordenes clientes M Nombre cliente No_cliente Cve_prod Nombre_prod 1. clien_es 2. precio. Prod fecha 1 estado 13 b) sea una organización en la que cada cuenta habiente realizo una serie de transacciones que pueden ser de tipo A,B,C,D. La información de cada cuenta habiente requerida defínala usted. Importe saldo No-cta Nombre transacciones operación Cuenta_habiente Fecha Tipo-trans. No-trans. ======= Caso especial: Considere la definición del modelo conceptual para el caso en que se tenga que asociar un conjunto de entidades consigo mismo: Sea la definición de un conjunto de entidades llamadas personal, en donde cada entidad de este conjunto puede relacionarse con los demás asumiendo un papel definido: Trabajador o jefe ( o ambos). Para ilustrarlo considere : jefe Cve_emp PERSONAL t trabajador Trabaja con R.F.C. Nombre Puesto Depto Llaves: (con respecto a la relación) Primarias: Cve_emp-jefe Cve_emp_trabajador 14 Ejercicio1: Desarrolle el modelo conceptual de la base de datos para una organización que se dedica a rentar departamentos. Descripción. Sea una organización que se dedica a rentar departamentos, en donde no se restringe el número de departamentos rentados por cualquier inquilino; los datos que se le piden a este son: El R.F.C., nombre, referencias comerciales y personales. En cuanto a los departamentos, con la renta de un departamento. Se le asigna una o más áreas determinadas de estacionamiento, a cada departamento se le identifica con una clave, además se le señala el costo. Se lleva un registro de la cantidad de los bienes dispuestos en cada departamento usando códigos, donde cada código representa un objeto (cocina integral, comedor, etc.). Además se tiene un listado de los pagos ( Cve.de pago, descripción) por departamento. Relación 1:N -> R1,R2, ....Rn Relación N:N con las primeras letras da las entidades. Falta diagrama Entidades Fuertes Inquilinos (rfc, nombre, refcom, ref per). Depto (cve_dpto, costo). Estacionamiento (Cve_est, des_bienes) Pagos (Cve_pago, des_pago, fecha-pago). Relación. R1 (inquilino,depto) R2 (depto, estacionamiento) Dep_bien (depto, bienes, cant) R3 (pagos, depto). 15 Ejercicio 2. Defina un modelo conceptual de una base de datos para un sistema de control presupuestal, bajo las siguientes consideraciones: 1. El presupuesto se elaboro en base a proyectos 2. El formato que se considera es: Presupuesto por proyecto Cve. Del proyecto:____ Nombre:_____ Descripción:______ Dpto. que coordina:______ Cve: ___ nombre:___________________ Empleado responsable del proyecto:_____ Cve:_____ nombre:_______ Desglose de conceptos Cve descripción presupuesto Total:____________ Empleados que participan . Cve. Nombre Puesto Cve puesto sueldo % Participación presupuesto Total:_______________ 3. Cada proyecto debe estar asignada a un departamento, y un departamento puede tener a su cargo uno o mas proyectos. 4. Se asigna para cada proyecto a un empleado responsable y un empleado puede ser responsable de mas de un proyecto. 5. En un proyecto pueden intervenir varios empleados y un empleado puede intervenir en uno o mas proyectos. El presupuesto de cada empleado se calcula multiplicando su porcentaje de participación por el sueldo. 6. El modelo debe contener toda la información que se presenta en los formatos, con excepción de los campos calculados (totales y presupuestos). Es importante que el modelo incluya una descripción de cada puesto. 16 Entidades fuertes. - Proyecto ( Cve_proy, nombre, descripción) - Departamento (Cve_depto., nombre) - Empleado (Cve_emp., nombre) - Conceptos (Cve_concepto, Desc_concepto) - Puesto (Cve_puesto, sueldo, desc_puesto) Relaciones: - R1 (proyectos,deptos) - Pro-emp (proyecto, empleado_part, por_part) - R2 (empleado-responsable, proyecto) - Pro-con (proyecto, concepto, cantidades) - R3 (puesto, empleado) - R4 (depto, empleado) 3 1 deptos 10 6 5 proyectos 8 2 4 empleados 9 11 7 12 15 conceptos 13 14 16 puestos 17 18 19 20 1. cve depto 2. nombre 3. Cve_proy 4. Nombre 5. Descripción 6. Cve_empr 7. Nombre 8. R1 9. Pro-emp 10. Cantidades 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Pro_con Por_part Cve_concep R2 R3 Desc_conc Cve_puesto Sueldo Desc_puesto R4 17 Ejemplo 3. Desarrollo del modelo conceptual de la base de datos para una compañía que se dedica a reparar aparatos eléctricos. Descripción: Sea una compañía en la que un cliente puede solicitar que se reparen varios aparatos, para ello se dispone de un conjunto de empleados. Un empleado esta capacitado para hacer reparaciones distintas, pero el ajuste de un aparato puede requerir la intervención de varios empleados, en este ultimo caso se lleva un registro de las horas del empleado dedicadas a reparar. A cada empleado se le asigna equipo y mesa de trabajo (ambos identificables por claves). Hay que considerar que por la reparación de determinado aparato se necesita cierto tipo de refacciones (por cada tipo se tiene descripción y clave). Además se lleva acabo los siguientes registros de información: Para cliente: cve_cliente, nombre, dirección y teléfono Para empleado: cve_empleado, nombre y dirección. Para aparato: cve_aparato, descripción, fecha _entrada y fecha_salida. - Entidades: Clientes (No_cliente, nombre, dirección, telefono) Aparatos (Cve_aparato, descripción, fecha, fecha_sal) Empleados (Cve_emp, nombre, dirección) Refacciones (descripción, Cve_ref) Equipo (Cve_equ, fecha_ent, fecha_recib) Relaciones - R1 (aparatos, clientes) Emp-apar (empleados, aparatos, hr_recibo, hr_entrega) R2 (empleados, equipo) R3 (empleados, mesa_trabajo) Apar_refac (aparatos, refacciones, cantidad) 18 5 1 CLIENTES 2 6 APARATO R1 8 3 REFACCIONES 10 9 1 1 4 1 3 1 7 1. Dirección 2. Tel 3. Nombre 4. No_cliente 5. Fecha_ent 6. Fecha_sal 7. Cantidad 8. Cve_aparato 9. Descripción 10. Apar_ref 11. Descripción 12. Cve_ref R2 1 8 1 9 2 0 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 1 2 1 5 14 EMPLEADOS EQUIPO 1 6 7 2 1 MESA_TRABAJO R3 2 2 2 3 2 4 Hr_recibido Emp_apar Hr_entrega Fecha_ent Cve_equipo Fecha_reg Cve_emp Nombre Dirección Fecha_ent Cve_mesa Fecha_recib 19 4) Jerarquía con el mismo tipo de registro de mas de un nivel. No se permite que el mismo tipo de registro sea a la vez propietario y miembro de un conjunto de DBTG. EJ EMP ENLACE EMP X E1 E2 EMP 4 ENLACE EMP X E12 E13 Ejemplos de redes. Modelo de redes en caso que las entidades sean diferentes: * quizá falten apuntes * Reducción del diagrama entidad relación a tablas I. Conjuntos de entidades fuertes LLAVE E LLAVE E1 E2 20 E1 E2 E II. Conjunto de entidades débiles D LLAVE F F DIS D1 D2 D D2 DIS D1 CLAVE F III Conjunto de relaciones a) Cualquier caso. R R 1 E1 LLAVE -E1 R R1 R2 E2 LLAVE - E2 R 2 LLAVEE1 LLAVE - E2 b) cuando se relacionan con si misma papel-1 E papel-2 R E LLAVE_E PAPEL_1 LLAVE_E R2 PAPEL_2 Reducción a tablas del ejercicio 3 Clientes NO_CLIENTE NOMBRE DIRECCION TEL Aparatos CVE-APARATO DESCRIP FECHA-ENT FECHA-SAL Refacciones CVE_REF DESCRIPCIÓN Equipo CVE_MESA FECHA-ENT FECHA-RECIBO 21 mesa – trabajo Empleados CVE_EMP NOMBRE DIRECCION CVE_MESA FECHA-ENT FECHA-RECIB R1 R2 NO-CLIENTE CVE-APARATO R3 CVE-EMP CVE-EMP CVE-EQUIPO Apar-ref CVE-MESA CVE-APARATO CVE-REF CANTIDAD Ejemplo: Grado de relación cliente =3 (no-cliente,nombre,edo). Grado de relación cargo =2 (estado,cargo-ent) Archivo binario formado por reg del mismo tipo Relación Cliente Tabla Cliente Archivo Cliente No nombre edo Cliente reg 0 tupla 0 No nombre edo cliente reg1 tupla 1 No nnombre edo cliente reg 2 tupla2 Dominio : El dominio de un atributo son todos los valores posibles que pueden tomar dichos atributos Ejemplo: De la tabla anterior: Domain Número-cliente: char (3) Número-cliente (1)=”c” Domain Nombre-cliente: char (30) Domain Edo-cliente: char (10) 22 {Ver, Qroo, Gto) Relación clientes (no-clientes: número-cliente; nombre: nombre-cliente; estado: estado-cliente) Llaves. Llaves candidatas: Es un conjunto de atributos que permiten distinguir una entidad de otra o una asociación de entidades dentro de una relación. Llave primaria: Es una llave candidata elegida por el administrador de la BD. Llave alterna: son las llaves candidatas que no fueron elegidas. Reglas de integridad: 1. Integridad de la entidad. Ningún componente de un valor de una llave primaria puede ser nulo Si su valor es nulo se puede identificar la tupla. 2. Integridad de referencia. (definición de llaves foráneas). Sea D un dominio primario (sobre el que se define alguna llave primaria de un solo atributo), en el ejemplo numero-cliente y estado-cliente y sea R1 una relación con un atributo A que se define sobre D. En el ejemplo: R1 Cliente. D Edo-cliente A estado. Entonces, en cualquier instante dado, cada valor de A en R1 debe ser o bien (a) Nulo, o bien (b) igual a v, en donde v es el valor de la llave primaria de alguna tupla de relación R2 con llave primaria definida sobre D, R1 y R2 no son por fuerza distinta. R1 cliente No-cliente nombre C01 Juan P estado Gro V R2 cargo estado cargo-ent Qro Puede ser igual (a) puede ser nulo Llave foránea: es un atributo como A, ejemplo para la relación de cliente la llave foránea es estado. Es un atributo cuyo dominio es igual al dominio de una llave primaria de otra relación. 23 Ejemplos: Partes No. Parte proveedor Nombre color peso ciudad No-prov. Nombre edo ciudad a) Es el atributo ciudad llave foránea de la tabla partes? No, ciudad que Ciudad debe ser la llave principal en otra relación. b) Es el atributo ciudad llave foránea de la relación proveedor? No, misma causa c) Es el atributo ciudad llave foránea de las dos relaciones? No, misma causa d) Es el atributo ciudad simplemente un atributo? Si Extensión de una relación. Es equivalente a la cardinalidad. La extensión de una relación varía en función del tiempo. No de tuplas Comprensión de una relación. Es la parte permanente de la relación. No depende del tiempo. Esta constituido por: a) Estructura nominadora: Es la definición de la relación. Definición de sus atributos y definición de sus dominios correspondientes a sus atributos. b) Restricciones de integridad Restricciones de las llaves Integridad de referencia (restricciones) Otras restricciones (particulares del modelo) Restricciones de las llaves. Definición explícita y correcta de los atributos que definen las llaves candidatas. Integridad de referencia. Definición de las llaves foráneas. Modelo relacional SYSTEM – R Fue desarrollado en la IBM en los años 74-79 es el primer prototipo relacional más completo sobre el cual otros sistemas han hecho referencia. Se considera en el curso como un modelo para la aplicación de los diferentes ejemplos. 24 Arquitectura del SYSTEM- R Nivel Externo Usuario structured query languaje. SQL - Lenguaje estructurado de consultas VISTA A Nivel Conceptual TABLA DE BASE B1 Nivel Interno ARCHIVO ALMACENDO A1 TABLA DE BASE B2 VISTA B TABLA DE BASE B3 ARCHIVO ALMACENDO A2 TABLA DE BASE B4 ARCHIVO ALMACENDO A3 Leng. De definición de Datos (DDL ). SQL Sub lenguaje ARCHIVO ALMACENDO A4 Esq. Ext definición De vistas Esq. Conc. Defif de Las tablas de base Esq. Int. def. de los Indices de los archivos Leng. De manipulación de datos(DML) - Esquema externo Aplicación consulta interactiva (UFI) - Esquema conceptual Ambiente de programación SQL inmerso es mezclar instrucciones en DML en el lenguaje anfitrión (PLI, COBOL). El usuario puede relacionarse directamente por las vistas o por las tablas base. Vistas. 25 Son las tablas virtuales, generadas por ña combinación de atributos de las tablas de base. Se definen en le nivel externo usando el DDL, del SQL. Es importante considerar que las vistas representan una ventana de las tablas de base por lo que cualquier modificación que se haga a los datos de una vista realmente se hará sobre las tablas de base. De esto se puede inferir que las vistas solamente se encuentran definidas en el diccionario el sistema y no hay un archivo para cada una de ellas. Tablas base. Son las tablas que tienen existencia propia, esto es cada tabla corresponde a un archivo del sistema. La creación o destrucción de las tablas se hace usando el DDL del SQL. Ejemplo. Ver en le libro. Archivos: En la parte física del sistema representan a cada una de las tablas de base, de tal manera que el nombre de un archivo corresponde al nombre de la tabla de base, los registros del archivo a las tuplas y los campos de los registros a los atributos. Leng. Subconjunto de un monoide sobre un alfabeto. Algebra relacional: Es una estructura sobre la que se basa cualquier lenguaje de un modelo relacional. En general representa a un conjunto de operaciones las que se pueden aplicar sobre las relaciones. Unión: (solo se pueden abrir tablas compatibles que tengan los mismos atributos Conjunto de temas que están ordenadas y tienen los siguientes campos: Clientes A Cliente B No- cliente Nombre Estado No-cliente Nombre Estado C01 Juan Pérez Gto. C01 Juan Pérez Gto. C02 Luis Glez. Gto C03 Sofía López Ags. Cliente_A union Cliente_B (0) No-cliente Nombre Edo. C01 C02 C03 Juan Pérez Gto. Luis Glez. Gto. Sofía López Ags. Intersección de relaciones. Cliente A intersección No_cliente Cliente _B nombre estado 26 C01 Juan Pérez Gto. Diferencia : La diferencia entre las tablas A y B (A-B). Son las tuplas que corresponden a A y no corresponden a B. Cliente_A menos Cliente_B No_cliente nombre C02 estado Luis Glez Qro. Cliente_B menos Cliente_A No_cliente C03 nombre estado Sofía López Ags. Producto cartesiano Es la relación de una tupla de una relación con las tuplas de otra tabla. Las relaciones pueden o no ser compatibles. Ejemplo: Cliente A No_cliente nombre C01 Juan Pérez C02 Luis Glez relación A No_cliente No_compra cuenta C01 P1 20 C01 P2 18 C03 P1 12 estado Gto Qro Grado 3 Cardinalidad = 2 Grado = 3 Cardinalidad = 3 Estas tablas no son compatibles: Cliente_A veces Relación_A No_cliente C01 C01 C01 C02 C02 C02 nombre estado No_cliente Juan Pérez Juan Pérez Juan Pérez Luis Glez Luis Glez Luis Glez Gto Gto Gto Qro Qro Qro No_compra cuenta C01 C01 C03 C01 C01 C03 P1 P2 P1 P1 P2 P1 20 18 12 20 18 12 Cardinalidad = 2 x 3 = 6 Grado = 3 + 3 = 6 Reunión. 27 Considera atributos comunes en las dos relaciones. No se pueden repetir atributos. (se hace una reunión de los que son iguales en las 2 tablas. Cliente_A Reunión Relación_A No_cliente nombre estado No_compra cuenta C01 C01 Juan Pérez Juan Pérez Gto Gto P1 P2 20 18 Nota. Si no hay atributos comunes, la reunión es un conjunto vacío. Si las dos tablas fueran equivalentes la reunión sera equivalente a la intersección. Selección. Se selecciona una tupla de la relación que cumpla con ciertas condiciones. Definición. Relación donde condición Ejemplo. Relación No_cliente C01 C01 donde (No_cliente = C01) No_compra Cantidad P1 P2 20 18 Proyección. ¿ Como seleccionar algunas tuplas ? la proyección se define: Relación [atributos,atributos2] se genera un vector con los elementos Del atributo. Ejemplo: Cliente_A [estado] Gto Qro División . Relación A Dividida por R_B ( R_B R- A) La relación o división estará formada por atributos contenidos en la relación “dividendo”. Por lo que se deduce que la relación “divisor” es un subconjunto de la relación “dividendo”. R_A A a1 a1 a1 a1 a2 a2 R_B B b1 b2 b3 b4 b1 b2 B b1 ejemplo 1 R_A divide R_B resultado A 28 a3 b1 a3 b2 a4 b2 ejemplo 2 R_A divide R_B R_A A a1 a1 a1 a1 a2 a2 a3 a3 a4 a1 a2 a3 R_B B b1 b2 b3 b4 b1 b2 b4 b3 b2 B b1 b2 A a1 a2 Ejemplo 3. Si R_B A B a1 a3 b4 ejemplo 4 R_ A R_B A B a1 a1 a1 a1 b1 b2 b3 b4 C resultado B C A b4 c1 a1 c1 Ejercicios : Sean las siguientes tablas Clientes No-clientes x C1 C2 C3 C4 Cargos nombre Edo. Sánchez. Flores Rojas Pérez Gto. Mich Gto Qro. Edo. Gto. Mich Qro. Jal. Cargo_ent 6 8 10 7 29 C5 Robles Jal. Mex. 65 x Ordenes Productos NC N.P Cant NP Nom_P color C1 C1 C2 C2 C3 C3 C3 C3 C3 C4 C4 P1 P2 P2 P3 P1 P2 P3 P4 P5 P1 P3 2 3 4 1 3 1 4 2 1 1 3 P1 P2 P3 P4 P5 floppy monitor CPU D.duro Fuente rojo verde rojo azul amarillo precio_u 100 400 250 300 60 30 18 de febrero 1. Obtener todos los datos de los productos de color rojo productos donde ( color =’rojo’) 2. Los datos de los clientes del estado de Gto. Clientes donde (estado = ‘ Guanajuato’). 3. Los nombres de los estados con cargo por entrega mayor que 7 (cargos donde cargo-ent > 7) [estado]. 4. Los estados donde hay clientes [estado]. 5. Los nombres de los clientes que compraron productos color rojo. Productos donde (color =’rojo ’) P1 floppy rojo 100 P3 CPU rojo 250 Productos 2 3 1 1 4 3 donde (color = ‘rojo’) Floppy rojo 100 Floppy rojo 100 Floppy rojo 100 CPU rojo 250 CPU rojo 250 CPU rojo 250 Ordenes C1 C3 C4 C2 C3 C4 Reunión P1 P1 P1 P3 P3 P3 Clientes reunión ordenes reunión productos donde (color = ‘rojo’) Sánchez Rojas Pérez Flores Rojas Pérez Gto. Gto. Qro. Mich Gto. Qro. C1 C3 C1 C2 C3 C4 P1 2 Floppy rojo 100 (clientes reunión ordenes reunión productos donde (color =’rojo’))[nombre] Sánchez Rojas . . . 6. Los nombres de los clientes que tienen un cargo por entrega > 7 (clientes reunión cargos donde (cargo_ ent > 7 ) ) [ nombre] 7. Los nombres de los clientes que compraron todos los productos de color rojo Ordenes [No_ cliente, NP] Divide(productos donde (color =’rojo’) ) [No_ producto] 31 (clientes reunión (ordenes[No_ cliente, NP] divide (productos donde (color = ’rojo’)) [NP]) [nombres] 8. Obtener los nombres de los clientes que no compraron algunos de los productos de los que compró el Sr. Sánchez. Clientes. [NC] (Clientes donde nombre = ’Sánchez’) [No_cliente] A Clientes que compraron algunos de los productos que [NC] compro el Sr. Sánchez (A reunión ordenes) [NP] B (B reunión ordenes) [N.C] C ( ( Clientes [NC] menos C ) reunión clientes ) [ nombre] 9. Obtener todos los datos de los clientes Cliente_ A. 10. Obtener los nombres y el estado de los clientes Cliente_ A [Nombre, estado] 11. Obtener los nombres de los clientes del estado de Guanajuato. ( Clientes_ A donde estado = ‘Gto.’ ) ) [nombre] 12. Obtener los nombres de los clientes y el cargo de entrega de cada cliente: a) Utilizando reunión b) Utilizando producto cartesiano. a) ( Cliente_ A reunión cargos) [Nombre, Cargo_ ent ] No_cliente C1 C2 C3 C4 C5 Nombre Sánchez Flores Rojas Pérez Robles Edo. Gto. Mich Gto Qro. Jal. Cargo_ ent. 6 8 6 10 7 b) Clientes veces Cargo No_cliente C1 C2 C3 C4 C5 Nombre Sánchez Flores Rojas Pérez Robles Clientes reunión Edo. Edo. Gto. Gto. Mich Mich. Gto Gto. Qro. Qro. Jal. Jal. Cargo_ ent. 6 8 6 10 7 cargos = 32 Clientes veces Cargos donde (clientes. Edo = Cargo. edo) A Reunión B => ( A veces B) donde (A.atrib.común = B. atrib. común) Solución : (( Clientes veces Cargos) donde (Clientes. Edo = Cargo. Edo.)) [Nombre, Cargo. ent] 13. Obtener una tabla semejante a ordenes que contenga el nombre del cliente en lugar del número, y el nombre del producto en lugar del número (( Clientes Reunión Ordenes) Reunión Productos)[Nombre, Nom_ P, Cant.] 14. Defina el enunciado para la siguiente operación Clientes Alias x Clientes Alias y ((x veces y) donde (x. Edo = y. Edo and x.No_ cliente>y.No_cliente)) [X. Nombre, y. Nombre]. Obtener una tabla donde se encuentren los nombres de las parejas de los clientes cuyo estado es el mismo, evitando que se relacionen parejas con el mismo nombre. No_cliente C1 nombre Sánchez Edo. Gto. Ejercicios: Considerando el ejemplo de s.sp.p. Operaciones de recuperación 1. Obtenga números de proveedores y edo. Para los proveedores en París. (S donde (ciudad = ’París’)) [S = número, edo.] Select From Where 1. S = Número, edo. S Ciudad = ‘París’ Recuperación simple Obtenga los números de parte de todas las partes suministradas. S.P[P_ Números] Select Unique P_ Número From SP Condiciones Op. relacionales = >/< >= And Op. Lógicos. 33 <= <> Op. Especiales. Or * Comparar rangos nombre_ atributo[Not] BETWEEN expresión_ 1 And expresión_ 2 * Comparar patrones atributos Matches “valor” * Comparar valores Atributo [Not] in ( v1,v2…) Atributo operador relacional ANY (v1,v2,v3 ….) Atributo op. Relacional ALL (v1,v2,v3 …) Ejemplo: - Atributo > ANY (v1,v2,v3,….) Atributo mayor que cualquiera de los valores (verdadero sí se cumple la condición) - Atributo = ANY(v1,v2,v3,….) equivalente atributo in (v1,v2,v3,….) Atributo igual a cualquiera de los valores (verdadero sí se cumple la condición) - Atributo >ALL (v1,v2,v3,…) Atributo mayor que todos los valores. Op. Existencial. [Not] exists (select …) El op. Existencial si el argumento no es un conjunto vacio. Ej. Exist (v1,v2,v3,…) 2. Funciones agregadas - Count (*) genera el número de tuplas de una relación Sum (atributo) suma del atributo especifico AVG (atributo) promedio de los valores de un atributo determinado Max (atributo) máximo valor de un atributo Min (atributo) mínimo valor de un atributo Ejercicio 3 3. Recuperación calificada Obtenga números de proveedor para los proveedores de París con edo > 20 Select S_ número From S Where ((ciudad = ‘París’) and (edo. > 20)) 4. Recuperación con ordenamiento. Obtenga Números y edo. De los proveedores en París, en orden descendente de edo. Select S_ número, edo. From S Where ciudad = ‘París’ 34 Order Descending edo. 5. Recuperación de mas de una tabla. Para cada parte suministrada obtenga el número de la parte y de los nombres de todas las ciudades que suministran la parte. Select Unique SP. P_ número, P. Ciudad From P, SP Where SP. P_ número = P. P_ número 6. Recuperación que implica una tabla consigo misma Obtenga todas las parejas de números de proveedores tales que los dos proveedores estén localizados en la misma ciudad. Select Primero. S_ número, Segundo. S_ número From S Primero, S Segundo Where Primero. Ciudad = Segundo. Ciudad and Primero. S# 7. Ejemplo de subconsultas Obtenga nombres de proveedores para los proveedores que suministran la parte P2 (usando Subconsultas) Select nomb_ S From S Where S_ número = ANY ( Select S_ número From SP Where P_ número = ‘P2’) (sin consultas) Select nomb_ S From S, SP Where S. S_ número SP. S número and SP. P. Num = ‘p2’ 8. Manejo de subconsultas. Obtenga nums. De proveedores para los proveedores con edo < que el valor máximo actual de estado en las tablas (significa que el estado de los proveedores seleccionados es menor que algún valor actual de estado y por lo tanto menor que el máximo actual) Select S_ número From S Where edo ANY ( Select Max (edo) From S) 9. Recuperación con niveles múltiples de anidamiento. Obtenga nums. de proveedores para los proveedores que suministran al menos una parte roja. Select nom_ S From S 35 Where S_ número in (Select S_ número From SP Where P_ número in (Select P_ número From D Where color = ‘rojo’) 10. Recuperación usando ALL Obtenga nombres de proveedores para los proveedores que no suministran la parte P2 Select nom_ S From S Where S_ número <> ALL ( Select From SP Where P_ número = ‘P2’) 11. Recuperación usando exists. Obtenga nombre de los proveedores para los proveedores que suministraron la parte P2 Select nom_ S From S Where exists * referencia por bloques (Select * referencia a la relación definida en From SP el bloque externo (S) y ref. a la rel. Where SP. S_ número = S. S_ número del bloque interno (SP) And SP. P_ número = ‘P2’) No es necesario por que se considera que son referidos A la tabla interna. Si del bloque interno nos da un conjunto vacío no nos proporciona ningún nombre, si el conjunto no es vacío nos da los nombres Ejemplo: #S SP Salazar S1 S1 { S1 P2 200 Aldama S5 S5 { 0 No nos proporcina el nombre que es conjunto vacío 12. determine através de subconsultas y referencia por bloques que no suministraron la parte P2 Select Nom_ S From S Where Not Exists (Select * From SP Where S_ num = S. S_ num And P_ num = ‘P2’ ) En este caso solo elige a Aldama y no a Salazar ni a Jaramillo. 36 13. Referencias por bloques, subconsultas y uso de operador IN considerando los dos enunciados anteriores. a) Obtenga los nombres de proveedores que suministraron P2 Select Nom_ S From S Where ‘P2’ IN (Select P_ número From SP Where ‘P2’ in ( Select P_ numero From SP Where S_ numero = S. S_ número) b) Obtenga los nombres de proveedores que no proveen P2 ( utilizando ALL). Select Nom_ S From S Where ‘ P2’ <> ALL (Select P_ número From SP Where S_ núm. = S. S_ núm.) Salazar_ es P2 <> AU ( P1 P2 P3 P4 P5 P6 ) P2 No es diferente a todos por que si es igual a un elemento y por lo tanto no sé elige Aldama si se elige 14 Aplicación de subconsultas, referencia por bloques y el operador NOT EXISTS Obtenga número de proveedores para los proveedores que suministran todos las partes (totales, que no exista una parte que no se suministren ) Select Núm._ S From S Where NOT EXISTS ( Select * From P Where NOT EXISTS (Select * From SP Where S_ núm. = S. S_ núm. and P_ núm. = P. P_ núm.) S Salazar Si P SP P1 P2 S1 P1 300 S1 P2 200 falso falso Ningún P se selecciona Significa que este proveedor no tiene ninguna parte que 37 No provea todas las partes Jaramillo S2 P1 P2 P3 P4 15 Esta es una forma de presentar la división Es un conjunto no vacío por lo tanto no existe falso por que no suministra todos los productos Referencia por bloques, Subconsulta. Select Unique S_ núm. From SP. SPX Where Not Exists (Select * From SP. SPY Where S_ núm. = ‘S2’ Not Exists ( Select * From SP Where S_ núm. = SPX. S_ núm. And P_ núm. = SPY. P_ núm. Obtenga los números de los proveedores que suministran al menos todas las partes suministradas por el proveedor S2. 16 Recuperación usando unión Obtenga los números de parte para las partes que pesen mas de 18 lbs. O que actualmente sean suministradas por el proveedor S2. Select P_ núm. From P. Where Peso> 18 lbs. Unión. (Select P_ núm. From P Where S. Núm. = ‘S2’) 17 Recuperación de valores computados. Obtenga el número de parte y el peso de la parte en gramos para todas las partes. Los pesos se dan en libras en la tabla P. Nota: La cláusula Select y la Where pueden incluir expresiones aritméticas que comprendan campos, además de nombres de campos sencillos. 1 Lb. = 454 grs. Select P_ número, peso*454 From P 18 Obtenga el número total de proveedores. Uso de la función integrada Count 38 Select Count (*) From S 19 Obtenga la cantidad total de la parte P2 suministrada Select SUM (CTD) From SP Where P_ número = ‘P2’ 20 Uso de Group by Para cada parte suministrada obtenga, obtenga en número de y la cantidad total suministrada de la misma. Nota: El operador Group by reordena conceptualmente la tabla de f rom en grupos de modo que dentro de cualquier grupo todos los renglones tengan el mismo valor por el campo de Group by La cláusula Select se aplica a cada grupo de la tabla dividida y no a cada renglón de la tabla original. Select P_ número, Sun Cto From Sp Group by P_ número 21 Uso del Group by usando Having Obtenga los números de partes para todas las partes suministradas por mas de un proveedor. Considere antecedentes del problema anterior. Nota: Having es para los grupos lo que Where es para los renglones si Having se especifica también debe haberse especificado Group by Las expresiones es una cláusula Having deben tomar un solo valor dentro del grupo. Select P_ número From SP Group by P_ número Having Count (*) > 1 22 Defina el número de partes para todas las partes tales que la cantidad suministrada sea superior a 300 ( excluyendo del total todas las remesas para las cuales la cantidad sea menor o igual a 200), obtenga además el número de la parte la cantidad máxima de la parte suministrada y agregue el resultado en orden descendente de número de parte dentro de esos valores de cantidad máxima. Select SP Where CTD > 200 Group by P_ número Having SUM (CTD)>300 Order by descending (P_ número) 39 23 Actualización de un solo registro Cambie el color de 10 partes de P2 a amarillo, aumente su peso en cinco y ponga ciudad en nulo. Update P Set Color = ‘ amarillo ‘ Peso = ‘ peso + 5 ‘ Ciudad = null Where P_ número = ‘ P2’ 24 Actualización de registros múltiples. Doble el estado de todos los proveedores de Londres Update S Set edo. = edo. * 2 Where Ciudad = ‘ Londres ‘ 25 Actualización con una subconsulta Ponga la cantidad en 0 para todos los proveedores de Londres Update SP Update SP Set CFD = 0 Set CTD = 0 Where S_ número = Where ‘ Londres ‘ = ( Select S_ núm. (Select Ciudad From S From S Where Ciudad = ‘Londres’) Where S_ núm. = SP. Núm. 26 La vista debe derivarse de una sola tabla Cada tupla distinta de la vista debe corresponder a una tupla diferente e identificable de la tabla Cada columna distinta de la vista debe corresponder a una columna diferente e identificable de manera única en la tabla. Actualización de tablas múltiples Para el proveedor S2 cambie el número a S9 Update S Update SP Set S_ Núm. = ‘S9’ Set S_ Núm. = ‘S9’ Where S_ Núm. = ‘S2’ Where S_ Núm. = ‘S2’ 27 Inserción ole un solo registro Adicione la parte P7 ‘Arandela’ , ‘Gris’ , 2 , ‘Atenas ‘ a la tabla P Insert Into P ( P_ Núm., nom_ P, color, peso, ciudad ) Values (‘P1’ , ‘Arandela’, ‘Gris’, 2, ‘Atenas’) 40 28 Inserción de registros múltiples Considere una tabla temporal ( una vista) en la que se tiene una columna llamada P_ Núm. Inserte en temp. Los números de parte de todas las partes suministradas por el proveedor ‘ S2’ Insert Into temp ( P_ Núm.) Values ( Select P_ Núm. From SP Where S_ Núm. = ‘S2’) 29 Supresión de un solo registro. Suprima el proveedor S1 Delete . From S Where S_ Núm.= ‘S1’ 30 Delete From Sp Where S_ Núm. = ‘ S1’ Supresión de registros múltiples Suprimir todas las remesas Delete From SP Definición de vistas Create View Cliente_ Gto (crea una vista llamada cliente_ Gto.) As (Select No_ cliente, nombre, cd From cliente Where cd= ‘Gto’) Todos los valores que se seleccionen se crea otra tabla (virtual), pero los cambios en esta tabla afectan a la tabla original. Características: El nivel externo de una base de datos se define por su esquema externo, este esquema se compone de definiciones de tablas y vistas. Una vista es una tabla virtual, es decir, una tabla que no existe en realidad , si no que se deriva de una o más tablas. Una vista es una ventana sobre datos reales, no una copia separada de los datos. Los cambios en los datos reales son visibles a través de la vista, las operaciones contra la vista se convierten en operaciones contra los datos reales esta conversión siempre es posible para las proposiciones de recuperación, sin embargo no siempre es posible para las operaciones de actualización, para las cuales hay ciertas restricciones. Normalización Es una metodología para normalizar los campos ( atributos ) de una tabla de tal forma que se evite la redundancia. 41 Metodología 1. captura de información bajo un formato definido Ordenes de clientes Cliente: Número: C1 Estado: Texas nombre: S. Sánchez Cargo por envío: 6 dls. Productos ordenados Número P1 P3 nombre precio unitario Floppy H. Disk cantidad 88 450 1 2 fecha 06/05 10/23 Supóngase que se tiene este formato para cada cliente 2 Definición de una tabla (datos normalizados) Ordenes – clientes No. Nombre C1 C1 C2 C2 C2 C3 C4 C4 C5 C5 C6 C6 S. Sánchez S. Sánchez R. Rojas R. Rojas R. Rojas B. Dilan G. García G. García F. Flores F. Flores J. Jiménez J. Jiménez Edo. Texas Texas California California California N. Jer Florida Florida Florida Florida California California Cargo * No. entidad 6 6 8 8 8 65 5 5 5 5 8 8 P1 P3 P2 P3 P4 P2 P1 P4 P1 P3 P3 P4 Nombre p. Unit Floppy H. disk Monitor H. Disk CPU Monitor Floppy CPU Floppy H. Disk H. Disk CPU 88 450 150 450 349 150 88 349 88 450 450 349 cantidad fecha 1 2 1 3 2 1 2 1 1 1 2 1 06/05 10/23 03/16 03/16 03/16 08/20 07/28 08/09 06/28 05/16 05/24 05/24 42 La normalización de una tabla requiere satisfacer un conjunto especifico de restricciones: formas normales 3. PRIMERA FORMA NORMAL Se dice que una tabla satisface la primera forma normal si pára cada atributo o campo le corresponde un valor atómico. La tabla anterior no satisface esta forma normal porque por ejemplo a C1 en el atributo no_ producto, nom, p.u , cantidad tiene mas de un renglón 4 SEGUNDA FORMA NORMAL Se establece cuando una tabla se satisface la forma normal y además los atributos no primos tienen una dependencia funcional completa con respecto a la llave primaria Atributo no primo. Son atributos que no forman parte de llaves candidatas. De la tabla las llaves son no_ ctrol. y no_ prod todos los demás son atributos no primos. Dependencia funcional. Se dice que un atributo x tiene dependencia funcional con respecto a un atributo y si para cada valor de y existe un valor único de x. Ejemplo Y x No_ clientes nombre_ C (nombre depende funcionalmente del No_ Cliente) No_ prod. nombre_ P (nombre prod depende funcionalmente del No_ prod) No_ cliente estado Edo. cargo/ ent No_ prod precio unitario No_ prod y No_ cte. cantidad No_ prod y No_cte. fecha No_ cliente y nombre estado No_ Prod y nombre precio unitario Nota: Cuando se tiene una dependencia completa el atributo del que se depende funcionalmente se llama determinante. Dependencia funcional completa: Se dice que un atributo x tiene una dependencia funcional completa con respecto a un atributo y si no existe añgún subconjunto de y que dependa x. No_cliente y nombre estado no es una dependencia funcional completa, porque No_cliente estado es un subconjunto de (faltan apuntes) 43 Diagrama de dependecias funcionales completas Nombre Nom_ prod No_cliente Precio_ unit No_ producto Estado Cargo_ ent Fecha Cantidad La segunda forma no se satisface porque solo fecha y cantidad son atributos no primos que dependen de No_ cliente y No_ producto Ordenes_ cliente ( No_ cliente, No_ producto, Fecha, Cantidad ) Producto ( No_ Producto, Nombre_ prod, Precio_ unitario) Cliente ( No_ cliente, nombre_ estado, cargo_ entidad) Atributo No_ prod precio unitario } dependencia completa No_ prod, nomb_ prod precio untitario Hay un subconjunto de No_cliente del cual dependa cargo_ entidad: No entonces es una dependencia funcional completa. Diagrama de dependencia funcional aplicando la segunda forma normal Ordenes 44 No_ clientes Cantidad No_ producto Fecha Producto Cliente precio_unit No_ Producto nombre No_ cliente Edo nomb _ prod Cargo_ ent Las tablas después de aplicar la 2ª forma normal son los siguientes: Ordenes No_ clientes C1 C1 C2 C2 C2 C3 C4 C4 C5 C5 C6 C6 No_ producto P1 P3 P2 P3 P4 P2 P1 P4 P1 P3 P3 P4 Fecha 06/05 10/23 03/16 03/16 03/16 08/20 07/28 08/09 06/28 05/16 05/24 05/24 Cantidad 1 2 1 3 2 1 2 1 1 1 2 1 45 Producto No_ producto P1 P2 P3 P4 Precio_ Unit Nomb_ prod 88 150 450 349 Floppy Monitor Hard disk CPU Clientes No_ Cliente Nombre C1 C2 C3 C4 C5 C6 S. Sánchez R. Rojas B. Dilan G. García F. Flores J. Jiménez Edo. Cargo_ ent Texas California Nva. Jersey Florida Florida California 6 8 6.5 5 5 8 Aplicación de la tercera forma normal.. La tercera forma normal se satisface si la segunda forma normal se cumple y además Las dependencias funcionales entre los atributos no primos y las llaves primarias no son transitivas. Dependencia transitiva. Se dice que el atributo ‘x’ tiene una dependencia transitiva con respecto a un atributo ‘y’, sí ‘x’ depende funcionalmente de ‘y’ y además depende funcionalmente de otro atributo ’w’ al que a su vez depende funcionalmente de ‘y’ Factorizar las tablas para poder satisfacer la tercera forma normal. Ordenes ( No_ Cliente, No_ producto, cantidad, fecha) Producto ( No_ producto, Precio_ unit, nomb_ prod.) Cliente (No_ cliente, nombre, edo) Estado (edo, cargo_ ent) Diagrama de dependencia para la tercera forma normal Ordenes No_ clientes Cantidad 46 No_ producto Fecha Producto Precio_ unit No_producto Nomb_ prod Cliente nombre No_cliente estado Estado estado Cargo_ ent Tablas después de aplicar la 1ª, 2ª y 3ª forma normal y son las tablas normalizadas No_ clientes C1 C1 C2 C2 C2 C3 C4 C4 C5 C5 C6 C6 No_ producto P1 P3 P2 P3 P4 P2 P1 P4 P1 P3 P3 P4 Fecha 06/05 10/23 03/16 03/16 03/16 08/20 07/28 08/09 06/28 05/16 05/24 05/24 Cantidad 1 2 1 3 2 1 2 1 1 1 2 1 Producto No_ producto P1 P2 P3 P4 Precio_ Unit 88 150 450 349 Nomb_ prod Floppy Monitor Hard disk CPU 47 Clientes No_ Cliente C1 C2 C3 C4 C5 C6 Nombre S. Sánchez R. Rojas B. Dilan G. García F. Flores J. Jiménez Edo. Cargo_ ent Texas California Nva. Jersey Florida Florida California 6 8 6.5 5 5 8 Estado Cargo_ent 6 8 6.5 5 5 8 Forma normal de Boyce Codd Una tabla satisface la forma normal de boyce Codd es cuando todo lo que es determinante se define como una llave candidata. Ejemplo: Nombre No- Cliente Estado si nombre es determinante y si este es único se Convierte en llave candidato y por lo tanto edo. puede depender de nombre y No_ Prod, No_ cliente Ejemplo 2 Considere el siguiente diagrama de dependencias funcionales. Ordenes No_ clientes Cantidad No_ producto Fecha 48 Ordenes (No_ cliente, Nombre, No_ producto, cantidad) Se satisface la tercera forma normal. La forma de Boyce Codd no se cumple debido a que No_cliente y nombre es la llave candidato Y en el dialogo no se considera así. Factorizar: Cliente (No_ cliente, nombre) Si no_ cliente se elige como llave primaria entonces se usa: Ordenes ( No_ Cliente, No_ producto, cantidad) Si nombre se elige como llave primaria entonces se usa Ordenes ( No_ producto, nombre, cantidad) Diagrama de dependencia funcional aplicando la forma normal de Boyce Codd Cliente ordenes No_ cliente nombre no_cliente cantidad No_ producto Ejemplo 3 Considere la tabla empleados con los atributos E( estudiante). M (materia), P (Profesor). El significado de cada renglón de la tabla es que un estudiante determinado le enseña una determinada materia el profesor indicado, se siguen las reglas semánticas: para cada materia a cada estudiante de la misma le enseña únicamente un profesor cada profesor enseña una materia (materia tienen dependencia de profesor) cada materia la enseñan varios profesores (profesor no tiene dependencia funcional completa con respecto a materia) tabla empleado F M Salazar Salazar Jaramillo Jaramillo Matemáticas Física Matemáticas Física P Blanco González Blanco Pérez 49 a) Aplicando las reglas semánticas defina el diagrama de dependencias funcionales b) Determine si la relación satisface la tercera forma normal y la forma de B.C. c) En caso necesario factorice tablas para que las formas normales sean satisfechas M P E b) Satisface la tercera forma normal, no satisface la FNBC ( porque p es un determinante y no es considerada como llave candidata) c) Factorizar Diagrama 1 Diagrama 2 E.M P.M E P M M Diagrama Elka Atributo_ m Atrib1, atrib2,… 1:1 1:n Entidad (Fuerte) 1:n Ejemplo: Representación Entidades Fuertes Clientes (No_ cliente, nombre, estado) Producto ( No_ producto, nom_prod, precio_ unitario) Cargos ( estados, cargo_ entidad) Relaciones 1 : n R1 ( Cargos, clientes) Ordenes ( clientes, Producto, cant, fecha) 50 No prod cantidad nombre producto ordenes clientes fecha No_ cliente Nom prod Prec unit Estado R1 cargos estados Cargo_ ent Diagrama Elka. Estado, cargo_ ent cargo (estado) No_ cliente, nombre, est cliente (No_cliente) No_ prod, nom_ prod, precio_unit productos (No_ producto) 51 No_ cliente, no_ prod, cant, fecha ordenes Definición de tablas Cargos Clientes Estado Cargo_entidad No_cliente Nombre Estado Productos No_ prod nomb_ prod Precio unit Ordenes No_ cliente No_ producto cantidad fecha Estas tablas satisfacen las formas de normalización por lo tanto están normalizadas Ejemplo: Modelo conceptual de la base de datos empleados. Representación: Entidades fuertes. Empleado ( No_ empleado, nombre, RFC, depto, puesto) Relación Trabajo _ con ( No_ empjefe, No_ emptrab) n:n Empleado Puesto No_ empjefe Trabaja_con No_emptrab No_emp nombre RFC Depto Relación fuerte No_empl, nombre, rfc, depto, puesto empleado (no_emp) No_empjefe, no_emptrab Trabaja con 52 Ejemplo: Entidades fuertes Depto (cve_ Depto, desc) Alumnos (No_ control, nombre, semestre) Maestros (cve_ maestro, nombre) Materias ( cve_ mat, nombre, ht, Hp, no_cred) Especialidad (cve_esp, descrip) Entidades debiles Grupo (No-grupo, horario, salón) Relaciones R1 (maestros, grupos) R2 (materias, grupos) R3 (especialidad, alumno) R4 (depto, materias) Lista (grupos, alumnos) Diagrama entidad relación 7 8 1 9 1 1 10 2 R1 1 2 1 3 1 4 1 5 3 R2 1 6 lista R4 4 1 7 1 8 1. 2. 3. 4. 5. 5 R3 Maestros Grupos Materias Especialidad Alumno 1 9 11. Salón 12. Cve_ mat 13. Nombre 14. HT 15. HP 2 0 6 2 1 2 2 2 3 21. semestre 22.Cve_ depto 23. desc 53 6. Departamento 7. Cve_ maestro 8. Nombre 9. No_ grupo 10. Horario Diagrama elka Cve_ maestro, nombre 16. No_cred 17. Cve_ esp 18. Descrip 19. No_ ctrol 20. Nombre Cve_mat, No_grupo Salón, Cve_maestro 1 maestro Grupos 2 Cve_mat, nombre,HT HP, No_cred, cve_depto materia 3 Cve_mat, No_grupo, No_ crtrol 5 lista 4 Cve_maestro, nombre 6 especialidad No_ctrol, nombre, Semestre, Cve_ esp Cve_depto, Desc alumno depto 1. Clave _ maestro 2. Clave _ materia 3. Clave _ materia, Número _ grupo 4. Número de control 5. Clave departamento 6. Clave especialidad Definición de las tablas Maestro Materia Cve_ maestro nombre Cve_materia nombre Ht HP No_ cred Cve_ depto Grupos Cve_ mat No_ grupo horario salón Cve_ maestro Departamento Alumno 54 Cve_ depto Desc No_ ctrol Especialidad Cve_ esp nombre semestre cve_esp lista Descripción Cve_ mat No_ grupo No_ control Ejemplo 3 Representación general Entidades fuertes Inquilino ( rfc, nombre, ref_cor, ref_per) Depto (cve_depto, costo_ depto) Estacionamiento ( cve_ est) Bienes (código, descripción) Pago (cve_pago, descripción, pago) Relaciones R1 (inquilino, depto) R2 (Depto, estacionamiento) R3 (Depto, pago) D_B ( Depto, bienes, cantidad) Diagrama entidad relación 8 9 1 0 7 6 1 2 R1 1 2 1 1 DB 1 3 3 R2 R3 5 4 1 4 1. 2. 3. 4. 5. Inquilino Departamento Estacionamiento Bienes Pago 1 5 1 6 11. 12. 13. 14. 15. 1 7 Refer_ cor Refer_ per Cantidad Código Descripción 55 6. RFC 7. Nombre 8. Cve_ depto 9. Costo_ depto 10. Cve_ est Diagrama Elka 16. Cve_ pago 17. Descrip_ pago rfc, nombre, refer_ cor refer_ per RFC inquilino Cve_ dpto, costo_depto clave depto rfc Cve_est, cve_depto depto estación Cve_ depto Cve_ dpto, código cantidad Cve_pago, descrip_pago, cve_dpto D_B pago código Código, descripción bienes Definición de tablas Inquilino RFC Departamento Nombre Refer_ cor Refer_ per Cve_ depto Estacionamiento Cve_est RFC Pago cve_depto cve_pago descrip_ pago D_ B cve_ depto Costo_ dpto cve_ depto Bienes código cantidad código descripción 56 MODELO DE REDES Se define como una serie de registros entre los cuales se establece una liga, suo organización se establece como una gráfica arbitraría. El modelo CODASYL DBTG (Data Base Group, grupo de trabajo sobre una base de datos) Fue desarrollada a finales de los 60’s como un modelo estándar de redes por un grupo de trabajo de programadores, las ultimas modificaciones a este modelo se hicierón en el año 1978. Arquitectura del modelo DBTG. Aplicación A1 aplicación A2 aplicación B1 aplicación B2 aplicación B3 Leng anf + DML Leng anf + DML Leng anf + DML Leng anf + DML Leng anf + DML ATU ATU ATU ATU ATU Subesquema A Subesquema B DBMS Construida y Mantenida el admón. De datos Esquema esquema de almacenamiento Se definen subesquema (programas) que dan soporte a las aplicaciones ( los subesquemas son parte de la base de datos formada por prog.) Esquema: representa el esquema lógico total de la B.D. : representa el esquema físico DBMS: el que maneja todo el esquema. 57 Conjuntos DBTG: Es la liga que se establece entre los dos registros, un registro propietario y un registro miembro. Ejemplo. Diagrama 0 de Bachman registro propietario f registro Se debe buscar la forma de establecer relaciones 1:n siempre que hay conjuntos Pro-miembro n registro miembro Construcción de conjuntos DBTG Ejemplos jerárquicos. La relación en los modelos jerárquicos es de hecho 1:n, representandose con las siguientes alternativas: 1) Jerarquía con un nivel dependiente. Se presenta cuando cumple la regla: Un registro miembro solo puede participar en una concurrencia de un tipo de conjunto DBTG. Ejemplo: Departamento Jerarquía de un nivel Si hay otra concurrencia Del tipo D-E la s reglas E-1 y E-2 no pueden participar Cada regla miembro solo puede aparecer en una concurrencia D1 D-E Empleado E-1 E-2 Jerarquía con mas de un nivel dependiente . Un registro miembro puede participar simultaneamente en varias concurrencias de diferentes tipos de conjuntos de DBTG. D1 D-E E-1 E-2 58 D-E E1 D-E E1 E1 E1 3) Jerarquía con mas de un tipo de registro con un nivel dependiente. Un tipo de registro dado puede ser propietario de cualquier número de tipos de conjuntos DBTG. D1 D-E D-E E-1 E-1 E-2 E-2 Diagrama de Bochman P P-M P-S M S Clase de pertenencia en un conjunto DBTG Inserción de registros de miembros al conjunto DBTG: * Inserción manual << Connect >> Clases de Pertenencia * Inserción automatica Al generar el registro miembro se conecta al conjunto Perteneciente. Relación de registros miembros en la ocurrencia del Conjunto DBTG . * Fija << Fixed >> * Obligatoria << Mandatory >> * Opcional << Optional>> 59 Retención fija: El registro miembro pertenece a una ocurrencia única determinada de un tipo de conjunto. Retención obligatoria: El registro miembro puede pertenecer a cualquiera ocurrencia de un tipo de conjunto DBTG. Retención opcional: el registro miembro puede conectarse, desconectarse, reconectarse o cualquier tipo de conjuntos en cualquier ocurrencia. Ejemplos: Registros Nombre Cuenta habiente dirección cd. propietario Cta hab cta Número miembro saldo Suc Cta Nombre Juan perez saldo Obregon 6 edo propietario cortazar Cta hab cta 364 500 565 0 Suc Cta Centro 565 99999 Número Cuenta 0 Centro Saldo Move 565 to numero in cuenta Move 0 to saldo in cuenta Move centro to nombre in suc Find only in sucursal using nombre In sucursal nombre Sucursal Juan Pérez Gto. nombre store cuenta Move Juan Pérez to nombre in Cuenta habiente 60 Cuenta habiente Find only cuenta habiente using Nombre in cuenta habiente. Connect cuenta Operación de inserción Connect reg_ miembro to tipo_ com Otras operaciones Reconnect Disconnect Reconnect: desconecta un registro miembro a la ocurrencia de un tipo de conjunto y lo inserta en la otra ocurrencia del mismo tipo de conjunto. Disconnect: elimina un registro miembro de la ocurrencia de un conjunto DBTG. Insertion Automatic Manual Retention Fixed no permite nada Connect Mandatory Reconnect Connect Reconnect Optional Disconnect Reconnect Connect Disconnet Reconnect Formas de seleccionar ocurrencias de un tipo de conjunto DBTG. Hay tres formas de seleccionar la ocurrencia de un tipo de conjunto DBTG, a saber: 1. por aplicación 2. por valor 3. Estructurada La forma elegida se define a través de una cláusula. Ejemplo: S no_s nombre cd Edo. S_ SP SP No_s Una ocurrencia No_p cantid SS Juan Pérez Celaya Gto Seleccionar la ocurrencia P1 61 S_ SP S5 P3 750 S5 P2 300 Definir cláusula para selección de ocurrencia. 1) Set selection is by application R Insertar en la ocurrencia DBTG del conjunto S_SP S5 P6 700 Move ‘SS’ to no_s in sp Move ‘P6’ to no_p in sp Move ‘700’ to cant in sp Move ‘S5’ to No_S in S localizar reg. Prop. Por su k Find any S using No_s in S buscar en el registro prop. En el com. De reg. Store SP singulares S 2) Set Selecction is by value of No_S in S R ** move ‘S5’ to No_ S in S Store SP. 3) Set selección is by estructural of No_s in SP = No_s in S R Store SP Ordenamiento de los registros miembros en un conjunto DBTG. Order is [ First / last/ prior/ next / sorted ] 1. Cuando no se especifica la cláusula order is, el registro miembro se inserta a la ocurrencia especifica de un conjunto de manera arbitraria definida por le sistema. 2. Si se elige la opción first el sistema insertara el registro miembro al inicio. 3. Si se elige la opción last el registro miembro será insertado al final de los registros existentes. 4. Si se elige la opción prior el registro miembro será insertado antes del actual de la unidad de ejecución. 5. Si se elige la opción next el registro miembro será insertado después del actual de la unidad de ejecución. 6. Si se elige la opción sorted, en el caso de los conjuntos que se han clasificado de acuerdo a una llave definida, el registro miembro se insertara respetando dicha clasificación 62 Resumen Jerarquica (1:n) Construcción find …p Red ( n:n) Manual connect mto c Insertion is Find ..d Pertenencia automatic Store m Fixed Relation is mandatory (reconnect ) Optional ( reconnect, disconnect, Connect ) Conjuntos DBTG propietario Aplicación Conjunto Selección Miembro set selection value of <campo> in <p> is by Estructural <campo> in <m> = <campo> in <P> Ordenamiento Conjuntos DBTG Singulares por omisión first last order is next prior sorted agrupan un tipo de registro 63 Ejemplo aplicación: 1. Shem name is proveedores y partes 2. . 3. record name is S 4. duplicates are not allowed for nors in S 5. . 6. Nors; type is character 5 7. Nors; type is character 20 8. Estatus; type is fixed decimal 3 9. Ciudad; type is character 15 10. . 11. Record name is P 12. Duplicates are not allowed for Nrop in P 13. . 14. Nrop; type is character 6 15. Nompar; type is character 20 16. Color, type is character 6 17. Peso; type fixed decimal 4, default is –1 18. Ciudad; type is character 15 19. . 20. record name is p 21. duplicates are not allowed for nors in sp, Norp in Sp 22. . 23. Nrop; type is character 5 24. Nrop; type is character 6 25. Ctp; type is fixed decimal 5 26. . 27. set name is S_SP 28. _ owner is S 29. _ order is sorted by defined keys duplicates are not allowed 30. 31. ._ member is SP 32. _ insertion is automatic 33. _ retention is fixed 34. _ key is ascending Nrop is SP 35. _ set selctión is by value of Nros in 6 36. . 37. set name is P_ sp 38. _ ower is p 39. order is sorted by defined key duplicates are not allowed 40. . 41. menber is SP 42. _ insertion is automatic 43. _ retention is fixed 44. key is ascending.. Nrop in SP 45. set selection is by value of Nrop in P 64 Nros noms estatus ciudad S.SP Rp:S r.m: sp Insertion retencion seleccion llaves ordenamiento Nros Nrop ctd P_PS Nrop Nom p color peso cd Indicadores de posición actual Manejo de datos DBTG (DML) manejo de excepciones Proposiciones de manejo de datos Indicadores de posición actual. Los indicadores de posición actual para una unidad se ejecución dada identifica la ocurrencia de registro accesado mas recientemente por la unidad de ejecución para los registros singulares, para los registros actuales correspondientes a la ocurrencia de cada tipo de conjuntos y para la región definida por todos los registros singulares que es considerada por la unidad de ejecución. Ejemplo: S4 S Jiménez 20 X S_SP SP S4 P2 500 S4 P8 700 P_SP 65 P P2 Perno Azul Move s4 to Nros in S Find any S using Nros in S Find Firs Sp With in S_SP Find owner SP With in P_SP 17 2 encontramos el renglón S como prop. encontrar el 1er registro miembro encontrar propietario de SP Actual de la unidad de ejecución P_P2 Ocurrencia del registro S actual S_S4 Ocurrencia del registro SP actual SP_S4_P2 Ocurrencia del registro P actual P_P2 Ocurrencia del registro S_SP actual S_SP_P4 Ocurrencia del registro D_SP actual P_SP_P2 Registro actual de S_SP SP_S1,P2 Registro actual P_SP P_P2 Ocurrencia actual de la región S,SP,P P_P2 Manejo de excepciones Dentro del modelo de redes codasyl DBTG el manejo de excepciones hace uso de un registro especial llamado estado, al cual se le asigna el valor de cero si las instrucciones se han ejecutado correctamente, en caso contrario el valor asignado es diferente de cero y es dependiente del tipo de error. Para determinar el tipo de error es necesario hacer referencia al manual de este sistema. Proposiciones de manejo de datos: GET (recuperar) registros Campos de registros STORE ( almacenar) en ocurrencias especificas de conjuntos DBTG ERASE ( eliminación de registros) MODIFY(cambios en registros existentes ) FIND (encontrar un archivo determinado) CONNECT ( colocar un registro en una ocurrencia determinada de un conjunto DBTG) DISCONNECT ( RECONNECT ( GET ( esta proposición recupera el actual de la unidad de ejecución) Ejemplo determine toda la información del registro para el proveedor S4 Move ‘S4’ to Nro_s in S 66 Find any S using nro_S in S Get S recupera toda la información del registro sing S y lo pone en la RAM Recupere solamente la información del nombre del proveedor y el número que le corresponda. Move ‘S4’ to Nro_ S in S Find any S using Nro_S in S Get nom_S in S Nro_S in S. STORE ( crea una nueva ocurrencia de registro y lo establece como actual en la unidad de ejecución) ejemplo: Crear la ocurrencia de SP: S5 / P6 / 700 y almacenar en los conjuntos S_SP y P_PS considere una inserción automática. Ocurrencia del registro S Actual S_S4 S5 P6 700 Move ‘S5’ to Nro_S in SP Move ‘P6’ to Nro_P in SP Move ‘700’ to cant in SP Move ‘ S5’ to Nro_S in S Find any S using Nro_S in S Move ‘ P6’ to Nro_P in p Find any P using Nro_P in P Store SP ERASE [ ALL] Suprime el actual de la unidad de ejecución, suprime además del actual, todos los registros miembros relacionados con el actual de ejecución. Retention is optional. Suprime el registro, desconectándose todos Los miembros del conjunto del cual es dueño; Sin embargo estos registros pertenecen en la base Datos Sensibiliza All Retention is fixed . en este caso el registro y los registros Miembros son eliminados de la D. B. Retention is mandatory. Erase falla, el registro no puede Eliminarse. Ejemplo suprima la ocurrencia de S en P/ el proveedor S4 Move ‘ S4’ to Nro_S in S Find any S using Nro_S in S Erase S MODIFY ( actualiza la unidad de ejecución) 67 Ejemplo adicione 10 al estado de proveedor S4 Move ‘S4’ to Nro-S in S Find any S using Nro_S in S Get S Add 10 to edo in S Modify S CONNECT ( conecta el actual de la unidad de ejecución a una ocurrencia especifica De un conjunto DBTG) Ejemplo. Conecte la ocurrencia de S para el proveedor S4 a la ocurrencia del conjunto X poseída por la ocurrencias x de X X x conjunto S4 Move ‘x’ to Nro_x in X Find any X using Nro_x in x Move ‘S4’ to Nro_S in S Find any S using Nro_S in S Connect S to Conjunto X DISCONNECT ( desconecta el actual de ejecución de una ocurrencia DTBG) Ejemplo: Desconecte la ocurrencia de S pa ra S4 de la ocurrencia del conjunto X que la contiene. Move ‘x’ to Nro_ x in X Find any X using Nro-x in X Move ‘S4’ to Nro_S in S Find any S using Nro_S in s Disconnect S from conjunto x RECONNECT ( desconecta el actual de la unidad de ejecución de una ocurrencia DBTG y lo conecta a otra del mismo tipo DBTG ) Ejemplo: Desconecte la ocurrencia de s de la ocurrencia del conjunto_ x que la contiene (y) y conéctela a la ocurrencia del conjunto x poseída por la ocurrencia de x de X X Y Conjuto x S4 X X Conjuto_x S4 68 S S Move ‘x’ to Nro_x in X Find any X using Nro_x in X Move ‘S4’ to Nro_S in S Find any S using Nro_S in S Reconnect S with in conjunto_x FIND ( localiza una ocurrencia de registro existente y lo establece como el actual en la unidad de ejecución. ) A) Formato 1. Acceso dentro de un tipo de registro. Ejemplo. Hallar todas las ocurrencias del registro S en los que el valor de ciudad = Londres. Move ‘ Londres ‘ to ciudad in S Find any S using ciudad in S Move ‘no’ to No_encontrate Perform until No_encontrate = ‘Si’ Get S _______ _______ Find duplicate using ciudad in S End perform. B) Formato 2 acceso al propietario Ejemplo. Supóngase que el registro actual del conjunto P_SP es una ocurrencia particular de SP, halle la correspondiente ocurrencia de P P_ SP Find owner with in P_SP C) formato 3 acceso secuencial dentro de un conjunto o renglón Ejemplo. Halle los valores de nom_ parte para las partes suministradas por el proveedor S4 S4 S_ SP 69 S4Nro_s No_P Move ‘S4’ to in SCant P5 in S 70 Find any S using Nros Move ‘no’ to no- encontrado = ‘si’ Find first SP with in S_SP Perform until no-encontrado = ‘si’ Get SP ‘ adicionar una lista de números de partes ‘ Find next SP within in S S-SP End perform d) Formato 6. Acceso secuencial dentro de un conjunto DBTG. Ejemplo. Halle la cantidad de la parte P5 suministrada por el proveedor S1. Move ‘si’ to Nro_s in S Find any S Nro_S in S Move ‘PS’ to num_P in SP Find SP within S_SP current usingnum_P in SP Get Sp ------- { imprima la cantidad del registro SP ------S1 S1 P3 70 S1 P5 80 e) Formato 2 Acceso secuencial dentro de un conjunto DBTG. Ejemplo: Halle todas las remesas para el proveedor S1 donde la cantidad sea 100 Move ‘S1’ to Nro_S in S Find any S using Nro_S in S Move ‘100’ to cant in SP Find SP within S-SP current using cant in SP Move ‘ no’ to no-encontrada Perform until no-encontrada = ‘si’ Get SP ====== { obrener las remesas } Find duplicate SP within S_SP using cant in SP End perform F) Formato 4 Uso de lista de guarda. Find first / last within nombre de la lista de guarda 70 Lista de guarda. Es un objeto con nombre cuya función es guardar una lista ordenada de valores de llave BD; no forman parte de la BD, son locales para la unidad de ejecución que los usa. Ejemplo. Data división DB proveedores within proveedores y partes LD listaA limit is 15 Ld listaB limit is 20 === === Move ‘París’ to ciudad in S Move zero to M Move ‘no’ to no encontrado Find any S using ciudad in S Perform until no encontrado =‘si’ KEEP USING listaA If estado in S > M Move estado in S to M End if Find duplicate S using ciudad in S End perform Move M to estado in S Move ‘no’ to listaA_vacio Perform until listaA_vacia ‘si’ Find first within listaA Free first within listaA Modify estado in S End_perform Los valores de la llave DB. Se añaden a una lista de guarda por medio de la proposición keep y se suprime por medio de la proposición free. G) Uso de la cláusula de retención. ( Retaining) El efecto de esta cláusula es evitar la actualización del indicador de posición actual para el conjunto DBTG implicado. Ejemplo. Para cada proveedor que suministre la parte P4, halle otra parte suministrada por el mismo proveedor e imprima el número de proveedor, el nombre del proveedor y el número de la parte (se considera que por proveedor solo existe una parte diferente a P4) Move ‘P4’ to Nro_P in P Find any P using Nro_P in P Move ‘no’ to no_mas Perform until no-mas = ‘si’ 11 Find next SP within S-SP If no-mas not = ‘si’ Get S 71 Move ‘no’ to encontrado Perform until encontrado = ‘si’ Find next SP within S_SP Retaining P_SP currency Get SP If Nro_A in SP not = ‘P4’ Move ‘si’ to encontrado End if End perform. (imprime Nro_S in S, nom S in S, Nomp in SP) end if End perform. Cuando se ejecuta el find en la línea 11 se establece una ocurrencia de SP como la actual de la unidad de ejecución. Esta ocurrencia, que es la ocurrencia de SP mas recientemente accesada, también se convierte en el renglón actual de todos los conjuntos DTBG en los que participa, incluyendo en particular el conjunto DBTG P_SP Esto a su vez hace ocurrencia actual P_SP sea la que contiene esta concurrencia de SP. De esta manera cuando se ejecuta el find en la línea 5 en la siguiente iteración del ciclo exterior ( como un intento por hallar el siguiente proveedor de P4), la ocurrencia de P__SP referida en esa proposición ya no será poseída por P 4. Para evitar esta situación, el find de la linea 11 debe ampliarse con la incursión de una frase de retención Retaining. Modelo de datos jerárquico Consiste en un conjunto de registros que se conectan entre si por medio de ligas. Un registro es un conjunto de campos (atributos), c/u de los cuales contiene un solo valor. El modelo jerárquico difiere del de red en cuanto a que los registros se organizan para formar conjuntos de árboles, en vez de gráficas arbitrarias. El contenido de un registro especifico puede repetirse en varios lugares, esta repetición puede darse tanto en el mismo árbol como en árboles distintos. La repetición de registro tiene dos desventajas principales: a) Puede producirse una inconsistencia de los datos b) Será inevitable el desperdicio de espacio Diagrama de estructura de arbol Especifica la estructura lógica general de la base de datos, se caracteriza por: a) no tiene ciclos b) las relaciones entre padre e hijo solo pueden ser 1:n o 1:1. Ejemplo de un diagrama entidad relación y su correspondiente diagrama de estructura de árbol. 72 CUENTA HABIENTE NOMBRE CUENTA CTAHABCT A CD NÚMERO SALDO CALLE UENTA HABIENTE CUENTA NOMBRE NÚMERO CALLE CD SALDO El esquema de la base de datos representa un conjunto de diagrama de árbol. Por cada uno de estos diagramas, existe una sola instancia del árbol de B.D. la raíz de este árbol es un nodo de trabajo. Los hijos de ese nodo son instancias reales de tipo registro, según se especifique en el dialogo de estructura de árbol correspondiente. Ejemplo. 73 CUENTA HABIENTE BECK MAPLE SN.FCO KATE NORTH SN.JOSE DONE S.HILL P.ALTO CUENTA 200 55 256 100000 347 667 301 10503 74