Fundamentos de DB2 DBMS DB2 • DB2 es un Manejador de Base de datos Relacionales BASE DE DATOS DE ADMINISTRACION TABLAS RELACIONADAS BASE DE DATOS DE VENTAS TABLAS RELACIONADAS Componentes de DB2 • • • • Data Definition Language ( DDL ) Data Manipulation Language ( DML ) Structured Query Language ( SQL ) y otras instrucciones de CONTROL Diseño de Tablas en DB2 • Una tabla por entidad • Información relacionada acerca de: • Empleados • Departamentos • Proyectos... EMP y mas... DEP PROY Nombres de Objetos • Cada Tabla y columna deben tener nombre – Primer carácter ALFABETICO – Otros ALFANUMERICO – Máximo de 18 caracteres – Nombre único de tabla por cada OWNER – Nombre único de columna por cada TABLA Referencias a Tablas Base de datos NOMBRE TABLA EMP NOMINA NOMBRE COMPLETO DE TABLA NOMINA.EMP Nombres de columnas NOMBRE DE LA TABLA EMP APELLIDO NOMBRE CALIFICADO DE LA COLUMNA EMP.APELLIDO Tipos de datos • A cada columna le es asignado un tipo específico y tamaño de dato • Categorías de tipos de datos – Numeric – Character – Graphics – Date/Time Formatos Date/Time • DATE yyyymmdd • TIME hhmmss • TIMESTAMP yyyymmddhhmmssnnnnnn Formato Nulos • Cada columna tiene una característica de nulidad, reglas aplicables para cuando el valor de un dato es inexistente • NOT NULL • ALLOW NULL • NOT NULL WITH DEFAULT Nulos A KFYDJ B ? C NCU D bbbbbbbb A - - - NOT NULL los valores deben de ser dados B/C - ALLOW NULL si un valor no es dado, este es marcado como desconocido D - - - NOT NULL WITH DEFAULT si un valor no es dado, DB2 rellena con un valor de DEFAULT Not Null With Default • Cuando no existe un valor NUMERIC rellena con ZEROS FIXED rellena con BLANCOS VARIABLE coloca LONGITUD CERO DATE coloca CURRENTCURRENT-DATE TIME coloca CURRENT CURRENT--TIME TIMESTAMP coloca CURRENTCURRENT-TIMESTAMP Primary key (llave primaria) • Una o varias columnas pueden identificar una ocurrencia de entidad especifica (primary key) TABLA:: EMP TABLA NUMEMP APELLIDO NUMDEP PUESTO 030 KWAN C01 GRTE 250 SMITH D21 VEND 270 PEREZ E11 VEND 300 SMITH D21 OPR VALORES UNICOS ... Relación de datos • Un renglón en una tabla puede ser lógicamente asociada con otro, en alguna otra tabla – Cada empleado trabaja en un departamento Relación de Tablas • Un renglón en una tabla puede acarrear la llave de otra tabla –Cada renglón de empleado contiene la llave de los departamentos de empleados Llaves KEY Identifica una línea de datos PRIMARY KEY Identifica su propio renglón FOREIGN KEY Identifica una relación de datos Tablas relacionadas DEP NUMDEP NOMDEP NUMGRTE C01 INFO 030 D21 ADMIN 070 B01 PLAN 020 E11 OPER 090 LLAVE FORANEA LLAVE PRIMARIA EMP ... NUMEMP APELLIDO NUMDEP PUESTO 030 KWAN C01 GRTE 250 SMITH D21 VEN 270 PEREZ E11 VEN 300 SMITH D21 OPR ... Relaciones de entidades DE UNOUNO-A-MUCHOS UNO UN UN EMPLEADO TIENE DEPARTAMENTO EMP DEP EMP UN DEPARTAMENTO TIENE EMPLEADOS EMP MUCHOS MUCHOS Relación de Entidades DE MUCHOS MUCHOS--A-MUCHOS MUCHOS UN EMPLEADO TIENE PROYECTOS MUCHOS EMP PROY EMP PROY EMP PROY MUCHOS UN PROYECTO TIENE EMPLEADOS MUCHOS Asociación de Tablas EMP NUM EMP APELLIDO 1 PROYECTO ASIGNACIONES SMITH 2 JONES 5 BROWN NUM EMP NUM PROY 1 C1 1 C3 1 C4 2 C3 2 C4 5 C1 5 C3 NUM NOM PROY PROY C1 SOPORTE C3 TALLER C4 DISEÑO • Una tabla de asociación para una relación muchos muchos--a-muchos Reglas de proceso • Integridad referencial referencial.. Mantiene la validez de datos por la aplicación de reglas durante el proceso, como como:: El valor de la llave primaria es único y nunca nulo Cada valor de llave foránea debe corresponder a cada llave primaria Violación de Llave Primaria NUMDEP C01 D21 B01 E11 NOMDEP INFO ADMIN PLAN OPER NUMEMP APELLIDO 030 KWAN 250 SMITH 270 PEREZ 300 SMITH NUEVO EMPLEADO EMPLEADO:: 250 DEAN NUMGRTE 030 070 020 090 NUMDEP C01 D21 E11 D21 ... PUESTO ... GRTE OFI OFI OPR C01 VEN Violación de Llave Foránea NUMDEP C01 D21 B01 E11 NOMDEP INFO ADMIN PLAN OPER NUMEMP APELLIDO 030 KWAN 250 SMITH 270 PEREZ 300 SMITH NUEVO EMPLEADO EMPLEADO:: 315 COBB NUMGRTE ... 030 070 020 090 NUMDEP C01 D21 E11 D21 B02 PUESTO ... GRTE OFI OFI OPR VEN Reglas de Borrado • Cuando una línea con una llave primaria es borrada, que pasará con las líneas iguales a las llaves foráneas? • El diseñador selecciona uno de los siguientes casos casos:: - CASCADE - SET NULL - RESTRICT Resumen • Número de tablas – Una tabla por cada entidad significativa de datos – Una tabla de asociación por cada par de entidades con relación muchos--a-muchos muchos – Una tabla para grupos de columnas repetitivas Resumen • Formato de tablas – Una columna por cada elemento de dato – Un renglón por cada ocurrencia de una entidad – Cada renglón en una tabla debe contener las mismas columnas en sus ocurrencias • Formato de columnas – Cada columna esta asignada a un tipo específico de dato y tamaño • • • • NUMERIC CHARACTER STRING GRAPHIC DATE / TIME Resumen – Cada columna tiene una característica de nulidad nulidad:: • ALLOW NULL • NOT NULL • NOT NULL WITH DEFAULT Resumen • Especificaciones – Una TABLA y una COLUMNA son identificadas por un NOMBRE – Un RENGLON es identificado por los valores que contiene, ejemplo ejemplo:: Los apellidos de todos los empleados que trabajan en el departamento D21 TABLA:: EMP, COLUMNA TABLA COLUMNA:: APELLIDO RENGLONES:: Todos aquellos que NUMDEP = ‘D RENGLONES ‘D21 21’’ • Tablas relacionadas – Los valores en una tabla (Llave foránea) deben de coincidir con los valores en otra tabla (Llave primaria) Manejo Físico de Datos • DDL y el catálogo de DB DB2 2 DECISIONES DE DISEÑO DDL DEP EMP CATALOGO DE DB2 TABLAS CREATE ALTER DROP Instrucciones DDL • Data Definition Language – Lenguaje de definición de datos CREATE ALTER DROP Manejo de Objetos • Cada tabla (TABLE) se encuentra en un TABLESPACE • Cada TABLESPACE y sus contenidos se encuentran dentro de una base de datos (DATABASE) • Una base de datos (DATABASE) es un grupo de Tablespaces y Tablas Create Database • Define una base de datos que contendrá información CREATE DATABASE DB3 DB3 Create Tablespace • Aloja espacio para almacenar tablas CREATE TABLESPACE TS3 IN DB3 TS3 TS1 TS2 DB3 Create Table • Describe las tablas CREATE TABLE EMP...IN DB3.TS2 EMP TS3 TS1 TS2 DB3 Create Table CREATE TABLE TB1 (C1 CHAR (6) C2 INTEGER C3 DECIMAL C4 VARCHAR PRIMARY KEY IN DB1.TS1 NOT NULL, NOT NULL WITH DEFAULT, (4,2), (24), (C1) ), Create Table CREATE TABLE TB TB4 4 ( COLA SMALLINT, COLB CHAR (6), FOREIGN KEY (COLB) REFERENCES TB TB1 1 ON DELETE CASCADE ) IN DB DB1 1.TS TS1 1 Alter de Tabla ALTER TABLE TB TB1 1 ADD C5 CHAR (24 24)) C1 C2 C3 C4 C5 Adición de Columnas • Una columna por ALTER • Queda en la columna mas a la derecha • Debe ser NULL o NOT NULL WITH DEFAULT Alter NO NO... ... • Cambia los tipos de datos • Cambia longitud de columnas • Cambia atributos de nulidad • Reacomoda columnas • Remueve una columna Instrucción DROP • DROP INDEX IX IX1 1 • DROP TABLE TB TB1 1 • DROP TABLESPACE DB DB1 1.TS TS1 1 • DROP DATABASE DB DB1 1 DROP Index IX1 DB1 SG1 TS1 TB1 SYN SG2 DROP Index TB1 DB1 SG1 TS1 SG2 Resumen • DDL controla la información contenida en el catálogo de DB2 DB 2 acerca de los objetos DB DB2 2 • Sentencias DDL – CREATE – ALTER – DROP Objetos DB DB2 2 • Un DATABASE es la agrupación de tablas, sus índices y los espacios que estos ocupan • Objetos DB DB2 2 – – – – – – – DATABASE TABLESPACE STORAGE GROUP TABLE SYNONYM VIEW INDEX Instrucciones DML • Data Manipulation Language – SELECT SELECT.. Recupera datos – UPDATE UPDATE.. Cambia valores – DELETE DELETE.. Elimina renglones – INSERT INSERT.. Añade renglones Select típico SELECT IDENTIFICA Columna, Columna Columnas FROM Tabla Tabla WHERE Columna = Valor Renglones Select típico SELECT FROM WHERE PUESTO, NOMBRE EMP NUMDEP = 20 ID NOMBRE NUMDEP PUESTO 10 20 30 40 80 SAND PERN MARE OBRI JAME 20 20 38 38 20 GRTE VEND GRTE VEND OFI PUESTO NOMBRE GRTE VEND OFI SAND PERN JAME Comparaciones • Operadores ( >, =, <, ¬=) • Booleanos (AND, OR) • Valores parciales (LIKE ‘ _ %’) • Valores en renglón (COMISION>SALARIO) • Valores calculados (COMISION/ (COMISION/12 12)) SELECT * FROM EMP WHERE ( (SALARIO + COMISION) > 40000) AND (NUMDEP LIKE ‘3_’) Funciones de columna SELECT AVG (SALARIO + COMISION) SUM(SALARIO), COUNT(*) FROM EMP 23888.33 573320.00 24 GROUP BY SELECT NUMDEP, AVG(SALARIO + COMISION), SUM(SALARIO), COUNT(*) FROM NUMDEP D11 D21 E11 E21 EMP GROUP BY NUMDEP 24677.78 25153.33 20998.00 23827.50 222100.00 150920.00 104990.00 95310.00 9 6 5 4 Join de Tablas SELECT FROM WHERE AND ID, NOMBRE, DIV EMP, DEP PUESTO = ‘VEN’ NUMDEP = NOD EMP ID NOMBRE 10 18 40 90 SAND BURN OBRI ALDA NUMDEP PUESTO 20 20 84 38 GRTE VEND VEND VEND ID 18 40 90 NOMBRE BURN OBRI ALDA DIV ESTE CEN ESTE DEP NOD DIV 20 38 66 84 ESTE ESTE OESTE CEN INSERT INSERT INTO EMP VALUES (15, (15, ‘ALDA’, 0, ‘VENTAS’, NULL, ‘M’) ‘M’) ID NUM NOMBRE DEP PUESTO SALARIO SEXO 10 20 15 SAND PERN ALDA M F M 20 20 0 GRTE VEN VEN 18,357 13,171 - UPDATE ID PUESTO NUMDEP GRTE 20 PRUEBA 10 20 VEN 20 30 GRTE 38 UPDATE PRUEBA SET PUESTO = ‘EJEC’, NUMDEP = NUMDEP * 2 WHERE PUESTO = ‘GRTE’ ID PUESTO NUMDEP EJEC 40 PRUEBA 10 20 VEN 20 30 EJEC 76 DELETE DELETE FROM PRUEBA WHERE PUESTO = ‘VEN’ ID PUESTO NUMDEP 10 GRTE 20 20 VEN 20 30 GRTE 38 80 OFI 20 90 VEN 38 PRUEBA ID PUESTO NUMDEP 10 GRTE 20 30 80 GRTE OFI 38 20 PRUEBA Vistas (View) • Una vista es una selección predefinida de datos que trabaja con una aplicación o con un usuario • Si bien la vista es usada como una tabla de usuario, los datos residen en los espacios físicos de las tablas en que se basa la vista CREATE VIEW VW1 AS SELECT ID, NOMBRE FROM EMP WHERE NUMDEP = ‘E11’ Vista de una tabla VW1 EMP NUMDEP ID NOMBRE PUESTO CREATE VIEW VW1 AS SELECT ID, NOMBRE FROM EMP WHERE NUMDEP = ‘E11’ C01 E11 K23 30 13 34 KWAN QUIN BENS VEN OFI VEN SELECT * FROM VW1 E11 C01 K23 29 90 37 PARK HEND SMITH GRTE VEN VEN E11 C01 K23 31 20 17 SETH DINO ADAM VEN OFI VEN Objetivos de las vistas • Simplifican la codificación – La definición de vistas califica los requerimientos de usuarios • Seguridad – El usuario no tiene acceso a los datos omitidos por la vista Selección de múltiples líneas EXEC SQL DECLARE XX CURSOR FOR SELECT ID, NOMBRE FROM EMP WHERE NUMDEP = :D ENDEND-EXEC. D E11 EXEC SQL OPEN XX END--EXEC. END EXEC SQL FETCH XX INTO :ID, :NM ENDEND-EXEC EXEC SQL CLOSE XX END--EXEC.20 END FETCH EXEC SQL FETCH XX INTO :ID, :NM END-EXEC. XX ID NOMBRE 030 KWAN 290 PARK ... ... ID NM FETCH 030 KWAN SEGUNDO FETCH 290 PARK PRIMER SQLCA • SQL Communication area – El campo de código de estatus da el resultado de la última ejecución – Ejemplos Ejemplos:: 000 Ejecución correcta +100 Inexistente -530 Llave foránea no válida BIND • Comentarios – Detecta errores utilizando el catálogo de DB DB2 2 – Desarrolla la estrategia de acceso para cada instrucción SQL – Almacena ésta estrategia como PAQUETES/PLANES reutilizables sin necesidad de repetir BIND COMMIT • COMMIT. COMMIT. Una unidad de trabajo terminada satisfactoriamente • Disparado por – Instrucción Commit (TSO) – Syncpoint/Checkpoint (IMS,CICS) – Terminación normal del programa Protección de Datos (Autorizaciones) RACF USERID/PSWD TSO CICS IMS BATCH RACF RACF VSAM ACCESO DB2 CATALOGO BASE DE DATOS DB2 DB 2I Menú de Opciones ===> D (DB2I DEFAULT) 1 SPUFI 2 DCLG 3 PREPARACION DE PROGRAMA 4 PRECOMPILAR 5 BIND / REBIND / FREE 6 RUN 7 COMANDOS DE DB2 8 UTILERIAS 9 CATALOGO VISIBILITY D DB2I DEFAULTS X EXIT Panel de SPUFI ===> ENTER INPUT DATA SET NAME: 1 DATA SET NAME ====> ... ... ... ... ... ... ENTER OUTPUT DATA SET NAME: 4 DATA DET NAME ====> ... ... ... ... ... ... SPECIFY PROCESSING OPTIONS: 5 CHANGE DEFAULTS ====> 6 EDIT INPUT ====> 7 EXECUTE ====> 8 AUTOCOMMIT ====> 9 BROWSE OUTPUT ====> MIPROG.LIB(SPUFI1) MIPROG.SPUFISAL N Y Y Y Y ENTER Proceso de SPUFI EDIT -- MIPROG-LIB(SPUFI1) SELECT ID, NOMBRE FROM EMP WHERE NUMDEP = 38 (END) PF3 Panel de SPUFI ===> EDIT SESSION COMPLETE, ENTER TO CONTINUE ENTER INPUT DATA SET NAME: 1 DATA SET NAME ===> MIPROG.LIB(SPUFI1) ... ... ... ENTER OUTPUT DATA SET NAME: 4 DATA SET NAME ===> MIPROG.SPUFISAL ... ... ... SPECIFY PROCESSING OPTIONS: 5.- CHANGE DEFAULTS ===> N 6.- EDIT INPUT ===> * 7.- EXECUTE ===> Y 8.- AUTOCOMMIT ===> Y ENTER 9.- BROWSE OUTPUT ===> Y Consulta de Resultados BROWSE -- MIPROG.SPUFISAL SELECT ID, NOMBRE FROM STAFF WHERE NUMDEP = 38 ID NOMBRE 120 NAUGHTON 180 ABRAMS 30 MARENGHI PF8 Consulta de Resultados BROWSE -- MIPROG.SPUFISAL NUMBER OF ROWS DISP IS 3 STMT EXEC SUCCESSFUL, SQLCODE IS 100 ***** BOTTOM OF DATA ***** PF3 DCLGEN • Generador de declaraciones CATALOGO DB2 DCLGEN AREA DE TRABAJO PROGRAMA APLICATIVO PRECOMPILADOR COPY Panel de DCLGEN ===> ENTER TABLE NAME: 1 SOURCE TABLE NAME ===> EMP ... ... ... ENTER DETINATION DATA SET: 2 DATA SET NAME ===> COPYLIB(EMP) ... ... ... ... ... ... ENTER OPTIONS ARE DESIRED 4 ACTION ===> ADD ENTER FIN DE MODULO Derechos de autor • Este producto has sido elaborado por • Jorge Godínez Rodríguez. • Derechos reservados – Prohibida su reproducción parcial o total 73