Download base de datos - Lic. Roberto García
Document related concepts
Transcript
2016 Bases de Datos Relacionales www.licrgarcia.webnode.com.ar 1 Objetivos Proporcionar al participante los conceptos básicos de bases de datos y dar a conocer las principales funcionalidades de los sistemas administradores de bases de datos. Profundizar en el estudio del modelo relacional, su fundamento teórico y lenguajes de consulta. Efectuar prácticas con el lenguaje 2 Contenido 1. 2. 3. 4. 5. 6. 7. 8. Introducción El ambiente tecnológico de las bases de datos El modelo relacional Instrumentación de la base de datos Normalización Integridad y Seguridad Lenguajes para bases de datos Manejo de Transacciones 3 UNIDAD I Introducción a las BD Clase expositiva 1 y 2 4 1. Introducción ¿Qué es una Base de Datos? Sistemas de Información y Bases de Datos Sistemas de Administración de Bases de Datos El campo de las bases de datos Comparación con el proceso por archivo Paradigma de base de datos Niveles de automatización Aplicaciones 5 1. Aplicaciones con manejo de datos independiente ( Sistema de Archivos ) Cada aplicación recurre a archivos separados. 2. Gestión centralizada ( Sistema de Bases de Datos ) Datos centralizados aplicaciones y compartidos por todas las Aplicaciones con Manejo de Datos Independiente Num. Cliente nombre cliente 2056 juan pérez Sistema de Archivos Aplicación 1 Archivo de cuentas corrientes DatosCuentaCorriente ........ ........ ....... ....... Archivo de Ahorros Num. Cliente 2056 Datos de Ahorros nombre cliente juan pérez redundancia ........ ........ ....... ....... Aplicación 2 Aplicación 3 Archivo de prestamos inconsistencia Num. Cliente 2056 nombre cliente Juan A. Pérez Datos de Prestamos ........ ........ ....... ....... Cada aplicación recurre a archivos separados. ¿Cómo funcionaría un Banco bajo este criterio? Archivos separados según tipo de operaciones bancarias y áreas funcionales: cuentas corrientes, ahorros y prestamos,.. Ejemplo: Si Juan Pérez es un cliente del Banco y tiene cuenta corriente, cuenta de ahorros y un préstamo que actualmente esta pagando, los datos concernientes a Juan, estarían repetidos en los tres archivos, cada uno de los cuales se actualiza con programas diferentes. Aplicaciones con Manejo de Datos Independiente Alto nivel de redundancia Un mismo dato puede estar repetido en diferentes archivos. Riesgo de inconsistencias Las diversas copias de los mismos datos pueden no coincidir (por ejemplo el cambio de dirección de un cliente) Uso excesivo de recursos humanos Una alta proporción de recurso humano, se dedica a actividades de mantenimiento de software. Las aplicaciones dependen de los archivos Si se hacen cambios en los formatos de archivos, también deben modificarse los programas( falta de independencia ). Los archivos pueden ser incompatibles Un archivo en Cobol no es igual que un archivo hecho en C++. Los archivos no pueden combinarse o compararse. Datos separados y aislados En ocasiones es necesario obtener información de dos o más archivos. Costos elevados Cambios a las aplicaciones muy costosos, un cambio trivial provoca una reacción en cadena de otros cambios. Almacenamiento redundante incrementa los costos. Tendencia a crear más y más archivos Proliferación constante de nuevos archivos y por tanto dificultad en su actualización. 8 Gestión Centralizada de Datos Aplicación 1 Archivo de Clientes nombre cliente 2056 Archivo de Cuentas Corrientes juan pérez Datos de cuentas corrientes Archivo de Cuentas de Ahorros Datos de cuentas de ahorros Datos de Cuentas Corrientes Datos de Cuentas de Ahorros Archivo de Préstamos Datos de Prestamos Datos de préstamos Aplicación 3 Aplicación 3 Num. Cliente Enfoque de Bases de Datos Usando el ejemplo anterior: - En este caso se establece un solo archivo de clientes para las tres cuentas. - Se crea un archivo para cada actividad bancaria: Cuenta corriente, Cuenta de ahorros y Prestamos. - Ya no se registran los datos del cliente, solo se hace referencia a ellos. - Los datos son compartidos por todas las aplicaciones. Asi por ejemplo es posible transferir dinero entre una cuenta y las otras, o preparar un solo estado mensual para las tres 9 cuentas de un cliente o de todos los clientes. … Datos Independientes Dpto. Personal Empleados Dpto. Ventas Clientes Ventas Dpto. Contabilidad Cuentas Inventario … Centralizado Personal Ventas Contabilidad BASE DE DATOS SGBD Empleados Clientes Ventas Inventario Cuentas Sobre los datos de la empresa En la medida de lo posible los datos en la base deben cumplir: Ser Independientes entre si Estar Distribuidos Ser No redundantes Ser Reales Estar Compartidos 11 Características de los SGBD Naturaleza autodescriptiva de los SGBD Diccionario de Datos o Catalogo (Metadatos ). Aquí va la información de la estructura de cada archivo, el tipo y formato de los datos elementales y las diversas restricciones que se aplican a nivel de columna o de archivo. Independencia respecto a programas y datos Abstracción: Las estructuras de los archivos se almacenan en el diccionario de datos del SGBD y no en los programas. Manejo de múltiples vistas de los datos Cada usuario puede tener una vista ó perspectiva diferente. Control de Concunrrencia El SGBD incluye software de control de concurrencia (gestor de transacciones) para asegurar que cuando varios usuarios intenten actualizar los mismos datos, lo hagan de manera sincronizada. Control de Redundancia Queda minimizada o controlada la repetición del mismo dato en diferentes archivos. De esta forma ya no se desperdicia espacio de almacenamiento ni se producen inconsistencias. Restricción de accesos no autorizados Niveles de acceso: Manejo de roles y privilegios por cuentas y/o grupo de cuentas. Restricciones de Integridad Ejemplos: definir un tipo de dato (entero o String), las edades de colegiales (13 a 17), que un valor sea único (código de trabajador ), etc Respaldo y Recuperación Se recuperan ante fallas de hardware o de software. La idea es que después de una caída, se restaure la BD al estado en el que estaba. Comparación entre Archivos y Base de Datos Dependencia de ligas externas a los datos Datos sin compartir en toda la empresa Redundancia de los datos Archivos no relacionados entre sí Acceso limitado y con poca flexibilidad, eficiencia y seguridad • Independencia a ligas externas • • • • a los datos Datos compartidos y compatibles en la empresa Redundancia mínima y controlada Datos relacionados de acuerdo a un modelo Flexibilidad, Integridad, Eficiencia y seguridad 13 Definición Base de Datos o BD Colección de todos los datos operativos de una Empresa de acuerdo a un modelo específico que son accesibles desde cualquier lugar físico y nivel de la empresa (Estratégico, Táctico, Operativo) Una BD debe cumplir con las características de: Unicidad Consistencia Seguridad Privacídad Disponibilidad Integridad 14 ¿ Qué es una Base de Datos (BD) ? Un conjunto de información organizada para cumplir las necesidades de información de los usuarios de una empresa. Almacena eventos individuales de las transacciones que se generan a partir de un Proceso de Negocios determinado Colección compartida de datos sin redundancias innecesarias, almacenados en un soporte informático no volátil, independiente de los programas que los usen, interrelacionados y estructurados de acuerdo a un modelo de datos con el objeto de atender todas las necesidades de los diferentes usuarios. 15 Sistema Gestor de Base de Datos (SGBD) Un software ó conjunto de programas que permiten crear y mantener una base de datos, asegurando su integridad, confidencialidad y seguridad. Los SGBD permiten: - Definir una BD: especificar tipos, estructuras y restricciones de datos - Construir la base de datos: guardar los datos en algún medio controlado por el mismo SGBD - Manipular la base de datos: realizar consultas, actualizarla, generar informes. - Control de la Redundancia - Control de accesos - Manejo de restricciones de integridad Características que hacen la Diferencia entre SGBD - Rendimiento - Funcionalidad/Inteligencia - Distribución/Integración El campo de las BD Eficiencia Acceso y modificación de grandes volumenes de datos Adaptabilidad Supervivencia de datos bajo errores, reduciendo inconsistencias Control del acceso Simulataneidad de uso múltiple dentro de una congruencia con control de concurrencia y seguridad Persistencia Existencia y mantenimiento de datos por largos períodos de tiempo, independientemente del modo de acceso 17 Guía de Lectura 1 BD D Kroenke.pdf. ◦ Capitulo 1 Introducción al Procesamiento de Bases de Datos BBD silberschatz.pdf ◦ Capitulo 1 Introducción 1.1. Aplicaciones de los Sistemas de Bases de Datos, 1.2. Sistemas de Bases de Datos Frente a Sistemas de Archivos Date C J - Introdución a los Sistemas de BD.pdf ◦ CAPÍTULO 1 Panorama general de la administración de bases de datos 18 UNIDAD II Ambiente Tecnológico Clase expositiva 3 y 4 19 2. El ambiente tecnológico de las BD Contexto informático Actividades del modelador de bases de datos Breve cronología de las bases de datos Evolución de la noción de BDs Modelos de datos Esquema e instancia Modelado Modelo de empresa Modelo de datos Modelo de implementación 20 Esquema General de Uso de una Base de Datos Internet BASE DATOS ASP PHP JAVA .NET Applicación Cliente VisualBasic PowerBuilder VisualFox Delphi SQL SQL Server ORACLE INFORMIX DB2 Modelo Datos 21 Diversos Modelos de una BD En realidad han existido diversos modelos para modelar la realidad, aquí presentamos algunos de ellos Modelo Jerárquico Primer modelo de BD, IMS es la mas popular Modelo de Redes Definido por C. Bachman, IDMS fue el producto comercial Modelo Relacional Funcional Diseño de Codd popularizado por Date (RDB, Oracle, Sybase, Informix ) Modelo Entidad - Relación Concepción de Chen, muy usado aplicable a diversos modelos ( j,r,rel) Modelo Semántico Inicialmente de R. Quillian usado solo en investigación Modelo Binario Instrumentado por Stonebraker basado en el modelo de Codd (Ingres) Modelo Orientado a Objetos Popular al representar la tendencia actual (Ilustra, O2 ) Modelo Mutlirelacional Extensión al relacional con inversión total 22 Entorno de operación 23 EXTRANET / INTRANET: El entorno actual Interacción actual entre el WWW y la BD 24 Niveles de Instrumentación 25 Niveles de Instrumentación (2) 26 Arquitectura de una BD (Niveles de abstracción) NIVEL EXTERNO Es conocido como el nivel de vistas de usuario. Cada vista de usuario se conoce como subesquema o esquema externo, donde cada uno de ellos describe alguna parte de la base de datos. Oculta al usuario toda la base de datos restante. NIVEL CONCEPTUAL A este nivel se tiene el esquema de la base de datos, que describe la estructura de toda la base de datos. El esquema conceptual oculta los detalles de las estructuras físicas de almacenamiento y se concentra en describir entidades, tipos de datos, relaciones, operaciones y restricciones NIVEL INTERNO o FISICO tiene un esquema interno o físico. Describe como se almacenan realmente los datos y los caminos de acceso a la base de datos. Arquitectura de una BD La BD presenta una arquitectura de tres niveles: Usuarios finales NIVEL EXTERNO NIVEL CONCEPTUAL Vista Externa 1 Vista Externa 2 ... Vista Externa n Correspondencia externa/conceptual ESQUEMA CONCEPTUAL Correspondencia conceptual/ interna NIVEL INTERNO ESQUEMA INTERNO BD ALMACENADA Correspondencia : proceso de transformar pedidos y respuestas de un nivel a otro detalle Tipos de Usuarios de Base de Datos Programadores Escriben aplicaciones, donde incrustan comandos DML para interactuar con el sistema Usuarios normales Interactúan con el sistema mediante el uso de aplicaciones que han sido escritos por informáticos. Usuarios sofisticados Interactúan con el sistema creando consultas con un lenguaje de consulta, las cuales entran al procesador de consultas que transforma las instrucciones DML, para ser entendidas por el gestor de almacenamiento. Administrador de la Base de Datos Crea BD, define métodos de acceso, concede autorizaciones, etc Vista de los Componentes de un SGBD Usuarios normales Programadores de aplicaciones Interfaces de aplicaciones Programas de aplicacion Precompilador del DML Código objeto de las aplicaciones Gestor de transacciones Usuarios sofisticados Consulta compilador del DML Administrador de Base de Datos Usuarios Esquema de base de datos Interprete del DDL Procesador de Consultas Motor de evaluación de consultas Gestor de memoria intermedia Gestor de almacenamiento Gestor de archivos Archivos de datos estadística indices Diccionario de datos Sistema de gestión de base de datos ¿Cómo Diseño la Base de Datos ? Interacción con el sistema Usuarios Sistema Requerimientos BASE DATOS Etapas para el Diseño de una Base de Datos Requerimientos de Información (I) DISEÑO CONCEPTUAL (II) DISEÑO LOGICO (III) DISEÑO FISICO DE LA BASE DE DATOS BASE DATOS Etapas para el Diseño de una Base de Datos Requerimientos de Información Usuarios y Clientes DISEÑO CONCEPTUAL Cliente Producto Documentos DISEÑO LOGICO RED RELACIONAL OO DISEÑO FISICO DE LA BASE DE DATOS ORACLE SQL Server ACCESS DB2 MYSQL INFORMIX Guía de Lectura 2 www.licrgarcia.webode.com.ar Tema 1. Conceptos Básicos de los sistemas de Bases de Datos. . (12Introduccion a las bases de datos.pdf) CAPÍTULO 2 Arquitectura de los sistemas de bases de datos Date C J - Introdución a los Sistemas de BD.pdf 34 UNIDAD III Parte 1 Introducción al Modelo Relacional Clase expositiva 5,6, 7 y 8 35 3. El Modelo Relacional Definición del modelo relacional Esquema relacional Propiedades estructurales Definición de relación Identificación de tuplas Almacenamiento de relaciones 36 Modelo de Datos Conjunto de conceptos para describir la estructura de una base de datos, es decir, a las entidades involucradas, sus relaciones, semántica asociada a los datos y restricciones de consistencia. 1. Modelo Jerárquico SGBD de Primera 2. Modelo de Redes Generación SGBD de Segunda 3. Modelo Entidad Relación Generación 4. Modelo Relacional 5. Modelo de Objetos 6. Modelo Objeto-Relacional Alto Nivel Nivel Implementación Los modelos de datos se clasifican : SGBD de Tercera Generación BD. DISTRIBUIDAS, ACTIVAS, ESPACIALES ORIENTADAS A OBJETOS, ... 37 Modelo de Datos Un modelo es un conjunto de conceptos para describir los datos y la relación semántica entre ellos, dentro de las restricciones que apliquen en la empresa La triada MD { G, O, R } G Reglas de Generación de objetos 0 Operaciones, elementos de manipulación R Restricciones inherentes y explícitas MD Notación formal matemática para expresar datos y relaciones Esquema del Modelo de Datos: Es un plano de la Base de Datos Vista del Modelo de Datos: Es un sub esquema del M. de D. 38 Modelado 39 Definición del Modelo El modelo relacional es una estructura basada en colecciones de tablas en 2 dimensiones con propiedades especiales, que permiten representar distintos tipos de asociaciones Las tablas se denominan entidades y están formadas por un conjunto de tuplas o instancias de cada relación de datos atómicos, llamados dominios. Cada tupla representa un hecho elemental o aseveración de la realidad a modelar: < Id objeto, propiedad 1, propiedad 2, … , propiedad n > < Arbol, Altura, Color, … , Edad > < Fresno, 10.30, café oscuro, … , 10 > El orden de cada tupla en la entidad y de cada dominio es irrelevante en la organización. Aunque los valores de los dominios pueden repetirse, las asociaciones son únicas, por lo que no pueden existir dos instancias iguales. 40 Operaciones con el Modelo El modelo relacional permite consultar las tablas: instancia por instancia insertar nuevas entidades: definición de archivos insertar nuevas instancias: altas eliminar entidades: bajas de archivos eliminar instancias: bajas actualizar entidades: cambios interrelacionar entidades: a través de un dominio El modelo asume la existencia de un lenguaje de interacción poderoso El modelo fue desarrollado por F. Codd en los 70’s y parte de la definición matemática de que un entidad es un subconjunto del producto cartesiano entre los dominios de la realidad a modelar: Sean los dominiosD1:{d1a,d1b..d1n }, D2 :d2a, d2b … d2n}, D3:{d3a, d3b … d3n} Entonces el producto cartesiano D1 x D2 x D3 esta dado por las tuplas < d1a, d2a,d3a > ……. < d1a, d2a,d3b > hasta ….. < d1n, d2n,d3n > El subconjunto de este producto es la realidad existente en un momento dado en la empresa 41 Ejemplos del Modelo Entidades: archivos existentes (esquema) entidad: Direcciones Nombre x Dirección x Nombre Pedro Martín Gonzalo Dirección Pino 67 Encino 40 Suace 34 Teléfono Teléfono 229-3456 456-8907 345-6789 entidad: Edades Nombre x Edad Nombre Pedro Martín Gonzalo Teresa Edad 34 45 23 23 x Estado Civil Estado Civil casado soltero soltero casada Vistas: relación temporal entre archivos (subesquema) Relación entre entidades Nombre Pedro Martín Edad 34 45 Dirección Teléfono Pino 67 229-3456 Encino 40 456-8907 Note que no todos las tuplas están relacionadas, igualmente las entidades son solo un subconjunto de todas las combinaciones posibles de los productos cartesianos 42 Identificación de tuplas (Registros) Tradicionalmente se conoce como llave de acceso a aquel campo o campos de un registro que nos permite llegar directo a un dato, por ejemplo el nombre de la persona nos permite obtener su edad, sexo, altura, etc. En el modelo relacional se mantiene esta situación siendo este dominio o conjunto de dominio la llave de acceso. Para encontrar los índices principales, en el modelo buscaremos aquellos dominios que son independientes, esto es aquellos de los que los demás dominios de la relación dependen para generar una relación funcional. A esto le llamaremos dependencias funcionales o DF. Es común que el dominio o los dominios independientes correspondan a la llave de acceso de un archivo (igualmente al índice principal en un archivo indexado). 43 Llaves y Atributos Tradicionalmente existen las siguientes tipos de llaves de acceso a un archivo: Llave Primaria: Dominio(s) independientes en la entidad Llave Compuesta: Si la llave primaria es formada por varios dominios Super Llave: Conjunto de llaves que satisfacen la identificación única. En el modelo relacional es lo que se desea, para lo que se requiere el proceso de normalización de entidades en el modelado de la realidad Atributo Primario: es aquel dominio independiente y que forma parte de la llave de una entidad específica. Atributo segundario: es aquel dominio que dependa de una llave en una entidad, sin participar en la llave. Llave Foránea: Aquel dominio que existiendo como dependiente en una entidad es a su vez una llave (Atributo primo) en otra entidad de la BD. 44 5. Normalización Diseño de esquemas relacionales Relaciones libres de anomalías Ejemplos de descomposición Descomposición sin pérdida Dependencia funcional Ejemplos básicos Formas normales (anomalías) 1ª. Forma normal(1NF) 2ª. Forma normal(2NF) 3ª. Forma normal(3NF) Forma normal BC(BCNF) 4ª. Forma normal(4NF) 5ª. Forma normal(5NF) Guía para normalizar 3NF 45 Es representada por los siguientes objetos: Relación: es un conjunto de datos referentes a un conjunto de entidades y organizados en forma tabular filas y columnas (tuplas y atributos). En la que cada intersección de filas y columnas tiene un valor. Atributos: son las propiedades de las entidades. Dominio: es el conjunto de donde los atributos toman sus valores. Tupla (registros): es un conjunto de información que forman una fila de una tabla. Grado: es el numero de atributos o columnas que posee. Cardinalidad: se denomina así al numero de tuplas de una relación. Clave: se define a aquel atributo que nos determinan de forma única y mínima a una tupla de esa relación. Tipos de Relaciones Existen cuatro tipos de relaciones que pueden establecerse entre entidades. 1. Uno a uno (1 : 1) 2. Uno a muchos (1 : N) 3. Muchos a uno (M:1) 4. Muchos a muchos (M : M) A estas relaciones se las conoce como cardinalidad. C C = Cardinalidad C Propiedades de las Relaciones Cada relación tiene un nombre único. Los valores de los atributos son atómicos. No hay dos atributos que se llamen de igual forma. El orden de los atributos no importa. Cada tupla es distinta. El orden de las tuplas no importa. Entidades Son los objetos que aparecen en la vida real. Una entidad va a ser representado en una Base de Datos. Existen 2 tipos: Entidad Fuerte: hacen referencia a la propia entidad. Entidad Débil: es aquella que solo tiene sentido gracias a las propiedades que identifican a otras entidades (fuertes o a su vez débiles). Atributos Es una característica o propiedad de una entidad. Se identifica con un nombre y todos los posibles valores que puede tener. Dominios Describe un conjunto de posibles valores para cierto atributo 2 tipos de dominios: ◦ Dominios generales o continuos: son aquellos que contienen todos los posibles valores entre un máximo y un mínimo definido. ◦ Dominios Restringidos o discretos: son aquellos que contienen ciertos valores entre un máximo y un mínimo predefinido. Claves La Clave es un atributo o conjunto de atributos cuyos valores distinguen a una tupla especifica de una tabla. Pueden existir varias claves únicas en una determinada tabla, y a cada una de estas se las suele llamar “claves candidatas”. Clave Primaria Es una clave única elegida entre todas las claves candidatas que define unívocamente a todos los demás atributos de la tabla, para especificar los datos que serán relacionados con las demás tablas. No puede estar duplicada y contener valores “Null” Claves Foráneas Es una referencia a una clave de otra tabla( siempre que tengan el mismo tipo de dato). Determina la relación existente entre dos tablas. Interrelaciones Decimos que dos relaciones están interrelacionadas cuando una posee una clave foránea de la otra. Es una asociación entre tablas mediante los atributos que tienen el mismo dominio. Existen dos tipos de interrelaciones: La interrelación entre entidades fuertes y débiles. La interrelación entre entidades fuertes. Operaciones Básicas Unarias: Selección y Proyección Binarias: Unión, Diferencia y Producto Cartesiano Operaciones Básicas Unarias Selección: obtiene un subconjunto de filas de una tabla con todas sus columnas, creando con este subconjunto una nueva tabla. Se representa como: S (tabla, (condición)) Proyección: obtiene un subconjunto de columnas de una tabla con todas sus filas, creando con este una nueva tabla. Se representa como: P (tabla, (atributo1, atributo2, …)) Operaciones Básicas Binarias Unión: la unión de dos tablas solo se puede realizar si tienen el mismo grado (número de columnas) y los dominios son compatibles. Da como resultado una nueva tabla con las columnas de una de ellas y las filas de ambas tablas. Se representa con el símbolo U. Join: se obtiene de realizar el producto cartesiano y aplicar sobre la tabla resultante una selección preestablecida denominada “selección”. Diferencia: se realiza si ambas tablas tienen el mismo grado y los dominios son compatibles. Se representa como: R-T. Producto Cartesiano: se realiza entre dos tablas y da como resultado una nueva tabla cuyo grado es la suma de los grados de las dos tablas. Se representa como: RxS. Reglas de Codd: 1- Regla de información. 2- Regla de acceso garantizado. 3- Tratamiento sistemático de valores nulos. 4- Catalogo en línea dinámico. 5- Regla de sublenguaje completo de datos. 6- Regla de actualización de vista 7- Inserción, modificación y borrado de alto nivel. 8- Independencia física de los datos. 9- Independencia lógica de los datos. 10- Independencia de integridad. 11- Regla de no subversión. Guía de Lectura Capitulo 2 Modelo Entidad RELACIÓN (BD silberschatz.pdf) Capitulo 3 Modelo Relacional (BD silberschatz.pdf) 60 UNIDAD III Parte 2 Modelo Relacional Clase expositiva 9, 10, 11, 12, 13 y 14 61 Proceso de Normalización La normalización es el proceso de organizar los datos de una base de datos. Incluye la creación de tablas y las relaciones entre ellas según reglas diseñadas para proteger los datos como para eliminar la redundancia. Los datos redundantes desperdician el espacio de disco y crean problemas de mantenimiento. Hay algunas reglas en la normalización de una base de datos. Cada regla se denomina una "forma normal“. Primera Forma Normal Una tabla se dice que esta en 1FN si y sólo si: los valores que componen el atributo de una tupla son atómicos. La tabla contiene una clave primaria única. La clave primaria no contiene atributos nulos. Un atributo solo debe mantener valores elementales o únicos. Debe Existir una independencia del orden tanto de las filas como de las columnas. Pasos a seguir para Normalizar en Primera Forma Normal: Elimine los grupos repetidos de las tablas individuales. Cree una tabla independiente para cada conjunto de datos relacionados. Identifique cada conjunto de datos relacionados con una clave principal Primera Forma Normal (1FN) Nombre Antig Direcciones Ciudad reg 1 TASA 25 a–os Reforma 23 Puebla reg 2 MESA 15 a–os Juarez 15 Cholula reg 3 GISA 20 a–os Sur 322 Puebla Nombre Entidad en 1FN En el producto cartesiano todos los dominios tienen valores atómicos tupla tupla tupla tupla tupla tupla tupla tupla tupla 1 2 3 4 5 6 7 8 9 TASA TASA TASA TASA MESA MESA TASA GISA GISA Antig 25 a–os 25 a–os 25 a–os 25 a–os 15 a–os 15 a–os 20 a–os 20 a–os 20 a–os Producto clavos tornillos tuercas tachuelas tuercas tachuelas clavos tornillos tuercas Direcciones Reforma 23 Reforma 23 Reforma 23 Reforma 23 Juarez 15 Juarez 15 Sur 322 Sur 322 Sur 322 No esta normalizada ya que no existen relaciones atómicas entre los dominios. Anomalía ¿De qué tamaño es un registro? Ciudad Puebla Puebla Puebla Puebla Cholula Cholula Puebla Puebla Puebla Producto clavos tornillos tuercas tachuelas tuercas tachuelas clavos tornillos tuercas Cant 400 200 100 50 30 20 20 50 40 64 Segunda Forma Normal La Segunda Forma Normal está basada en el concepto de dependencia completamente funcional. Una tabla se dice que esta en 2FN si y solo si cumple dos condiciones: Se encuentra en 1FN. Todo atributo secundario ( aquéllos que no pertenecen a la clave principal) depende totalmente de la clave completa. Dependencias Funcionales Es una conexión entre uno o más atributos. Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente manera: FechaDeNacimiento Edad Dependencia Funcional Transitiva: Se aplica para analizar las tablas en tercera forma normal (3FN). Consiste en considerar que “un atributo no primario solo debe conocerse a través de la clave principal o claves secundarias. A B y B A Se dice que C tiene una dependencia funcional transitiva con A si se cumple que B C. Segunda Forma Normal (2FN) Sin embargo la 1FN tiene problemas cuando los atributos tienen dependencia de varias llaves o dominios independiente. Nombre tupla tupla tupla tupla tupla tupla tupla tupla tupla 1 2 3 4 5 6 7 8 9 TASA TASA TASA TASA MESA MESA TASA GISA GISA Antig 25 a–os 25 a–os 25 a–os 25 a–os 15 a–os 15 a–os 20 a–os 20 a–os 20 a–os Direcciones Reforma 23 Reforma 23 Reforma 23 Reforma 23 Juarez 15 Juarez 15 Sur 322 Sur 322 Sur 322 Ciudad Puebla Puebla Puebla Puebla Cholula Cholula Puebla Puebla Puebla Producto clavos tornillos tuercas tachuelas tuercas tachuelas clavos tornillos tuercas Anomalía Cant 400 200 100 50 30 20 20 50 40 ¿Qué pasa cuando dejo de comprarle a TASA ? Ent 1 Entidades en 2FN Las entidades están en 1FN y además cada dominio o atributo depende de un sola llave: Ent 1 Nombre ==> Ant, Dir,Cd Ent 2 Nombre, Producto ==> Cant tupla 1 tupla 2 tupla 3 Nombre TASA MESA GISA Ent 2 tupla tupla tupla tupla tupla tupla tupla tupla tupla Antig 25 a–os 15 a–os 20 a–os Nombre 1 2 3 4 5 6 7 8 9 TASA TASA TASA TASA MESA MESA TASA GISA GISA Direcciones Ciudad Reforma 23 Puebla Juarez 15 Cholula Sur 322 Puebla Producto clavos tornillos tuercas tachuelas tuercas tachuelas clavos tornillos tuercas Cant 400 200 100 50 30 20 20 50 40 67 Tercera Forma Normal Se dice que esta en 3FN si y solo si se cumplen dos condiciones: Se encuentra en 2FN. Cada atributo secundario solo se debe conocer a través de la clave principal o claves secundarias de la tabla y no por medio de otro atributo primario. Tercera Forma Normal (3FN) Sin embargo la 2FN tiene problemas cuando uno de los atributos tienen dependencia transitiva de los dominios o atributos Anomalía Ent 1 tupla 1 tupla 2 tupla 3 Nombre TASA MESA GISA Antig 25 a–os 15 a–os 20 a–os Direcciones Ciudad Reforma 23 Puebla Juarez 15 Cholula Sur 322 Puebla ¿Qué pasa cuando TASA de ser mi proveedor? Entidades en 3FN Ent 1 Las entidades están en 2FN y además cada dominio o atributo depende NO transitivamente de un sola llave: Ent 1 Nombre ==> Ant, Direcciones Ent 3 Direcciones ==> Ciudad Nombre tupla 1 tupla 2 tupla 3 TASA MESA GISA Ent 3 tupla 1 tupla 2 tupla 3 Antig 25 a–os 15 a–os 20 a–os Direcciones Reforma 23 Juarez 15 Sur 322 Direcciones Reforma 23 Juarez 15 Sur 322 Ciudad Puebla Cholula Puebla 69 Tercera Forma Normal Se dice que esta en 3FN si y solo si se cumplen dos condiciones: Se encuentra en 2FN. Cada atributo secundario solo se debe conocer a través de la clave principal o claves secundarias de la tabla y no por medio de otro atributo primario. Dependencias Funcionales Clave Dependencia Funcional Transitiva: DF Transitiva Se aplica para analizar las tablas en tercera forma normal (3FN). Consiste en considerar que “un atributo no primario solo debe conocerse a través de la clave principal o claves secundarias. DF Atributos con DFT Atributos con DF Transitiva Tercera Forma Normal (Dependencia Funcional Transitiva) A E F G H I J K S T A E F G H I J K E S F T Forma Normal de Boyce-Codd Una tabla esta en FNBC si y solo si las únicas dependencias funcionales elementales son aquellas en las que la clave principal y claves secundarias determinan un “atributo”. Dependencia Multivaluada (DMV) La dependencia multivaluada es un concepto que se introduce para tratar la 4FN. Es necesario que entre dos atributos el resto de los campos sean independientes. Deben existir al menos 3 atributos para que haya dependencia multivaluada. la definición dice: “sean A, B y C tres subconjuntos distintos de atributos de una tabla T se dice que A tiene una dependencia multivaluada con B, que A multidetermina B, o que B depende multivaluadamente de A y se escribe: A B Si para cada valor de A existen un conjunto de valores B asociados y esta es independiente del resto de atributos C”. Dependencia Join: Es una dependencia entre tablas Cuarta Forma Normal Se aplica para eliminar las DMV de las tablas (por redundancia de datos). Se dice que esta en 4FN si esta en FNBC Las únicas DMV existentes son las DF de la clave con los atributos secundarios. Es como FNBC, pero con dependencias multivaluadas. Quinta Forma Normal Es un nivel de normalización de bases de datos diseñado para reducir redundancia en las bases de datos relacionales que guardan hechos multivalores aislando semánticamente relaciones múltiples relacionadas. Debe cumplir dos condiciones: encontrarse en 4FN. Toda Dependencia Join viene implicada por las claves de la tabla. Forma Normal de Boyce-Codd Una tabla esta en FNBC si y solo si las únicas dependencias funcionales elementales son aquellas en las que la clave principal y claves secundarias determinan un “atributo”. Dependencia Multivaluada (DMV) La dependencia multivaluada es un concepto que se introduce para tratar la 4FN. Es necesario que entre dos atributos el resto de los campos sean independientes. Deben existir al menos 3 atributos para que haya dependencia multivaluada. la definición dice: “sean A, B y C tres subconjuntos distintos de atributos de una tabla T se dice que A tiene una dependencia multivaluada con B, que A multidetermina B, o que B depende multivaluadamente de A y se escribe: A B Si para cada valor de A existen un conjunto de valores B asociados y esta es independiente del resto de atributos C”. Dependencia Join: Es una dependencia entre tablas Cuarta Forma Normal Se aplica para eliminar las DMV de las tablas (por redundancia de datos). Se dice que esta en 4FN si esta en FNBC Las únicas DMV existentes son las DF de la clave con los atributos secundarios. Es como FNBC, pero con dependencias multivaluadas. Quinta Forma Normal Es un nivel de normalización de bases de datos diseñado para reducir redundancia en las bases de datos relacionales que guardan hechos multivalores aislando semánticamente relaciones múltiples relacionadas. Debe cumplir dos condiciones: encontrarse en 4FN. Toda Dependencia Join viene implicada por las claves de la tabla. Normalización: Redundancia controlada La normalización genera más entidades, sin embargo esta redundancia aparente esta controlada por el manejador de BD, siendo ajena para el usuario. Entidades normalizadas Ent 1 Por otro lado el tamaño de los archivos tiende a reducirse. Nombre tupla 1 tupla 2 tupla 3 Ent 2 Entidad sin normalizar Nombre Antig Direcciones Ciudad reg 1 TASA 25 a–os Reforma 23 Puebla reg 2 MESA 15 a–os Juarez 15 Cholula reg 3 GISA 20 a–os Sur 322 Puebla Producto clavos tornillos tuercas tachuelas tuercas tachuelas clavos tornillos tuercas tupla tupla tupla tupla tupla tupla tupla tupla tupla 1 2 3 4 5 6 7 8 9 Ent 3 tupla 1 tupla 2 tupla 3 Antig TASA MESA GISA 25 a–os 15 a–os 20 a–os Nombre Producto TASA TASA TASA TASA MESA MESA TASA GISA GISA Direcciones Reforma 23 Juarez 15 Sur 322 Cant clavos tornillos tuercas tachuelas tuercas tachuelas clavos tornillos tuercas Direcciones Reforma 23 Juarez 15 Sur 322 400 200 100 50 30 20 20 50 40 Ciudad Puebla Cholula Puebla 81 Normalización Ulterior La normalización puede ser continuada mas allá de la 3FN, existen argumentos académicos interesantes para la existencia de BCFN Forma Normal de Boyce y Codd Las entidades están en 3FN y además todo dominio independiente es una llave candidato: Ent={A,B,C,D} y las depencias son A==> BCD y D==>A aqui A y D son llaves 4FN Cuarta Forma Normal Las entidades están en BCFN y además no se tienen dependencias multievaluadas 5FN Quinta Forma Normal D/KFN Forma Normal de Dominio y Llave Para los propósitos de una operación administrativa la 3FN es suficientemente poderosa. 82 Guía de Normalización 1. Defina los Dominios ( Atomice lo mínimo necesario ) 2. Defina los Formatos ( Defina formatos comunes ) 3. Escriba todas las suposiciones semánticas iniciales 4. Obtenga la Tabla de Dependencias (conectando todos los dominios) 5.Determine las dependencias funcionales ( sentido de la fecha, dominios independientes conjuntos ) 6. Elimine las dependencias transitivas 7. Partiendo de la Tabla de Dependencias obtenga: Las entidades mínimas necesarias, tomando cada dominio(s) independiente para entablar a la entidad. 8. Complete la lista de suposiciones semánticas 9. Presente los resultados: Dominios, Entidades, Suposiciones 10. Obtenga aprobación firmada de la definición ó en caso necesario efectúe las modificaciones requeridas (un buen diseño debe no contener más de 100 dominios y 40 entidades por 83 sistema ) Elementos del modelo Entidad - Relación Elementos Rectángulo Representa entidades básicas Doble Rectángulo Representa entidades débiles que no tienen llaves primarias Diamante identificador de relaciones Elipse Atributos de la entidad, si esta subrayado es llave primaria Línea Ligas 84 Modelo Entidad - Relación Introduce el enfoque de Orientado a Objetos al definir tipos de datos que encapsulen a una entidad completa como un nuevo objeto Permite analizar partes de una Base de Datos de mayor dimensión (muchos dominios) a nivel entidades sin tener que estudiar todos los dominios específico que se vuelven atributos de las mismas. 85 Guía de Lectura Capitulo 5 El Modelo Relacional y Normalización (BD D Kroenke.pdf) Capitulo 6 Diseño de Bases de Datos Utilizando Modelos E/R (BD D Kroenke.pdf) 86 Trabajo Práctico Sistema del mercado de Frutas 87 Descripción de las reglas de negocio Puestos M1 Puestos M2 Puestos M3 Datos del mercado CODMER Codigo de mercado NOMMER Nombre DIRMER Dirección CPOMER Código postal CIUMER Ciudad CPRMER Código de Provincia PROMER Nombre de la Provincia TELMER Télefono Datos del puesto de un Mercado CODPTO Código de Puesto CIFPTO Código de Identificación Fiscal NOMPTO Nombre NPRPTO Nombre propietario Datos de fruta que vende un puesto CODFRU Código NOMFRU Nombre CMEFRU Código medida NMEFRU Nombre de la medida STKPTO Stock en medidad en el puesto PVEFRU Precio de venta Datos de un Almacen que distribuye Fruta CODALM Código Almacen NOMALM Nombre CIFALM Código de Identificación Fiscal CODFRU Código de la fruta que distribuye CMEFRU Código de medida de distribución STKALM Stock de fruta en el almacen PDIFRU Precio de distribución Datos de la Factura de un Almacen a un puesto NUMFAC Número de factura FECFAC Fecha CODALM Codigo almecen NOMALM Nombre Almacen CIFALM Código de Identificación Fiscal CODMER Codigo de mercado NOMMER Nombre del mercado DIRMER Dirección del mercado CPOMER Código de Provincia del mercado CIUMER Ciudad del mercado PROMER Provincia del mercado CODPTO Código de Puesto NOMPTO Nombre del Puesto CIFPTO Código de Identificación Fiscal NPRPTO Nombre del propietario del puesto CODFRU Codigo de fruta NOMFRU Nombre de la fruta CMEFRU Código de medida de la fruta NMEFRU Nombre de la medida UMEFRU Unidedaes de medida vendida PDIFRU Precio de distribución PTOFRU Precio total de la fruta BIMFRU Base impotible de la factura PROIVA Porcentaje del Iva IVAFAC Importe del IVA TOTFAC Total de la factura Para generar los gráficos de dependencia funcional se debe estudiar que zonas del mismo se tratan primero. Estas serán conformadas por los las entidades y relaciones con mayor cohesión. De dicha zona se desarrolla el grafico, mostrando solo las DF afectadas. Una vez normalizada la zona, se continúa con las siguientes. • Zona 1 formado por la relación • DISTRIBUIR • Zona 2 formada por las relaciones • SUMINISTRAR • TENER • POSEER • VENDER • Zona 3 • HACER FACTURAS • RECIBIR FACTURAS • FACTURAR 2FN - Dependencia Funcional Total CodMer CodPto CodFru CmeFru NOMMER DIRMER CIUMER CPOMER CPRMER PROMER TELMER CIFPTO NOMPTO NPRPTO NOMFRU NMEFRU STKPTO PVEFRU 2FN - Dependencia Funcional Total CodAlm NumFac CodFru CmeFru Diseño Global 97 6. Integridad y seguridad: Directorio de Datos Las bitácoras modelan y registran los procesos que se efectúan dentro de la base de datos Se logra por medio de almacenar los datos asociados con la ejecución de los comandos del SQL de la base de datos (altas bajas cambios, perdidas) . Contienen el QUE, QUIEN, COMO, DONDE y CUANDO de la BD 98 BITACORAS: QUE, QUIEN, COMO, DONDE y CUANDO Bitácora de Usuarios: Usuario, Password, depto, sistema, archivos, terminal, permisos Bitácora de Archivos: Password, Dueño, sistema que los usan, dominos, formatos, ubicación, usuarios Catálogo de Sistemas: Depto, sistema, archivos, terminal, programas, responsable Bitácora de Errores: Tipo, programa, descripción, hora, lugar, usuario, fecha, archivo, sistema Bitácora de Uso: Fecha, Usuario, Sistema, Permiso, Terminal, Registro, tipo de a,cceso Imagen Vieja, Imagen Nueva Manuales del Sistema: Sistema, depto, archivos, procedimiento de uso, nivel de sistematización/automatización 99 Normalización del Directorio Ejemplo de las dependencias funcionales de la bitácora de uso 100 Uso de la Bitácora Ante estas actualizaciones en las Entidades TAM y ABC la bitácora refleja la siguiente actividad 101 Recuperación 102 Arranque en Frío 1 2 3 4 5 6 Determinación de la Entidad (Archivo) perdido Cargado del último respaldo Ordenamiento de la bitácora según el archivo perdido Lectura de Imágenes nuevas de cada registro de la entidad en cuestión Lectura de Imágenes viejas de la bitácora y corroboración con la imagen en el respaldo Actualización correspondiente de más antiguo a más reciente 103 Respaldos 1 2 3 4 5 Respaldar la base de datos BD cuando se llene la bitácora de uso Respaldar la bitácora de uso y limpiarla la copia actual Se deben mantener copias de la BD y la bitácora en el sitio Es recomendable tener una copia adicional en un lugar ajeno físicamente de la instalación El tamaño de la bitácora es función del número de actualizaciones que tenga la base de datos 104 Arranque en Caliente 1 2 3 4 5 Determinación del último punto estable Lectura de imágenes viejas de los archivos modificados en el período de inestabilidad del proceso usando la bitácora de uso Lectura de imágenes nuevas de la bitácora y corroboración con la imagen en el archivo Desactualización de los archivos por medio del reemplazo de imágenes viejas por nuevas Aviso a los usuarios para que repitan las actualizaciones efectuadas durante el período de inestabilidad 105 Camino al cambio de las TI SER == > Existencia de Carencias Sistema caótico, dependiente y limitado Querer Ser == > Convencimiento Unificación y Confianza Saber Ser == > Compromiso Preparación, Selección, Capacitación Poder Ser == > Costo Inversión Adecuada en tecnología DEBER SER == > Crecimiento e Innovación Libertad, Eficiencia, Confiabilidad e Independencia 106 Estrategias en Base de Datos Para convencer Simulaciones en Hoja de Cálculo Para unificar y generar confianza Llevar a Base de Datos las aplicaciones nuevas Para promover la cooperación Primero llevar a Base de Datos los procesos externos 107 Introducción a SQL Basado en ORACLE Lenguajes para BD: álgebra y cálculo relacional El LDD es el Lenguaje de Definición de los Datos El LMD es el Lenguaje de Manipulación de los Datos Existen dos grandes clases de lenguajes de consulta y acceso relacional: Basados en álgebra relacional El prototipo de esta clase es el denominado SQL (Structured Query Language) Select PROV.PROV# From PROV Where PROV.CIUDAD = “Puebla” Basados en el cálculo de predicados. El prototipo de esta tipo de lenguajes es el PROLOG 109 Lenguaje de las Base de Datos Los SGBD emplean como lenguaje estándar el SQL. El SQL es un lenguaje Declarativo que permite la definición, construcción y la manipulación de datos. Tipos de sentencias: - DML (Data Manipulation Languaje) - DDL (Data Definition Languaje) Tipo de Comando Recuperación de Datos DML Lenguaje de Manipulación de Datos DDL Lenguaje de Definición de Datos Comandos SELECT Control de Transacción COMMIT ROLLBACK SAVEPOINT GRANT REVOKE DCL – Lenguaje de Control de Datos INSERT UPDATE DELETE Descripción Recupera los datos de la base de Datos. Es el comando utilizado con mayor frecuencia. Ingresa nuevas filas, modifica filas existentes y elimina filas de tablas de la base de datos, respectivamente. CREATE Crea, modifica y eliminan estructuras de datos desde las tablas. ALTER DROP RENAME TRUNCATE Maneja los cambios hechos por las sentencias DML. Los cambios a los datos pueden ser agrupados en transacciones lógicas. Permite o restringe los derechos de acceso a la base de datos Oracle y a las estructuras dentro de ésta. SQL Esquema de Base de Datos Cursa 1 Alumnos M 1 M Efectua Examenes M Pertenece 1 Materias M Pertenece 1 Departamentos Definición de Tablas Claves Primarias Alumnos Númerico Númerico Caracteres Caracteres Caracteres Caracteres Caracteres Númerico Númerico 7 3 25 25 25 25 10 2,2 2 Departamentos CodDepto Númerico Nombre Depto Caracteres 3 30 Nlegajo CodCarrera Nombre Apellido Domicilio Localidad Cod. Postal Promedio MaterAprob Exámenes Nlegajo Númerico CodMateria Númerico FechaExamen Date Nota Númerico 7 3 2,2 Materias CodMateria Númerico Nlegajo Númerico NombreMater Caracteres CodDepto Númerico CodCarrera Númerico 3 7 30 3 3 Definición de Tablas Claves Secundarias Alumnos Númerico Númerico Caracteres Caracteres Caracteres Caracteres Caracteres Númerico Númerico 7 3 25 25 25 25 10 2,2 2 Departamentos CodDepto Númerico Nombre Depto Caracteres 3 30 Nlegajo CodCarrera Nombre Apellido Domicilio Localidad Cod. Postal Promedio MaterAprob Exámenes Nlegajo Númerico CodMateria Númerico FechaExamen Date Nota Númerico 7 3 2,2 Nlegajo CodMateria NombreMater CodDepto CodCarrera Materias Númerico Númerico Caracteres Númerico Númerico 7 3 30 3 3 Sintaxis SQL Una sola tabla SELECT atributo1, atributo2, ... FROM tabla WHERE {condiciones1} and/or condiciones2} .......... ORDER BY {atributo1, atributo2} Múltiples tablas SELECT tabla.atributo1, tabla.atributo2, ... FROM tabla1, tabla2 WHERE {tabla1.columna = tabla2.columna} AND {condiciones1} and/or condiciones2} .......... ORDER BY {tabla.atributo1} ASC/DES Ejemplo consulta en SQL Tabla ALUMNOS NLEGAJO APELLIDO PROMEDIO --- ------------ -------1 Velasquez 5 2 Perez 4 3 Dominguez 3 4 Gonzalez 10 ... Tabla MATERIAS NLEGAJO NOMBREMATER --- -------------- --------50 Sistemas I 50 Contabilidad II ... 50 Matematicas 50 Psicología CODDEPTO 1 2 3 4 Tabla DEPARTAMENTOS CODDEPTO NOMBREDEPTO --- -------------1 Informatica 2 Contable 3 Exactas 4 Sociales 5 Ciencias Empresarias 6 Ciencias Industriales ...... Ejemplo Mostrar el Legajo, Apellido del Alumno, Nombre de la materia que cursa y Nombre del departamento que pertenece la materia de los alumnos cuyo promedio es superior a 7 puntos. SELECT ALUMNOS,nlegajo,ALUMNOS.apellido, MATERIAS.nombremater,DEPARTAMENTOS.nombredepto FROM ALUMNOS,MATERIAS, DEPARTAMENTOS WHERE ALUMNOS.nlegajo = MATERIAS.nlegajo AND MATERIAS.coddepto = DEPARTAMENTOS.coddepto AND ALUMNOS.promedio > 7; Bloque de Consulta Básico Una sentencia SELECT recupera información desde la base de datos, implementando todos los operadores algebraicos. SELECT [DISTINCT] {*,column [alias] , . . . .} FROM table; Donde: SELECT identifica qué columnas. DISTINCT suprime duplicados. * Recupera todas las columnas. Columna: recupera la columna nombrada. alias: asigna a la columna recuperada un encabezamiento diferente. FROM table especifica la tabla que contiene las columnas. En su forma más simple, una sentencia SELECT puede incluir: Una cláusula SELECT, que especifica las columnas a ser visualizadas. Una cláusula FROM, que especifica la tabla que contiene las columnas listadas en la cláusula SELECT Escritura de Comandos SQL Los Comandos pueden constar de una o varias líneas Se puede ubicar las cláusulas en diferentes líneas y usar tabulaciones e indentaciones para mayor legibilidad y facilidad de edición. No están permitidas las abreviaturas y separación de palabras. Los comandos SQL no son case sensitive, salvo los indicados. Un comando SQL se ingresa en el prompt SQL y las líneas subsiguientes están numeradas. Esto se llama el buffer SQL. En el buffer puede haber una sentencia por vez y la misma puede ser ejecutada de diferentes formas: Tipear un punto y coma (;) al final de la última cláusula Tipear un punto y coma (;) o una barra (/) en la última línea del buffer Tipear un slash en el prompt de SQL Negocio de Artículos Deportivos Esquema de base de datos S_ITEM S_ORD S_INVENTORY S_PRODUCT S_WAREHOUSE S_CUSTOMER S_EMP S_DEPT S_REGION Ver estructura de Datos en C:\03 RG 2014-05-02\03 - MARIA REINA\1 Bibliografía\04 SQL 0 Itroducción.doc Ejemplo: Selección de Todas las Columnas y Filas SQL> SELECT 2 FROM ID --------10 31 32 33 34 35 41 42 43 44 45 50 * s_dept; NAME REGION_ID ------------------------- --------Finance 1 Sales 1 Sales 2 Sales 3 Sales 4 Sales 5 Operations 1 Operations 2 Operations 3 Operations 4 Operations 5 Administration 1 12 filas seleccionadas. Ejemplo: Selección Columnas específicas SQL> SELECT 2 FROM DEPT_ID --------50 41 31 10 50 41 42 43 . . . dept_id, last_name, manager_id s_emp; LAST_NAME MANAGER_ID ------------------------- ---------Etiquetas de Columnas Velasquez Ngao 1 Por defecto la etiqueta es el nombre dado a la Nagayama 1 columna en la definición de la tabla. Quick-To-See 1 Ropeburn 1 Se puede reemplazar el nombre de la columna con Urguhart 2 un alias. Menchu 2 Por defecto, las etiquetas se muestran en Biri 2 mayúsculas. 25 filas seleccionadas. Las etiquetas de las columnas tipo carácter o fecha se justifican a la izquierda dentro de la columna. Las etiquetas de las columnas tipo número se justifican a la derecha dentro de la columna. Expresiones Aritméticas Se puede crear expresiones aritméticas sobre tipos de datos numéricos y fechas. Una expresión aritmética puede contener nombres de columnas, valores numéricos, constantes y operadores aritméticos. Se pueden usar los operadores aritméticos en cualquier sentencia de SQL excepto en la cláusula FROM. Ejemplo: SQL> SELECT last_name, salary, salary*12 2 FROM s_emp; LAST_NAME SALARY SALARY*12 ------------------------- --------- --------Velasquez 2500 30000 Ngao 1450 17400 Nagayama 1400 16800 Quick-To-See 1450 17400 Ropeburn 1550 18600 Urguhart 1200 14400 Operadores Descripción . . . + * / Suma Resta Multiplicación División DISTINCT con Varias Columnas DISTINCT se aplica a todas las columnas de la lista de la cláusula SELECT. Cuando DISTINCT se aplica a varias columnas, el resultado representa las diferentes combinaciones SQL> SELECT 2 FROM DISTINCT dept_id, title s_emp; DEPT_ID TITLE --------- --------------------10 VP, Finance 31 Sales Representative 31 VP, Sales 32 Sales Representative 33 Sales Representative . . . 21 filas seleccionadas. La cláusula ORDER BY El orden de las filas recuperadas por una consulta es indefinido. La cláusula ORDER BY se puede usar para ordenar las filas. SELECT FROM [ORDER BY expr tabla {columna, expr} [ASC | DESC] ] ; Donde: ORDER BYespecifica e orden en el cual se muestran las filas recuperadas. ASC ordena las filas en orden ascendente. Este es el valor por defecto. DESC ordena las filas en orden descendente. Ejemplo SQL> SELECT 2 FROM 3 ORDER BY last_name, dept_id, start_date s_emp last_name; LAST_NAME DEPT_ID START_DA ------------------------- --------- -------Biri 43 07/04/90 Catchpole 44 09/02/92 Chang 44 30/11/90 Dancs 45 17/03/91 Dumas 35 09/10/91 Restricción de las Filas seleccionadas con la cláusula WHERE Se puede restringir las filas recuperadas usando la cláusula WHERE. Una Cláusula WHERE contiene la condición que se debe cumplir y se ubica a continuación de la cláusula FROM. SELECT FROM [WHERE [ORDER BY expr tabla condicion(es) ] expr ] ; Donde: WHERE restringe la consulta a las filas que cumplen una condición. condición se compone de nombres de columnas, expresiones, constantes y operadores de comparación. La cláusula WHERE se ubica a continuación de la cláusula FROM. Las condiciones consisten en lo siguiente: Nombre de columna, expersión, constante. Operador de comparación. Literal Ejemplo SQL> SELECT 2 FROM 3 WHERE DEPT_ID --------42 42 42 dept_id, last_name, salary s_emp dept_id = 42; LAST_NAME SALARY ------------------------- --------Menchu 1250 Nozaki 1200 Patel 795 Operadores de Comparación Operador = > >= < <= BETWEEN...AND... IN (list) LIKE IS NULL Significado Igual a Mayor que Mayor o igual que Menor que Menor o igual que Entre dos valores (inclusive) Coincide con cualquier valor de la lista Coincide con un patrón de caracteres Es un valor nulo Operadores Lógicos Operador AND Significado Si ambos componentes de la condición son verdaderos, el resultado también OR Si algún componente de la condición es verdadero, el resultado también NOT Retorna la condición negada Operador <> NOT nombre-columna = Significado No igual a (en todos los sistemas operativos). Hay otras formas de expresarlo, dependiendo de los sistemas ( ‘!=’ para VAX, UNIX,PC ; ‘^= ‘ o ‘:=’ para IBM) No igual a NOT nombre-columna > No mayor que Negación de Operadores NOT BETWEEN...AND... No está entre los valores especificados NOT IN (list) NOT LIKE IS NOT NULL No está dentro de la lista especificada No es como la cadena de comparación No es un valor nulo Operador BETWEEN Selecciona las filas que se encuentran dentro de un rango de valores. El rango que se especifica contiene un valor inferior y otro superior, se debe espcificar primero el límite inferior del rango. Los valores especificados con el operador BETWEEN se incluyen. Ejemplo Seleccionar los departamentos cuyo numero de región está entre 2 y 4 inclusive. SQL> SELECT id, name, region_id 2 FROM s_dept 3 WHERE region_id BETWEEN 2 AND 4; ID --------32 33 34 42 43 44 NAME REGION_ID ------------------------- --------Sales 2 Sales 3 Sales 4 Operations 2 Operations 3 Operations 4 6 filas seleccionadas. Ejemplos de SQL Asumiendo la existencia de los siguientes archivos (entidades) Muebles : ( Mueble, Descripción Mueble ) Direcciones : ( Dirección, Cliente ) Ensambles : ( Herraje, Mueble, Número ) Herrajes : ( Herraje, Descripción Herraje, Calidad, Precio ) Ordenes : ( Folio, Dirección, Fecha ) Detalles : ( Folio, Línea Detalle, Cantidad, Herraje ) Inventarios : ( Planta, Herraje, Inventario ) Plantas : ( Planta, Descripción Planta ) Descuentos : ( Herraje, Volumen, % Descuento ) 128 Solución del SQL 129 Ejemplos de SQL (2) Asumiendo la existencia de los siguientes archivos (entidades) 130 Solución del SQL (2) 131 Ejemplo Numérico Se obtienen las siguientes tuplas Asumiendo estos datos en las entidades 132 8. Manejo de Transacciones Transacciones, Serialización Enfoques de solución Protocolo de bloque en dos fases Transacciones Consistencia Estado de transacciones Diagrama de estado en una transacción Recuperación de falla 133 Criterios en una Transacción En su diseño Correctitud Una transacción debe mantener la consistencia de la BD Atomicidad Una transacción debe manejarse como un objeto atómico, esto es no puede ejecutarse un pedazo del mismo únicamente, o se completa toda o no se completa En su ejecución Activa: SI se encuentra en proceso de ejecución Parcialmente Comprometida: se ha ejecutado parte de ella (es estado temporal) completada (requiere ser terminada) Fallida: NO puede ser Terminada: Se efectúa un ROLLBACK para deshacer el proceso Comprometida: Se efectúa un COMMIT para completarla 134 Ejemplo de transacción 135 Bibliografía Date C. J. Data Base Systems Procesamiento de Bases de datos D Kroenke 136 Bases de Datos Diseño de Bases para Almacenes Tablas Normalizadas Tabla Almacenes Tabla Mercados Tabla AlmFru Tabla Provincias Tabla Puestos Tabla Ciudad Tabla Medidas Tabla Frutas Tabla Propietarios Tabla Almmer 144 Tablas Normalizadas Tabla PtoFru Tabla FACTURAS Esta tabla está bien diseñada ¿? 145 Creación de una Base de Datos 146 Crear una base de datos nueva Al iniciar el programa se presentará el panel de Nuevo archivo, en el que podemos abrir y crear una base de datos. 09/08/2017 14 7 Crear una base de datos nueva Si se selecciona Base de datos en blanco y se hace clic. Aparecerá otro cuadro de diálogo en el que se dará nombre a la base de datos que se va a crear. Se debe utilizar un nombre apropiado y relacionado con el contenido de la base de datos, para poder recuperarla con facilidad posteriormente. 09/08/2017 148 Crear una base de datos nueva Se escribe el nombre en Nombre de archivo y se pulsa el botón crear. Desde esta ventana se trabajan las bases de datos de Access. Seleccionando las pestañas se accede a los distintos elementos que componen una base de datos; tablas, consultas, formularios, informes, macros y módulos. 09/08/2017 149 Crear una base de datos nueva Para volver a esta ventana desde cualquier otra se pulsa el botón . Seleccionado el objeto adecuado y pulsando el botón ascvo , se crea un objeto del tipo seleccionado. El botón de la barra de herramientas cambia dependiendo del último objeto creado. Al pulsarlo se creará otro objeto similar al último creado. Si se quiere elegir otro objeto sólo hay que hacer clic sobre la flecha de la derecha. Se desplegará el menú de todos los elementos de Access. 09/08/2017 150 Crear una base de datos nueva En este menú se encuentran todos los elementos que componen Access. Para crear uno de ellos, basta con situar el ratón por encima de él y hacer clic. 09/08/2017 151 Crear una base de datos nueva Otra forma de crear un elemento de Access sin seleccionar la pestaña es a través del menú Insertar. 09/08/2017 152 Creación de Tablas 153 Tablas Para empezar a trabajar con una base de datos primero es necesario crear las tablas. Dentro de cada una hay que definir los campos que contendrán la información. Igual que cualquier otro objeto de la base de datos, hay varias formas de crear una tabla nueva: ◦ desde el menú. ◦ desde la barra de herramientas. ◦ desde la ventana de la base de datos. 09/08/2017 154 Tablas: Creación desde el menú Para crear una tabla desde los menús hay que seleccionar el menú Insertar y dentro de este el comando Tabla. 09/08/2017 155 Tablas: Creación desde el menú Aparece el siguiente cuadro de diálogo: 09/08/2017 156 Tablas: Creación desde el menú Estas son las diferentes opciones que presenta Access para crear una tabla: ◦ Vista hoja de datos: crea una nueva tabla con formato de tabla. En la primera fila de la tabla aparecen los campos: Campo 1, Campo 2, etc., sobre los cuales se escriben los nombres de los campos. ◦ Vista diseño: permite crear los campos manualmente y configurar el diseño de la tabla. ◦ Asistente para tablas: el asistente pide las características de los campos y de la tabla y la genera automáticamente. ◦ Importar tabla: esta opción permite importar datos de otra base de datos, que no necesariamente tiene que estar creada por Access. ◦ Vincular tabla: crea vínculos entre las tablas importadas y las originales, las modificaciones que se efectúen en los datos se transmiten a aquéllas. 09/08/2017 157 Tablas: Creación desde la barra de herramientas Para crear una tabla desde la barra de herramientas hay que pulsar el botón , y elegir el comando Tabla. Muestra el mismo cuadro de diálogo que si se hubiera realizado desde el menú insertar. 09/08/2017 158 Tablas: Creación desde la ventana de la base de datos Para poder crear una tabla desde esta ventana hay que tener seleccionado el botón de la barra de objetos. 09/08/2017 159 Tablas: Creación desde la ventana de la base de datos Ahora hay dos opciones: Pulsar el botón : Nos volverá a presentar el mismo diálogo de creación que el de la transparencia 32. Pulsar cualquiera de las tres ordenes que contiene la vista: ◦ Crear una tabla en vista diseño. Corresponde a Vista diseño de los puntos anteriores. ◦ Crear una tabla utilizando el asistente. Corresponde al Asistente para tablas. ◦ Crear una tabla introduciendo datos. Corresponde a Vista hoja de datos. Cualquiera de estas opciones es válida para crear una tabla. Pero las opciones a través de las cuales se crea personalmente una tabla son vista hoja de datos y vista diseño. Con la opción vista diseño se crea la estructura para luego rellenar los datos en vista hoja de datos. Pero también se puede empezar directamente en vista hoja de datos introduciendo información y Access crea la estructura automáticamente. Independientemente del método utilizado para crear una tabla, se puede emplear la vista diseño en cualquier momento para personalizar más la tabla, por ejemplo para agregarle campos nuevos. 09/08/2017 160 Tablas:Vista Diseño Parar pasar a la vista diseño, debemos seleccionar: Aparece una ventana donde se puede o bien definir un diseño para nuestra tabla, si no se había hecho antes, o bien se puede modificar o agregar campos nuevos. En una palabra, se puede cambiar el Diseño de la tabla. 09/08/2017 161 Tablas:Vista Diseño • Este diálogo se compone de tres partes. Arriba se nos muestran los campos, su tipo y la descripción. Abajo a la izquierda se nos muestra las propiedades del campo seleccionado y abajo a la derecha se nos muestra una ayuda sensible a lo que estemos realizando. • En la parte superior tenemos tres columnas. En la primera columna se ven los nombres de los campos, en la segunda columna el tipo de datos que ha elegido automáticamente Access XP con los datos introducidos (si hemos creado la tabla en vista hoja de datos) y en la tercera una descripción que podemos introducir al campo que Access podrá usar cuando se creen formularios e informes . 09/08/2017 162 Tablas:Vista Diseño • Ahora veremos el significado de cada propiedad del campo que nos aparece en la Vista Diseño de nuestra tabla: 09/08/2017 163 Tablas:Vista Diseño •Tamaño del Campo: •Aquí determinamos el espacio que queremos asignar al campo, el número máximo de caracteres que queremos almacenar. •Para Texto este valor no puede ser mayor de 255. •Para numérico por ejemplo, puede ser Entero Largo (entre -2.000 millones y 2.000 millones) o Doble (para valores decimales). •Formato: •Determina cómo se muestran los datos (por ejemplo moneda o fecha). •Cuando un valor puede tener formato lo seleccionamos desde la lista desplegable. 09/08/2017 164 Tablas:Vista Diseño •Lugares decimales: •Aquí seleccionamos el número de decimales que Access muestra en los campos de tipo Moneda o Numérico. •Máscara de entrada: •Esta propiedad sirve para introducir datos válidos en un campo. •Por defecto no hay ninguna máscara de entrada pero en ocasiones nos puede ser útil (sobre todo para las fechas). •Título: •Es una propiedad opcional, nos sirve si queremos que el nombre de un campo en vista de Hoja de datos sea distinto del nombre del campo en la Vista Diseño. 09/08/2017 165 Tablas:Vista Diseño • Valor predeterminado: • Nos puede ser útil si tenemos siempre el mismo valor en el campo (o casi siempre). • Si por ejemplo en nuestra tabla de autores el apellido que más se repita es "García" podemos definirlo como el valor predeterminado. • Para eso simplemente escribimos el valor predeterminado en la propiedad del campo o pulsamos el botón con "..." para generar expresiones complejas. • Regla de Validación y Texto de Validación: • Son propiedades avanzadas que permiten limitar los valores que introducimos en un campo (Regla) y definir el mensaje de error cuando introducimos un valor prohibido por la regla (Texto). • Requerido: • Por defecto está puesto "No", pero si lo seleccionamos Access no nos permitiría dejar un campo en blanco. • Permitir longitud cero: • Permitir o No las cadenas de longitud cero. Por defecto es "No". 09/08/2017 166 Tablas:Vista Diseño • Indexado: • El indexado permite acelerar los procesos de búsqueda y ordenación pero hace aumentar el tamaño de la base de datos. Por defecto solo la clave principal (si la tenemos) aparece indexada, para el resto de los campos es opcional. • Las opciones de esta propiedad: • Sí (Con duplicados): El campo se indexará pero permitiría tener valores repetidos (duplicados) en más de un registro. • Sí (Sin duplicados): El campo se indexará pero no admitirá valores duplicados. • No: El campo no se indexará. • Para obtener una vista de todos los campos que tengamos indexados pulsar el menú Ver / Índices o el botón "Índices" de la Barra de herramientas. • Todo esto parece ser demasiada información pero en la práctica normalmente no necesitamos configurar cada una de estas propiedades, muchas veces es suficiente dejar los valores por defecto. 09/08/2017 167 Tablas:Vista Diseño Ya podéis introducir todos los campos que queráis en la tabla, y definir el tipo de datos que vais introducir en cada campo. 09/08/2017 16 8 Tablas:Vista Diseño Si estamos introduciendo una tabla nueva en Vista diseño, o al pasar de la vista de datos a vista diseño, Access pedirá que se le de un nombre a la tabla. A continuación aparecerá otro mensaje comunicando que no se ha creado una clave principal. Por el momento se pulsa No, ya que no se va a crear ahora, se verá más adelante en este manual. 09/08/2017 16 9 Tablas: Tipos de Datos Valor Tipo de datos Tamaño Texto Texto o combinaciones de texto y números, así como números que no requieran cálculos, como los números de teléfono. Es el predeterminado. Hasta 255 caracteres o la longitud que indique la propiedad Tamaño del campo. Memo Estos campos son particularmente adecuados para dotar a cada registro de la tabla de un lugar para escribir todo tipo de comentarios. No es necesario definir su longitud, ya que la misma se maneja de manera automática, extendiéndose a medida que se le agrega información. El texto allí colocado no dispone de ninguna posibilidad de formato, ni de carácter ni de párrafo. Hasta 65.535 caracteres. Numérico Datos numéricos utilizados en cálculos matemáticos. 1, 2, 4 u 8 bytes (16 bytes si el valor de la propiedad Tamaño del campo es Id. de réplica). Fecha/Hora Valores de fecha y hora. 8 bytes. Moneda Valores de moneda y datos numéricos utilizados en cálculos matemáticos en los que estén implicados datos que contengan entre uno y cuatro decimales. La precisión es de hasta 15 dígitos a la izquierda del separador decimal y hasta 4 dígitos a la derecha del mismo. 8 bytes. 09/08/2017 17 0 Tablas: Tipos de Datos Sí/No Valores Sí y No, y campos que contengan uno de entre dos valores (Sí/No, Verdadero/Falso o Activado/desactivado). 1 bit. Objeto OLE Objeto (como por ejemplo una hoja de cálculo de Excel, un documento de Word, gráficos, sonidos u otros datos binarios) vinculado o incrustado en una tabla de Access. Hasta 1 gigabyte (limitado por el espacio disponible en disco) Hipervínculo Almacena una ruta UNC o una URL. Hasta 64000 caracteres. Autonumérico Número secuencial (incrementado de uno a uno) único, o número aleatorio que Microsoft Access asigna cada vez que se agrega un nuevo registro a una tabla. Los campos Autonumérico no se pueden actualizar. 4 bytes (16 bytes si el valor de la propiedad Tamaño del campo es Id. La réplica). Asistente para búsquedas Crea un campo que permite elegir un valor de otra tabla o de una lista de valores mediante un cuadro de lista o un cuadro combinado. Tamaño igual al del campo clave principal utilizado para realizar la búsqueda. 09/08/2017 171 Tablas: Introducir datos en la tabla En Vista Hoja de Datos se pueden introducir datos. En el primer registro sólo aparecerá una fila. Se hace clic sobre ella y se escriben los datos en los campos. En el momento en que se empiece a escribir se añadirá una fila más. En la primera columna de la fila sobre la que esté escribiendo aparecerá un lápiz, y en la siguiente un asterisco. Para pasar de un campo a otro pulse Intro o Tabulador. Cuando se quiere añadir otro registro sólo se tiene que pinchar sobre la fila con el asterisco. 09/08/2017 172 Tablas: Clave principal La clave principal suele ser uno o varios de los campos de la tabla. El contenido de este campo identifica cada registro del campo de manera única. No se podrán introducir dos registros iguales o almacenar valores nulos en los campos de la clave principal. No es obligatorio que una tabla tenga clave principal, pero si es recomendable (sin clave no se pueden relacionar). Para la tabla “Clientes” se tiene que pensar que campo no se repite. Podría ser el campo “Nombre”, pero el nombre no es algo único. Los campos “Nombre” y “Apellidos” juntos también se podrían repetir en algún caso. Se podría usar el campo “DNI”, pero decidimos que queremos crear un código único para cada paciente. Se selecciona el campo “Nombre” y se inserta un campo. Se llama “Id_Paciente” y se elige el tipo de dato Autonumérico. Este tipo de dato hace que Access genere un número único a cada registro de la tabla. De esta forma es totalmente seguro que el campo no tendrá ningún registro repetido. 09/08/2017 173 Tablas: Clave principal Es decir los datos de un paciente no aparecerán repartidos en tres veces, sino en una sola vez, de forma que cuando se quiera consultar el estado físico de un paciente se tendrá la seguridad de que ahí están todos sus datos médicos. Para establecer este campo como clave principal se hace clic sobre él y en la barra de Herramientas se pulsa el botón Establecer Clave Principal. También se puede realizar esta operación desde el Menú Edición/Establecer Clave Principal. 09/08/2017 174 Tablas: Clave principal No se tiene que definir obligatoriamente una clave principal, pero normalmente es conveniente hacerlo. Si no se establece la clave principal, al cerrar la tabla aparece un cuadro de diálogo pidiendo que se establezca: Si se elige la opción "Si", Access creará automáticamente un campo Autonumérico que será la clave principal. 09/08/2017 175 Tablas: Tipos clave principal En Microsoft Access existen tres tipos de clave principal: Autonumérico, Campo simple y Campos múltiples. Claves principales de Autonumérico ◦ Un campo Autonumérico puede establecerse para que el programa introduzca automáticamente un número secuencial cuando se agrega un registro a la tabla. ◦ Designar un campo de este tipo como clave principal de una tabla es la forma más sencilla de crear una clave principal. ◦ Cuando no se establece una clave principal antes de guardar una tabla recién creada, Microsoft Access pregunta si se desea que cree una clave principal automáticamente. ◦ Si se contesta afirmativamente, Microsoft Access creará una clave principal de Autonumérico. 09/08/2017 176 Tablas: Tipos clave principal Claves principales de Campo simple: ◦ Si se tiene un campo que contiene valores exclusivos, como números de identificación o números de pieza, se puede designar ese campo como la clave principal. ◦ Si el campo seleccionado como clave principal tiene valores duplicados o Nulos, Microsoft Access no establece la clave principal. Claves principales de Campos múltiples: ◦ En situaciones en las que no se puede garantizar la exclusividad de un solo campo, se pueden designar dos o más campos como clave principal. ◦ La situación más común en la que surge este problema es en la tabla utilizada para relacionar otras dos tablas en una relación varios a varios. ◦ Si no se está seguro de poder seleccionar una combinación de campos apropiada para una clave principal de campos múltiples, probablemente resultará más conveniente agregar un campo Autonumérico y designarlo como la clave principal en su lugar. 09/08/2017 177 Tablas Reglas de Validación 178 Tablas: Reglas de validación: Esta propiedad nos permite controlar la entrada de datos según el criterio que se especifique. Hay que escribir el criterio que debe cumplir el valor introducido en el campo para que sea introducido correctamente. Por ejemplo si queremos que un valor introducido esté comprendido entre 100 y 2000, se puede especificar en esta propiedad >=100 Y <=2000. Para formar la condición puedes utilizar el generador de expresiones como te explicamos en la secuencia animada. Se puede utilizar esta propiedad para todos los tipos de datos excepto el Objeto OLE, y el Autonumérico. www.urjc.es 09/08/2017 17 9 Tablas: Reglas de validación: EJEMPLO: Abrimos la base de datos “Empresa”. Hacemos clic sobre la tabla “Pedidos”/Diseño. www.urjc.es 09/08/2017 18 0 Tablas: Reglas de validación: Señalamos el campo “Fecha del pedido”. Nos situamos con el ratón en la propiedad de reglas de validación, y hacemos clic en el botón para abrir el generador de expresiones. www.urjc.es 09/08/2017 18 1 Tablas: Reglas de validación: Nos situamos con el ratón en la propiedad de reglas de validación, y hacemos clic en el botón para abrir el generador de expresiones. Vamos a validar el campo comprobando que la fecha de pedido es inferior a la fecha de hoy haciendo primero clic en el signo “<“. www.urjc.es 09/08/2017 18 2 Tablas: Reglas de validación: Luego buscaremos una función que devuelva la fecha de hoy. Para ello hacemos doble clic en Funciones/Funciones incorporadas/Fecha/Hora/Fecha. www.urjc.es 09/08/2017 18 3 Tablas: Reglas de validación: Para agregar la regla de validación hacemos clic en Pegar. Ahora tenemos nuestra regla de completa. Finalmente hacemos clic en Aceptar. www.urjc.es 09/08/2017 validación 18 4 Tablas: Reglas de validación: El resultado es el siguiente: www.urjc.es 09/08/2017 18 5 Tablas: Texto de validación: Access también ofrece la posibilidad de introducir un texto de validación. Esta propiedad permite que si en el campo se intenta introducir un valor que no cumpla la regla de validación, aparecerá un mensaje de error con el texto de validación que hayamos escrito. www.urjc.es 09/08/2017 18 6 Tablas: Campo requerido: Si queremos que un campo se rellene obligatoriamente tendremos que asignar a esta propiedad el valor Sí, en caso contrario el valor será el de No. Se puede utilizar esta propiedad para todos los tipos de datos excepto el Objeto OLE y el Autonumérico. Ahora vamos a hacer que sea obligatoria la entrada de datos en el campo del ejemplo (Fecha_Pedidos). Para ello, hacemos clic en “Requerido” y seleccionamos “Sí”. www.urjc.es 09/08/2017 18 7 Creación de Relaciones entre Tablas (Modelo de Datos) 188 Tablas: Relaciones Diferencia de una base de datos relacional: La diferencia de las bases de datos relacionales con respecto a una base de datos plana consiste en que los datos sólo se introducen una sola vez en una tabla, pero gracias a las relaciones pueden aparecer en las tablas que se quiera. Cualquier modificación sólo hay que realizarla una sola vez y automáticamente se realizará en todas las demás tablas. De este modo se ahorra mucho tiempo, espacio y exactitud en los datos que siempre estarán actualizados independientemente de la tabla en la que estemos. 09/08/2017 18 9 Tablas: Relaciones Tipos de relaciones: Existen tres tipos de relaciones, que se explican a continuación. Más adelante se verá cómo quedan guardadas relaciones de este tipo en Access. Relación uno a uno: ◦ Cada registro de la tabla A se relaciona sólo con un registro de una tabla B y cada registro de la tabla B se relaciona sólo con un registro de la tabla A. ◦ Relaciones de este tipo se almacenan guardando en la tabla el identificador de la otra tabla con la que mantiene la relación. En la base de datos del hospital, un registro de la tabla de pacientes sólo se relaciona con un registro de la tabla médicos. ◦ 09/08/2017 19 0 Tablas: Relaciones Relación uno a varios: ◦ Cada registro de la tabla A está relacionado con varios registros de la tabla B y cada registro de la tabla B está relacionado con un sólo un registro de la tabla A. ◦ Aplicando esto a nuestro ejemplo, una relación de este tipo se daría entre la tabla pacientes y la tabla médicos, ya que el mismo médico se hará cargo de varios pacientes. Un solo registro de la tabla de médicos se relaciona con varios registros de la tabla de pacientes. ◦ 09/08/2017 19 1 Tablas: Relaciones Relación varios a varios: ◦ Cada registro de la tabla A puede estar relacionado con más de un registro de la tabla B y cada registro de la tabla B puede estar relacionado con más de un registro de la tabla A. ◦ En la base de datos del hospital tenemos dos tablas: médicos y pacientes, con una relación directa entre ellos, un médico podría atender a muchos pacientes y un mismo paciente podría ser atendido por varios médicos. ◦ Varios registros de la tabla de médicos se relacionaría con varios registros de la tabla de pacientes. ◦ Relaciones de este tipo se almacenan creando una tabla especial donde se colocan los identificadores de cada tabla y otros campos que puedan ser de utilidad, por ejemplo la fecha, la hora, comentarios acerca de la visita médica, etc. ◦ En la tabla Visitas, donde aparecen tanto el código del médico como el del paciente. 09/08/2017 19 2 Tablas: Relaciones Ejemplo de relación varios a varios: ◦ Tenemos la tabla “Pedidos" que contiene campos "Producto" y "Cliente" y mantiene la relación de uno a varios con las tablas "Productos" y "Clientes" que a su vez mantienen la relación de varios a varios entre sí. 09/08/2017 19 3 Tablas: Relaciones Crear relaciones ente dos tablas: Para crear una relación entre las tablas de una base de datos primero es necesario cerrar todas las tablas. Con las tablas abiertas no se puede crear o modificar una relación. Para poder utilizar la integridad referencial será necesario que las tablas no tengan ningún registro. Desde la ventana Base de datos, se pulsa el botón o se selecciona el menú Herramientas/Relaciones. Automáticamente se abrirá la ventana Relaciones totalmente vacía. 09/08/2017 19 4 Tablas: Relaciones Para añadir las tablas que van a estar relacionadas se pulsa el botón Mostrar tabla o se selecciona el menú Relaciones/Mostrar Tabla. Aparecerá una ventana con el listado de las tablas: 09/08/2017 19 5 Tablas: Relaciones Se seleccionan aquellas tablas que van a formar parte de una relación y se pulsa Agregar. Después de pulsar Agregar en la ventana Relaciones aparecerá la tabla en un recuadro con todos los campos. Cuando ya no se quieran agregar mas tablas se pulsa el botón Cerrar. Quedará abierta únicamente la ventana Relaciones. 09/08/2017 19 6 Tablas: Relaciones En este caso se van a incluir las tres tablas de nuestro ejemplo: Médicos, Pacientes y Visitas. Para crear las relaciones entre estas tres tablas se relacionará primero médicos con visitas y luego pacientes con visitas. 09/08/2017 19 7 Tablas: Relaciones Para relacionar médicos con visitas el campo en común es el código del doctor. Este dato está almacenado en la tabla médicos, por tanto, el campo se arrastrará desde médicos hasta Visitas. Para arrastrar el campo primero se selecciona, se hace clic, y sin soltar el botón del ratón se arrastra hasta situar el cursor sobre el campo Código del doctor de la tabla Visitas. Al arrastrar el campo el cursor se convertirá en un rectángulo pequeño. Tras arrastrar el campo se abrirá esta ventana: 09/08/2017 19 8 Tablas: Relaciones Dentro de la ventana hay dos columnas en las dos debe estar un campo con un contenido similar. No importa la coincidencia del nombre sino del contenido. Médicos es la tabla primaria en esta relación (es la que contiene los datos) y Visitas es la tabla secundaria (tomará los datos de médicos a través del campo común). Si se pulsa el botón Tipo de combinación, se abrirá una ventana explicando los tres tipos de combinaciones. Automáticamente aparece seleccionada la primera combinación. En este ejemplo se puede dejar así. 09/08/2017 19 9 Tablas: Relaciones Integridad referencial: La integridad referencial es un conjunto de reglas de Access que garantizan que las relaciones entre los registros de tablas relacionadas son válidas y que no se eliminan ni modifican accidentalmente datos relacionados que satisfacen dicha relación. Sirve para aumentar la seguridad en el tratamiento de los datos que coexisten entre dos tablas relacionadas. 09/08/2017 20 0 Tablas: Relaciones Exigir integridad referencial: La integridad referencial son unas normas que mantienen la coherencia de datos entre dos tablas relacionadas. Estas normas son: 1. 2. No puede haber registros en la tabla secundaria que no estén en la primaria. No se puede borrar un registro de la tabla principal si hay registros en la secundaria. Para poder exigir integridad referencial en una relación de uno a varios es necesario que : 1. 2. El campo relacionado de la tabla principal sea la clave principal. Los campos contengan el mismo tipo de datos a excepción de que la relación se establezca entre un campo de tipo Autonumérico y un campo de tipo Numérico, siempre y cuando este último sea un Entero largo (por lo tanto los dos campos con la misma longitud: entero largo). 3. No se pueden relacionar un campo de texto con uno de fecha, o uno numérico con uno de texto. Ambas tablas deben pertenecer a la misma base de datos. 4. 09/08/2017 20 1 Tablas: Relaciones Cuando se establece la integridad referencial (marcando la casilla pertinente en el panel de modificar relaciones) se van a cumplir obligatoriamente, las siguientes reglas: No podemos introducir un valor para ese campo en la tabla relacionada si antes no ha sido introducido en la tabla principal. Ejemplos: ◦ ◦ ◦ ◦ ◦ ◦ ◦ No podemos tener en la tabla de pedidos un pedido realizado por un código de cliente que no exista. No podemos tener o anotar en la tabla de participantes un participante con un número de socio que no exista en la tabla relacionada de socios (habría que dar de alta al participante previamente en la tabla socios. Una buena opción sería colocar en el formulario de inscripciones un botón de comando que nos lleve y abra el formulario de socios para poderle dar de alta. Al cerrar el formulario de socios una vez dado de alta, regresaríamos al formulario de inscripciones y como ese nuevo socio ya existe en la tabla de socios, nos permitiría su entrada). No podremos introducir tampoco a un empleado un código de entidad bancaria si no se ha introducido esa entidad previamente en la tabla entidades. No se puede asignar a un trabajador un código de categoría si esa categoría no está dada de alta en la tabla categorías. No se puede añadir un pedido en una tabla de pedidos de un artículo si el artículo no existe previamente en la tabla de artículos. 09/08/2017 20 2 Tablas: Relaciones No se puede eliminar un registro de una tabla principal si existen registros coincidentes en la tabla relacionada. Ejemplos: ◦ ◦ ◦ ◦ ◦ No podemos eliminar un cliente que está en la tabla de pedidos, es decir está realizando un pedido. No podemos eliminar un socio que está en la tabla de participaciones. No podremos eliminar una entidad bancaria mientras existe un empleado que domicilie su nómina por ella, no podremos eliminar una categoría profesional de la empresa mientras algún empleado la tenga asignada. No se podría borrar un artículo mientras existen pedidos de ese artículo en la tabla de pedidos. No se podría dar de baja un vehículo (de una base de datos de un ayuntamiento) mientras en la tabla relacionada multas existan multas sobre ese vehículo. No se puede cambiar un valor de clave principal en la tabla principal si el registro tiene registros relacionados. Ejemplos: ◦ ◦ No podríamos cambiar el número de cliente en la tabla de clientes si este cliente en este momento esta realizando un pedido, es decir está en la tabla pedidos. No podríamos cambiar el número de socio en la tabla de socios si este socio en este momento esta participando en un torneo, es decir está en la tabla participaciones. 09/08/2017 20 3 Tablas: Relaciones Si se quiere exigir el cumplimiento de estas reglas, hay que seleccionar la casilla de verificación Exigir integridad referencial al crear la relación. Muy Importante: Esta opción es muy arriesgada ya que en Access una vez que se elimina un registro ya no se puede volver a recuperar. Es fundamental llevar una buena política de copias de seguridad. 09/08/2017 20 4 Tablas: Relaciones Access verificará que los campos cumplen todas las condiciones para que haya integridad referencial. Si no se cumplen todas las condiciones no permitirá que esa relación tenga integridad referencial. Quedan activadas las dos acciones siguientes: ◦ ◦ Actualizar en cascada los campos relacionados: se está indicando que si se modifica el valor de un campo desde un lado de la relación automáticamente se actualicen en todos los registros relacionados. Eliminar en cascada los registros relacionados: si se borra un registro de un lado de la relación se borrarán automáticamente todos los registros que estaban relacionados con él. 09/08/2017 205 Tablas: Relaciones Al establecer la integridad referencial en la figura siguiente se observa que la relación es uno (1) a varios (∞), un cliente (cuyos datos se encuentran en la tabla Clientes) puede haber realizado varios pedidos (los datos de éstos se encuentran en la tabla Pedidos). 09/08/2017 20 6 Tablas: Relaciones Cuando ya se han especificado las características de la relación se pulsa el botón Crear. Entre las dos tablas relacionadas aparecerá una línea. Esta línea simboliza la relación entre las dos tablas. Si la relación cumple la integridad referencial la línea será más gruesa. En nuestro ejemplo del hospital: 09/08/2017 20 7 Tablas: Relaciones A continuación se creará la relación entre Pacientes y Visitas. Y se exigirá integridad referencial en las dos relaciones. Para exigir la integridad referencial se hace doble clic sobre la línea de relación, se volverá abrir la ventana de la relación. 09/08/2017 20 8 Tablas: Relaciones Una vez se ha terminado de crear las relaciones entre las tablas se guardan. Para guardar se selecciona el botón guardar o el menú Archivo/Guardar. Después de guardar ya se puede cerrar la ventana de relaciones. Si se cierra antes de guardar, se abrirá un mensaje de aviso. Access permite guardar las relaciones en la Base de Datos. Esto será muy importante para que siempre que se lleven a cabo modificaciones en los datos se tenga en cuenta que las relaciones están presentes entre los mismos y no se puedan infringir las reglas de consistencia vigentes. 09/08/2017 20 9 Tablas: Relaciones Modificar y eliminar relaciones: Ambas operaciones se realizan desde la Ventana de relaciones, como ya se ha comentado anteriormente. Para modificar una relación los pasos a seguir son: ◦ ◦ ◦ ◦ Hacer clic sobre la línea de la relación que se quiere modificar, ésta se visualizará con un trazo más grueso, indicando que está seleccionada. Seleccionar la opción Modificar relación del menú Relaciones. Se muestra el mismo cuadro de diálogo que aparecía al crear la relación. Realizar las modificaciones necesarias. Hacer clic sobre el botón Aceptar. Para eliminar una relación, basta con seleccionar la relación que se quiere eliminar y pulsar a continuación la tecla Supr (o seleccionar la opción Eliminar del menú Edición). 09/08/2017 210 Ejemplo en vb.net ¿Cómo programar un Botón para agregar registros a una base de datos? Modelo de Datos 212 Modelo de Datos 213 Modelo de Datos 214 Creamos una base de datos llamada Ejemplo_censo con una tabla llamada «personas_censadas». (Vista hoja de datos) Vamos a Visual Studio 2012, elegimos el lenguaje de programación Visual Basic y Creamos la interfaz de nuestro formulario inicial. Creamos un nuevo formulario llamado frmNuevoRegistro en la pestaña Proyecto agregar windows forms… EN ESTA PANTALLA COLOCAMOS UN NOMBRE AL FORMULARIO Y LUEGO HACEMOS CLICK EN AGREGAR. Diseñamos la interfaz del formulario… INICIALMENTE COLOCAMOS LOS CAMPOS Y EL BOTÓN GUARDAR CON LA PROPIEDAD ENABLED = FALSE PARA QUE ESTÉN DESACTIVADOS… HAREMOS QUE SE ACTIVEN SOLO AL HACER CLICK EN EL BOTÓN NUEVO. Escribimos este código en el botón NUEVO: Ahora, vamos a hacer que los registros vayan a nuestra base de datos… En primer lugar, importamos el espacio de nombres system.data.oledb que es el proveedor de datos de .net framework para ole db y describe una colección de clases que se utiliza para obtener acceso a un origen de datos ole db en el espacio administrado. (http://msdn.microsoft.com/es-es/library/system.data.oledb(v=vs.80).aspx) Hacemos doble click en el formulario frmNuevoRegistro y colocamos la siguiente línea antes de Public class… Enlazamos la base de datos a nuestro proyecto tal como se explicó aquí, en Orígenes de datos Agregar nuevo origen de datos. Declaramos dos variables: una llamada conexión de tipo OleDbConnection y una llamada comandos de tipo OleDbCommand. OleDbConnection: Representa una conexión abierta a un origen de datos. OleDbCommand: Representa una instrucción SQL o un procedimiento almacenado que se va a ejecutar en un origen de datos. Vamos a programar el Evento Load del formulario, es decir, el procedimiento que se ejecutará al cargar el formulario: ¿DÉ DONDE OBTENEMOS ESTA CADENA DE CONEXIÓN QUE SE UTILIZA PARA ABRIR LA BASE DE DATOS? (1) Vamos a Orígenes de datos y hacemos Click en el botón Nuevo origen de datos (3) (2) (4) En esta ventana, hacemos click en el botón + (5) COPIAMOS LA CADENA DE CONEXIÓN QUE SE MUESTRA EN EL RECUADRO Y LUEGO PODEMOS HACER CLICK EN CANCELAR. PROGRAMAMOS EL BOTÓN GUARDAR: Continúa… BOTÓN GUARDAR: CONTINUACIÓN… FINALMENTE, PROGRAMAMOS EL BOTÓN VOLVER. LISTO… PROBEMOS A VER CÓMO FUNCIONA… VAMOS A VERIFICAR LOS REGISTROS QUE ESTÁN ALMACENADOS EN LA BASE DE DATOS ANTES DE PROBAR EL PROGRAMA CREADO… AHORA INICIAMOS LA EJECUCIÓN… APARECE EL FORMULARIO INICIAL QUE MUESTRA LAS OPCIONES DISPONIBLES… HACEMOS CLICK EN EL BOTÓN NUEVO REGISTRO. SI FUNCIONA CORRECTAMENTE, DEBERÁ APARECERNOS ESTE MENSAJE EN PANTALLA QUE INDICA QUE NOS HEMOS CONECTADO A LA BASE DE DATOS,TAL COMO LO INDICAMOS AL PROGRAMAR EL EVENTO LOAD DEL FORMULARIO. A CONTINUACIÓN, SE MUESTRA EL FORMULARIO NUEVO REGISTRO. LOS CAMPOS Y EL BOTÓN GUARDAR ESTÁN INICIALMENTE DESACTIVADOS… HACEMOS CLICK EN EL BOTÓN NUEVO. COMO VEMOS ACÁ, EL BOTÓN NUEVO QUEDA ACTIVADO AL IGUAL QUE LOS CAMPOS PARA PERMITIR LA ESCRITURA… AL COMPLETAR LA INFORMACIÓN CORRESPONDIENTE AL REGISTRO QUE ESTAMOS LLENANDO, HACEMOS CLICK EN EL BOTÓN GUARDAR. AL PRESIONAR EL BOTÓN GUARDAR, SI TODO FUNCIONA CORRECTAMENTE, APARECERÁ UN MENSAJE EN PANTALLA INDICANDO QUE EL REGISTRO HA SIDO GUARDADO TAL COMO INDICAMOS ANTERIORMENTE. HACEMOS CLICK EN ACEPTAR… UNA VEZ GUARDADO EL REGISTRO DE FORMA SATISFACTORIA, SE VUELVEN A DESACTIVAR LOS CAMPOS Y EL BOTÓN GUARDAR. VAMOS A VERIFICAR SI REALMENTE SE HA GUARDADO EL REGISTRO QUE ACABAMOS DE AÑADIR… ACÁ ESTÁ… ¡HA FUNCIONADO! Ejemplo en vb.net ¿Cómo programar un Botón para Actualizar registros a una base de datos? Nota: El ejemplo está hecho con Visual Studio 2012 y Access 2010. Diseñamos la interfaz del formulario frmActualizar… COLOCAMOS TODOS LOS CAMPOS (EXCEPTO TXTCEDULA)Y LOS BOTONES MODIFICARY ACTUALIZAR CON LA PROPIEDAD ENABLED = FALSE. Declaramos las variables que vamos a necesitar. Programamos el evento Load del formulario para que se abra la conexión al cargar. PODEMOS OBTENER ESTA CADENA DE CONEXIÓN DESDE ORÍGENES DE DATOS. Programamos el botón Buscar para cargar la información del registro en los campos del formulario. Se programa el botón Modificar para que active los campos permitiendo la escritura. PROGRAMAMOS EL BOTÓN ACTUALIZAR: CONTINÚA… LA CONSULTA COMPLETA PARA ACTUALIZAR QUEDA ASÍ: CONSULTA_ACTUALIZAR = "UPDATE PERSONAS_CENSADAS SET CEDULA = " & TXTCEDULA.TEXT & ", NOMBRE = '" & TXTNOMBRE.TEXT & "', APELLIDO = '" & TXTAPELLIDO.TEXT & "', SEXO = '" & LISTSEXO.TEXT & "', TELEFONO = '" & TXTTELEFONO.TEXT & "', CORREO = '" & TXTCORREO.TEXT & "', NIVEL_INSTRUCCION = '" & COMBONIVELINSTRUCCION.TEXT & "' WHERE CEDULA = " & TXTCEDULA.TEXT & " " BOTÓN ACTUALIZAR (CONTINUACIÓN…): FINALMENTE, PROGRAMAMOS EL BOTÓN VOLVER. VAMOS A VER CÓMO FUNCIONA… VAMOS A VER LOS REGISTROS QUE TENEMOS EN NUESTRA BASE DE DATOS… DIGAMOS QUE QUEREMOS ACTUALIZAR EL REGISTRO CON LA CÉDULA 10111000… INICIAMOS LA EJECUCIÓN DEL PROYECTO. APARECE EL FORMULARIO INICIAL QUE MUESTRA LAS OPCIONES DISPONIBLES… HACEMOS CLICK EN EL BOTÓN ACTUALIZAR REGISTRO. SI FUNCIONA CORRECTAMENTE, DEBERÁ APARECERNOS ESTE MENSAJE EN PANTALLA INDICANDO QUE LA CONEXIÓN A LA BASE DE DATOS HA SIDO EXITOSA,TAL COMO LO INDICAMOS EN EL EVENTO LOAD DEL FORMULARIO. AL APARECER EL FORMULARIO ACTUALIZAR, INGRESAMOS LA CÉDULA EN EL CAMPO CORRESPONDIENTE Y HACEMOS CLICK EN EL BOTÓN BUSCAR. SI EXISTE UN REGISTRO QUE CUMPLA CON EL CRITERIO DE SELECCIÓN, SE CARGARÁ LA INFORMACIÓN DEL MISMO EN LOS CAMPOS DEL FORMULARIO Y SE ACTIVARÁN LOS BOTONES MODIFICARY ACTUALIZAR. HACEMOS CLICK EN EL BOTÓN MODIFICAR PARA QUE SE ACTIVEN LOS CAMPOS DEL FORMULARIO Y SE PERMITA ASÍ LA MODIFICACIÓN DE LOS CAMPOS CORRESPONDIENTES AL REGISTRO ENCONTRADO. HACEMOS LAS MODIFICACIONES NECESARIAS Y PRESIONAMOS EL BOTÓN ACTUALIZAR. SI TODO ESTÁ BIEN,APARECERÁ UN MENSAJE EN PANTALLA INFORMANDO QUE EL REGISTRO HA SIDO ACTUALIZADO. UNA VEZ ACTUALIZADO EL REGISTRO, SE DESACTIVAN NUEVAMENTE LOS CAMPOS Y LOS BOTONES MODIFICARY ACTUALIZAR. VERIFICAMOS EN LA BASE DE DATOS… EL REGISTRO SE ACTUALIZÓ CORRECTAMENTE… Ejemplo en vb.net ¿Cómo programar un Botón para ELIMINAR registros a una base de datos? DECLARAMOS LAS VARIABLES QUE VAMOS A NECESITAR. Diseñamos la interfaz del formulario frmEliminar… COLOCAMOS TODOS LOS CAMPOS (EXCEPTO TXTCEDULA)Y EL BOTÓN ELIMINAR CON LA PROPIEDAD ENABLED = FALSE. Programamos el evento Load del formulario para que se abra la conexión al cargar. Se programa el botón Buscar para cargar la información del registro en los campos del formulario y activar el botón Eliminar. Programamos el botón Eliminar para que el usuario confirme que desea borrar el registro encontrado y a continuación ejecutar la consulta Delete correspondiente. Finalmente, se programa el botón Volver para cerrar la conexión y regresar al formulario anterior. VAMOS A VER LOS REGISTROS QUE TENEMOS EN NUESTRA BASE DE DATOS… SUPONGAMOS QUE QUEREMOS ELIMINAR EL REGISTRO CON LA CÉDULA 12333333… INICIAMOS LA EJECUCIÓN DEL PROYECTO. APARECE EL FORMULARIO INICIAL QUE MUESTRA LAS OPCIONES DISPONIBLES… HACEMOS CLICK EN EL BOTÓN ELIMINAR REGISTRO. SI FUNCIONA CORRECTAMENTE, DEBERÁ APARECERÁ UN MENSAJE EN PANTALLA INDICANDO QUE LA CONEXIÓN A LA BASE DE DATOS HA SIDO EXITOSA, COMO LO INDICAMOS EN EL EVENTO LOAD DEL FORMULARIO. AL APARECER EL FORMULARIO ELIMINAR, INGRESAMOS LA CÉDULA EN EL CAMPO CORRESPONDIENTE Y HACEMOS CLICK EN EL BOTÓN BUSCAR. PRESIONAMOS EL BOTÓN BUSCARY, SI EL REGISTRO EXISTE EN LA BASE DE DATOS, SE MUESTRA EN LOS CAMPOS DEL FORMULARIO Y SE ACTIVA EL BOTÓN ELIMINAR. PRESIONAMOS EL BOTÓN ELIMINARY SE NOS PIDE CONFIRMAR QUE DESEAMOS BORRAR EL REGISTRO. PRESIONAMOS SI Y SE MUESTRA UN MENSAJE EN PANTALLA INFORMANDO QUE EL REGISTRO HA SIDO ELIMINADO.