BDCurso |
您所在的位置:网站首页 › AuditDB › BDCurso |
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: MAINDEFINE 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 storesGLOBALS 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 storesGLOBALS 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 lnameFOREACH 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 FUNCTIONFUNCTION 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 |