BDCurso

您所在的位置:网站首页 AuditDB BDCurso

BDCurso

2023-01-21 04:21| 来源: 网络整理| 查看: 265

BASES DE DATOS GUIA DE CURSO Marta Sananes Instituto de Estadistica Aplicada y Computacion Facultad de Ciencias Economicas y Sociales Universidad de Los Andes Mérida, Julio 1994. Revisado: Agosto 1998   

Bases de Datos: Perspectivas de estudio  Evolución de la representación y tratamiento de Información: Tabla Resumen I, Tabla Resumen II, Tabla Resumen III Procesos de Cálculo vs Procesamiento de Datos Sistemas de Archivos vs Bases de Datos Algoritmo Típico de actualización en el Procesamiento de Datos en Archivos secuenciales Otras formas de documentación de procesos: Arbol de Decisión, Tabla de Decisión Formas tradicionales de efectuar Procesamiento de Datos (Procesamiento secuencial vs Procesamiento directo) Búsquedas con Procesamiento Directo: Búsqueda Directa vs Búsqueda Binaria Organización de datos en Arbol Binario Recorrido secuencial en Arbol Binario Búsqueda en Arbol Binario Completo Organización de Datos en Arbol B+ Estimación de Altura en Arbol B+ Modelación de Datos para Bases de Datos Modelo Entidad-Asociación Modelación estilo ORACLE Modelación estilo UML (Unified Modeling Language) Modelo Relacional de Datos Consulta de Bases de Datos Relacionales: Algebra Relacional, Structured Query Language (SQL) Arquitectura de Bases de Datos Relacionales(Resumido de Date: An Introduction to DB Systems) Arquitectura de Aplicaciones (Sistemas de Información): niveles de independencia Diagramas de Flujo de Datos Modelos de Ciclos de Desarrollo de Sistemas de Información(Resumido de Maciaszeck: Data Base Design and Implementation) Características de los DBMS (Data Base Managment Systems/SGBD: Sistemas de Gestión de Bases de Datos)(Resumido de Maciaszeck: Data Base Design and Implementation) 12 Reglas de Fidelidad de DBMS al Modelo Relacional (Resumido de Maciaszeck: Data Base Design and Implementation) Normalización (Resumido de Date: An Introduction to DB Systems) Programación INFORMIX 4GL (Resumido del manual INFORMIX-4GL TRAINING MANUAL) Conceptos de INGRES (Resumido de Relational Technology Inc.: INGRES Self-Instruction Guide, Reference Manual) Conceptos de DB2/6000 Conceptos de Sistemas de Información en ambientes Cliente/Servidor Conceptos de dBASE Conceptos de MS ACCESS Conceptos de InterBase Creación y Uso de Base de Datos Local Borland Bases de Datos Estadísticas Minería de Datos Conceptos de OODBMS (Object Oriented Data Base Managment Systems) RDBMS vs OODBMS: Ventajas y Desventajas Multidatabase Systems (MDBS)  

BIBLIOGRAFIA

Barker, Richard. Case*METHOD, Entity Relationship Modelling. Addison-Wesley Publising Company y ORACLE. Batini, C., Ceri, S. y Navathe, S. Diseño conceptual de bases de datos. Addison-Wesly/Díaz de Santos. 1994. Bertino, E. y Martino, L. Sistemas de Bases de Datos Orientados a Objetos. Conceptos y Arquitecturas. Addison-Wesley/Díaz de Santos. 1995. Burtch. J y Grudnitski, G. Diseño de Sistemas de Información. Megabyte Noriega Editores. 1996. Date, C.J. An Introduction to Data Base Systems. Addison-Wesley Publishing Company. Fowler, M. UML Destilled, Applying the Standard Object Modeling Language. Addison-Wesley Publishing Company. 1997. González Alvarado, C. Sistemas de Bases de Datos. Editorial Tecnológica de Costa Rica. 1996. Kim, Won (Editor). Modern Database Systems. The Object Model, Interoperability and Beyond.ACM Press. 1995. Kim, Won y Lochovsky, Frederick (Editores). Object Oriented Concepts, Databases ans Applications. ACM Press. 1989. Korth, H.F y Silverschatz, A. Fundamentos de Bases de Datos. McGraw Hill. 1993. Maciaszek, L.A. Database Desing and Implementation. Prentice Hall-Advances in Computer Science Series. 1990. Martin, J.y Odell, J. Análisis y Diseño Orientado a Objetos. Prentice Hall, 1994. Sully, Phil. Modelling the world with objects. Prentice Hall. 1993. Tsichritzis, D. y Lochovsky, F. Data Models. Prentice Hall. 1982.                      

NORMALIZACION  

TIPOS DE DEPENDENCIAS ENTRE ATRIBUTOS

1. Funcionales       2. Multivaluadas       3. Conjunta ("join")

                           Descomposición: PROYECCION PROCESO DE NORMALIZACION /                          \ Reconstrucción: PRODUCTO NATURAL                                            (EQUI_JOIN)

FORMAS NORMALES:  1NF LOCAL_DEPART

OTRAS FORMAS NORMALES

DEPENDENCIA FUNCIONAL: Sean {B}, {C} conjuntos de atributos de una relación Y. {B} es f.d de {C} (funcionalmente dependiente, {C} -> {B}) sii para cada valor {VC} en cualquier extensión e instante de Y, corresponde exactamente un {VB}. Es parcial, sii existe una clave candidata {K} / {K} ) {C} (es subconjunto propio) y -existe otra K' / {K'} ) {B}

BCNF (Boyce-Codd Normal Form)

     ¿ Si hay varias claves candidatas ?

     Una relación es BCNF sii cada determinante es una clave candidata.      (Para toda d.f X -> A o bien es trivial (A e X) o bien X es clace candidata (X -> R))                          +---------------------+                       -------          -----   |      Ejemplo - BCNF:  CED_EST  CARNET  CURSO  NOTA                                -------------   |                                      +---------+

    Conversion a BCNF: - Crear nuevas relaciones por proyección

                      CARNET  CURSO  NOTA                       -------------   |                             +---------+

                      CARNET -> CED_EST

DEPENDENCIA MULTIVALUADA: Sean {B}, {C}, {D} conjuntos de atributos de una relación Y.                           {B} es multivaluadamante dependiente de {C} en forma no dependiente de {D} ({C} -> {B} | {D}) sii                           siempre que en Y existan las tuplas y , tambien existan

4NF: Y es 4NF sii existiendo una MVD A->B, todos los atributos de R son también f.d de A. Es decir, en R solo hay f.d's.

5NF: Y es 5NF (PJ/NF: Projection Join Normal Form) sii cada dependencia conjunta (JD) de Y es implicada por las llaves      candidatas de Y.  

PROGRAMACION INFORMIX-4GL

EJEMPLO 1 de programación:

       MAIN

           DEFINE answer CHAR(1)

           OPTIONS

              PROMPT LINE 22               MESSAGE LINE LAST               HELP KEY CONTROL-I               HELP FILE "menuhelp.ex"

           MESSAGE "Type the first letter of the option you want "                    "or CTRL-I for instructions"

           MENU "TOP LEVEL"

              COMMAND "Customer"                       "Go to the customer menu"                       HELP 1                       CALL cust_menu()

              COMMAND "Orders"                       "Add a new order"                       PROMT "Do you want to place an order "                             "for a customer ? (y/n)"                             FOR CHAR answer                       IF answer='n' then CONTINUE MENU                       END IF                       CALL dummy()               ..............               COMMAND KEY(!) CALL bang()                       NEW OPTION "customer"            END MENU

       END MAIN          FUNCTION dummy()            ERROR "function not yet implemented"            SLEEP 3            CLEAR SCREEN        END FUNCTION        ............

PROGRAMACION INFORMIX-4GL  

- Acceso a una fila segun condición:   Sintaxis SELECT:

           SELECT  clausula                    [INTO      clausula]                    [FROM      clausula]                    [WHERE     clausula]                    [GROUP BY  clausula]                    [HAVING    clausula]                    [ORDER BY  clausula]                    [INTO TEMP clausula]  

- EJEMPLO 2 de programación:  

DATABASE stores

GLOBALS    DEFINE p_customer RECORD LIKE customer.* END GLOBALS

MAIN    DEFINE p_count INTEGER    OPEN FORM f_cust FROM "custform"    DISPLAY FORM f_cust    PROMPT "Enter customer number:" FOR p_customer.cnum    SELECT * INTO p_customer FROM customer             WHERE cnum = p_customer.cnum    DISPLAY BY NAME p_customer    SELECT count(*) INTO p_count FROM customer             WHERE orders.cnum = p_customer.cnum    DISPLAY "Number of orders:", p_count AT 16,1 END MAIN

 

PROGRAMACION INFORMIX-4GL  

- Acceso a un conjunto de filas segun condicion:   Sintaxis:

           DECLARE cursor   -->

           OPEN    cursor   -->  +---------+                                  |---------|                                  |---------|                                  +---------+

           FETCH   cursor        +---------+                             -->  |---------|                              .   |---------|                             -->  +---------+                             -->  NOT FOUND              DECLARE cursor_name CURSOR FOR sql_statement            OPEN    cursor_name [USING variable_list]            FETCH   cursor_name [INTO  variable_list]            CLOSE   cursor_name

- EJEMPLO 3 de programación:   DATABASE stores

GLOBALS    DEFINE p_customer RECORD LIKE customer.* END GLOBLAS

MAIN    DEFINE answer CHAR(1)    OPEN FORM f_cust FROM "custform"    DISPLAY FORM f_cust    DECLARE pointer1 CURSOR FOR            SELECT * FROM customer ORDER BY lname    OPEN pointer1    WHILE TRUE          FETCH pointer1 INTO p_customer.*          IF STATUS = NOT FOUND             THEN EXIT WHILE          END IF          DISPLAY BY NAME p_customer.*          PROMPT "Type carriage RETURN to continue"                  FOR CHAR answer    END WHILE    CLOSE pointer1    CLEAR SCREEN END MAIN

 

 PROGRAMACION INFORMIX-4GL  

- Alternativa en uso del FETCH: FOREACH   Sintaxis:

           FOREACH cursor_name [INTO program_variable]                DISPLAY program_variable TO screen_record            END FOREACH - EJEMPLO 4 de programación:     .................   MAIN      .................      DECLARE pointer1 CURSOR FOR              SELECT * FROM customer ORDER BY lname

     FOREACH pointer1 INTO p_customer.*          DISPLAY BY NAME p_customer.*          PROMPT "Type carriage RETURN to continue"                 FOR CHAR answer      END FOREACH      CLEAR SCREEN  END MAIN

 

- SCROLLing CURSORS (cursores direccionables)   Sintaxis:

            DECLARE cursor_name SCROLL CURSOR FOR sql_statement             FETCH   NEXT | PREVIOUS | PRIOR | FIRST | LAST |                     RELATIVE m | ABSOLUTE m                     cursor_name INTO variable_list - EJEMPLO 5 de programación (se crea tabla temporal)     FUNCTION find_init()      DECLARE pointer1 SCROLL CURSOR FOR              SELECT * FROM customer ORDER BY lname      OPEN pointer1   END FUNCTION

  FUNCTION first_cust()      FETCH FIRST pointer1 INTO p_customer.*      CALL DISPLAY_CUST()   END FUNCTION

 

 PROGRAMACION INFORMIX-4GL

- Resolucion de consultas no previstas   (en estilo QBE: Query By Example)

  1. Construir condicion de busqueda:      Sintaxis:                CONSTRUCT variable ON column_list                                   FROM  form_field_list   2. Crear setencia sql:      Sintaxis:                LET sql_statement_var="SELECT * FROM customer"                    "WHERE " where_clause CLIPPED                             |                             variable del CONSTRUCT

  3. Preparar sentencia para ejecucion (compilacion dinamica):      Sintaxis:               PREPARE exex_statement FROM sql_statement_var

  4. Declarar cursor si la ejecucion de la sentencia puede retornar mas de una fila

  5. Ejecutar instruccion  

- EJEMPLO 6 de programación:

 FUNCTION find_cust()     DEFINE where_clause  CHAR(200)     DEFINE sql_statement CHAR(250)

    CONSTRUCT BY NAME where_clause ON customer

    LET sql_statement="SELECT * FROM customer"                       "WHERE " where_clause CLIPPED

    DISPLAY where_clause  AT 18,1     DISPLAY sql_statement AT 19,1

    PREPARE exec_statement FROM sql_statement       DECLARE pointer1 CURSOR FOR exex_statement     ................     OPEN pointer1     FOREACH pointer1 INTO p_customer.*             ................             DISPLAY BY NAME p_customer.*     END FOREACH     ................ END FUNCTION

 

CONCEPTOS DE INGRES

- Algunos comandos importantes:

  createdb   create   ( = ,...)            [ with logging ]

    Ejemplo: create employee (name=c12, age=i2, salary=f8,                               dname=c10, manager=c12)

    Formato de :     : c -> caracteres; i -> entero (integer); f -> flotante

  append to ( = ,...)

  Def: Variable de Rango: Se usan como alias al nombre de tabla.

       El nombre de la tabla es por defecto una variable rango.

  range of is

  retrieve (| ,...)           [ sort by : descending|ascending ,...]           [ where expresion_condicional ]

    Ejemplo: range of e is employee              retrieve (e.age) where e.name="mike"              retrieve (day_sal=12*e.salary/250)                       where ename="mike"              retrieve (e.name) where not (e.age>40 or e.age50 or e.salary>3000 - Ejemplos de uso de funciones acumulativas:     retrieve (e.age, e.dname, total=sum(e.salary by e.age,e.dname)

  retrieve (e.dname,             nestcomp=avg(e.salary by e.dname where e.salary >                          avg(e.salary where e.dname="toy")))

  range of t is employee   retrieve (e.name, e.salary) where e.salary > t.salary and                                     t.name = "ted"

  Ejercicio (a) de Korth:    range of t is trabaja    range of s is trabaja    retrieve (t.nombre_persona)              where t.salario > avg(s.salario by nombre_campania                    where t.nombre_compania=s.nombre_compania)

CONCEPTOS DE INGRES

NOTA: Los tipos de comandos que siguen solo pueden ser dados por el propietario de la bd o por el administrador INGRES

- Ejemplos de Restricciones de Integridad

  define integrity on e is e.age>=16 and e.age Se crea una tabla de nombre 'empindex'  con los atributos: salary y tidp (tuple identifier pointer)     La estructura por defecto de los indices secundarios es isam. Se le puede cambiar como a cualquier otra tabla.

  Ejemplo: modify employee to isam on salary            index on employee is nameindex(name)            modify nameindex to hash on name   -> index ramdom

- Mantenimiento:   - Fecha de expiración para cada tabla (por defecto siete dias después de creada)   - Extendiendo fecha de expiración:     save employee until 7 10 1995 | jul 10 1995   - "Purgando" tablas:     range of d is departament     delete d  -> deja solo la estructura   - Resplados (backup's)     set defaults [dir_backup]     copydb **  ->crea archivos de comandos para copiar y                           recuperar de nombres copy.out y copy.in     ingres ** < copy.out -> invocacion de ingres con entrada de comandos desde archivo 'copy.out'

    Para recuperar:     ingres ** < copy.in  -> invocacion de ingres con entrada de comandos desde archivo 'copy.in'

- Comandos a nivel del Sistema Operativo:     Auditdb ->Permite imprimir partes seleccionadas del 'journal' de una db   Catalogdb ->Lista db's propiedad del usuario   Ckpdb ->Crea 'checkpoint', invalida journals anteriores   Copydb ->Crea archivos de comandos para copiar/recuperar db   Createdb   Destroydb   Helpr ->Informacion sobre db's   Ingres ->Invocacion del INGRES   Journal ->No es un comando; se establece la accion con especificaciones en otros comandos   Optimizaddb ->Genera estadisticas para uso del optimizador de consultas   Printr -> Imprime tablas   Purgedb ->Destruye todas las tablas expiradas y temporales   Recoverdb ->Recupera una db desde el ultimo checkpoint y el 'journal' actual   Restoredb ->Recupera INGRES despues de una caida del S.O.   Statdump ->Imprime las estadisticas utilizadas por el optimizador   Sysmod ->Modifica las tablas del sistema para que darles la estructura mas conveniente   Unloaddb ->Crea archivos de comandos para desmontar/montar una db     - Comandos asociados al journal:

    set logging     set logging in -> a partir del proximo checkpoint

Este sistema de seguridad permite recuperación después de accidente o hasta un estado anterior al de la comisión de algún error lógico grave    



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3