Download Crear y administrar bases de datos
Document related concepts
Transcript
Crear y administrar bases de datos Quinto Semestre Guía 2011-B Guía de Estudio BLOQUE I. Diseñar la base de datos relacional para cubrir las necesidades y requerimientos de una organización. 1.1Base de datos Es un conjunto manera que de información organizada de tal sea rápido realizar consultas, borrar, guardar nuevos datos. Esta información es almacenada en dispositivos electrónicos y gestionada por diversos BASE DE DATOS aplicativos. Versatilidad para la representación de la información Desempeño Mínima redundancia de datos Acceso a través de lenguajes de programación estándar Simplicidad Integridad de datos Seguridad y privacidad Independencia física y lógica Acceso concurrente por parte de múltiples usuarios 1 Elaborada por: Socorro Buendia Las bases de datos deben de cubrir las siguientes características: Crear y administrar bases de datos 1.2 Modelo Entidad Relación (MER)1 El Modelo de Entidad Relación es un modelo de datos basado en una percepción del mundo real que consiste en un conjunto de objetos básicos llamados entidades y relaciones, implementándose en forma gráfica a través del Diagrama Entidad Relación. Se Se hace REGISTROS referencia cuando a nos referimos a una clase de objetos con características Elaborada por: Socorro Buendia similares. 1 puede definir como ENTIDAD a cualquier objeto, real o abstracto, que existe en un contexto determinado o puede llegar a existir y del cual deseamos guardar información. PDF. MER 2007. Storti Guillermo, Ríos Gladys, Campodónico Gabriel. 2 Guía de Estudio Elaborada por: Socorro Buendia Tipos de Relaciones: 3 Elaborada por: Socorro Buendia Crear y administrar bases de datos 4 Elaborada por: Socorro Buendia Guía de Estudio 5 Crear y administrar bases de datos Solución: Se identifican las posibles ENTIDADES… Se colocan los ATRIBUTOS de cada entidad: Por último se establecen las RELACIONES y CARDINALIDAES que existen entre las Elaborada por: Socorro Buendia entidades correspondientes: De esta manera se va completando el modelo entidad realción.2 2 Información extraída de http://www.youtube.com/watch?v=HYHLt-NLy6E&feature=related 6 Guía de Estudio Llave primaria o clave principal o identificador Se denomina LLAVE PRINCIPAL O PRIMARIA al atributo o conjunto mínimo de atributos (uno o más campos) que permiten identificar en forma única cada instancia de la entidad, es decir, a cada registro de la tabla. Las llaves principales se utilizan cuando se necesita hacer referencia a registros específicos de una tabla desde otra tabla. En un principio se puede identificar más de un atributo que cumpla las condiciones para ser clave, los mismos se denominan llaves candidatas. Si la llave primaria se determina mediante un solo atributo de la entidad, entonces de un atributo, la misma se conoce como Clave compuesta. La LLAVE FORÁNEA (también llamada externa o secundaria) es un atributo que es Llave primaria en otra entidad con la cual se relaciona. En el modelo entidad relación algunos autores acostumbran subrayar el nombre del atributo, otros lo representan rellenando con un color obscuro todo el óvalo, en este ejemplo se identifica por estar en letras negritas. 7 Elaborada por: Socorro Buendia se dice que la misma es una Clave simple. En caso de estar conformada por más Crear y administrar bases de datos La llave primaria de la entidad Rep_Ventas es Num_Empl, en el caso de la entidad Productos su llave primaria está compuesta por dos elementos Id_Fabrica y Id_Producto. Pasos para la construcción del Diagrama Entidad Relación: Elaborada por: Socorro Buendia 1.-Identificar las entidades 2.-Determinar las claves primarias 3.- Describir los atributos de las entidades 4.- Establecer las relaciones entre las entidades 5.- Dibujar el modelo de datos 6.- Realizar comprobaciones 8 Guía de Estudio 1.3 Modelo El de Datos Relacional (MDR) 3 modelo entidad relación, nos permite identificar de manera clara las relaciones que existen entre las entidades. Una vez que se tiene el MER es fácil realizar el modelo de datos relacional, ambos modelos están totalmente asociados, de hecho el modelo de datos permite a los administradores de base de datos y/o analistas tener una visión más limpia y rápida de la base de datos con la que se va a trabajar. Veamos la similitud de ambos modelos con la tabla siguiente: Entidad Atributos Componente en MER Componente en MDR Alumno Alumno Alumno Nombre Nombre Nombre MDR Tabla Campo Atributos -n Relaciones 3 Inscrito PDF. MER 2007. Storti Guillermo, Ríos Gladys, Campodónico Gabriel. 9 Relación Elaborada por: Socorro Buendia Nombre MER Crear y administrar bases de datos Tipos de Relaciones Se entiende por RELACIÓN a la asociación entre 2 o más entidades. A. CLASIFICACION POR CARDINALIDAD Relación Uno a Uno: Cuando un registro de una tabla sólo puede estar relacionado con un único registro de la otra tabla y viceversa. En este caso la clave foránea se ubica en alguna de las 2 tablas. Relación Uno a Muchos: Cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal) y un registro de la tabla principal puede tener más de un registro relacionado en la tabla secundaria. Fig. Clasificación por Cardinalidad En este caso la clave foránea se ubica en la tabla secundaria. Relación Muchos a Muchos: Cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que añadir una tabla entre las dos (Tabla débil o de vinculación) que incluya los pares de valores Elaborada por: Socorro Buendia relacionados entre sí. El nombre de tabla débil deviene de que con sus atributos propios no se puede encontrar la clave, por estar asociada a otra entidad. La clave de esta tabla se conforma por la unión de los campos claves de las tablas que relaciona. B. CLASIFICACION POR MODALIDAD Dadas las tablas A y B, que se encuentran relacionadas: Si para todo registro de A debe existir siempre al menos un registro de B asociado, se dice que la relación en sentido A->B es Obligatoria. Fig. Clasificación por Modalidad 10 Guía de Estudio Si para todo registro de A, pueden existir o no, uno o varios registros de B asociados, se dice que la relación en sentido A->B es Optativa. La modalidad de las relaciones se debe analizar en ambos sentidos. Fig. Tipos de Relaciones Ejemplos… i) Relación uno a uno _ Todo Departamento tiene solamente un Profesor a cargo Elaborada por: Socorro Buendia _ Un Profesor puede ser jefe de un solo Departamento 11 Crear y administrar bases de datos La relación UNO A UNO se da cuando un registro de una tabla sólo puede estar relacionado con un único registro de la otra tabla y viceversa. La Clave Foránea se ubica en alguna de las 2 tablas. ii) Relación uno a muchos Elaborada por: Socorro Buendia _ Un Curso tiene muchos Alumnos _ Un Alumno está en sólo un curso _ Un Curso puede estar transitoriamente vacío _ Todo Alumno tiene un Curso asignado La Relación Uno a Muchos se establece cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal) y un registro de la tabla principal puede tener más de un registro relacionado en la tabla secundaria. La clave foránea se ubica en la tabla secundaria. 12 Guía de Estudio iii) Relación muchos a muchos _ Un Profesor puede estar asignado en varios Cursos _ Un Curso puede tener muchos Profesores asignados _ Todo Profesor tiene un Curso asignado _ Un Curso puede no tener transitoriamente un Profesor ROMPER CON LA RELACIÓN DE La Relación Muchos a Muchos se da cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa. En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que añadir una tabla entre las dos (Tabla débil o de vinculación) que incluya los pares de valores relacionados entre sí. 13 Elaborada por: Socorro Buendia MUCHOS A MUCHOS Crear y administrar bases de datos El nombre de tabla débil deviene de que con sus atributos propios no se puede encontrar la clave, por estar asociada a otra entidad. La clave de esta tabla se conforma por la unión de los campos claves de las tablas que relaciona. 1.4 Normalización Consiste verificar el cumplimiento de ciertas reglas que aseguran la eliminación de redundancias e inconsistencias. Esto se hace mediante la aplicación de ciertos procedimientos y en ocasiones se Elaborada por: Socorro Buendia traduce en la separación de los datos en diferentes relaciones. • Las relaciones resultantes deben cumplir ciertas características: • Se debe conservar la información: – Conservación de los atributos. – Conservación de las tuplas, evitando la aparición de tuplas que no estaban en las relaciones originales. • Se deben conservar las dependencias. 14 Guía de Estudio Ejemplo: Observa que el campo url tiene varios datos, esto es incorrecto, debe tener sólo valores atómicos. Para ello debemos separar los valores compuestos en los campos url1 y url2. 15 Elaborada por: Socorro Buendia Tabla usuarios Crear y administrar bases de datos Otra forma de modificar los valores compuestos, aplicando la normalización sería la siguiente: F1N F2N 1.-Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros. Elaborada por: Socorro Buendia 2. Relacionar estas tablas mediante una clave externa. 16 Guía de Estudio ¿Pero, qué ocurre cuando queremos añadir otro empleado a la empresa ABC? ¿ó 200 empleados ? Así que tendremos que aplicar el tercer nivel de F/N F3N 1. Eliminar aquellos campos que no dependan de la clave.Nuestro nombre de empresa y su dirección no tienen nada que ver con el campo userId, así que tienen Elaborada por: Socorro Buendia que tener su propio empresaId: 17 Crear y administrar bases de datos Nuestras tablas de usuarios y urls pueden crecer todo lo que quieran sin duplicación ni corrupción de datos. La mayoría de los desarrolladores dicen que el tercer nivel de F/N es suficiente, que nuestro esquema de datos puede manejar fácilmente los datos obtenidos de una cualquier empresa en su totalidad, y en la mayoría de los casos esto será cierto. Pero echemos un vistazo la tabla urls en el campo url - ¿Ves duplicación de datos? Entonces tendríamos que llevar nuestro diseño de BD al siguiente nivel de F/N, el cuarto, muchos desarrolladores lo pasan por alto porque depende mucho de un tipo muy específico de relación, la relación 'varios-con-varios', la cual aún no hemos encontrado en nuestra aplicación. Elaborada por: Socorro Buendia F4N 18 Guía de Estudio En resumen: • F1N … valores atómicos • F2N … depende de forma completa de la llave primaria • F3N … no depende de forma transitiva de la llave primaria F4N …. Realización de catálogos Preguntas de repaso del primer bloque BASE DE DATOS 1.- ¿Qué es una Base de Datos? 2.- ¿Cuál es su funcionalidad en el mundo actual? 3.-Menciona 5 características de una base de datos 4.- ¿Cuáles son los MODELOS que se utilizan para representar una base de datos? 5.-Describe la FUNCIONALIDAD de cada uno de ellos (diferencias principales) MER 6.-Describe cada uno de los siguientes componentes: ENTIDAD, ATRIBUTO, RELACION , CARDINALIDAD. 7.- ¿Cuáles son los GRAFOS asociados a los componentes del MER? 8.- ¿Cuál es la principal función del MODELO ENTIDAD RELACIÓN? 9.- ¿Cuáles son los GRAFOS utilizados por esté modelo? 10.- Describe los pasos utilizados para diseñar un MDR en la HERRAMIENTA DE SOFTWARE ( ACCESS). NORMALIZACION 11.- ¿Para qué sirve la Normalización en una base de datos? 12.- ¿Qué es un VALOR COMPUESTO? 13.- ¿Qué es un VALOR ATOMICO? 14.- Escribe un ejemplo en donde muestres la diferencia entre un valor compuesto y los valores atómicos. 15.- ¿Qué es un catálogo? 19 Elaborada por: Socorro Buendia MODELO DE DATOS RELACIONAL Crear y administrar bases de datos BLOQUE II. Configurar y administrar un sistema gestor de base de datos relacional considerando los recursos de la organización. 2.1 Sistema gestor de base de datos (SGBD)4 Un SGBD es una colección de numerosas rutinas de software interrelacionadas, está dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta. BASE DE DATOS + Aplicación = SGBD Funciones Principales de un SGBD. Crear y organizar la Base de datos. Establecer y mantener las trayectorias de acceso a la base de datos de tal forma que los datos puedan ser accesados rápidamente. Elaborada por: Socorro Buendia Manejar los datos de acuerdo a las peticiones de los usuarios. Registrar el uso de las bases de datos. Interacción con el gestor de archivos. Esto a través de las sentencias en DML al comando del sistema de archivos. Así el manejador de bases de datos es el responsable del verdadero almacenamiento de los datos. Respaldo y recuperación de datos. Control de concurrencia. Consiste en controlar la interacción entre los usuarios concurrentes para no afectar la inconsistencia de los datos. Seguridad e integridad. Consiste en contar con mecanismos que permitan el control de la consistencia de los datos evitando que estos se vean perjudicados por cambios no autorizados o previstos. 4 Información extraída de: http://www.slideshare.net/kika19/sistemas-manejadores-de-base-de-datos-5072035 20 Guía de Estudio 2.1.1 SGBD Free (Código abierto) •Sus principales características son: •Posibilidad de crear y configurar usuarios, asignando a estos permisos diferentes. •Facilidad de exportación e importación de datos, incluso de la base de datos Caracteristicas completa. Aplicaciones •Es utilizado en aplicaciones web, como Drupal o php, en plataformas (Linux/Windowsapache-MySQL-PHP/Perl/Python), y por herramientas de segimiento de errores comoo Bugzilla. •Dentro de las aplicaciones web hace que la lectura de datos sea muy rápida. •Puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. Descripción técnica de MySQL 21 Elaborada por: Socorro Buendia Desventajas Crear y administrar bases de datos Descripción técnica Elaborada por: Socorro Buendia Descripción técnica Descripción técnica 22 Guía de Estudio 2.1.2 SGBD Comercial. Descripción técnica Elaborada por: Socorro Buendia Descripción técnica 23 Crear y administrar bases de datos 2.2 Diseño físico y diseño lógico ABSTRACCION DE DATOS -El sistema esconde ciertos detalles de cómo se almacena y mantiene los datos del usuario Nivel Físico(Interno) Nivel Lógico (Conceptual) -Define la estructura de la base de datos: Dispositivos de almacenamiento físico, direcciones físicas, estrategias de acceso, relaciones, índices, apuntadores, etc. -Describe que datos serán almacenados en la base de datos y las relaciones que existen entre ellos mismos. Definición de datos: Se describe el tipo de datos y la longitud de campo. Relaciones entre datos: Se definen relaciones para enlazar tipos de registros relacionales para el procesamiento de archivos múltiples. 2.2.1 Diseño físico Nivel Físico está relacionado totalmente con los bytes que va a ocupar nuestra base de datos en cualesquier dispositivo electrónico donde se va a almacenar, para ello es importante conocer los tipos de datos que va a requerir nuestra información, ya que cada dato ocupa diferentes números de bytes, no es igual almacenar sólo Elaborada por: Socorro Buendia texto a imágenes. 24 Guía de Estudio Números exactos Smallint Smallmoney Tinyint Real Datetimeoffset Smalldatatime Time Elaborada por: Socorro Buendia Números decimales Fecha y hora bigint bit decimal int mooney float date datetime2 Datetime 25 Crear y administrar bases de datos Estimación de tablas y Base de datos en SQL SERVER 5 En cuanto al espacio ocupado por la base de datos, hay que tener presente que los datos se almacenan en páginas (bloques de 8 Kb de espacio contiguo de almacenamiento permanente), lo que implica un almacenamiento de 128 páginas por Megabyte. Hay que tener presente que las filas no pueden abarcar más de una página, con lo que la máxima información por fila es de 8,060 bytes (quitando el espacio necesario para la cabecera de fila). En cuanto a los índices, se almacenan en extensiones de 8 páginas contiguas (64 KB). A la hora de crear una base de datos es conveniente tener presente algunas recomendaciones. La mayor parte de las bases de datos funcionarán correctamente con un solo archivo de datos principal6 y un solo archivo de registro de transacciones7. Además si utiliza varios archivos, cree un segundo grupo de archivos para el archivo adicional8 (de este modo, el archivo principal sólo contendrá objetos y tablas del sistema). Para aumentar al máximo el rendimiento, cree archivos o grupos de archivos en tantos discos físicos como estén disponibles. Estimar el tamaño de una tabla. Toma en cuenta los siguientes pasos: 1.- Se multiplica el número de columnas fijas por la longitud en bytes de cada una. 2.- Las columnas de longitud fija necesitan un espacio adicional para gestionar la Elaborada por: Socorro Buendia administración de valores NULL que ocupa un espacio igual a la parte entera de 2 + (número de columnas + 7)/8. A este tamaño es necesario añadir el calculado en el paso 1. 3.-Si hay columnas de longitud variable en la tabla, se determina el espacio que se utiliza para almacenar las columnas de la fila mediante la expresión: 2*(número de columnas variables) + tamaño máximo de columna variable + 2 En esta fórmula, se supone que todas las columnas de longitud variable están llenas al 100%. Si se prevé que va a utilizarse un porcentaje inferior del espacio de almacenamiento de las columnas de longitud variable, podrá ajustarse el resultado 5 Información extraída de Microsoft SQL Server 2005, ver bibliografía. Archivo con extensión .mdf que contiene información de inicio para la BD y se utiliza para almacenar datos. 7 Archivo con extensión .ldf que contiene la información del registro que se utiliza para recuperar la base de datos. 8 Archivo con extensión.ndf contiene todos los datos que no caben en el archivo principal. 6 26 Guía de Estudio en función de ese porcentaje para obtener una estimación más precisa del tamaño de la tabla. A este cálculo se le adiciona los valores obtenidos en los puntos 1 y 2. 4.- Al valor calculado hasta ahora se añaden 4 bytes del tamaño del encabezado y se obtiene el espacio que ocupa una fila. Si se multiplica este valor por el número de filas estimado, se obtendrá el número total de bytes. 5.- A continuación se calcula el número de filas por página mediante la expresión: 8096/ (tamaño de fila +2) Redondeada a la fila completa anterior (ya que las filas no abarcan varias páginas). No olvidemos que se dispone de 8,096 byte por página. 6.- A continuación se calcula en número de páginas necesarias para almacenar todas las filas mediante la expresión: número de filas/( filas por página – filas libres por página) El número de páginas estimado debe redondearse a la siguiente página completa. 7.- Por último, para calcular la cantidad de espacio necesario para almacenar los datos en una tabla (8.192 bytes por página) se usa la expresión: Tamaño de la tabla (bytes) = 8.192 x número de páginas Es necesario tener en cuenta que cada página ocupa 8,192 bytes aunque sólo tiene Estimar el tamaño de la base de datos. Para calcular el espacio total a asignar para una base de datos hay que tener en cuenta varios factores, entre los que destacan los siguientes: Tamaño de las tablas del sistema, incluyendo la posibilidad de crecimiento. Total de datos a almacenar en las tablas, incluyendo la previsión de su crecimiento. Los índices9 a utilizar, sobre todo el tamaño del valor de las claves, el número de filas y el valor del factor de relleno. El tamaño del registro de transacciones que depende sobre todo de la frecuencia de las modificaciones, el tamaño de las transacciones y la 9 Permiten realizar búsquedas de manera más rápida. 27 Elaborada por: Socorro Buendia libres 8,096 bytes. Crear y administrar bases de datos frecuencia de las copias de seguridad. Suele asignarse al registro de transacciones entre el 10 y 25 % del tamaño de la base de datos. 2.2.2 Diseño lógico. El diseño lógico es la parte que se encarga de la representación lógica general del problema, desde los modelos utilizados para establecer las relaciones que se van a dar entre los datos, como los aplicativos que permiten manipular estos datos. Entre estos modelos tenemos al modelo entidad relación y el modelo de datos relacionales, una vez que se ha llegado a normalizar el MDR, se debe tomar en cuenta el DICCIONARIO DE DATOS. Diccionario de datos. Está formado por la información cada entidad y sus respectivos atributos, Nombre de la tabla con el que va hacer identificado en la base de datos, tipo de dato, longitud del atributo, si el atributo es obligatorio y una breve descripción de este. En esta parte las entidades se les conoce como tablas, a los atributos como campos, dada la representación del modelo de datos relacional. Nombre de la tabla-n Tipo de dato Longitud Nulo Descripción Elaborada por: Socorro Buendia Nombre del campo 28 Guía de Estudio Preguntas… BLOQUE II 1.- ¿Qué es un sistema gestor de base de datos? 2.- Menciona 3 SGBD de software libre y 3 comerciales 3.- ¿Qué SGBD se maneja en la sala de cómputo? 4.- ¿En qué consiste el diseño físico de una BD? 5.- ¿El tipo dato texto, cuántos bytes tiene? ¿Un tipo de dato int, fecha , varchar? 6.- ¿Qué es una página? ¿Cuánto pesa una página? 7.- ¿Qué es un servidor? 8.- ¿Qué es el diseño lógico de una BD? Elaborada por: Socorro Buendia 9.- ¿Cuál es la importancia de tener dentro de los documentos del sistema el diccionario de datos de una BD? 29 Crear y administrar bases de datos BLOQUE III. Implantar y administrar la base de datos relacional a partir de las políticas y procedimientos de la organización. 3.1 SQL Ejemplo: Enter password: ********* Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.0.51b-community-nt-log MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database persona; mysql> use persona; Database changed mysql> create table correo (cve_correos char(10), correo_electronico varchar(30) ); int(3), nombre char(10), apaterno char(10), amaterno Elaborada por: Socorro Buendia mysql> alter table persona add primary key (cve_correos); mysql> describe correo; +--------------------+------------------+-------+-----+-----------+---------+ | Field | Type | Null | Key | Default | Extra | +--------------------+------------------+-------+-----+-----------+---------+ | cve_correos | int(3) | NO | PRI | 0 | | | nombre | char(10) | YES | | NULL | | | apaterno | char(10) | YES | | NULL | | | amaterno | char(10) | YES | | NULL | | | correo_electronico | varchar(30) | YES | | NULL| | +--------------------+-------------+------+-----+---------+-------+ 5 rows in set (0.01 sec) mysql> insert into correo values (1, 'Susana', 'Diaz', 'Garza', 'susana@hotmail. com'); Query OK, 1 row affected (0.02 sec) 30 Guía de Estudio 3.2 Consultas básicas. Ejemplos: Despliega todos los datos que se encuentran almacenados en la tabla correos. mysql> select * from correo; +------------------+--------------+---------------+---------------+---------------------------------------+ | cve_correos | nombre | apaterno | amaterno | correo_electronico | +------------------+--------------+---------------+---------------+---------------------------------------+ | 1 | Susana | Diaz | Garza | susana@hotmail.com | | 2 | Gustavo | Sanchez | Mendoza | gustavo@hotmail.com | | 3 | Alfredo | Casarez | Ruiz | alfredo@gmail.com | | 4 | Jorge | Martinez | Perez | alfredo@gmail.com | | 5 | Azucena | Mendieta | Chavez | azucena@yahoo.com | | 6 | Patricia | Moreno | Sanz | patricia@hotmail.com.com | | 7 | Luis | Huerta | Solis | luis@hotmail.com.com | | 8 | Karla | Palafoz | Gutierrez | karla@yahoo.com.com | | 9 | Pedro | Rodarte | austria | perdo@yahoo.com.com | | 10 | Aaron | Campos | Avilia | aaron@hotmail.com.com | +-------------+----------+----------+-------------+--------------------------------------------------------+ 10 rows in set (0.00 sec) mysql> select cve_correos, correo_electronico from correo; +------------------+---------------------------------------+ | cve_correos | correo_electronico | +------------------+---------------------------------------+ | 1 | susana@hotmail.com | | 2 | gustavo@hotmail.com | | 3 | alfredo@gmail.com | | 4 | alfredo@gmail.com | | 5 | azucena@yahoo.com | | 6 | patricia@hotmail.com.com | | 7 | luis@hotmail.com.com | | 8 | karla@yahoo.com.com | | 9 | perdo@yahoo.com.com | | 10 | aaron@hotmail.com.com | +------------------+---------------------------------------+ 10 rows in set (0.00 sec) 31 Elaborada por: Socorro Buendia Despliega sólo los datos cve_correos y correo_electronico de la tabla correos. Crear y administrar bases de datos Realiza una consulta en donde sólo se despliegue los apellidos paternos en orden inverso al alfabeto. mysql> select apaterno from correo order by apaterno desc; +--------------+ | apaterno | +--------------+ | Sanchez | | Rodarte | | Palafoz | | Moreno | | Mendieta | | Martinez | | Huerta | | Diaz | | Casarez | | Campos | +--------------+ 10 rows in set (0.00 sec) Elaborada por: Socorro Buendia Realiza una consulta en donde sólo se despliegue los apellidos paternos en orden ascendente. mysql> select apaterno from correo order by apaterno asc; +--------------+ | apaterno | +--------------+ | Campos | | Casarez | | Diaz | | Huerta | | Martinez | | Mendieta | | Moreno | | Palafoz | | Rodarte | | Sanchez | +--------------+ 10 rows in set (0.00 sec) 32 Guía de Estudio Realiza una consulta en donde sólo se despliegue los apellidos maternos de las personas que tienen su clave entre el 5 y 9. mysql> select amaterno from correo where cve_correos between 5 and 9; +---------------+ | amaterno | +---------------+ | Chavez | | Sanz | | Solis | | Gutierrez | | austria | +-------------- + 5 rows in set (0.00 sec) Realiza una consulta en donde sólo se despliegue los apellidos paternos de las personas que sus apellidos paternos terminen con a. Despliega los apellidos paternos en donde la segunda letra de su apellido sea a, no importando las demás letras. mysql> select apaterno from correo where apaterno like '%a'; +-------------+ | apaterno | +-------------+ | Campos | | Casarez | | Martinez | | Palafoz | | Sanchez | +-------------+ 5 rows in set (0.00 sec) 33 Elaborada por: Socorro Buendia mysql> select apaterno from correo where apaterno like '%a'; +--------------+ | apaterno | +--------------+ | Mendieta | | Huerta | +--------------+ 2 rows in set (0.01 sec) Crear y administrar bases de datos 3.3 Vistas Una vista es una tabla virtual cuyos contenidos están definidos por una instrucción select. Las vistas son un poderoso mecanismo de modelado de datos y seguridad. Las vistas indexadas también pueden proporcionar un beneficio sustancial en el rendimiento. Las tablas referenciadas por la definición de la vista se conocen como tablas base. En el ejemplo que sigue, vistatítulos es una vista que selecciona los datos desde tres tablas base: título, autortítulo y títulos. Estas tablas sonparte de la base de datos pubs incluida en SQL Server. Create view vistatitulos as select titulo, au_ord, au_nombre, precio, ventas, id editorial from autores as a join autortítulo as at on(a.au_id = at.au_id) Elaborada por: Socorro Buendia join titulos as t on (t.titulo_id = at.titulo_id); Se puede hacer referencia a la vista vistatitulos en instrucciones de la misma forma a como se haría con una tabla base: select * form vistatitulos; where precio >= 30; 34 Guía de Estudio 3.4 Seguridad10 Para una introducción a la Seguridad puedes ver el video de “La información y la seguridad” en: http://www.youtube.com/watch?v=aO7Q2-K-ADo&feature=related. La seguridad en las bases de datos consiste en tener protección contra: Revelación de datos no autorizados (confidencialidad), alteración no autorizada (Integridad de datos), destrucción intencional o involuntaria de datos, virus, troyanos. Ofrece protección dirigida a los datos (restringiendo el acceso a los datos y ofreciendo diversos permisos dependiendo del tipo de personal que los va a manejar). La información que se encuentra en una BD es lo más valioso de toda organización u empresa, se debe de mantener la confidencialidad, además de vigilar los aspectos de tipo legal, social y éticos, problemas de sabotaje, errores humanos. Mecanismos de seguridad en un BD: Control de accesos. Control de flujo. Control de inferencia. Encriptado de datos.11 Control de Acceso Mandatorio. Clasifica usuarios y datos en múltiples niveles de Control de Acceso Discrecional. Garantiza los privilegios a usuarios, incluyendo la capacidad para acceder a archivos de datos específicos, registros o campos para operar de una manera determinada (read, insert, delete o update). 10 http://www.slideshare.net/aefeijo/seguridad-de-base-de-datos Es un método que permite ocultar la información a simple vista, ya sea utilizando una serie de letras y/o números con un orden diferente al normal. La Criptografía utiliza funciones matemáticas para codificar la información, de tal manera que únicamente el receptor y el emisor, conozcan la información original. 11 35 Elaborada por: Socorro Buendia seguridad, determinadas reglas acordes a cada nivel. Crear y administrar bases de datos Para asignar un usuario a una base de GRANT SCHEMA nombreEsqBD AUTHORIZATION usuario; datos: Con está privilegios: instrucción se otorgan GRANT privilegios ON objeto TO usuarios [WITH GRANT OPTION]; Para quitar permisos ó privilegios: REVOKE [ GRANT OPTION FOR] privilegios ON objeto FROM usuarios { CASCADE | RESTRINCT}; Privilegios que se asignan a un usuario de una base de datos: Usar una BD. Consultar ciertos datos. Actualizar datos. Crear o actualizar objetos. Ejecutar procedimientos almacenados. Referenciar objetos. Crear identificadores. Indexar objetos. Elaborada por: Socorro Buendia Estos privilegios se asignan a través de: SELECT DELETE Para leer todas las columnas (incluyendo las que se añadan con ALTER TABLE) Para remover datos INSERT (Columna/s) – para incorporar nuevas tuplas con valores no nulos (o no default) en esa/s columna/s. INSERT idem Para todas las columnas. UPDATE Análogo a INSERT para modificar datos existentes. REFERENCES Para definir: foreign keys. (columna) Sólo el propietario de la BD puede ejecutar CREATE, ALTER y DROP. 36 Guía de Estudio La sentencia WITH GRANT OPTION permite que el poseedor de ciertos privilegios pueda transmitirlos a otros usuarios. Usuario -> puede ser un ‘username´ o Public PUBLIC -> los privilegios se asignan a todos (ej, GRANT SELECT ON listaAlumnos TO PUBLIC; Seguimiento del “rastro” (Audit Trail). Si alguien entra en la BD, se puede ver a que datos accedió y que hizo con ellos. 3.5 Integridad en la Base de Datos.12 Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas a la base de datos por los usuarios autorizados no provoquen la pérdida de la consistencia de los datos. Por tanto las restricciones de integridad protegen a las bases de datos de daños accidentales. La integridad tiene como función proteger la BD contra operaciones que introduzcan inconsistencias en los datos. Se habla de integridad en el sentido de corrección, validez o precisión de los datos. El subsistema de integridad de un SGBD debe por tanto detectar y corregir, en la los SGBD comerciales, ya que casi toda la verificación de integridad se realiza mediante código de procedimientos escritos por los usuarios de BD. Habrá operaciones cuya falta de corrección no sea detectable, por ejemplo, introducir una fecha de nacimiento 25/12/1945 cuando en realidad era 25/12/1954. En lo que tiene que ver con la seguridad también se protege los datos frente al acceso de personas no autorizadas y destrucción o alteración malintencionada. 12 Información extraída de http://www.slideshare.net/guest92c0d4/analisis-comparativo-my-sql-vs-oracle-2716900 37 Elaborada por: Socorro Buendia mediad de lo posible, las operaciones incorrecta. En la práctica es el punto débil de Crear y administrar bases de datos 3.6 Recuperación de la información El objetivo del concepto de recuperación es proteger la base de datos contra fallas lógicas o físicas que destruyan los datos en forma total o parcial. Estas fallas pueden afectar al correcto almacenamiento de los datos. Para asegurar que la base de datos siempre éste en un estado consistente, cada base de datos tiene un proceso para obtener copias de seguridad, esto ayuda a mantener un registro confiable de ellos datos ante desastres o posibles fallas del sistema. Por otro lado, las bases de datos crean unidades de ejecución llamadas transacciones, que pueden definirse como una secuencia de operaciones que se ejecutan en forma atómica, es decir, se realizan todas las operaciones que comprende la transacción o no se realiza ninguna. Las transacciones, o terminan el proceso con éxito y son completadas en la base de datos, o fracasan y deben ser restaurado el estado anterior de la base de datos. La recuperación en frío, consiste en disponer de un backup o respaldo de la BD, que permitirá junto con los archivos de log. que se han ido produciendo desde el último backup, reconstruir la BD, para dejarla consistente. El error fatal, se produce cuando se pierde el archivo de log. En este caso resulta Elaborada por: Socorro Buendia imposible recuperar la base. La solución pasa por disponer los archivos de log en respaldos. El Administrador de base de datos, debe definir responsabilidades, procedimientos, situaciones y plazos en los que se deben realizar las copias de seguridad y el respaldo del archivo de log especificando a los operadores los procedimientos de recuperación ante caídas. El principio básico en el que se basa la recuperación es la redundancia. En el siguiente video se muestra como hacer un respaldo utilizando dump. http://www.youtube.com/watch?v=e2SBqi3yw2Y&feature=related 38 Guía de Estudio 3.7 Monitoreo de Bases de Datos 13 El monitorear es necesario para asegurarse que las bases de datos se desempeñen eficazmente. Ayuda a prevenir problemas antes de que surjan, además de mostrar el estado actual de las bases de datos. Entre las herramientas para encontramos MySQL – Proxy. monitorear y optimizar consultas y búsquedas, El monitoreo del servidor SQL tiene la capacidad de conectarse a la fuente de la base de datos y monitorear diversos valores en las columnas, recolectar datos, así como notificar a través de mensajes de alerta. Otra herramienta que se encuentra en el mercado es Microsoft SQL Server, permite editar y ejecutar rápidamente consulta y scripts de SQL. Microsoft SQL Server junto con el Profiler y el Performance Monitor permiten ver los procesos que se ejecutan en nuestro servidor, permiten ver su rendimiento, observar el uso de los discos, memoria y el CPU que está utilizando nuestro motor de base de datos. El Profiler nos permite crear trace14 para darle seguimiento a las ejecuciones y consultas que se realizan en un determinado servidor. El Perfomance monitor, es una herramienta que permite visualizar como se están comportando nuestros discos duros, la forma en que la BD está utilizando la memoria y el procesador de nuestro servidor, los picos muy altos en los discos no es positivo para el servidor, estos picos deben mantenerse por debajo de un 20 % y sólo la memoria y el CPU pueden tener ligeros picos esporádicamente. análisis.15 Detalle Mantener las estadísticas al día. Utilizar el Profiler para afinar consultas de larga duración. Utilizar el Profiler para consultar scans de tablas e índices. Utilizar el Performance Monitor para analizar el uso de recursos del sistema. Analizar recursos de memoria del Server en consultas de larga duración. Analizar la falta estadísticas actualizadas en consultas de larga duración. Analizar la falta de índices en consultas de larga duración. 13 Información extraída de http://www.slideshare.net/mariaalfaro08/sql-server-3140203 Secuencia de instrucciones que se muestran junto con la información de la máquina que las origino y la hora en que fue realizada. 15 http://www.slideshare.net/CATOGA/check-list-para-el-diseo-de-bd 14 39 Elaborada por: Socorro Buendia La siguiente tabla muestra las recomendaciones de monitoreo para realizar un buen Crear y administrar bases de datos 3.8 Migración de una base de datos16 El proceso de la migración puede ser bastante complejo y, como hay tantas bases de datos distintas, difícil de dar una receta que funcione en todos los casos. Además, aparte de la dificultad de transferir la información entre los dos sistemas gestores de base de datos, también nos influirá mucho en la complejidad del problema el tipo de los datos de las tablas que estamos utilizando. Por ejemplo, las fechas, los campos numéricos con decimales o los booleanos pueden dar problemas al pasar de un sistema a otro porque pueden almacenarse de maneras distintas o, en el caso de los números, con una precisión distinta. Recomendaciones para migrar de Access a MySQL Si nuestra base de datos anterior estaba construida en Access lo tenemos bastante fácil, gracias a que MySQL dispone de un driver ODBC para sistemas Windows, que nos permite conectar Access con el propio MySQL y pasar información fácilmente. Este tema está relatado en el artículo Exportar datos de MySQL a Access, aunque hay que indicar que si deseamos hacer una exportación desde Access en local a MySQL en remoto puede haber problemas porque no todos los alojadores permiten las conexiones en remoto con la base de datos. Si no tenemos disponible una conexión en remoto con nuestro servidor de bases de datos vamos a tener que cambiar la estrategia un poco. La idea en este último caso es instalar MySQL en local y realizar la migración Elaborada por: Socorro Buendia desde Access en local a MySQL en local y luego podríamos hacer un backup de la base de datos local y subirla a remoto, tal y como se ha relatado antes. Recomendaciones para migrar desde SQL Server a MySQL La verdad es que no he tenido este caso nunca, pero hay que decir que Access también nos puede ayudar en este caso. Access permite seleccionar una base de datos SQL Server y trabajar desde la propia interfaz de Access. La idea es que Access también permite trabajar con MySQL y posiblemente haciendo un puente entre estos dos sistemas gestores podemos exportar datos de SQL Server a MySQL. Lo que es seguro que utilizando el propio Access de puente podríamos realizar el trabajo. Primero exportando de SQL Server a Access y luego desde Access a MySQL. 16 http://www.desarrolloweb.com/articulos/1231.php 40 Guía de Estudio Cambios de un formato de datos a otro Toda la migración tiene que tener en cuenta muy especialmente, como ya se señaló, las maneras que tenga cada base de datos de guardar la información, es decir, del formato de sus tipos de datos. Tenemos que contar siempre con la posible necesidad de transformar algunos datos como pueden ser los campos booleanos, fechas, campos memo (texto con longitud indeterminada), etc., que pueden almacenarse de maneras distintas en cada uno de los sistemas gestores, origen y destino. En algunos casos posiblemente tengamos que realizar algún script que realice los cambios necesarios en los datos. Por ejemplo puede ser para localizar los valores booleanos guardados como true / false a valores enteros 0 / 1, que es como se guarda en MySQL. También las fechas pueden sufrir cambios de formato, mientras que en Access aparecen en castellano (dd/mm/aaaa) en MySQL aparecen en el formato aaaa-mm-dd. PHP puede ayudarnos en la tarea de hacer este script, también Visual Basic Script para Access puede hacer estas tareas complejas y el propio lenguaje SQL, a base de sentencias dirigidas contra la base de datos, puede servir para algunas acciones sencillas. 3.9 Integración de datos Datamarts: Es un conjunto de bases de datos grande que debe tener disposición de bases de datos pasadas ó actuales, así como una proyección hacia futuro. (empresa, organización, etc), integrado, no volátil y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la que se utiliza. Soporta todos los datos a nivel organizacional. DatawareHouse BD Datamart Gerencia Administración BD_Relacional Operativo 41 Elaborada por: Socorro Buendia DatawareHouse: Es una colección de datos orientada a un determinado ámbito Crear y administrar bases de datos Preguntas… BLOQUE III 1.- ¿Qué es SQL? 2.- ¿Qué es un query? 3.- Sintaxis para crear una base de datos y una tabla. 4.- Con que query veo el tipo de datos de una tabla. 5.- Sentencia para alterar una tabla. 6.- Sentencia para realizar consultas. 7.- Query para crear un usuario. 8.- ¿Cuál es la función de hacer una vista? 9.- ¿Cuál es la sentencia para agregar una llave primaria una vez que se creó la tabla? 10.- ¿Para la llave foránea? 11.- Menciona los tipos de seguridad que se pueden ofrecer a una base de datos 12.- ¿En qué consiste la integridad en una BD? 13.- ¿En qué consiste la recuperación en frio? 14.- Menciona las 2 herramientas que pertenecen a SQL Server, que ayudan al llevar el control del monitoreo de una base de datos. Elaborada por: Socorro Buendia 15.- ¿Qué es el monitoreo de una BD? 16.- ¿Cuáles son los privilegios que tiene un usuario de una base de datos? 17.- ¿Qué es la migración? 18.- ¿Cuáles son las tareas de un administrador de bases de datos? 42 Guía de Estudio Bibliografía Bases de Datos, Desde Chen hasta Codd con Oracle. Luque Ruiz Irene, Gómez-Nieto Miguel Ángel. Alfaomega Ra-Ma. 2002. Microsoft SQL Server 2005, Administración y Análisis de Bases de Datos. Pérez César. Alfaomega Ra-Ma. 2007. Ligas consultadas Teoría de Base de datos http://www.youtube.com/watch?v=EdZCDi78pz8&feature=related Modelo Entidad Relacion de Base de Datos (2).wmv http://www.youtube.com/watch?v=HYHLt-NLy6E&feature=related Normalización http://www.conclase.net/mysql/curso/?cap=004b#NOR_3FN http://cnx.org/content/m18350/latest/ MySQL vs Oracle http:// es.wikipedia.org/wiki/MySQL http://www.desarrolloweb.com/articulos/1798.php http://dev.mysql.com/doc/refman/5.0/es/index.html http://www.oracle.com/index.html Respaldar y restaurar bases de datos http://www.youtube.com/watch?v=cpJ218wrMnM 43 Elaborada por: Socorro Buendia http://www.lsi.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf