Bases de Datos Ult

Post on 27-Jun-2015

677 views 0 download

Tags:

transcript

Bases de datos

William BravoESPOCH

Qué es una base de datos

El problema de los datos

Todas las empresas requieren almacenar información.

Desde siempre lo han hecho. La información puede ser de todo

tipo. Cada elemento informativo

(nombre, dirección, sueldo, etc.) es lo que se conoce como dato (en inglés data).

Las soluciones utilizadas por las empresas para almacenar los datos son diversas.

Antes de la aparición de la informática se almacenaban en ficheros con cajones y carpetas y fichas.

Tras la aparición de la informática estos datos se almacenan en archivos digitales dentro de las unidades de almacenamiento del ordenador (a veces en archivos binarios, o en hojas de cálculo, ...).

En los inicios de la era informática

Coste de almacenamiento elevado Datos redundantes (se repiten continuamente) Probabilidad alta de inconsistencia en los datos Difícil modificación en los datos y facilidad de

problemas de inconsistencia al realizar esas modificaciones (ya que es difícil que esa modificación afecte a todos los datos)

Lógicamente la solución a este problema es hacer que todas las aplicaciones utilicen los mismos datos.

Esto provoca que los datos deban estar mucho más protegidos y controlados.

Además los datos forman una estructura física y funcional que es lo que se conoce como base de datos.

Qué es de base de datos? De esta forma una base de datos es una

serie de datos relacionados que forman una estructura lógica, es decir una estructura reconocible desde un programa informático.

Esa estructura no sólo contiene los datos en sí, sino la forma en la que se relacionan.

Las bases de datos empiezan a aparecer en los años 60 y triunfan en los años setenta y ochenta.

Elementos de una base de datos Un sistema de bases de datos sirve para

integrar los datos. Lo componen los siguientes elementos:

Hardware. Máquinas en las que se almacenan las bases de datos. Incorporan unidades de almacenamiento masivo para este fin.

Software. Es el sistema gestor de bases de datos. El encargado de administrar las bases de datos.

Datos. Incluyen los datos que se necesitan almacenar y los metadatos que son datos que sirven para describir lo que se almacena en la base de datos.

Usuarios.

Usuarios. Personas que manipulan los datos del sistema.

Hay tres categorías:

Usuarios finales. Aquellos que utilizan datos de la base de datos para su trabajo cotidiano que no tiene por qué tener que ver con la informática.

Normalmente no utilizan la base de datos directamente, si no que utilizan aplicaciones creadas para ellos a fin de facilitar la manipulación de los datos.

Estos usuarios sólo acceden a ciertos datos.

Desarrolladores. Analistas y programadores encargados de generar aplicaciones para los usuarios finales.

Administradores. También llamados DBA (Data Base Administrator), se encargan de gestionar las bases de datos.

Hay que tener en cuenta que las necesidades de los usuarios son muy diferentes en función del tipo de usuario que sean:

a los finales les interesa la facilidad de uso, a los desarrolladores la potencia y

flexibilidad de los lenguajes incorporados del sistema de bases de datos,

a los administradores herramientas de gestión avanzada para la base de datos.

Estructura de una base de datos Las bases de datos están compuestas (como ya

se han comentado), de datos y de metadatos. Los metadatos son datos que sirven para especificar la estructura de la base de datos; por ejemplo qué tipo de datos se almacenan (si son texto o números o fechas ...), qué nombre se le da a cada dato (nombre, apellidos,...), cómo están agrupados, cómo se relacionan,....

De este modo se producen dos visiones de la base de datos:

Estructura lógica. Indica la composición y distribución teórica de

la base de datos. La estructura lógica sirve para que las aplicaciones puedan utilizar los elementos de la base de datos sin saber realmente cómo se están almacenando.

Es una estructura que permite idealizar a la base de datos. Sus elementos son objetos, entidades, nodos, relaciones, enlaces,... que realmente no tienen presencia real en la física del sistema. Por ello para acceder a los datos tiene que haber una posibilidad de traducir la estructura lógica en la estructura física.

Estructura física. Es la estructura de los datos tan cual se

almacenan en las unidades de disco. La correspondencia entre la estructura lógica y la física se almacena en la base de datos (en los metadatos).

Ventajas de las bases de datos Independencia de los datos y los

programas y procesos. Esto permite modificar los datos sin modificar el código de las aplicaciones.

Menor redundancia. No hace falta tanta repetición de datos. Aunque, sólo los buenos diseños de datos tienen poca redundancia.

Integridad de los datos. Mayor dificultad de perder los datos o de realizar incoherencias con ellos.

Mayor seguridad en los datos. Al limitar el acceso a ciertos usuarios.

Datos más documentados. Gracias a los metadatos que permiten describir la información de la base de datos.

Acceso a los datos más eficiente. La organización de los datos produce un resultado más óptimo en rendimiento.

Menor espacio de almacenamiento. Gracias a una mejor estructuración de los datos.

Desventajas

Instalación costosa. El control y administración de bases de datos requiere de un software y hardware poderoso

Requiere personal cualificado. Debido a la dificultad de manejo de este tipo de sistemas.

Implantación larga y difícil. Debido a los puntos anteriores. La adaptación del personal es mucho más complicada y lleva bastante tiempo.

Ausencia de estándares reales. Lo cual significa una excesiva dependencia hacia los sistemas comerciales del mercado. Aunque hay una buena parte de esta tecnología aceptada como estándar de hecho.

Sistema gestor de bases de datos Un sistema gestor de bases de datos o SGBD

(aunque se suele utilizar más a menudo las siglas DBMS procedentes del inglés, Data Base Management System) es el software que permite a los usuarios procesar, describir, administrar y recuperar los datos almacenados en una base de datos.

Esquema del funcionamiento y utilidad de un sistema gestor de bases de

datos

Herramientas de los DBMS El éxito del DBMS reside en mantener la

seguridad e integridad de los datos. Lógicamente tiene que proporcionar herramientas a los distintos usuarios. Entre las herramientas que proporciona están:

Herramientas para la creación y especificación de los datos. Así como la estructura de la base de datos.

Herramientas para administrar y crear la estructura física requerida en las unidades de almacenamiento.

Herramientas para la manipulación de los datos de las bases de datos, para añadir, modificar, suprimir o consultar datos.

Herramientas de recuperación en caso de desastre

Herramientas para la creación de copias de seguridad

Herramientas para la gestión de la comunicación de la base de datos

Funciones de un DBMS 1> Función de descripción. Sirve para

describir los datos, sus relaciones y sus condiciones de acceso e integridad. Además del control de vistas de usuarios y de la especificación de las características físicas de la base de datos. Para poder realizar todas estas operaciones se utiliza un lenguaje de definición de datos o DDL.

2> Función de manipulación. Permite buscar, añadir, suprimir y modificar datos de la base de datos. El DBMS proporciona una lenguaje de manipulación de datos (DML) para realizar esta función.

3> Función de control. Incorpora las funciones que permiten una buena comunicación con la base de datos. Además proporciona al DBA los procedimientos necesarios para realizar su labor.

Funcionamiento de los DBMS

MODELADO DE DATOS

Modelos de datos Los modelos se utilizan en todo tipo de

ciencias. Su finalidad es la de simbolizar una parte del mundo real de forma que sea más fácilmente manipulable. En definitiva es un esquema mental (conceptual) en el que se intentan reproducir las características de una realidad específica.

En el caso de los modelos de datos, lo que intentan reproducir es una información real que deseamos almacenar en un sistema informático.

Se denomina esquema a una descripción específica en términos de un modelo de datos. El conjunto de datos representados por el esquema forma la base de datos

Clasificación de los modelos de datos

Para conseguir estos esquemas se utilizan modelos de datos. El paso entre cada esquema se sigue con unas directrices concretas. Estas directrices permiten adaptar un esquema hacia otro.

Los dos modelos fundamentales de datos son el conceptual y el lógico. Ambos son conceptuales en el sentido de que convierten parámetros del mundo real en abstracciones que permiten entender los datos sin tener en cuenta la física de los mismos.

Diferencias entre el modelo lógico y el conceptual El modelo conceptual es independiente del

DBMS que se vaya a utilizar. El lógico depende de un tipo de SGBD en particular

El modelo lógico es más cercano al ordenador

Es más cercano al usuario el modelo conceptual, el lógico forma el paso entre el informático y el sistema.

Algunos ejemplos de modelos conceptuales son:

Modelo E/R Modelo RM/T Modelos semántico

Ejemplos de modelos lógicos son: Modelo relacional Codasyl Jerárquico

Modelo entidad relación Fue ideado por Peter Chen en los años

1976 y 1977 a través de dos artículos. Se trata de un modelo que sirve para crear esquemas conceptuales de bases de datos. De hecho es prácticamente un estándar para crear esta tarea.

Se le llama modelo E/R e incluso EI (Entidad / Interrelación). Sus siglas más populares son las E/R por que sirven para el inglés y el español.

Entidades Entidad Se trata de cualquier objeto u elemento

(real o abstracto) acerca del cual se pueda almacenar información en la base de datos. Ejemplos de entidades son Pedro, la factura número 32456, el coche matrícula 3452BCW.

Una entidad no es un propiedad concreta sino un objeto que puede poseer múltiples propiedades (atributos).

Conjunto de entidades

Las entidades que poseen las mismas propiedades forman conjuntos de entidades.

Ejemplos de conjuntos de entidades son los conjuntos: personas, facturas, coches,...

En la actualidad se suele llamar entidad a lo que anteriormente se ha definido como conjunto de entidades. De este modo hablaríamos de la entidad PERSONAS. Mientras que cada persona en concreto sería una ocurrencia o un ejemplar de la entidad persona.

Representación gráfica de las entidades

En el modelo entidad relación los conjuntos de entidades se representan con un rectángulo dentro del cual se escribe el nombre de la entidad:

Tipos de entidades Regulares. Son las entidades normales que

tienen existencia por sí mismas sin depender de otras. Su representación gráfica es la indicada arriba

Débiles. Su existencia depende de otras. Por ejemplo la entidad tarea laboral sólo podrá tener existencia si existe la entidad trabajo. Las entidades débiles se presentan de esta forma:

Relaciones qué es una relación Representan asociaciones entre entidades.

Es el elemento del modelo que permite relacionar en sí los datos del modelo.

Representación gráfica

Cardinalidad Indica el número de relaciones en las que

una entidad puede aparecer. Se anota en términos de:

cardinalidad mínima. Indica el número mínimo de asociaciones en las que aparecerá cada ejemplar de la entidad (el valor que se anota es de cero o uno)

cardinalidad máxima. Indica el número máximo de relaciones en las que puede aparecer cada ejemplar de la entidad (puede ser uno o muchos)

Ejemplo

Atributos Describen propiedades de las entidades

y las relaciones. En este modelo se representan con un círculo, dentro del cual se coloca el nombre del atributo. Ejemplo:

Entidades is a Son relaciones de tipo is a (es un) aquellas en las que

una entidad se descompone en entidades especializadas. Hay dos tipos de entidades is a: especializaciones y generalizaciones.

Pasos para el diseño E/R 1> Encontrar entidades (conjuntos de

entidades) 2> Identificar atributos de las entidades 3> Buscar identificadores 4> Especificar las relaciones y

cardinalidades 5> Identificar entidades débiles 6> Especializar y generalizar entidades

donde sea posible

MODELO RELACIONAL

INTRODUCCIÓN

Edgar Frank Codd (Ted Codd). Científico informático inglés introdujo la teoría de las relaciones en el campo de las bases de datos

Codd propone un modelo de datos basado en la teoría de las relaciones, en donde los datos se estructuran lógicamente en forma de relaciones ‑tablas‑, siendo un objetivo fundamental del modelo mantener la independencia de esta estructura lógica respecto al modo de almacenamiento y a otras características de tipo físico.

Por qué "modelo relacional" ? Puede resultar confuso el concepto de

modelo entidad-relación vs modelo relacional, quizás porque ambos comparten casi las mismas palabras.

El objetivo del modelo relacional es crear un "esquema" (schema), que consiste de un conjunto de "tablas" que representan "relaciones", entre los datos.

Estas tablas, pueden ser construídas: Convertir el diagrama E/R a tablas y

posteriormente aplicar también operaciones de normalización hasta conseguir el esquema óptimo.

Partimos de un diagrama visual Modelo E/R, es muy útil para apreciar los detalles, de ahí que se llame modelo conceptual.

Creamos las tablas iniciales es mucho más simple a través de las reglas de conversión.

Procedemos a la "normalización“ de las tablas.

ESTRUCTURA DEL MODELO RELACIONAL

La relación es el elemento básico en el modelo relacional y se puede representar como una tabla:

Atributo 1 Atributo 2 ................... Atributo n

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX Tupla 1

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX Tupla 2

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX .

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX .

XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX Tupla n

En ella podemos distinguir un conjunto de columnas, denominadas atributos, que representan propiedades de la misma y que están caracterizadas por un nombre; y un conjunto de filas llamadas tuplas que son las ocurrencias de la relación. Existen también unos dominios donde los atributos toman sus valores.

El número de filas de una relación se denomina cardinalidad de la relación y el número de columnas es el grado de la relación.

Ejemplo

Nombre Nacionalidad InstitucionPepe España O.N.U.John EE.UU. O.M.S.Pierre Francia N.A.S.A.

Características de una relación Una relación se puede representar en forma

de tabla, pero va a tener una serie de elementos característicos:

No puede haber filas duplicadas, es decir, todas las tuplas tienen que ser distintas.

El orden de las filas es irrelevante. La tabla es plana, es decir, en el cruce de

una fila y una columna sólo puede haber un valor (no se admiten atributos multivaluados).

Claves

Una clave candidata de una relación es un conjunto no vacío de atributos que identifican unívoca y mínimamente cada tupla.

siempre hay al menos una clave candidata, Una relación puede tener más de una

clave candidata, entre las cuales se debe distinguir:

Clave primaria: es aquella clave candidata que el usuario escogerá, por consideraciones ajenas al modelo relacional, para identificar a las tuplas de una relación.

Clave alternativa: son aquellas claves candidatas que no han sido elegidas.

Se denomina clave ajena de una relación R2 a un conjunto no vacío de atributos cuyos valores han de coincidir con los valores de la clave primaria de otra relación R1.

Convertir model E/R a modelo relacional

1)Cada entidad se transforma en una tabla con los mismos atributos

2)Se agregan claves donde sea necesario

3)Cada relación se transforma en una tabla en que los atributos son las claves de cada entidad participante

SQL (STRUCTURED QUERY LANGUAGE)

El lenguaje SQL (Structured Query Language, "Lenguaje de Consulta Estructurado") es una evolución del lenguaje SEQUEL (structured english query language) desarrollado en IBM.

El SQL se encuentra normalizado por el Instituto Americano de Normalización (ANSI) y fue construido en principio como un lenguaje algebraico, enriqueciéndose más tarde con funciones predicativas como la cláusula existencial,...etc.

Estructura y características del lenguaje El lenguaje SQL contiene un limitado

número de verbos o palabras clave, distribuidos en tres grandes grupos funcionales: DDL (lenguaje de descripción de datos), DML (lenguaje de manipulación de datos) y DCL (lenguaje de control de datos).

DDL DML DCLCREATEDROPALTER

SELECTINSERTDELETEUPDATE

GRANTREVOKECOMMIT

ROLLBACK

PARTE PRACTICA

MODELO E/R MODELO RELACIONAL

http://www.databaseanswers.org/data_models/

Sistemas de gestión de bases de datos Los sistemas de gestión de bases de

datos (en inglés database management system, abreviado DBMS) son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan.

Productos SGBD disponibles en el mercadoSGBD libres PostgreSQL (http://www.postgresql.org Postgresql)

Licencia BSD Firebird basada en la versión 6 de InterBase, Initial

Developer's PUBLIC LICENSE Version 1.0. SQLite (http://www.sqlite.org SQLite) Licencia Dominio

Público DB2 Express-C (

http://www.ibm.com/software/data/db2/express/) Apache Derby (http://db.apache.org/derby/

SGBD no libres SGBD no libres MySQL Licencia Dual, depende el uso (no se sabe hasta cuando, ya que la

compró Oracle). Sin embargo, existen 2 versiones: una gratuita que sería equivalente a la edición "express" SQL server de Microsoft Windows y otra más completa de pago, ese pago se haría en la licencia de ella ya que permitiría usarse en otras distribuciones sin usar la licencia GNU.

Advantage Database dBase FileMaker Fox Pro IBM DB2 Universal Database (DB2 UDB) IBM Informix Interbase de CodeGear, filial de Borland MAGIC Microsoft Access Microsoft SQL Server

MySQL MySQL, el sistema de gestión de bases de datos

SQL Open Source más popular, lo desarrolla, distribuye y soporta MySQL AB. MySQL AB es una compañía comercial, fundada por los desarrolladores de MySQL. Es una compañía Open Source de segunda generación que une los valores y metodología Open Source con un exitoso modelo de negocio.

http://dev.mysql.com/doc/refman/5.0/es/what-is.html

MySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones.[1] MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual.

Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.

http://es.wikipedia.org/wiki/MySQL

Tipos de datos en mysql Al diseñar nuestras tablas tenemos que

especificar el tipo de datos y tamaño que podrá almacenar cada campo. Una correcta elección debe procurar que la tabla no se quede corta en su capacidad, que destine un tamaño apropiado a la longitud de los datos, y la máxima velocidad de ejecución

Básicamente mysql admite dos tipos de datos: números y cadenas de carácteres. Junto a estos dos grandes grupos, se admiten otros tipos de datos especiales: formatos de fecha, etc.

datos numéricos

En este tipo de campos solo pueden almacenarse números, positivos o negativos, enteros o decimales, en notación hexadecimal, cientifica o decimal.Los tipos numéricos tipo integer admiten los atributos SIGNED y UNSIGNED indicando en el primer caso que pueden tener valor negativo, y solo positivo en el segundo.

BIT o BOOL, para un número entero que puede ser 0 ó 1

TINYINT es un número entero con rango de valores válidos desde -128 a 127. Si se configura como unsigned (sin signo), el rango de valores es de 0 a 255

SMALLINT, para números enteros, con rango desde -32768 a 32767. Si se configura como unsigned, 0 a 65535.

MEDIUMINT para números enteros; el rango de valores va desde -8.388608 a 8388607. Si se configura como unsigned, 0 a 16777215

INT para almacenar números enteros, en un rango de -2147463846 a 2147483647. Si configuramos este dato como unsigned, el rango es 0 a 4294967295

BIGINT número entero con rango de valores desde -9223372036854775808 a 9223372036854775807. Unsigned, desde 0 a 18446744073709551615.

FLOAT (m,d) representa números decimales. Podemos especificar cuantos dígitos (m) pueden utilizarse (término también conocido como ancho de pantalla), y cuantos en la parte decimal (d). Mysql redondeará el decimal para ajustarse a la capacidad.

DOUBLE Número de coma flotante de precisión doble. Es un tipo de datos igual al anterior cuya única diferencia es el rango numérico que abarca

DECIMAL almacena los números como cadenas.

Caracteres o cadenas CHAR Este tipo se utiliza para almacenar cadenas de

longitud fija. Su longitud abarca desde 1 a 255 caracteres.

VARCHAR Al igual que el anterior se utiliza para almacenar cadenas, en el mismo rango de 1-255 caracteres, pero en este caso, de longitud variable. Un campo CHAR ocupará siempre el máximo de longitud que le hallamos asignado, aunque el tamaño del dato sea menor (añadiendo espacios adicionales que sean precisos). Mientras que VARCHAR solo almacena la longitud del dato, permitiendo que el tamaño de la base de datos sea menor. Eso si, el acceso a los datos CHAR es mas rápido que VARCHAR.

TINYTEXT, TINYBLOB para un máximo de 255 caracteres. La diferencia entre la familia de datatypes text y blob es que la primera es para cadenas de texto plano (sin formato) y case-insensitive (sin distinguir mayusculas o minusculas) mientras que blob se usa para objetos binarios: cualquier tipo de datos o información, desde un archivo de texto con todo su formato (se diferencia en esto de el tipo Text) hasta imágenes, archivos de sonido o video

TEXT y BLOB se usa para cadenas con un rango de 255 - 65535 caracteres. La diferencia entre ambos es que TEXT permite comparar dentro de su contenido sin distinguir mayusculas y minusculas, y BLOB si distingue.

MEDIUMTEXT, MEDIUMBLOB textos de hasta 16777215 caracteres.

LONGTEXT, LONGBLOB, hasta máximo de 4.294.967.295 caracteres

Varios DATE para almacenar fechas. El formato por defecto es YYYY MM

DD desde 0000 00 00 a 9999 12 31.

DATETIME Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos

TIMESTAMP Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo

TIME almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS'

YEAR almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.

SET un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores.

ENUM es igual que SET, pero solo se puede almacenar uno de los valores de la lista

Convertir el siguiente modelo E/R a un modelo relacional (Utilizar MySQL WorkBench)

Sincronizar el modelo relacional con el servidor MySQL para crear una base de datos con el esquema