Notas Del Curso Bases de Datos
Notas Del Curso Bases de Datos
Notas Del Curso Bases de Datos
a mayora de los sistemas computacionales utilizan una base de datos para manejar su
informacin, por lo que es de suma importancia que los desarrolladores de software estn
capacitados para su diseo, construccin y uso. Este material tiene como principal objetivo
apoyar el curso trimestral introductorio de Bases de Datos y puede ser de utilidad a los estudiantes
de Ingeniera en Computacin, Ingeniera de Software, Tecnologas de la Informacin y
licenciaturas afines.
MXICO, D.F. 2013
BASES DE DATOS
UNIVERSIDAD AUTNOMA METROPOLITANA
UNIDAD CUAJIMALPA
Casa abierta al tiempo
MATERIAL DIDCTICO
NOTAS DEL CURSO
BASES DE DATOS
AUTORA:
Dra. Mara del Carmen Gmez Fuentes
Departamento de Matemticas
Aplicadas y Sistemas
IBSN: 978-607-477-880-9
Febrero 2013
BASES DE DATOS
Editor
Mara del Carmen Gmez Fuentes
Editada por:
UNIVERSIDAD AUTONOMA METROPOLITANA
Prolongacin Canal de Miramontes 3855,
Quinto Piso, Col. Ex Hacienda de San Juan de Dios,
Del. Tlalpan, C.P. 14787, Mxico D.F.
ISBN: 978-607-477-880-9
Impreso en Mxico
Impreso por Publidisa Mexicana S. A. de C.V.
Calz. Chabacano No. 69, Planta Alta
Col. Asturias C.P.
BASES DE DATOS
Contenido.
Objetivos................................................................................................................................. 3
Captulo I
I.1
I.2
I.3
I.4
I.5
Captulo II
II.1
II.2
II.3
II.4
Captulo III
III.1
El modelo relacional........................................................................................... 19
III.2
III.3
III.4
III.5
Captulo IV
IV.1
IV.2
IV.3
Captulo V
V.1
V.2
V.3
V.4
V.5
Ejercicios. .............................................................................................................. 86
Captulo VI
VI.1
BASES DE DATOS
VI.2
VI.3
VI.4
VI.5
Captulo VII
VII.1
VII.2
Captulo VIII
VIII.1
VIII.2
VIII.3
Captulo IX
IX.1
IX.2
Captulo X
X.1
X.2
X.3
X.4
Captulo XI
XI.1
XI.2
XI.3
XI.4
Captulo XII
XII.1
XII.2
Apndice A: conectando Java con una base de datos MySQL. ......................................... 173
Apndice B: como instalar una base de datos MySQL. ..................................................... 181
Glosario. ............................................................................................................................. 188
BIBLIOGRAFA ................................................................................................................ 196
2
BASES DE DATOS
Objetivos
1.- Conocer las caractersticas ms importantes de un Sistema Gestor de Bases de Datos
(SGBD) y tener la habilidad para plantear modelos de datos que describan problemas
reales, as como para implementar dichos modelos usando SGBD relacionales.
2.- Conocer el propsito, ventajas y problemas de la introduccin de un SGBD.
3.- Conocer los modelos de los datos y los tipos de bases de datos ubicando al modelo
relacional dentro de stos.
4.- Identificar entidades, atributos y relaciones en un problema especfico.
5.- Estudiar tcnicas para el diseo de bases de datos relacionales.
6.- Describir las sentencias fundamentales del lenguaje de base de datos SQL para el
manejo adecuado de la informacin.
7.- Aplicar el lenguaje de definicin y manipulacin de bases de datos SQL en la
implementacin de modelos relacionales.
BASES DE DATOS
Agradecimiento:
Agradezco la generosidad del Dr. Ovidio Pea Rodrguez quien me facilit su material de
clases del trimestre 2007-P de este material utilic algunos textos y figuras para
complementar los captulos I, III, VIII y IX.
Dra. Mara del Carmen Gmez Fuentes.
BASES DE DATOS
Bases de datos.- El trmino base de datos surgi en 1963, en la informtica una base de
datos consiste en una coleccin de datos interrelacionados y un conjunto de programas para
acceder a dichos de datos. En otras palabras, una base de datos no es ms que un conjunto
de informacin (un conjunto de datos) relacionada que se encuentra agrupada o
estructurada.
I.1.1
1.- Coleccin de datos, donde los datos estn lgicamente relacionados entre s, tienen una
definicin y descripcin comunes y estn estructurados de una forma particular. Una base
de datos es tambin un modelo del mundo real y, como tal, debe poder servir para toda una
gama de usos y aplicaciones [Conference des Statisticiens Europens, 1977].
2.- Es un conjunto exhaustivo de datos estructurados, fiables y homogneos, organizados
independientemente de su utilizacin y de su implementacin en mquina, accesibles en
tiempo real, compartibles por usuarios concurrentes que tienen necesidades de informacin
diferentes y no predecibles en el tiempo [Access, 2001].
Definicin corta de base de datos:
Es una coleccin organizada de datos [Deitel & Deitel, 2008].
BASES DE DATOS
No exista el aislamiento de los datos.- Debido a que los datos estaban dispersos en
varios archivos y podan estar en diferentes formatos, era difcil escribir programas
nuevos de aplicacin para recuperar los datos apropiados.
6
BASES DE DATOS
Problemas de atomicidad.- Era muy difcil asegurar que una vez que haya ocurrido
alguna falla en el sistema y se ha detectado, los datos se restauraran al estado de
consistencia que exista entes de la falla.
BASES DE DATOS
BASES DE DATOS
BASES DE DATOS
Una de las principales razones de usar un SGBD es tener el control centralizado tanto de los
datos como de los programas que tienen acceso a estos datos. La persona que tiene este
control central sobre el sistema se llama administrador de la base de datos, y sus funciones
son las siguientes:
Definir el esquema.- El administrador crea el esquema de la Base de Datos escribiendo un
conjunto de instrucciones de definicin de datos en un lenguaje especial, llamado
Lenguaje de Definicin de Datos (DDL: Data Definition Languaje).
Definir la estructura y el mtodo de acceso.- El administrador define como se organiza la
informacin (registros, bloques, estructuras) y define los programas que buscarn la
informacin y harn operaciones sobre sta.
Modelar el esquema y la organizacin fsica.- Los administradores de las bases de datos
realizan cambios en el esquema para reflejar las necesidades cambiantes de la
organizacin y realizan cambios en la organizacin fsica para mejorar el rendimiento.
Conceden autorizaciones para tener acceso a los datos.- Ellos determinan que partes de
la base de datos puede acceder cada usuario. La informacin de autorizacin se mantiene
en una estructura especial, que el sistema de base de datos consulta cuando se intenta
tener acceso a los datos del sistema.
10
BASES DE DATOS
11
BASES DE DATOS
En la figura 1.2 tambin se pueden apreciar los componentes del procesador de consultas.
Gestor de almacenamiento
Procesador de consultas
Gestor de
autorizacin e
integridad
Intrprete de Lenguaje
de Definicin de Datos
Gestor de
transacciones
Compilador de Lenguaje
de Manipulacin de datos
Gestor de
archivos
Motor de evaluacin
de consultas
Gestor de
memoria
intermedia
Figura 1.2: Componentes del Gestor de almacenamiento y del procesador de consultas (Material del Curso
del Dr. Ovidio Pea Rodrguez).
El Lenguaje de Definicin de Datos (LDD) especifica el conjunto de definiciones que forman el esquema de
una base de datos, es decir, el diseo general de la base de datos
2
EL Lenguaje de Manipulacin de Datos (LMD) es un lenguaje que permite a los usuarios tener acceso a los
datos y manipularlos.
12
BASES DE DATOS
Usando una analoga para comprender mejor lo que son los diferentes niveles de
abstraccin, supongamos que necesitamos un registro que capture los siguientes datos para
cada alumno:
13
BASES DE DATOS
Su nombre completo
Su matrcula
Su promedio.
Esto es lo que el usuario ve y con lo que trabaja y sera el equivalente al nivel externo.
Para implantar esto en un lenguaje de programacin, por ejemplo C o C++, podemos
declarar una estructura que agrupe toda esta informacin:
struct s_alumno{
char
nombre[40];
long int matricula;
float
promedio;
};
Con esta estructura trabajaran los diseadores del programa, y sera el equivalente al
nivel lgico de abstraccin. Finalmente, el nivel fsico, estara determinado por el orden y la
cantidad de bytes que ocupan los tres campos de la estructura s_alumno.
II.1.1 Ejemplares y esquemas.
Las bases de datos van cambiando a lo largo del tiempo conforme la informacin se inserta
y se borra. La coleccin de informacin almacenada en la base de datos en un momento
particular se denomina un ejemplar de la base de datos. El diseo completo de la base de
datos se llama el esquema de la base de datos. Los esquemas raramente se modifican.
Utilizando una vez ms la programacin para hacer una analoga, un esquema de base de
datos corresponde a las declaraciones de las variables. Cada variable tiene un valor
particular en un instante de tiempo. Los valores de las variables en un programa en un
instante de tiempo corresponde a un ejemplar de un esquema de bases de datos.
14
BASES DE DATOS
Un modelo de datos es una notacin para describir informacin acerca de los datos
[Garca-Molina et al., 2009].
Un modelo de datos es una representacin, usualmente grfica, de estructuras de datos.
Los modelos de datos de alto nivel, o conceptuales, utilizan conceptos muy cercanos a la
forma en que los usuarios perciben los datos, mientras que Los modelos de bajo nivel o
fsicos describen detalles de cmo se almacenan los datos en la computadora.
BASES DE DATOS
la tarea del modelado de datos, sin embargo an estn implantados en el cdigo de bases de
datos antiguas.
Los modelos fsicos de datos se usan para describir datos en el nivel ms bajo. Son de
inters principalmente para los fabricantes de SGBD. Los ms conocidos son:
Modelo unificador.
Modelo de elementos.
16
BASES DE DATOS
Departamento
Empleado
Tiempo
completo
Proyecto
Medio tiempo
Trabajador
Figura 2.1: Esquema de base de datos de tipo jerrquico (Material del curso del Dr. Ovidio Pea Rodrguez).
Las bases de datos de red se basan en dos estructuras bsicas: registros y conjuntos.
Cada registro consiste en un grupo de valores de datos relacionados entre s. Hay diferentes
tipos de registros, cada uno de los cules tiene un nombre. Las relaciones entre los datos se
representan mediante enlaces, los cules pueden verse como apuntadores. Los registros se
organizan como colecciones de grafos arbitrarios.
Un tipo de conjunto es un vnculo 1:N entre dos tipos de registros.
Cada definicin de tipo de conjuntos consta de 3 elementos:
Un nombre para el tipo de conjuntos.
Un tipo de registros propietario.
Un tipo de registros miembro.
Cada ejemplar del conjunto relaciona un registro de tipo propietario, con el conjunto de
registros miembros.
En la figura 2.2 se muestra un ejemplo de esquema de red.
Informtica
Juan Prez
Jorge Campos
Cecilia Valds
Figura 2.2: Esquema de base de datos de tipo red (Material del curso del Dr. Ovidio Pea Rodrguez).
El modelo en red se desech debido a dos razones fundamentales, la primera es que para
obtener cualquier informacin era indispensable tener una idea muy clara de cmo estaban
17
BASES DE DATOS
organizados los datos y la segunda razn es que no existan herramientas sencillas que
permitieran realizar consultas arbitrarias en una base de datos [Marteens,1999].
Las bases de datos relacionales fueron definidas por el matemtico Codd en los aos 70.
La teora relacional ha ido evolucionando a lo largo del tiempo, incluyendo cada vez
nuevas caractersticas. Este modelo representa los datos y las relaciones entre los datos
mediante una coleccin de tablas, cada una de las cules tiene un nmero de columnas con
nombres nicos. En la seccin II.2 de este captulo, se estudia con ms detenimiento las
bases de datos relacionales, ya que es un modelo muy utilizado en la actualidad.
El modelo de datos orientado a objetos es otro modelo de datos que est recibiendo una
atencin creciente, ste se puede observar como una extensin del modelo entidad-relacin
(el cual se estudia en el captulo III) con los conceptos adicionales de encapsulacin,
mtodos(funciones) e identidad de objetos, que son parte fundamental del diseo orientado
a objetos.
Las bases de datos orientadas a objetos se propusieron con la idea de satisfacer las
necesidades de aplicaciones complejas, como por ejemplo estructuras complejas de datos,
transacciones de mayor duracin que las tradicionales y accesos a mltiples bases de datos.
Las bases de datos orientadas a objetos permiten al diseador especificar tanto la
estructura de objetos complejos como las operaciones que se pueden aplicar entre los
mismos. Una base de datos orientada a objetos provee una identidad nica a cada objeto
independiente almacenado en la base de datos y se parte de la base de que los objetos
complejos pueden construirse a partir de otros ms simples.
A diferencia de las entidades en el modelo relacional, cada objeto tiene su propia
identidad nica independiente de los valores que contiene. As, dos objetos que contienen
los mismos valores son, sin embargo, distintos (ver captulo XII).
18
Captulo III
BASES DE DATOS
Modelo Relacional.
BASES DE DATOS
4. Los informes resumen e imprimen los datos. Convierten los datos de las tablas y
consultas en documentos que comunican ideas.
Una base de datos relacional se compone de tablas independientes que estn asociadas por
medio de relaciones. Es posible acceder a la informacin contenida en dos o ms tablas
simultneamente.
Antes de comenzar con la siguiente seccin, es importante mencionar que existen tres
diferentes terminologas dentro del modelo relacional, en la tabla 3.1 se presenta la
equivalencia entre estas terminologas. Dejaremos opcional al lector los trminos a utilizar,
ya que lo importante es que se entienda el concepto y que se use de la manera adecuada.
Relacin
Tupla
Atributo
Grado
Cardinalidad
Tabla
Fila
Columna
No. de columnas
No. de filas
Fichero
Registro
Campo
No. de Campos
No. de registros
Tabla 3.1: comparacin de la terminologa usada en el modelo relacional (De Miguel et al., 2004).
20
BASES DE DATOS
Columnas
Filas
Registros (tuplas).- una tupla o registro es un conjunto de hechos acerca de una persona,
de un evento o de cualquier otro elemento de inters. Por ejemplo el alumno Gulmaro Prez
y su matrcula, promedio, fecha de ingreso, etc. Cada tupla o registro contiene los valores
que toma cada uno de los campos de un elemento de la tabla.
En una base de datos bien estructurada, cada tupla o registro debe ser nico. Es decir, no
deben existir dos o ms registros que contengan exactamente la misma informacin.
Campos (atributos).- un campo o atributo es una sola clase de hecho que se puede aplicar
a cada persona, evento o registro. Por ejemplo, Cdigo postal puede ser un campo de una
tabla de Empleados. Telfono puede ser un campo de una tabla de Transportistas. Matrcula
puede ser un campo de una tabla de Alumnos.
Los campos de la base de datos tienen valores que determinan el tipo de datos que pueden
almacenar, cmo se muestran los datos y qu se puede hacer con ellos.
Por ejemplo, se puede utilizar los valores de campo para asegurar que todos los usuarios
especifican la fecha con un formato especfico, digamos: con dos nmeros para el mes, dos
nmeros para el da, cuatro nmeros para el ao, separados por barras diagonales:
03/09/2008.
Un valor importante para los campos es el tipo de datos, que puede ser nmero, texto,
moneda (dinero), fecha, hora, etc. El tipo de datos limita y describe la clase de informacin
del campo. Tambin determina las acciones que se pueden realizar en el campo y la
cantidad de memoria que utilizan los datos.
Los campos tambin tienen propiedades que controlan los detalles de la informacin que
contienen, incluida la longitud de caracteres, un valor predeterminado y una regla de
validacin que comprueba que los datos satisfacen ciertos criterios. Las propiedades
simplifican la entrada y administracin de los datos.
21
BASES DE DATOS
BASES DE DATOS
El nombre de la Tabla.
La columna (campo)
El valor de la clave.
Todas las tablas relacionales deben tener definida una clave principal.
En las figuras 3.2 y 3.3 se muestran ejemplos de tablas (relaciones).
Atributos
Tuplas
COD_BAN
BANCO
TELEFONO
34534
HSBC
5635 6789
56567
Bancomer
5667 8901
45645
Banamex
5623 4567
Clave
Primaria
Matrcula Nombre
Apellido
Telfono
2341167
Pedro
Alonso
5673652
Nombre
Campos
Registro
5625711
Mara
Gmez
5518234
Registro
6718273
Jos
Lpez
5615629
Registro
Campo
Campo
Campo
Campo
BASES DE DATOS
Claves candidatas:
Nmero de matrcula
Clave nica de Registro de Poblacin
Nombre y apellidos+Fecha de nacimiento+telfono
Clave primaria: Nmero de matrcula
Claves alternativas:
Clave nica de Registro de Poblacin
Nombre y apellidos+Fecha de nacimiento+telfono
BASES DE DATOS
25
BASES DE DATOS
PROFESOR
Eleazar Martinez
Nicodemo Lpez
Heriberto Jimnez
Maricela Lopez
Nicodemo Sanchez
Moises Caceres
Clave principal
NUM_EMPL
3028
3172
3075
3194
3172
2907
AULA
A904
A324
A217
A220
A912
A323
Clave externa
NOMBRE
Moises Caceres
Arnulfo Daz
Heriberto Jimnez
Eleazar Martinez
Carlos Prez
Nicodemo Sanchez
Maricela Lopez
DEPTO
Quimica
matematicas
matematicas
Fisica
Fisica
matematicas
Quimica
TELEFONO
21211304
91801423
56754321
57221314
55603019
53279872
58961212
26
BASES DE DATOS
BASES DE DATOS
Por medio de los informes se pueden agrupar los datos, realizar clculos con ellos, y
agregar titulares y otros elementos de formato para hacer que tengan ms significado y sean
ms fciles de leer.
Lo prctico de un informe es que, una vez que se crea, se puede guardar su formato de
manera que tenga la misma apariencia cada vez que lo imprima, a pesar de que los datos
cambien.
V
F
Q
NOT
F
V
Q
28
F
F
V
F
Q
V
Q
V
Q
BASES DE DATOS
F
V
F
Q
F
Q
V
V
Q
AND
F
F
F
F
F
Q
Q
V
Q
F
F
V
F
Q
V
Q
V
Q
F
V
F
Q
F
Q
V
V
Q
OR
F
V
V
Q
Q
V
V
V
Q
Se define el operador:
IS_NULL (es_nulo)
Este operador toma el valor de verdadero si el operando es nulo y falso en caso
contrario.
En cuanto a las operaciones aritmticas con valores nulos, se considera nulo el resultado
de sumar, restar, multiplicar o dividir cuando alguno de los operandos toma el valor nulo.
Tambin los valores nulos afectan en algunas operaciones algebraicas.
BASES DE DATOS
representacin grfica que incorpora informacin relativa a los datos y la relacin existente
entre ellos para dar una visin del mundo real.
En muchos casos, los datos manipulados por el sistema determinan las acciones que se
realizan. Puede ser til definir los requerimientos concentrndose en los datos en lugar de
las funciones. La abstraccin de datos es una tcnica para describir para qu son los datos,
en lugar de cul es su apariencia o como se denominan.
El modelo entidad-relacin consta de construcciones y convenciones que se utilizan para
crear un modelo de datos del usuario. Las cosas en el mundo del usuario estn
representadas por entidades, y las asociaciones entre stas estn representadas mediante
relaciones. Usualmente, los resultados se documentan en un diagrama entidad-relacin.
Para describir los datos se utiliza el diccionario de tipo de datos. La idea central es
categorizar los datos y agrupar los elementos semejantes.
El Modelo Entidad /Relacin fue desarrollado por Chen en 1976. Es un modelo muy
utilizado en el campo de diseos de bases de datos. Su principal ventaja es que es traducible
casi automticamente a un esquema de bases de datos bajo modelo relacional. Todas las
metodologas de diseo de sistemas incorporan esta tcnica para el modelado de datos.
Definicin formal: El modelo entidad relacin es una tcnica semntica de modelado
grfico de datos basada en la percepcin del mundo real como un conjunto de objetos
bsicos llamados entidades y las relaciones existentes entre ellas.
III.5.1 Caractersticas del Modelo Entidad-Relacin.
Las caractersticas ms importantes del modelo Entidad-Relacin se pueden enlistar de la
siguiente forma:
Refleja slo la existencia de los datos, no lo que se vaya a hacer con ellos.
Se incluyen todos los datos del sistema en estudio, no le afectan las aplicaciones concretas.
Es independiente de la base de datos a utilizar y del sistema operativo.
No se tienen en cuenta restricciones de espacio, almacenamiento, ni tiempo de ejecucin.
Est siempre abierto a la evolucin del sistema.
Se basa en la percepcin de que el mundo real consiste de una coleccin de objetos bsicos
llamados entidades y relaciones entre estos objetos.
El modelo E-R describe los datos como Entidades, relaciones y atributos.
30
BASES DE DATOS
Curso
Alumno
Examen
Profesor
Por ejemplo, para la entidad Alumno se pueden tener los atributos: nombre, grupo y
calificacin, o para la entidad Curso se pueden tener los atributos: unidad, nombre UEA,
Carrera, como se indica en el ejemplo de la figura 3.7.
31
BASES DE DATOS
Unidad
Nombre UEA
Carrera
Curso
Nombre
Grupo
Calificacin
Alumno
Unidad
Cuajimalpa
Azcapotzalco
Iztapalapa
Xochimilco
Lerma
Atributo
Atributo identificador: Distingue una ocurrencia de entidad del resto de ocurrencias. Por
ejemplo nombre del alumno.
Atributo descriptor: Caracteriza una ocurrencia pero no la distingue del resto de
ocurrencias de la entidad. Por ejemplo grupo y calificacin del alumno.
Debido a que no existe un estndar para la representacin de los diagramas EntidadRelacin, existen variaciones en la manera de representar las entidades con sus atributos.
La manera ms utilizada para representar los atributos es por medio de elipses, como se
muestra en la figura 3.9.
32
BASES DE DATOS
Propietario
Placa
COCHE
Marca
Modelo
Color
Figura 3.9: Representacin de atributos mediante elipses (Material del curso del Dr. Ovidio Pea Rodrguez).
Relaciones: Una relacin es una asociacin entre entidades. Entre dos entidades puede
existir ms de un tipo de relacin. Un objeto asociativo es un elemento que sirve para
relacionar objetos. Para que exista una instancia del mismo, deben existir instancias de
todos los objetos que relaciona. Asociado al concepto de Relacin surge el concepto de
ocurrencia de relacin que es la asociacin concreta de ocurrencias de entidad de las
diferentes entidades. . Por ejemplo si tenemos las relaciones: Autor escribe Documento o
Editorial edita Libro (ver Figura 3.11) una ocurrencia puede ser: Shakespeare escribe
Sueo de una noche de verano, un ejemplo de ocurrencia para la otra relacin: Prentice
Hall edita Bases de datos relacionales.
En cuanto a las relaciones, hay dos conceptos importantes:
Conjunto de relaciones.- es la agrupacin de todas las relaciones existentes en un
conjunto de entidades.
Dimensin de una relacin.- es el nmero de entidades que participa en ella.
III.5.3 Diagramas entidad-relacin.
Para visualizar grficamente los modelos entidad-relacin, se utilizan los diagramas
entidad-relacin en los que el tipo de interrelaciones entre las entidades se representa con
un rombo y las entidades con un rectngulo, como se muestra en la figura 3.10.
33
BASES DE DATOS
Editorial
Edita
Escribe
Documento
Libro
34
BASES DE DATOS
Nombre-cliente
Nmero de cuenta
calle-cliente
saldo
Id-cliente
Ciudad-cliente
asigna
cliente
cuenta
Las relaciones se expresan mediante un verbo, procurando as formar frases que expresan
un proceso de gestin, considerando que las entidades son sustantivos que actan como
sujeto y complemento cuando se asocian. En la figura 3.13 se muestra la relacin sujetoverbo-complemento, en este ejemplo, la ocurrencia de la relacin: Juan Garca estudia
programacin en sentido inverso se lee Programacin es estudiada por Juan Garca.
Sujeto
verbo
Complemento
Alumno
estudia
materia
35
BASES DE DATOS
tiene
Capital
tiene
Sucursal
Alumno
BASES DE DATOS
estudia
Materia
Entidades fuertes.- son aquellas cuyas ocurrencias son identificables por si mismas. Los
atributos que las identifican son propios de la entidad. Se representan mediante un
rectngulo, con el nombre en el interior.
Entidades dbiles.- son aquellas cuyas ocurrencias son identificables solamente por estar
asociadas a otra u otras entidades. Alguno de los atributos que la identifican est referido a
otra entidad. Se representan mediante dos rectngulos inscritos con el nombre de la entidad
en el interior.
En la figura 3.17 se muestran ejemplos de entidades fuertes y dbiles.
Entidades fuertes.
Banco
Estado
Entidades dbiles
Sucursal
Ciudad
En la figura 3.18 se muestra un ejemplo de cmo se relacionan las entidades fuertes con
las entidades dbiles:
37
Sucursal
BASES DE DATOS
Pertenece
Banco
Acta
Ciudad
Pertenece
38
Estado
Captulo IV
BASES DE DATOS
La caracterstica relacional ms importante de SQL es que permite acceder a los datos sin
necesidad de especificar cmo se ha de realizar dicho acceso permitiendo as la
"navegacin automtica" por los datos. SQL est diseado para responder a preguntas del
tipo Qu quiero hacer? al contrario que los otros lenguajes de programacin, como Pascal,
Java y C++, que intentan resolver cuestiones del tipo Cmo lo hago?
SQL usa los trminos tabla, fila y columna para relacin, tupla y atributo,
respectivamente.
SQL significa Lenguaje Estructurado de Consultas (Structured Query Languaje) y se ha
establecido Como el lenguaje estndar de bases de datos relacionales, esto significa que su
uso esta generalizado a nivel internacional. El lenguaje SQL tiene varios componentes, los
bsicos son:
El lenguaje de definicin de datos para especificar el esquema de la base de datos.
El lenguaje de manipulacin de datos para expresar las consultas a la base de datos y las
modificaciones.
La definicin de vistas,
El control de transacciones.
Integridad.- rdenes para especificar las restricciones de integridad que deben satisfacer los
datos almacenados en la base de datos. Las actualizaciones que violen las restricciones de
integridad se rechazan.
Autorizacin.- rdenes para especificar derechos de acceso para las relaciones y las vistas.
SQL incorporado y SQL dinmico.- se pueden incorporar las instrucciones de SQL en
lenguajes de programacin de propsito general, tales como C, C++, Java, Cobol, Pascal y
Fortran.
En este captulo abordaremos las construcciones y conceptos fundamentales del lenguaje
de definicin y de manipulacin de datos, algunos de los dems aspectos los estudiaremos
en captulos posteriores.
Existen tres maneras de utilizar SQL
39
BASES DE DATOS
1.- Ejecucin directa.- es el SQL interactivo, las instrucciones SQL se introducen a travs
de una herramienta que las traduce inmediatamente a la base de datos, por lo que se
ejecutan al instante.
2.- Ejecucin dinmica.- El SQL se incrusta en mdulos especiales que pueden ser
invocados una y otra vez desde distintas aplicaciones.
3.- Ejecucin incrustada o embebida.- Las instrucciones SQL se colocan como parte del
cdigo de otro lenguaje anfitrin (C, Java, Pascal, Visual Basic,...). Estas instrucciones
estn separadas del resto del cdigo de forma conveniente. Al compilar el cdigo se utiliza
un pre-compilador de la propia base de datos para traducir el SQL
IV.1.1 Algunas reglas sintcticas de SQL.
Nmeros.
40
BASES DE DATOS
Cadenas de caracteres.
Fechas y horas.
Cadenas de bits.
- BOOL
Un valor de cero se considera falso. Valores distintos a cero se consideran ciertos.
Hay ms de diez tipos numricos adicionales, los cuales, en caso de ser necesario, se
pueden consultar en el manual de referencia de SQL. El tipo de dato que utilizaremos en el
curso es:
NUMERIC[(longitud,decimales)] [UNSIGNED] [ZEROFILL]
As, si queremos un entero de 8 dgitos:
NUMERIC (8, 0)
Y si queremos un real con 8 dgitos en los que 3 son para la parte decimal:
41
BASES DE DATOS
NUMERIC (8, 3)
IV.1.4 Tipos de cadenas de caracteres.
Los tipos principales para especificar cadenas de caracteres son:
- CHAR(Longitud) [BINARY | ASCII | UNICODE]
Una cadena de caracteres de longitud fija que siempre tiene el nmero necesario de espacios a la derecha para
ajustarla a la longitud especificada al almacenarla. Longitud representa la longitud de la columna. El rango de
longitud en MySQL 5.0 es de 0 a 255 caracteres.
Nota: Los espacios a la derecha se borran cuando se obtiene los valores CHAR .
- VARCHAR(longitud)
Cadena de caracteres de longitud variable. Longitud representa la longitud de columna mxima. En MySQL
5.0, el rango de longitud es de 0 a 255 antes de MySQL 5.0.3, y de 0 a 65,535 en MySQL 5.0.3 y posterior.
(La longitud mxima real de un VARCHAR en MySQL 5.0 se determina por el tamao de registro mximo y
el conjunto de caracteres que use. La longitud mxima efectiva desde MySQL 5.0.3 es de 65,532 bytes.)
VARCHAR es la abreviacin de CHARACTER VARYING.
En contraste con CHAR, VARCHAR almacena los valores usando slo los caracteres necesarios, ms un
byte adicional para la longitud (dos bytes para columnas que se declaran con una longitud superior a 255).
Los valores VARCHAR no se cortan al almacenarse. El tratamiento de espacios al final depende de la
versin. Desde MySQL 5.0.3, los espacios finales se almacenan con el valor y se retornan, segn el estndard
SQL. Antes de MySQL 5.0.3, los espacios finales se eliminan de los valores cuando se almacenan en una
columna VARCHAR, esto significa que los espacios tambin estn ausentes de los valores retornados.
- ENUM('valor1','valor2',...)
Una enumeracin. Un objeto de cadena de caracteres que slo puede tener un valor, elegido de una lista de
valores 'valor1', 'valor2', ..., NULL o el valor de error especial '' . Una columna ENUM puede tener un
mximo de 65,535 valores distintos. Los valores ENUM se representan internamente como enteros.
- SET('valor1','valor2',...)
Un conjunto. Un objeto de cadena de caracteres que puede tener cero o ms valores que deben pertencer a la
lista de valores 'valor1', 'valor2', ... Una columna SET puede tener un mximo de 64 miembros. Los valores
SET se representan internamente como enteros.
42
BASES DE DATOS
Al igual que para los tipos de datos numricos, existen ms de diez tipos de cadenas de
caracteres que se pueden consultar en el manual de referencia de SQL.
IV.1.5 Tipos de fechas y hora.
Las operaciones ms importantes que se pueden hacer con fechas y horas son las siguientes:
- DATE
Una fecha. El rango soportado es de '1000-01-01' a '9999-12-31'. MySQL muestra valores DATE en formato
'YYYY-MM-DD', pero permite asignar valores a columnas DATE usando cadenas de caracteres o nmeros.
- DATETIME
Combinacin de fecha y hora. El rango soportado es de '1000-01-01 00:00:00' a '9999-12-31 23:59:59'.
MySQL muestra valores DATETIME en formato 'YYYY-MM-DD HH:MM:SS', pero permite asignar
valores a las columnas DATETIME usando cadenas de caracteres o nmeros.
- TIMESTAMP[(longitud)]
Una marca temporal. El rango es de '1970-01-01 00:00:00' hasta el ao 2037.
Una columna TIMESTAMP es til para registrar la fecha y hora de una operacin INSERT o UPDATE . La
primera columna TIMESTAMP en una tabla se rellena automticamente con la fecha y hora de la operacin
ms reciente si no le asigna un valor. Puede asignar a cualquier columna TIMESTAMP la fecha y hora
actual asignndole un valor NULL .
En MySQL 5.0, TIMESTAMP se retorna como una cadena de caracteres en el formato 'YYYY-MM-DD
HH:MM:SS' cuya anchura de muestra son 19 caracteres. Si quiere obtener el valor como un nmero, debe
aadir +0 a la columna timestamp .
- TIME
Una hora. El rango es de '-838:59:59' a '838:59:59'. MySQL muestra los valores TIME en formato
'HH:MM:SS', pero permite asignar valores a columnas TIME usando nmeros o cadenas de caracteres.
- YEAR[(2|4)]
Un ao en formato de dos o cuatro dgitos. El valor por defecto est en formato de cuatro dgitos. En formato
de cuatro dgitos, los valores permitidos son de 1901 a 2155, y 0000. En formato de dos dgitos. Las fechas
con valores de ao de dos dgitos son ambiguas porque no se conoce el siglo. MySQL interpreta los aos de
dos dgitos usando las siguientes reglas:
43
BASES DE DATOS
Se puede especificar valores DATETIME, DATE, y TIMESTAMP usando cualquier de los siguientes
formatos:
Los valores ilegales de DATETIME, DATE, o TIMESTAMP se convierten al valor cero del tipo
apropiado ('0000-00-00 00:00:00', '0000-00-00', o 00000000000000).
Para valores especificados como cadenas de caracteres que incluyan partes de fecha delimitadas, no es
necesario especificar dos dgitos para valores de mes o da menores que 10. '1979-6-9' es lo mismo que
'1979-06-09'. Similarmente, para valores especificados como cadenas de caracteres que incluyan
delimitadores para la parte de hora, no es necesario especificar dos dgitos para horas, minutos o segundos
menores que 10. '1979-10-30 1:2:3' es lo mismo que '1979-10-30 01:02:03'.
El formato relajado para valores especificados como cadenas de caracteres puede ser problemtico.
Por ejemplo, un valor como '10:11:12' puede parecer una hora por el delimitador ':' , pero si se usa
en un contexto de fecha se interpreta como '2010-11-12'. El valor '10:45:15' se convierte a '000000-00' ya que '45' no es un mes legal.
MySQL devuelve y muestra los valores TIME en formato 'HH:MM:SS' (o formato 'HHH:MM:SS' para
valores de hora grandes). TIME tiene rango de '-838:59:59' a '838:59:59'. La razn por la que la parte de
hora puede ser tan grande es que el tipo TIME puede usarse no slo para representar una hora del da (que
debe ser menor a 24 horas), pero tambin el tiempo transcurrido o un intervalo de tiempo entre dos eventos
(que puede ser mucho mayor a 24 horas, o incluso negativo).
44
BASES DE DATOS
Como cadena de caracteres en formato 'D HH:MM:SS.fraccin'. Tambin puede usar una de las
siguientes sintaxis relajadas : 'HH:MM:SS.fraccin', 'HH:MM:SS', 'HH:MM', 'D
HH:MM:SS', 'D HH:MM', 'D HH', o 'SS'. Aqu D representa das y puede tener un valor de 0 a
34. Tenga en cuenta que MySQL no almacena la fraccin (todava).
Como cadena de caracteres sin delimitadores en formato 'HHMMSS', mientras que tenga sentido
como hora. Por ejemplo, '101112' se entiende como '10:11:12', pero '109712' es ilegal (no tiene una
parte de minutos correcta) y pasa a ser '00:00:00'.
Como nmero en formato HHMMSS, mientras tenga sentido como hora. Por ejemplo, 101112 se
entiende como '10:11:12'. Los siguientes formatos alternativos tambin se entienden: SS, MMSS,
HHMMSS, HHMMSS.fraccin. Tener en cuenta que MySQL no almacena la fraccin (todava).
Como resultado de una funcin que retorna un valor que es aceptable en un contexto TIME, tal
como CURRENT_TIME.
Para valores TIME especificados como cadenas de caracteres que incluyan un delimitador de las partes de
hora, no es necesario especificar dos dgitos para horas, minutos o segundos que tengan un valor inferior a 10.
'8:3:2' es lo mismo que '08:03:02'.
Hay que tener cuidado con asignar valores abreviados a una columna TIME . Sin comas, MySQL interpreta
los valores asumiendo que los dos dgitos ms a la derecha representan segundos. (MySQL interpreta valores
TIME como tiempo transcurrido en lugar de horas del da.) Por ejemplo puede pensar que '1112' y 1112
significan '11:12:00' (12 minutos tras las 11 en punto), pero MySQL los interpreta como '00:11:12' (11
minutos, 12 segundos). Similarmente, '12' y 12 se interpretan como '00:00:12'. Los valores TIME con
comas, por contrario, se tratan siempre como hora del da. Esto es, '11:12' significa '11:12:00', no '00:11:12'.
Los valores fuera del rango de TIME pero que son legales se cambian por el valor lmite de rango ms
cercano. Por ejemplo '-850:00:00' y '850:00:00' se convierten en '-838:59:59' y '838:59:59'.
Los valores TIME ilegales se convierten a '00:00:00'. Hay que tener en cuenta que como '00:00:00' es un
valor TIME legal, no hay forma de decir si un valor '00:00:00' almacenado en una tabla, se insert como
'00:00:00' o como valor ilegal.
BASES DE DATOS
<>, !=
<=
<
>=
>
46
BASES DE DATOS
> 0
Comprueba un valor contra un valor booleano, donde boolean_value puede ser TRUE, FALSE, o
UNKNOWN.
mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;
> 1, 1, 1
mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;
> 1, 1, 0
GREATEST(value1,value2,...)
Con dos o ms argumentos, retorna el argumento mayor (con valor mayor). Los argumentos se comparan
usando las mismas reglas que para LEAST().
mysql> SELECT GREATEST(2,0);
> 2
mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);
> 767.0
mysql> SELECT GREATEST('B','A','C');
> 'C'
expr IN (value,...)
Regresa 1 si expr es uno de los valores en la lista IN , de lo contrario regresa 0. Si todos los valores son
constantes, se evalan segn el tipo y ordenacin de expr . La bsqueda para el elemento se hace usando
bsqueda binaria. Esto significa que IN es muy rpido si la lista IN consiste en constantes. Si expr es una
expresin de cadenas de caracteres sensible a maysculas, la comparacin de cadenas se realiza sensible a
maysculas.
mysql> SELECT 2 IN (0,3,5,'wefwf');
> 0
mysql> SELECT 'wefwf' IN (0,3,5,'wefwf');
> 1
LEAST(value1,value2,...)
47
BASES DE DATOS
Con dos o ms argumentos, retorna el argumento menor (con un valor menor). Los argumentos se comparan
usando las siguientes reglas:
Si el valor del resultado est en un contexto INTEGER o todos los argumentos son enteros, se
comparan como enteros.
Si el valor del resultado se usa en un contexto REAL o todos los argumentos son reales, se
comparan como reales.
Si algn argumento es una cadena de caracteres sensible a maysculas, los argumentos se comparan
como cadenas sensibles a maysculas.
En cualquier otro caso, los argumentos se comparan como cadenas no sensibles a maysculas.
NOT, !
NOT lgica. Regresa 1 si el operando es 0, regresa 0 si el operando es diferente a cero, y NOT NULL da
como resiltado NULL.
mysql> SELECT NOT 10;
> 0
mysql> SELECT NOT 0;
> 1
mysql> SELECT NOT NULL;
> NULL
mysql> SELECT ! (1+1);
> 0
mysql> SELECT ! 1+1;
> 1
El ltimo ejemplo produce 1 porque la expresin se evala igual que (!1)+1.
AND, &&
AND lgica. Se evala a 1 si todos los operandos son distintos a cero y no NULL, a 0 si uno o ms operandos
son 0, de otro modo retorna NULL.
48
BASES DE DATOS
OR, ||
OR lgica. Cuando ambos ooperandos son no NULL, el resultado es 1 si algn operando es diferente a cero,
y 0 de otro modo. Con un operando NULL el resultado es 1 si el otro operando no es cero, y NULL de otro
modo. Si ambos operandos son NULL, el resultado es NULL.
mysql> SELECT 1 || 1;
> 1
mysql> SELECT 1 || 0;
> 1
mysql> SELECT 0 || 0;
> 0
mysql> SELECT 0 || NULL;
> NULL
mysql> SELECT 1 || NULL;
> 1
XOR
XOR lgica. Retorna NULL si algn operando es NULL. Para operandos no NULL , evala a 1 si un
nmero par de operandos es distinto a cero, sino retorna 0.
mysql> SELECT 1 XOR 1;
> 0
mysql> SELECT 1 XOR 0;
> 1
mysql> SELECT 1 XOR NULL;
> NULL
mysql> SELECT 1 XOR 1 XOR 1;
> 1
a XOR b es matemticamente igual a (a AND (NOT b)) OR ((NOT a) and b).
49
BASES DE DATOS
50
BASES DE DATOS
Una vez que nuestra base de datos est lista para trabajar, podemos crear una tabla
dentro de esta base de datos con el comando CREATE, proporcionando los campos
correspondientes:
mysql>CREATE TABLE alumnos(nombre
VARCHAR(20),
FechaIngreso DATE,
sexo
CHAR(1),
promedio
DOUBLE(4,2)
edad
INT(2));
Para consultar todas las tablas que tenemos en una base de datos, podemos usar el
comando SHOW TABLES como se muestra a continuacin en la figura 4.2:
mysql > SHOW TABLES;
+-------------------------------+
|
Tables_in_escuela |
+-------------------------------+
|
alumnos
|
+-------------------------------+
1 row in set (0.01 sec)
mysql>
Figura 4.2: La tabla en la base de datos es alumnos.
51
BASES DE DATOS
Para consultar los campos de una tabla, podemos usar en todo momento el comando
DESCRIBE nombre_tabla, esto es til para acordarnos del nombre, del orden o el tipo de
dato de los campos de la tabla, como se muestra en la figura 4.3.
mysql > DESCRIBE alumnos;
+---------------------+----------------+-------+-------+----------+--------+
|
Field
| Type
| Null | Key | Default | Extra |
+---------------------+----------------+-------+-------+----------+--------+
| nombre
| varchar(20) | YES |
| NULL |
|
| FechaIngreso | date
| YES |
| NULL |
|
| sexo
| char(1)
| YES |
| NULL |
|
| promedio
| double(4,2) | YES |
| NULL |
|
| edad
| int(2)
| YES |
| NULL |
|
+---------------------+-----------------+-------+-------+----------+--------+
4 row in set (0.01 sec)
mysql>
Figura 4.3: Los campos de la tabla alumnos.
M
M
F
8.5
\N
8.3
24
21
22
BASES DE DATOS
mysql > LOAD DATA LOCAL INFILE path/ alumnos.txt INTO TABLE
alumnos;
Query OK 3 rows affected, 3 warnings (0.01 sec)
Records: 3 Deleted:0 Skipped: 0 warnings: 3
mysql>
Figura 4.4: Cargar datos desde un archivo (Comando exitoso).
En la figura 4.4 se muestra el comando que se utiliza para cargar directamente los datos
de una tabla desde un archivo, este comando permite editar primero los datos en un archivo
y cerciorarse de que estn correctos.
OJO!
1.- Cuando copiamos una ruta de acceso (path) la computadora usa la diagonal invertida:
c:\.....\....\archivo.txt
MySQL no entiende la diagonal invertida, hay que remplazarla por la diagonal normal:
c:/...../..../archivo.txt
2.- Cuando la ltima columna de un archivo *.txt se va a cargar a un campo de tipo CHAR
o VARCHAR en una tabla de MySQL, es necesario terminarla con un TAB antes de pasar
al siguiente rengln, de no ser as la informacin no se lee correctamente y la tabla de
MySQL no contiene la informacin adecuada.
Otra manera de introducir datos en una tabla es cargarlos lnea por lnea, esto se hace con
el comando INSERT INTO, por ejemplo:
MySQL> INSERT INTO alumnos
> VALUES (Aida Lopez, 2008-03-20, F, 9.4,32);
IV.2.3 Modificando la estructura y el contenido de una tabla: ALTER TABLE.
Para cambiar la estructura de una tabla existente se utiliza el comando ALTER TABLE .
Por ejemplo, se puede aadir o borrar columnas, crear o destruir ndices, cambiar el tipo de
columnas existentes, renombrar columnas o incluso renombrar la misma tabla.
53
BASES DE DATOS
ALTER TABLE funciona creando una copia temporal de la tabla original. La alteracin
se realiza en la copia, luego la tabla original se borra y se renombra la nueva. Mientras se
ejecuta ALTER TABLE la tabla original es legible por otros clientes. Las actualizaciones
y escrituras en la tabla se esperan hasta que la nueva tabla est lista, luego se redirigen
automticamente a la nueva tabla para evitar fallas en las actualizaciones.
IV.2.3.1 Borrar un campo de una tabla.
Para borrar un campo de una tabla se usa el comando ALTER TABLE aadiendo la
clusula DROP. Por ejemplo, si tenemos la tabla t2 y necesitamos borrar el campo c,
entonces usamos el comando ALTER TABLE con la clusula DROP, como se muestra a
continuacin:
mysql> ALTER TABLE t2 DROP COLUMN c;
54
BASES DE DATOS
Otro ejemplo, si tenemos la tabla t2 y necesitamos modificar el campo d, para que sea de
tipo DATE, entonces usamos el comando ALTER TABLE con la clusula MODIFY,
como se muestra a continuacin:
mysql> ALTER TABLE t2 MODIFY d DATE;
Tambin es posible cambiar el nombre del campo al mismo tiempo que su tipo de datos,
por ejemplo:
mysql> ALTER TABLE t2 CHANGE b d VARCHAR(20);
Por ejemplo:
mysql> ALTER TABLE t2 ADD e DATE;
55
BASES DE DATOS
Otro nivel del SQL es el Lenguaje de Manipulacin de Datos (LMD) ( en ingls DML:
Data Management Languaje), en este nivel es en donde trabajan los usuarios. El LMD est
formado por un conjunto de instrucciones que permiten al usuario hacer consultas, llenar
formularios y/o generar reportes, en funcin de la autorizacin que tenga para realizar las
operaciones.
El LMD es un lenguaje de manipulacin de datos, este es un tipo de lenguaje declarativo;
esto significa que el usuario expresa qu informacin desea obtener de la base de datos,
pero no indica la forma en la cual esta informacin se debe localizar y recuperar.
El LMD se usa para modificar tuplas (registros) de la base de datos. Adems del DQL,
con la instruccin SELECT, lo forman las instrucciones INSERT, UPDATE, MERGE y
DELETE.
IV.3.1 Borrar una tupla (registro): DELETE.
Para borrar una tupla o registro de una tabla se usa el comando DELETE aadiendo la
clusula WHERE, el uso de esta instruccin puede llegar a ser bastante sofisticado,
DELETE tiene otras clusulas adicionales que pueden consultarse en el manual, por
cuestiones prcticas, aqu no limitaremos a estudiar el uso de la clusula WHERE. La
sintaxis es la siguiente:
DELETE FROM nombre_tabla [WHERE condicin]
DELETE borra todos los registros de la tabla nombre_tabla que satisfacen la condicin,
y retorna el nmero de registros borrados.
Ms adelante, en la seccin IV.3.2, estudiaremos como consultar los datos que contiene
una tabla con la instruccin SELECT, adelantndonos un poco, en la figura 4.5 tenemos
que la tabla alumnos contiene los siguientes datos:
56
BASES DE DATOS
Si queremos borrar el segundo registro de la tabla alumnos, debemos usar una condicin
en la clusula en donde el valor de algn campo coincida con el valor del segundo registro,
hay que tomar en cuenta que este valor debe ser nico del segundo registro, as:
mysql> DELETE FROM alumnos WHERE nombre = Atenogenes Lopez;
Borra la segunda tupla de la tabla. Si pedimos que se borren los registros cuyo campo
sexo es M:
mysql> DELETE FROM alumnos WHERE sexo = M;
BASES DE DATOS
Para poder ver el contenido de una tabla, utilizamos el comando SELECT, este se utiliza
para mostrar la informacin de una tabla, la sintaxis general de esta instruccin es la
siguiente:
SELECT <lista de atributos>
FROM <lista de tablas>
WHERE <condicines>;
La lista de atributos es la informacin que se requiere visualizar, es una lista de
nombres de campos cuyos valores van a ser recuperados por la consulta, puede ser una lista
de columnas (campos), o se puede usar el asterisco * para indicar todas las columnas. La
lista de tablas indica la o las tablas en donde estn los datos que se desea recuperar, es una
lista de nombres de las relaciones necesarias para procesar la consulta. Un ejemplo muy
sencillo:
mysql> SELECT * FROM alumnos;
La clusula WHERE es opcional. Si est presente, condiciones representa las
condiciones que cada registro debe cumplir para ser un resultado de la consulta. Es una
expresin condicional (booleana) que identifica las tuplas que van a ser recuperadas por la
consulta.
Cuando no se ha introducido ningn valor obtenemos el mensaje que se muestra en la
figura 4.6:
mysql > SELECT * FROM alumnos;
Empty set (0.0 sec)
mysql>
Figura 4.6: Tabla sin datos.
Entonces, antes de consultar en una tabla, es necesario que se le hayan introducido datos
previamente!
Esto se puede hacer de dos maneras, una es cargando todos los datos que ya estn
previamente en un archivo, con el comando:
mysql> LOAD DATA LOCAL INFILE path/ nombreArchivo.txt INTO TABLE
nombreTabla;
Y la otra forma es introduciendo los datos lnea por lnea, con el comando:
58
BASES DE DATOS
Puede observarse que la tabla ya se carg con el contenido del archivo alumnos.txt del
ejemplo de la seccin IV.2.2.
Normalmente no se desea ver una tabla completa, especialmente cuando es muy grande,
sino solo los registros que cumplen con determinada condicin. La tabla 4.1 resume las
operaciones ms sencillas que se pueden hacer con los operadores relacionales bsicos.
SMBOLO SIGNIFICADO SINTAXS
=
Igual que
Nombre_campo = cierto_valor
>
Mayor que
Nombre_campo > cierto_valor
<
Menor que
Nombre_campo <cierto_valor
>=
Mayor o igual Nombre_campo >= cierto_valor
<=
Menor o igual Nombre_campo <= cierto_valor
!= , < >
Diferente de
Nombre_campo != cierto_valor
Tabla 4.1: Operaciones relacionales bsicas.
Por ejemplo, para que se despliegue la tupla con todos los datos que pertenecen a una
persona con un nombre en particular, agregamos la clusula WHERE con la condicin:
59
BASES DE DATOS
Cdigo
1
2
3
8
10
12
Nombre
Edad
Depto
Jorge Campos
33
1
Enrique Muoz
25
1
Esteban Paz
21
1
Jorge Arias
30
2
Juan Martnez
19
2
Anselmo Rodas
28
6
Tabla 4.2: La tabla empleados.
BASES DE DATOS
Nombre
Edad
Jorge Campos
33
Jorge Arias
30
Anselmo Rodas
28
Tabla 4.3: Resultado de la primera consulta.
As solo se despliegan las columnas de los campos nombre y edad, adems, solo tres
tuplas de la relacin cumplen con la condicin de la clusula WHERE.
IV.3.2.2 Consultas con los operadores lgicos AND, OR y NOT.
Con el comando SELECT se permiten consultas tan complejas como sea necesario, usando
conectores AND, OR, NOT. Por ejemplo, si tenemos la tabla empleados del ejemplo
anterior y damos el siguiente comando:
mysql > SELECT *
FROM empleado
WHERE edad < 28 AND depto = 1;
Entonces tendremos la siguiente salida:
Cdigo
2
3
Nombre
Enrique Muoz
Esteban Paz
Edad
25
21
Depto
1
1
BASES DE DATOS
62
BASES DE DATOS
Los campos que son cadenas de caracteres se ordenan por orden alfabtico, y los
numricos de menor a mayor, as si lo que deseamos es obtener de la tabla cliente el
nombre del cliente, su zona y la cantidad que debe, ordenando respecto a la cantidad que
debe el cliente (de ms a menos) entonces hacemos:
mysql> SELECT nomb_cliente, zona, debe FROM cliente ORDER BY debe DESC;
Tambin es posible obtener el valor mximo de una columna, por medio de la clusula
MAX, por ejemplo, si se desea obtener cual es la cantidad mxima que se debe dentro de la
tabla cliente:
mysql> SELECT MAX(debe) FROM cliente;
63
BASES DE DATOS
64
BASES DE DATOS
65
BASES DE DATOS
y queremos desplegar las ID y los nombres de todos los estudiantes que no sean tambin
profesores, entonces:
mysql> SELECT ID,nombre FROM estudiantes
> WHERE ID NOT IN (SELECT ID FROM profesores);
>
BASES DE DATOS
Si la condicin se cumple para varias tuplas, entonces se modifican todas ellas, por
ejemplo:
67
BASES DE DATOS
68
BASES DE DATOS
SQL ofrece la construccin CASE, que se puede usar para formular dos instrucciones de
actualizacin en una nica instruccin, la sintaxis es la siguiente:
UPDATE nombre_tabla
SET nombre_columna=CASE
WHEN nombre_columna=condicin THEN valor1
ELSE valor2
END;
Por ejemplo:
69
BASES DE DATOS
70
BASES DE DATOS
71
BASES DE DATOS
Modificar tuplas
Ordenar tuplas
72
BASES DE DATOS
73
BASES DE DATOS
74
BASES DE DATOS
nivel de tabla. Por ejemplo, en la tabla de detalles de pedidos, la clave primaria puede ser la
combinacin del nmero de pedido y el nmero de lnea dentro de ese pedido:
CREATE TABLE Detalles(
NumPedido integer NOT NULL,
NumLinea integer NOT NULL,
/* */
PRIMARY KEY (NumPedido, NumLinea)
);
Solamente puede haber una clave primaria por cada tabla. De este modo, la clave
primaria representa la identidad de los registros almacenados en una tabla: la informacin
necesaria para localizar un objeto. No es imprescindible especificar una clave primaria al
crear tablas, pero es recomendable como mtodo de trabajo.
En suma, no habr entradas nulas en la llave primaria y todas las entradas sern nicas.
BASES DE DATOS
76
BASES DE DATOS
TIPO
Cheques
Credito
Dbito
Credito
Dbito
Clave principal
CLIENTES
RFC
ACHA660125
CAER630603
SAPO770529
RFC
SALDO
CAER630603 3402
CAER630603 -16525
CAER630603 24789
ACHA660125 -10704
SAPO770529 17500
APERTURA
2007/04/20
1999/10/02
2004/01/15
2001/08/18
2005/07/09
Clave externa
(tabla maestra)
NOMBRE
TELEFONO
Andres Aceves Hernndez 21211304
Roberto Carranza Espinoza 91801423
Oscar Sanchez Perez
56754321
MAIL
[email protected]
[email protected]
[email protected]
77
BASES DE DATOS
78
BASES DE DATOS
Una vez que ponemos el contenido en las tablas, ste se puede observar con SELECT (
figura 5.6 ):
BASES DE DATOS
Para poder agregar el registro en la tabla cuentas primero hay que dar de alta al nuevo
cliente en la tabla clientes:
80
BASES DE DATOS
81
BASES DE DATOS
Por el contrario, si el cliente que deseamos borrar de la tabla Clientes, no tiene una
cuenta asociada en la tabla Cuentas, entonces el sistema nos permite borrarlo sin problema
( figura 5.11 ):
82
BASES DE DATOS
Una tabla maestra debe asumir su responsabilidad cuando alguien intenta borrar alguna de
sus filas o modificar el valor de alguna de sus claves primarias, si se trata de borrado son
tres los comportamientos posibles:
Borrar la informacin en cadena (borrar en cascada): CASCADE.
No permitir el borrado: RESTRICT.
Permitir el borrado y en lugar de borrar las filas dependientes, convertir los
valores de la clave externa en nulos, rompiendo as el vnculo entre las tablas:
SET NULL.
Siguiendo con el ejemplo anterior, vamos a crear la tabla Cuentas, pero ahora
especificando que la accin que se debe llevar a cabo es borrar o actualizar en cascada las
tuplas de la tabla padre (Clientes, en este caso).
83
BASES DE DATOS
Figura 5.14: Modificacin no exitosa de una tupla debido a una accin referencial.
Sin embargo, como especificamos ON UPDATE CASCADE en Cuentas el valor del rfc
se modifica automticamente en cascada al hacer la actualizacin en la tabla padre
Clientes:
84
BASES DE DATOS
85
BASES DE DATOS
V.5 Ejercicios.
Ejercicio 1.- Suponiendo que tenemos una base de datos de un aeropuerto
Disea dos tablas llamadas lneas areas y destinos inventando diferentes campos
para cada tabla.
Uno de los campos de cada tabla debe ser la clave principal.
Interrelaciona las dos tablas haciendo que la clave primaria de destinos sea una clave
externa de la tabla lneas areas.
Solucin:
Este es un ejercicio abierto, en el que el lector puede plantear diversas soluciones, a
continuacin se presentan 2 ejemplos.
Ejemplo 1 de solucin.
Destinos
Clave Primaria
ID_Destino NombreDest
CUN
Cancun
MER
Merida
TXT
Tuxtla
Destinos es la tabla
padre
Lineas_Aereas
Clave Primaria: Clave_Destino + Clave_linea
ID_Linea
MEX
MEX
AER
AVC
ITRJ
Nombre
Mexicana
Mexicana
Aeromexico
Aviacsa
Interjet
Clave Externa
ID_Destino
CUN
MER
MER
TXT
CUN
86
BASES DE DATOS
Ejemplo 2 de solucin.
Lineas_Aereas
Clave Primaria
Clave_Linea
MEX
AER
AVC
ITRJ
Nombre
Mexicana
Aeromexico
Aviacsa
Interjet
Lineas_Aereas es la
tabla padre
Destinos
Clave Primaria: Clave_Destino + Clave_linea
Clave Externa
Clave_Destino
Clave_linea NombreDest
CUN
MEX
Cancun
CUN
ITRJ
Cancun
MER
MEX
Merida
MER
AER
Merida
TXT
AVC
Tuxtla
horario
matutino
vespertino
matutino
vespertino
matutino
En los dos ejemplos anteriores tenemos un problema: se repiten no solo las claves del
destino, sino tambin el nombre del destino. Qu soluciones propones?
Respuesta
Hacer una tabla
aparte que puede
llamarse
CODIGO_DESTIN
OS con los campos
Clave_Destino y
NombreDest, as se
elimina este ltimo
campo de la tabla
DESTINOS
87
BASES DE DATOS
Ejercicio 2.- Disear dos tablas para una base de datos que controla las computadoras de la
UAM.
Solucin - Ejemplo:
Computadoras
Clave Primaria
Marca
No. Serie
Procesador
Dell
39827
AMD
HP
59821
Core Duo
Compaq
36915
Sparc
Inventario
Clave Externa
No. Serie Divisin
59821
CDD
39827
CNI
36915
CSH
DiscoDuro
120 GB
300 GB
60 GB
SistemaOperativo
Windows Vista
Windows XP
Unix
RAM
2GB
1GB
512MB
Tipo
Escritorio
LapTop
Escritorio
Estado
Funcionando
Funcionando
Descompuesta
Ejercicio 3.- Disear dos tablas para una base de datos para una tienda de abarrotes.
La primera tabla se llama Ventas y contiene el cdigo de la venta, se registra
una venta por cada producto diferente, una venta puede contener varios artculos
del mismo producto, tambin debe registrarse la ganancia por la venta hecha.
La segunda tabla se llama Productos y debe contener el cdigo de cada
producto, su descripcin, su costo y su precio de venta.
Indicar que atributo es la clave primaria de la tabla 1.
La clave primaria de la tabla 2 deber ser la clave externa de la tabla 1.
88
BASES DE DATOS
Solucin - Ejemplo:
Ventas
Clave Primaria
CodVenta
Marzo17-1
Marzo17-2
Marzo17-3
Clave Externa
CodProducto
25032
20198
31456
ArticulosVendidos Ganancia
3
96
1
13
10
20
Productos
Clave Primaria
CodProducto
20198
25032
31456
Descripcin
Detergente
Aceite
Leche
Costo
11
19
9
89
PrecioVenta
24
32
11
BASES DE DATOS
Nombre
Eleazar Martnez
Obdulia Snchez
Isidoro Hernndez
Edad
8
25
41
Sexo
M
F
M
Telfono
58263214
52347025
91148302
Doctores
Clave Primaria
NumDoctor Nombre
22341
Prudencio Mata
24932
Ral Daz
25480
Leonor Barroso
Especialidad
Cancerologa
Ginecologa
Pediatra
Internos
Clave Externa
ClavePaciente
0911
0752
0836
Clave Externa
NumDoctor Habitacin
22341
521
25480
203
24932
415
Enfermedad
Cncer pulmonar
Apendicitis
Aborto
90
Estatus
Baja
Alta
Interno
Captulo VI
BASES DE DATOS
BASES DE DATOS
Divisin.
BASES DE DATOS
B C
0 3
3 2
2 1
T1 T2
T2
T1
B
0
0
3
2
2
C
1
0
2
3
0
B
0
3
2
0
0
2
2
C
3
2
1
1
0
3
0
93
BASES DE DATOS
VI.2.2 Interseccin.
La operacin interseccin ( ) permite identificar las tuplas que son comunes a dos
relaciones. Al igual que para la unin, las dos tablas deben tener el mismo grado y los
dominios de sus atributos deben ser compatibles.
La interseccin de las relaciones T1 y T2 es el resultado de las tuplas comunes en ambas
tablas, la nueva tabla tiene las columnas de una de ellas y las filas comunes a ambas tablas.
La interseccin de las relaciones T1 y T2: T1 T2 es el conjunto de tuplas que estn tanto
en T1 como en T2. En la figura 6.4 se ilustra grficamente la interseccin de dos tablas.
94
BASES DE DATOS
T1
B C
0 3
3 2
2 1
B
0
0
3
2
2
C
1
0
2
3
0
T1 T2
B
3
C
2
95
BASES DE DATOS
VI.2.3 Diferencia.
La operacin diferencia (-) permite identificar tuplas que estn en una tabla T1 que no se
encuentran en otra tabla T2. De la misma manera que las operaciones anteriores, las dos
tablas deben tener el mismo grado y los dominios de sus atributos deben ser compatibles.
En otras palabras, sean dos relaciones A y B, la diferencia de A - B es el conjunto de
tuplas que estn en A, pero que no estn en B. En la figura 6.6 se ilustra grficamente la
diferencia de dos tablas.
T1
B C
0 3
3 2
2 1
B
0
0
3
2
2
C
1
0
2
3
0
T1 - T2
B
0
2
C
3
1
BASES DE DATOS
Ejemplo 1:
T1
A
a1
a2
T2
T1 x T2
A
a1
a1
a1
a2
a2
a2
b1
b2
b3
B
b1
b2
b3
b1
b2
b3
97
BASES DE DATOS
En la figura 6.9 se muestra otro ejemplo del producto cartesiano de dos tablas.
T1 x T2
T1
B C
0 3
3 2
2 1
T2
D
0
0
E
1
0
B
0
0
3
3
2
2
C
3
3
2
2
1
1
D
0
0
0
0
0
0
E
1
0
1
0
1
0
98
BASES DE DATOS
99
BASES DE DATOS
Seleccin
Figura 6.11: Ilustracin de la operacin seleccin (solo se eligen algunas tuplas).
Por ejemplo:
cond (T1)
Resultado:= (c>1 AND B>2 (T1)
Resultado 0, 3, 2
T1
A
1
1
0
1
0
B
0
0
3
2
2
C
1
0
2
3
0
100
BASES DE DATOS
OJO!
No hay que confundir la palabra reservada SELECT de MySQL con el operador de
seleccin del lgebra relacional. SELECT de MySQL se puede usar para realizar una
proyeccin, para seleccionar, y para especificar otras acciones.
VI.3.2 Proyeccin.
La proyeccin es una operacin del lgebra relacional que crea una tabla borrando
columnas de una tabla existente.
La operacin de proyeccin puede pensarse como la eliminacin de las columnas no
deseadas, a diferencia de otras operaciones del lgebra relacional, la operacin de proyectar
no requiere de una palabra clave especial o smbolo. Ms bien, para crear una proyeccin,
se lista simplemente la relacin original seguida de las columnas que se quieren conservar
encerradas entre corchetes.
101
BASES DE DATOS
En una proyeccin sobre una relacin R obtenemos las tuplas de la entrada con slo
algunos atributos, como se ilustra en la figura 6.14.
Por ejemplo:
BASES DE DATOS
T1
A
a1
a2
a3
a3
B
b1
b1
b3
b4
T2
A
b1
b2
b3
b1
T1 * T2
C
c1
c2
c3
c2
A
a1
a1
a2
a2
a3
B
b1
b1
b1
b1
b3
C
c1
c2
c1
c2
c3
103
BASES DE DATOS
Ejercicio: si hacemos la operacin natural join sobre las tablas de la figura 6.19:
104
BASES DE DATOS
A
1
1
0
1
0
B
0
0
3
2
2
C
1
0
2
3
0
B
0
3
2
D
3
0
1
Utilizando la instruccin:
mysql> SELECT * FROM R NATURAL JOIN S;
A
1
1
0
1
0
B
0
0
3
2
2
C
1
0
2
3
0
B
0
3
2
D
3
0
1
A
1
1
0
1
0
R*S
B
C
0
1
0
0
3
2
2
3
2
0
D
3
3
0
1
1
Ejemplo prctico.
Sea la base de datos con las tablas de la figura 6.21:
105
BASES DE DATOS
GRUPOS
CLAVE_UEA
15029
15328
12345
15112
12463
13947
NUM_EMPL
3028
3172
3075
3194
3172
2907
AULA
A904
A324
A217
A220
A912
A323
PROFESORES
NUM_EMPL
2907
2962
3075
3028
3150
3172
3194
NOMBRE
Moises Caceres
Arnulfo Daz
Heriberto Jimnez
Eleazar Martinez
Carlos Prez
Nicodemo Sanchez
Maricela Lopez
DEPTO
Quimica
matematicas
matematicas
Fisica
Fisica
matematicas
Quimica
TELEFONO
21211304
91801423
56754321
57221314
55603019
53279872
58961212
106
BASES DE DATOS
Podemos hacer una reunin natural (natural join) para reunir los datos de las dos tablas,
como se muestra en la figura 6.22:
En la prctica, el Join es muy til cuando necesitamos extraer datos de dos tablas al
mismo tiempo, por ejemplo, si tenemos las tablas de la figura 6.23, entonces por medio de
un Join no necesitamos hacer dos accesos si queremos la IdUsuario, el nombre y apellido
paterno de los integrantes de un proyecto.
107
BASES DE DATOS
Y la instruccin es la siguiente:
mysql> SELECT IdUsuario, Nombre, Apaterno FROM Usuarios
NATURAL JOIN Integrantes
WHERE Integrantes.IdProyecto = 2010p03;
En la figura 6.24 se ilustra como crear la tabla Usuarios en la base de datos proyectos y
cargar los datos desde un archivo.
108
BASES DE DATOS
109
BASES DE DATOS
110
BASES DE DATOS
VI.3.4 Divisin.
Esta operacin del lgebra relacional crea una nueva relacin seleccionando las tuplas de
una relacin R1 que se correspondan con todas las tuplas de otra relacin R2, es decir,
selecciona las tuplas de R1 que estn relacionadas con todas las tuplas de R2. En la figura
6.28 se ilustra grficamente la divisin de la tabla T1 entre la tabla T2.
T1
A
a1
a1
a2
a3
T2
B
b1
b2
b1
b2
T1 / T2
B
/
b1
b2
A
a1
En otras palabras, la operacin divisin (/) construye una relacin con los valores de un
campo de una primera tabla T1(dividendo) que concuerden con todos los valores de los
campos de otra tabla T2 (divisor).
En la figura 6.29 se muestran algunos ejemplos de divisin: R/S.
111
BASES DE DATOS
Ntese que los campos de la tabla que corresponde al divisor, deben estar incluidos en la
tabla del dividendo. Adems la cardinalidad de la tabla del divisor debe ser distinta de cero.
Para la Divisin no existe una sentencia en SQL, por lo que si se requiere obtener la tabla
resultado es necesario hacer una combinacin de instrucciones y condiciones.
112
BASES DE DATOS
Interseccin.- Son las tuplas que se encuentran tanto en una tabla T1 como en
otra tabla T2 (T1 y T2) deben ser tablas compatibles).
Diferencia.- Son las tuplas que estn en una tabla T1 pero que no se encuentran
en otra tabla T2 (T1 y T2 deben ser tablas compatibles).
=
Producto cartesiano.- Forma una tercera relacin uniendo los campos de las
tablas T1 y T2 y concatenando todas las tuplas de T1 con cada una de las tuplas de
T2.
T1
A
a1
a2
T2
T1 x T2
A
a1
a1
a1
a2
a2
a2
b1
b2
b3
B
b1
b2
b3
b1
b2
b3
113
BASES DE DATOS
Proyeccin.- Crea una nueva relacin usando solo las columnas deseadas de una
relacin existente. Borra los atributos que no estn en la lista de proyeccin.
T2
B
b1
b1
b3
b4
A
b1
b2
b3
b1
T1 * T2
C
c1
c2
c3
c2
A
a1
a1
a2
a2
a3
B
b1
b1
b1
b1
b3
C
c1
c2
c1
c2
c3
Divisin.- Identifica las tuplas de una relacin que corresponde con cada una de
las tuplas de otra relacin.
T1
A
a1
a1
a2
a3
T2
B
b1
b2
b1
b2
T1 / T2
B
/
b1
b2
A
a1
114
BASES DE DATOS
CLIENTE
ID_CLIENTE
100
102
105
124
133
NOMB_CLIENTE
Jose Gomez
Franciso Perez
Adrian Garcia
Marina Hernandez
Mario Fuentes
TELEFONO
58324520
59831758
31234582
72999136
91834912
ZONA
norte
sur
norte
centro
oeste
PAGADO
18500
14250
11302
29800
25110
DEBE
3200
9500
1240
5500
2900
VENDEDOR_JEFE
ID_VENDEDOR
24
29
31
35
NOMB_VENDEDOR
Eduardo Martnez
Fanny Galindo
Ana Sanchez
Oscar Lemus
ID_JEFE
24
29
24
SUCURSAL
centro
satelite
churubusco
centro
VENDEDOR_SUBORDINADO
ID_VENDEDOR
8
10
11
14
19
29
31
35
NOMB_VENDEDOR
Alejandra Lopez
Tomas Jimenez
Elena Rodriguez
Elias Bravo
Patricio Perez
Fanny Galindo
Ana Sanchez
Oscar Lemus
ID_JEFE
29
35
31
29
24
24
29
24
DESCRIPCION
balon de foot ball
raqueta de tenis
palos de golf
balon de basquet
ID_PROVEDOR
312
210
223
312
NOMB_PROVEDOR
Andres Olvera
Lorenzo Gutierrez
Erika Pea
TELEFONO
53822517
92315880
17221234
SUCURSAL
churubusco
centro
observatorio
observatorio
satelite
satelite
churubusco
centro
PRODUCTO
ID_PRODUCTO
1133
2245
2318
2512
PROVEEDORES
ID_PROVEDOR
210
223
312
115
COSTO
80
280
3100
70
PRECIO
120
350
3800
100
BASES DE DATOS
VENTA
FECHA ID_CLIENTE
01/07
100
01/28
102
02/04
102
02/24
100
03/30
102
04/15
104
04/27
124
05/15
104
05/29
102
06/02
102
ID_VENDEDOR
10
24
24
29
24
10
35
10
24
24
ID_PRODUCTO
2245
2512
1133
2512
1133
2245
2512
2318
2318
2245
CANTIDAD
15
60
85
50
25
12
45
5
7
65
116
BASES DE DATOS
NOMB_VENDEDOR
Alejandra Lopez
Tomas Jimenez
Elena Rodriguez
Elias Bravo
Patricio Perez
Eduardo Martnez
Fanny Galindo
Ana Sanchez
Oscar Lemus
ID_JEFE
29
35
31
29
24
SUCURSAL
churubusco
centro
observatorio
observatorio
satelite
centro
satelite
churubusco
centro
24
29
24
Si lo que queremos saber es la lista de vendedores que son subordinados y jefes, entonces
podemos utilizar el operador interseccin, ya que la interseccin permite identificar las
tuplas que son comunes a las dos relaciones, al igual que para la unin, es necesario que
ambas relaciones tengan exactamente las mismas columnas. As, podemos crear una nueva
relacin llamada VENDEDOR_SUBORDINADO_JEFE con el operador de interseccin:
VENDEDOR_SUBORDINADO_JEFE := VENDEDOR_SUBORDINADO VENDEDOR_JEFE
En
la
figura
6.33
se
muestra
la
relacin
resultante:
VENDEDOR_SUBORDINADO_JEFE, la cual contiene todas las tuplas que estn en
ambas relaciones.
VENDEDOR_SUBORDINADO_JEFE
ID_VENDEDOR
29
31
35
NOMB_VENDEDOR
ID_JEFE
Fanny Galindo
24
Ana Sanchez
29
Oscar Lemus
SUCURSAL
satelite
churubusco
24
centro
Para saber cules son los vendedores jefes que no estn subordinados, podemos utilizar la
operacin diferencia, ya que sta operacin permite identificar las tuplas de una tabla que
no estn en otra tabla, as tendremos:
117
BASES DE DATOS
NOMB_VENDEDOR
Eduardo Martnez
ID_JEFE
SUCURSAL
centro
Para hacer consultas en la base de datos, aplicamos el operador seleccin, que en SQL se
llama SELECT, existe una amplia gama de posibilidades para hacer consultas, aqu
daremos solo unos ejemplos.
a).- Si necesitamos saber la informacin de los vendedores de la sucursal de
churubusco:
mysql> SELECT * FROM vendedor_sub WHERE sucursal =churubusco;
Las condiciones de seleccin son esencialmente las mismas condiciones usadas en las
instrucciones IF de los lenguajes tradicionales de programacin. Sin embargo, los nombres
118
BASES DE DATOS
c).- Para saber cules son los clientes que deben ms de 3000 sean de la zona centro:
mysql> SELECT * FROM cliente WHERE (debe > 3000);
119
BASES DE DATOS
d).- Podemos proyectar solo las columnas que nos interesan y hacer al mismo
tiempo una seleccin, por ejemplo:
mysql> SELECT descripcion, precio FROM producto WHERE id_provedor = 312;
120
BASES DE DATOS
121
BASES DE DATOS
Como se observa en la figura 6.39, DISTINCT sirve para que no se muestren los valores
duplicados.
En la figura 6.40 se muestra como consultar los nombres de los clientes que han
comprado el producto 2318.
122
BASES DE DATOS
123
BASES DE DATOS
Como puede apreciarse en la figura 6.42, una vez creada la vista, solo es necesario hacer
un select para poder ver su contenido. Ya no es necesario un comando largo cada vez que
se requiera visualizar estos datos.
En la figura 6.43 se muestra otro ejemplo en el que se tiene una vista con todos los
vendedores (los jefes y los subordinados):
124
BASES DE DATOS
125
BASES DE DATOS
126
Captulo VII
VII.1
BASES DE DATOS
Las tablas son los componentes bsicos de las bases de datos. La configuracin de una
slida estructura de tablas es un paso clave en la creacin de una base de datos eficaz y fcil
de mantener.
Antes de crear una base de datos, es necesario analizar los datos y determinar cmo
pueden dividirse en tablas independientes bien estructuradas.
Las bases de datos relacionales almacenan los datos en tablas independientes, basndose
en el asunto, pero las tablas se combinan a travs de relaciones. Por ejemplo, una tabla de
clientes se relaciona con una tabla de pedidos por medio de un campo de identidad de
cliente que contiene cada una de estas tablas. Otro ejemplo, una tabla de asignaturas se
relaciona con una tabla llamada profesores por medio del campo numero de empleado
que contiene cada una de estas tablas. Un ejemplo ms, una tabla de lineas_aereas se
relaciona con una tabla de destinos por medio de un campo que contiene la clave de la
lnea area.
Normalmente, los datos no deben repetirse en ms de una tabla, excepto en el caso en que
los campos estn relacionados, con esta filosofa, se obtienen las siguientes ventajas:
127
BASES DE DATOS
La separacin protege la estructura original. Cuando se disean las tablas, hay que pensar
en maneras de estructurar los datos que los hagan fciles de especificar y mantener.
VII.2
128
BASES DE DATOS
Cabe sealar que no existe una forma nica de elaborar un diagrama entidad-relacin, el
diseo depende de la experiencia y la visin particular, varios diseadores puedes proponer
diagramas diferentes en donde habra que valorar las ventajas y desventajas de cada uno.
Una vez que se tiene el diagrama entidad-relacin, podemos elaborar el modelo relacional
en base a lo siguiente:
BASES DE DATOS
Una de las formas de trabajar es elaborar un cuadro de especificaciones para cada tabla
del modelo relacional, este cuadro debe contener la informacin que se muestra en la figura
7.2.
Nombre
columna
Tipo Clave
Nulos
Atributo 1
Nombre de la tabla.
Atributo 2
..
Ejemplo
130
Atributo N
BASES DE DATOS
La clave primaria se abrevia como CP y la clave externa como CE, en el caso de las
claves primarias compuestas se indica CP en cada una de las columnas que pertenecen a los
atributos que la componen.
Cuando es obligatorio que el campo tenga un valor, es decir, que no admite valores nulos,
se indica con la abreviatura NN (No Nulo).
Ejemplo 1.- Sea la tabla de la figura 7.3.
Nombre
columna
Id_pelicula
Pelculas
titulo
Ao
duracin Producida
Tipo clave
CP
Nulos
NN
NN
NN
NN
Ejemplo
F14
Cdigo x
2004
120
E1
F97
Zeta
2005
150
E35
100
E11
F28
CE
Omitiendo las tuplas de ejemplo, las dems tablas del modelo relacional dado por el
diagrama entidad-relacin de la figura 7.1, quedaran definidas como se muestra en la
figura 7.4.
131
Nombre
columna
Nulos
ID_actor
Tipo Clave
CP
Nulos
NN
Nombre
columna
Tipo Clave
BASES DE DATOS
Actores
Nombre
NN
ID_pelicula
Reparto
ID_actor
CE, CP
CE, CP
NN
NN
Nombre
columna
Tipo Clave
Nulos
Nombre_artstico
rol
Estudios
ID_estudio
Nombre
CP
NN
NN
premio
Ejemplo 2.- Hacer un diagrama E-R de una BD para las carreras de Ingeniera en
Computacin y Matemticas Aplicadas de la UAM Cuajimalpa, con las siguientes
carctersticas:
Que guarde los datos de cada alumno (matricula, nombre, mail, telfono)
Que contenga las UEAs (Id_UEA, nombre) as como los profesores disponibles
(num_empl, nombre, departamento, telfono).
Se debe llevar una relacin de los cursos ofrecidos (grupo, UEA, profesor, saln) y
de las inscripciones (matrcula, grupo, calificacin)
132
BASES DE DATOS
133
BASES DE DATOS
Nombre
columna
Tipo Clave
CE, CP
CE, CP
CE
NN
NN
NN
ID_profesor
Profesores
Nombre
Departamento
NN
NN
NN
Matricula
Alumnos
Nombre
Nulos
Nombre
columna
Tipo Clave
Aula
Telfono
CP
Nulos
Nombre
columna
Tipo Clave
Cursos_ofrecidos
UEA
ID_profesor
ID_grupo
Telfono
CP
Nulos
NN
NN
Inscripciones
Matricula
ID_grupo
Nombre
columna
Tipo Clave
Nulos
Nombre
columna
Tipo Clave
Nulos
CE, CP
CE, CP
NN
NN
UEAs
Clave
Calificacin
nombre
CP
NN
NN
134
BASES DE DATOS
El sistema de privilegios.
VIII.2
Hay una extensa variedad de permisos que se pueden otorgar o quitar a los usuarios, estos
pueden ser vlidos a diferentes niveles:
- Nivel global.
- Nivel base de datos.
- Nivel de tabla.
- Nivel de columna.
- Nivel de rutina (no los veremos en este curso)
En la tabla 8.1 se muestran los permisos ms importantes con los que se trabaja, en el
manual de referencia puede consultarse la lista completa de tipos de permisos.
135
BASES DE DATOS
Permiso
ALL [PRIVILEGES]
Significado
ALTER
ALTER ROUTINE
CREATE
CREATE ROUTINE
CREATE TEMPORARY
TABLES
CREATE USER
CREATE VIEW
DELETE
DROP
EXECUTE
FILE
INDEX
INSERT
SELECT
SHOW DATABASES
SHOW VIEW
UPDATE
GRANT OPTION
En MySQL es posible crear diversos usuarios, al inicio se crea un usuario que puede
utilizar todos los comandos que existen en MySQL sobre una base de datos en particular, a
este usuario se le llamamos administrador (root) y posee todos los privilegios. Los
privilegios se almacenan en tablas que existen por default dentro del servidor de MySQL
a estas tablas se les llama tablas Grant.
Cuando se inicia una sesin en MySQL las tablas Grant se cargan en memoria. Cuando se
recargan las tablas grant en memoria los privilegios se ven afectados de la siguiente
manera:
136
BASES DE DATOS
El nico usuario que tiene la capacidad de dar o revocar permisos a los usuarios ser
siempre el usuario root o administrador (solo existe uno por servidor), este puede usar dos
comandos:
GRANT: Para otorgar ciertos privilegios al usuario
REVOKE: Para quitar o revocar los privilegios de un usuario en particular.
VIII.3
Los comandos GRANT y REVOKE sirven para dar (con GRANT) o quitar (con REVOKE)
a los usuarios los permisos mencionados en la tabla 9.1, y algunos otros ms. La sintaxis
simplificada del comando GRANT es la siguiente:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
Y para REVOKE:
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | * | *.* | db_name.*}
FROM user [, user] ...
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
BASES DE DATOS
A nivel tabla, los nicos permisos que pueden especificarse son SELECT, INSERT,
UPDATE, DELETE, CREATE, DROP, GRANT OPTION, INDEX, y ALTER.
Mientras que para una columna, solo son SELECT, INSERT y UPDATE,
Para crear un usuario se utiliza:
GRANT USAGE ON BaseDatos.Tabla TO usuario IDENTIFIED BY clave
Con lo anterior, lo nico que podr hacer el usuario anonimo es conectarse a una sesin
de MySQL, no tiene privilegios. En la figura 8.2 se observa como annimo entra a su
sesin. El comando para entrar es el siguiente:
mysql h localhost -u usuario -p
Ntese que para que el usuario pueda conectarse a una sesin, es necesario entrar desde el
smbolo del sistema. Adems es necesario estar situado en el directorio donde se encuentra
MySQL.exe, o bien proporcionar la ruta de acceso ( figura 8.3 ).
138
Figura 8.3: Es
BASES DE DATOS
Para otorgar, por ejemplo, el privilegio del comando SELECT en la base de datos
miguelin al usuario anonimo el administrador debe dar el comando de la figura 8.4.
De esta forma, el usuario anonimo podr hacer consultas sobre la base de datos
miguelin.
Para quitar este privilegio de consulta, el administrador debe usar el comando revoke
como en la figura 8.5.
139
BASES DE DATOS
140
Captulo IX
BASES DE DATOS
Transacciones.
BASES DE DATOS
Pgina
Memoria
Intermedia
Memoria
Principal
BD
ESCRITURA
Figura 9.1: Flujo de datos en una transaccin.
(Material del curso del Dr. Ovidio Pea Rodrguez).
142
BASES DE DATOS
Asentar
cambios?
Para cancelar los cambios
se utiliza ROLLBACK
FIN de la transaccin
Un candado es un mecanismo que prohbe que dos transacciones manipulen los mismos
datos al mismo tiempo. Por ejemplo, un candado evita que se borre una tabla si en ese
momento se est llevando a cabo otra transaccin sobre sta.
Durante la ejecucin de una transaccin pueden existir fallas de diversa ndole, a
continuacin se especifican.
Fallas durante la transferencia de datos:
Error en la programacin: la transaccin no termina.
Interbloqueo.
Error en un comando.
Fallas del sistema.
Cuando se pierden datos de memoria principal.
Cuando se reinicia el sistema.
Falla de memoria secundaria.
Defectos de software.
Defectos del hardware.
Prdida parcial de la Base de Datos.
Fallas no recuperables.
Virus.
Factores externos.
143
BASES DE DATOS
Parcialmente
comprometida
comprometida
Activa
Fallida
Abortada
144
IX.2.1
BASES DE DATOS
El servidor de bases de datos MySQL soporta distintos tipos de tablas, tales como ISAM,
MyISAM, InnoDB, y DBD (Berkeley Database). De stos, InnoDB es el tipo de tabla ms
importante
Las tablas del tipo InnoDB almacenan en un slo archivo, en lugar de tres y sus
principales caractersticas son que permite trabajar con transacciones y definir reglas de
integridad referencial. Para asegurar que se tiene soporte para el tipo de tablas InnoDB se
usa la instruccin, como en la figura 9.4:
mysql> SHOW VARIABLES LIKE '%innodb%';
Figura 9.4: have_innodb que tiene el valor YES indica que s se tiene el motor innodb
Ejemplo.
A continuacin crearemos una tabla llamada Transacc con el motor InnoDB, con un solo
atributo llamado campo, posteriormente agregaremos 3 tuplas con los valores 1, 2 y 3. Los
comandos en MySQL para hacer lo anterior son los siguientes:
145
BASES DE DATOS
Figura 9.5: Creacin de una tabla con el motor de base de datos InnoDB.
146
BASES DE DATOS
BEGIN;
INSERT INTO transacc VALUES(4);
SELECT * FROM transacc;
Activa
Mientras la transaccin est Activa sta se puede abortar con la instruccin ROLLBACK
y entonces el cambio se pierde, como se muestra en la figura 9.7.
ROLLBACK;
Abortada
147
BASES DE DATOS
BEGIN;
INSERT INTO transacc VALUES(4);
SELECT * FROM transacc;
EXIT;
Parcialmente
comprometida
148
BASES DE DATOS
BEGIN;
INSERT INTO transacc VALUES(4);
SELECT * FROM transacc;
COMMIT
comprometida
De esta forma, cuando se da de baja la sesin y luego volvemos a entrar, los cambios
hechos por la transaccin sobre la tabla Transacc son permanentes.
149
BASES DE DATOS
150
BASES DE DATOS
Captulo X Normalizacin.
X.1 Que es y para qu sirve la normalizacin.
Normalizar las tablas de una base de datos significa optimizar su diseo para no repetir
datos innecesariamente y para prevenir problemas de inconsistencia. Con la normalizacin,
los datos complejos se transforman en un conjunto de tablas simples que son ms fciles de
entender y mantener. Como se ilustra en la figura 10.1, es mejor invertir un esfuerzo
importante al diseo de la base de datos, esto ahorra mucho esfuerzo en las etapas
posteriores del desarrollo de un sistema de software.
Figura 10.1: Es mejor invertir tiempo y esfuerzo a un buen diseo de la base de datos (Post, 2006).
E. F. Codd, fue el creador de las bases de datos relacionales, en 1970 defini las tres
primeras formas normales, que son:
BASES DE DATOS
Se dice que una tabla cumple una determinada forma normal cuando satisface las
restricciones impuestas por dicha norma. La idea es evitar los problemas que surgen cuando
una base de datos est mal diseada.
Durante el proceso de normalizacin hay que tener siempre en mente la posibilidad e
descomponer una tabla en otras ms pequeas.
La normalizacin tiene como ventajas principales:
CURP
FechaNacimient
o
sexo
Figura 10.2: Dependencia funcional de los campos FechaNacimiento y sexo, del campo CURP.
152
BASES DE DATOS
telefonos
58967123, 58967112
23181534, 91801435
ApellidoMat
Perez
Molina
ApellidoPat
Flores
Saenz
telefono1
58967123
23181534
153
telefono2
58967112
91801435
BASES DE DATOS
Solucin: como puede observarse, un material puede tener varias medidas, para cumplir con
1FN es necesario dividir la informacin en dos tablas, de esta forma, el campo MEDIDAS no
tiene varios valores, como se observa en la tabla de la figura 10.6.
154
BASES DE DATOS
PRESTAMO
S
N. Usu C. Libro
1
Ttulo
3421
Fecha Prstamo
Fisica I
02/04/2009
Solucin: El campo Ttulo no depende del Nmero de usuario, sino de la clave del libro.
Rediseando tenemos las tablas de la figura 10.8.
PRESTAMOS
N usuario
1
Cod Libro
3421
Fecha Prstamo
02/04/2009
TITULOS
Cod Libro
3421
Ttulo
Fsica I
BASES DE DATOS
Para obtener la tercera forma normal es necesario tener las dos tablas de la figura 10.10.
156
BASES DE DATOS
ORDENES
Clave Primaria
ID_Orden
Fecha
15
2009-01-25
17
2009-02-02
Clave Externa
ID_Cliente
038
124
CLIENTES
Clave Primaria
ID_Cliente
Nombre
038
Gervasio
124
Eduardo
Apellido1
Perez
Molina
Telefono
58967123
23181534
Figura 10.10: la tabla CLIENTES y la tabla ORDENES estn en la tercera forma normal (3NF).
157
BASES DE DATOS
158
Captulo XI
BASES DE DATOS
Creacin de ndices.
159
BASES DE DATOS
Los ndices son una desventaja en las tablas las que se utiliza frecuentemente operaciones
de escritura (Insert, Delete, Update), esto es porque los ndices se actualizan cada vez que
se modifica una columna, y esto requiere de tiempo. En tablas demasiado pequeas no es
necesario ganar tiempo en las consultas, por lo que no vale la pena el esfuerzo de crear el
ndice. Los ndices tampoco son muy aconsejables cuando pretendemos que la tabla sobre
la que se aplica devuelva una gran cantidad de datos en cada consulta. Por ltimo hay que
tener en cuenta que ocupan espacio y en determinadas ocasiones incluso ms espacio que
los propios datos aunque lo ms comn es que los ndices ocupen menos espacio que las
tablas.
XI.2 Indexacin.
Los ndices se organizan en base a claves de bsqueda. Una clave de bsqueda es un
atributo o un conjunto de atributos que se utilizan para localizar una tupla en una tabla de la
base de datos. Un ndice se compone de dos campos, el primero contiene la clave de
bsqueda y el segundo un apuntador con la direccin en la que se encuentra el elemento de
la tabla asociado con la clave de bsqueda.
Los ndices pueden ser ordenados o asociativos. Como su nombre lo indica, los ndices
ordenados se basan en la disposicin ordenada de valores, es decir, los elementos se
ordenan secuencialmente a partir de una clave de bsqueda principal. Mientras que los
ndices asociativos tienen sus claves de bsqueda distribuidas uniformemente por medio de
alguna funcin de asociacin.
En la figura 11.1 se tiene un ejemplo de un ndice ordenado denso, para localizar una
tupla por medio de este tipo de ndices se elige una clave de bsqueda cuyo valor sea igual
al de la clave que se est buscando. En el caso de que existan varias tuplas con la misma
clave, se comienza a buscar a partir de la primera tupla apuntada por el ndice. En el ndice
ordenado denso, aparece un registro ndice para cada valor de clave de bsqueda de la tabla
indexada.
ndiceOR
DENES
Zona
norte
noreste
noroeste
sur
sureste
suroeste
CLIENTES
Zona
Apellido1 Nombre
Noreste
Prez
Gervasio
Noreste
Ballesteros Javier
Noroeste Snchez
Antonio
sur
Hernndez
Juan
sur
Alcal
Martn
sur
Garca
Eduardo
160
Telefono
58967123
55320928
55902762
11354930
58813312
13181534
BASES DE DATOS
100
110
120
130
CLIENTES
ID_Cliente
100
...
110
.
120
121
122
Apellido1 Nombre
Perez
Gervasio
Telefono
58967123
Snchez
Antonio
55902762
Hernndez Juan
Alcal
Martn
Garca
Eduardo
11354930
58813312
13181534
161
BASES DE DATOS
Cuando se trabaja con rboles se utilizan los siguientes trminos (los cules se ilustran en la
figura 11.4).
Camino es una secuencia de ramas contiguas que van de un nodo nx a otro nodo ny.
Longitud de un camino es el nmero de ramas entre el nodo nx y el nodo ny.
Nivel de un nodo es la longitud del camino que lo conecta con el nodo raz.
Profundidad del rbol es la longitud del camino ms largo que conecta el nodo raz con
una hoja.
162
BASES DE DATOS
Los rboles B y B+ son rboles de bsqueda. Un rbol de bsqueda es "un tipo especial
de rbol que sirve para guiar la bsqueda de un registro (tupla) dado el valor de uno de sus
campos (atributos)" [Elmasri & Navathe, 2008]. En un rbol de bsqueda de orden n cada
nodo contiene cuando mucho n-1 valores de bsqueda y n apuntadores a un nodo hijo.
Los rboles de bsqueda suelen utilizarse para localizar tuplas que estn almacenadas
dentro de un archivo en disco. El valor de cada nodo del rbol corresponde con uno de los
valores de uno de los campos de la tupla.
Un rbol B tiene las siguientes caractersticas:
Cada nodo tiene la forma
[ P1, (k1, Ptr1), P2, (k2, Ptr2)],, Pn-1, (kn-1, Ptrn-1), Pn]
Donde: Pi = apuntador a un nodo hijo, se le llama apuntador de datos.
ki = valor al cual se le asocia un apuntador Ptri
Ptri = direccin en el disco donde se encuentra guardada una tupla cuyo campo
contiene el valor ki, Se le llama apuntador a datos.
Cada nodo que no es raz ni hoja tiene por lo menos n/2 apuntadores de rbol.
Un nodo con n apuntadores de rbol tiene n-1 valores del campo clave de bsqueda
y n-1 apuntadores a datos.
Todos los nodos hoja se encuentran en el mismo nivel.
163
BASES DE DATOS
Cuando se inserta una nueva tupla, es necesario actualizar el rbol de bsqueda, para que
se incluya un nuevo valor con su respectivo apuntador a esta nueva tupla. Los algoritmos
para hacer esto en un rbol B no garantizan que el rbol siga equilibrado, es decir, que
todas las hojas queden al mismo nivel. Cuando un rbol de bsqueda est equilibrado la
velocidad de bsqueda es uniforme, ya que es independiente del valor de la clave de
bsqueda.
Los rboles B+ son una variante de los rboles B. Mientras que en un rbol B cada valor
del campo de bsqueda aparece una vez en algn nivel del rbol junto con su apuntador a
datos, en el rbol B+ los apuntadores a datos se guardan solo en los nodos hoja del rbol,
por lo que la estructura de los nodos hoja es diferente de la estructura de los nodos internos.
Un rbol B+ satisface estas propiedades:
Todos los caminos de la raz a las hojas tienen la misma longitud.
Cada nodo que no es raz ni hoja tiene entre n/2 y n hijos, donde n est fijo para
cada rbol en particular.
Un nodo hoja tiene entre (n-1)/2 y (n-1) valores.
Casos especiales:
si la raz no es una hoja, tiene como mnimo 2 hijos.
Si la raz es una hoja, puede tener entre 0 y (n-1).
164
BASES DE DATOS
Para ver con detalle los algoritmos de bsqueda, insercin y eliminacin para los rboles
B y B+ se puede consultar [Elmasri & Navathe, 2008, pag. 442-453] y [Silberschatz et al.,
2006, pag. 408-418].
Tomar en cuenta que las claves primarias son ndices y que los nombres de los ndices
deben ser nicos.
Para agregar un ndice a una tabla:
ALTER TABLE nombre-de-la-tabla ADD INDEX nombre-del-indice (columna(s)-que-forma(n)-elindice)
165
BASES DE DATOS
166
Captulo XII
XII.1
BASES DE DATOS
Tendencias en bases de
datos.
Las bases de datos sirven para el manejo de la informacin. Sabemos que la informacin
es muy valorada en cada una de las instituciones que utilizan las computadoras para su
manejo, como empresas, dependencias del gobierno, hospitales, escuelas, museos, etc.
Las bases de datos deben atender a mltiples usuarios y a diferentes aplicaciones.
Se dice que estamos en la tercera generacin de las bases de datos, sta se caracteriza
por: Proporcionar capacidades de gestin de datos al igual que sus predecesores,
permitiendo que grandes cantidades de datos persistentes sean compartidos por
muchos usuarios. Tambin proporcionan gestin de objetos, permitiendo tipos de datos
mucho ms complejos, objetos multimedia, datos derivados, encapsulamiento de la
semntica de los datos, as como otras nuevas capacidades. Algunos proporcionan
incluso gestin de conocimiento, soportando un gran nmero de reglas complejas para
inferencia automtica de informacin y tambin para mantener las restricciones de
integridad entre datos [Cattell, 1991].
Actualmente existe una fuerte competencia entre las diferentes empresas telefnicas y
de comunicaciones. Para ganar mercado se ha desencadenado una bsqueda constante de
nuevas tecnologas que proporcionen al usuario acceso a cada vez ms informacin. Es de
esperarse que en un futuro cercano los usuarios puedan tener acceso a cada vez ms bases
de datos desde sus dispositivos mviles. Esto implica el desarrollo de bases de datos con
una gran cantidad de usuarios que utilizan su informacin al mismo tiempo (bases de
datos paralelas). Tecnologas que aumenten la velocidad de acceso a los datos (datos en
memoria principal) y una evolucin en los sistemas de seguridad de los datos. Se
requieren adems, otras formas de modelar el mundo real complejo, es decir, el que no se
puede modelar con bases de datos relacionales (bases de datos orientadas a objetos).
Tambin se requieren sistemas que ayuden al ser humano a interpretar la informacin
(minera de datos, bases de datos deductivas). En la siguiente seccin se mencionan las
tendencias de la tecnologa en lo que respecta a las bases de datos.
167
XII.2
BASES DE DATOS
La abstraccin es el paso del mundo real al mundo virtual, con ella se hace una
descripcin especial simplificada de un sistema. Para modelar al objeto se toman
ciertos rasgos y se suprimen otros. Una buena abstraccin es aquella que logra hacer
nfasis en los detalles significativos o relevantes del objeto y discrimina cualquier
otra caracterstica. Con la abstraccin se consigue un buen mapeo de los objetos del
mundo real a los objetos del sistema.
BASES DE DATOS
169
BASES DE DATOS
Bases de datos seguras.- Son bases de datos organizadas en mltiples niveles, cada nivel
contiene objetos con diferentes niveles de confidencialidad y usuarios que pueden
agruparse por roles, cada rol implica distintos privilegios sobre la informacin. El diseo y
manejo de estas bases de datos esta orientado a atender los aspectos ms importantes de la
seguridad, que son:
Bases de datos difusas.- Una de las caractersticas del lenguaje natural, que hace difcil
su utilizacin en sistemas computacionales es su imprecisin. Por ejemplo conceptos
como alto y bajo, o pequeo y grande, tienen significados diferentes de acuerdo al contexto
en el que se estn utilizando, e incluso dentro del mismo contexto, pueden significar cosas
diferentes para diferentes individuos. El modelo relacional no permite el procesamiento
de consultas del tipo Encontrar a todos los alumnos cuya calificacin no sea muy baja
dado que ni el clculo ni el lgebra relacional, que establecen el resultado de cualquier
consulta como una nueva relacin, tienen la capacidad de permitir consultas de una manera
difusa. Las bases de datos difusas encajan en el campo de la Inteligencia Artificial, ya que
permiten el manejo de informacin con una terminologa que es muy similar a la del
lenguaje natural.
Almacenes de datos (data warehouses).- Un almacn de datos es una coleccin integrada de
datos clasificados por temas. Almacenan informacin histrica que se extrae de fuentes
mltiples, heterogneas, autnomas y distribuidas. Su contenido es variable en el tiempo y
tiene la finalidad de ayudar en el proceso de la toma de decisiones. Tiene las caractersticas
que le permiten proporcionar idneamente los datos a la minera de datos, ya que en un
almacn de datos la informacin est limpia, independiente, coherente y unificada. El
almacn de datos puede compararse con el expediente de la institucin o empresa, sin
embargo no debe utilizarse para trabajar con los datos de uso actual.
170
BASES DE DATOS
Minera de datos.- Parte del hecho de que las bases de datos tienen un conocimiento
implcito el cual se puede extraer y encontrar patrones de comportamiento que permitan
hacer predicciones. Este conocimiento tambin puede servir para segmentar los datos con el
objeto de aumentar la velocidad de acceso. Adems, con este conocimiento tambin se
pueden hacer clasificaciones. La minera de datos usa tcnicas de la estadstica (anlisis de
varianza, regresin, prueba chi-cuadrado, anlisis de agrupamiento,) y de la inteligencia
artificial (redes neuronales, rboles de decisin, algoritmos genticos, sistemas
expertos,). La clasificacin y prediccin de los datos puede ser de gran utilidad en los
negocios para entender como se comportan los clientes y as aumentar las ventas, evitar
prdidas o contactar clientes potenciales. La minera de datos tiene una amplia gama de
aplicaciones en diversas reas, por ejemplo en el estudio del comportamiento de los
empleados de una empresa, de los usuarios de internet, de los fraudes con tarjetas
bancarias, el monitoreo de los cables de alta tensin, etc.
Las reas de aplicacin de las bases de datos se extendern conforme los avances de
los Sistemas Gestores de Bases de Datos permitan satisfacer las exigencias de la
globalizacin de la informacin de la cultura, de la ciencia, de la industria y del comercio.
171
BASES DE DATOS
172
BASES DE DATOS
173
BASES DE DATOS
package com.util;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
Usuario administrador
return con;
}
174
BASES DE DATOS
175
BASES DE DATOS
return con;
}
public static void close()
{
try {
El mtodo close cierra la conexin
if(con != null)
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
Figura 3: Mtodo para cerrar la conexin.
La clase Conecta se utiliza desde otras clases para hacer diversas operaciones en una
base de datos MySQL, a continuacin, en la figura 4 y en la figura 5 se da un ejemplo de
cmo se hace un UPDATE en la base de datos desde Java.
Primero es necesario incluir el paquete en donde se encuentre la clase Conecta, en
nuestro caso, esta clase se elabor dentro del paquete com.util. El programa que utilice
la clase Conecta necesita un objeto de clase Connection y es este objeto el que permite
hacer las operaciones para establecer la conexin, cerrarla, y ejecutar comandos de lectura y
actualizacin.
Para ejecutar una instruccin MySQL, se requiere de un objeto de clase Statement. La
instruccin a ejecutar es un mtodo del objeto stmt (instruccin), executeUpdate para el
caso de hacer una actualizacin y executeQuery para el caso de una consulta, estas son las dos
instrucciones utilizadas ms comnmente.
En la figura 4 se muestra la forma de instanciar la conexin y el objeto stmt (instruccin). En la
figura 5 se observa un ejemplo de cmo se hace una actualizacin en una base de datos con el
176
BASES DE DATOS
mtodo executeUpdate, tambin se puede ver el manejo de las excepciones y como hay que
cerrar la conexin una vez que se llev a cabo la operacin deseada.
package com.util;
import java.sql.*;
public class Ejemplo {
public static void main(String args[]) {
Connection conn = null;
Para el manejo de la conexin
Statement stmt = null;
Instruccin
try {
conn = Conecta.getCon();
stmt = conn.createStatement();
}
177
BASES DE DATOS
178
BASES DE DATOS
En la figura 6 podemos apreciar que para hacer una consulta a la base de datos se requiere
de un objeto adicional de clase ResultSet (conjunto de resultados), el cual sirve para
guardar los resultados de la consulta. Al terminar la operacin con la base de datos, no solo
hay que cerrar la instruccin y la conexin, sino tambin el conjunto de resultados.
public class Ejemplo {
public static void main(String args[]) {
Connection conn = null;
Statement stmt = null;
ResultSet resultSet = null; // para manejar los resultados
try {
Ejemplo de cmo se hace un SELECT en la BD
conn = Conecta.getCon();
stmt = conn.createStatement();
resultSet = stmt.executeQuery(
SELECT atrib1, atrib2,,FROM nombreTabla);
... Procesamiento de los resultados de la consulta . . .
} catch (SQLException e) {
System.out.println("error: no se pudo establecer conexin con BD");
e.printStackTrace();
} catch (Exception e) {
System.out.println("other error:");
e.printStackTrace();
} finally {
try {
resultSet.close();
stmt.close();
Hay que cerrar la instruccin y la conexin
conn.close();
pero primero el conjunto de resultados.
} catch (Exception e) {
}
}
}
}
179
BASES DE DATOS
180
BASES DE DATOS
MySQLServer.
En el siguiente ejemplo se seleccion la opcin para Windows de 32 bits.
181
BASES DE DATOS
182
BASES DE DATOS
Una vez que se realiz la descarga, aparece la ventana del asistente de configuracin:
Con las selecciones que el asistente de configuracin muestra por defecto es suficiente
para proceder con la instalacin, como se muestra en la siguiente secuencia de pantallas:
183
BASES DE DATOS
184
BASES DE DATOS
185
BASES DE DATOS
Es muy importante recordar siempre este password, ya que servir para iniciar la sesin
de trabajo en MySQL.
Para tener acceso a MySQL es necesario seleccionarlo de entre los programas del men
de inicio.
186
BASES DE DATOS
187
BASES DE DATOS
Glosario.
(Extracto del glosario de [Kroenke, 2003], con algunas modificaciones y adiciones)
Abstraccin.- Generalizacin de algo que oculta ciertos detalles sin importancia, pero que
permite trabajar con una clase ms amplia de tipos.
Aplicacin. Sistema computacional que procesa parte de una base de datos para satisfacer
las necesidades de informacin del usuario. Contiene mens, formas, reportes, consultas,
pginas Web y programas de aplicacin.
Atributo.- (1) En el contexto relacional es la columna de una relacin, tambin se le llama
columna, campo o elemento de datos. (2) en el modelo entidad-relacin es una propiedad
de una entidad.
Base de datos.- Es una coleccin estructurada de datos.
Base de datos distribuida.- Es una base de datos almacenada en dos o ms computadoras.
Base de datos relacional.- Base de datos que consta de relaciones, tambin llamadas
tablas.
Campo.- (1) en el contexto relacional es sinnimo de atributo. (2) un grupo lgico de bytes
en un registro utilizado para el procesamiento de archivos.
Cardinalidad.- En una relacin binaria, el nmero mximo o mnimo de elementos
permitidos en cada lado de la relacin.
Cardinalidad mxima.- (1) El nmero mximo de valores que puede tener un atributo
dentro de un objeto. (2) en una relacin entre tablas, el nmero de mximo de filas con las
que puede relacionarse un rengln de una tabla en la otra tabla.
Cardinalidad mnima.- (1) El nmero mnimo de valores que puede tener un atributo
dentro de un objeto. (2) en una relacin entre tablas, el nmero de mnimo de filas con las
que puede relacionarse un rengln de una tabla en la otra tabla.
DDL.- Vase Lenguaje de Definicin de Datos (LDD).
DML.- Vase Lenguaje de Manejo de Datos (LMD).
188
BASES DE DATOS
BASES DE DATOS
ndice.- Datos significativos utilizados para mejorar y clasificar la ejecucin. Los ndices
pueden construirse para una columna o grupos de columnas. Son especialmente tiles para
las columnas que se utilizan para saltos de control en reportes y para especificar las
condiciones en los join.
Join (reunin).- Operacin algebraica relacional en dos relaciones, A y B, que produce una
tercera relacin, C. Un rengln de A se conecta con uno de B para formar un nuevo rengln
en C, si es que las filas en A y B satisfacen las relaciones concernientes a sus valores. Por
ejemplo, A1 es un atributo en A y B1 es un atributo en B. La junta de A con B en la cual
A1<B1 resultar en una relacin, C, que tiene la concatenacin de las filas en A y B, en las
cules el valor de A1 es menor que el valor de B1.
Lenguaje de Definicin de Datos (LDD).- Lenguaje utilizado para describir la estructura
de una base de datos.
Lenguaje de Manipulacin de Datos (LMD).- Un lenguaje utilizado para describir el
procesamiento de una base de datos.
Llave.- Un grupo de uno o ms atributos que identifican un rengln nico en una relacin.
Debido a que las relaciones no pueden tener filas duplicadas, cada relacin debe tener
cuando menos una llave, que es la combinacin de todos los atributos de la relacin
Metadatos.- Datos referentes a la estructura de datos en una base almacenada en el
diccionario de datos. Los metadatos se utilizan para describir tablas, columnas,
restricciones, ndices, etc.
Metadatos de aplicacin.- Diccionario de datos; datos referentes a la estructura y
contenido de los mens de aplicacin, formas y reportes.
Modelo de datos.- (1) modelos de los requerimientos de datos de los usuarios, expresado
en trminos del modelo entidad-relacin, o del modelo objeto semntico. Algunas veces se
denomina modelo de datos de los usuarios. (2) lenguaje para la descripcin de la estructura
y procesamiento de una base de datos.
Modelo de datos relacional.- Modelo de datos en el cual se almacenan los datos en
relaciones y stas se representan en los renglones de la relacin mediante valores de datos.
Modelo entidad-relacin.- Las construcciones y convenciones que se utilizan para crear
un modelo de datos del usuario. Las cosas en el mundo del usuario estn representadas por
entidades, y las asociaciones entre stas estn representadas mediante relaciones.
Usualmente, los resultados se documentan en un diagrama entidad-relacin.
190
BASES DE DATOS
Normalizacin.- Proceso por el que se evala una relacin para determinar si est o no en
una forma normal especificada y, si es necesario, convertirla en relaciones que estn en
dicha forma normal especificada.
Particin horizontal.- Subconjunto de una tabla que consta de filas completas de la tabla,
por ejemplo, en una tabla con 10 filas, las primeras cinco filas.
Particin mezclada.- Una combinacin de una particin vertical y horizontal; por ejemplo,
en una tabla con cinco columnas y cinco filas, las primeras tres columnas de las primeras
tres filas.
Particin vertical.- Un subconjunto la las columnas de una tabla. Por ejemplo, en una tabla
con 10 columnas, las primeras cinco columnas.
Procesamiento concurrente.- En las aplicaciones de teleprocesamiento, es el hecho de que
varias transacciones compartan el CPU. A cada transaccin se le asigna el CPU de manera
circular o en alguna otra manera durante cierto perodo de tiempo. Las operaciones se
llevan a cabo tan rpidamente que a los usuarios les parecen simultneas. En las redes de
rea local y otras aplicaciones distribuidas, se utiliza el procesamiento concurrente para
referirse al procesamiento de aplicaciones (posiblemente simultneo) en computadoras
mltiples.
Procesamiento de base de datos distribuida.- Procesamiento de base de datos en el cual
se recuperan y actualizan los datos de las transacciones a travs de dos o as computadoras
independientes, y por lo general geogrficamente distribuidas.
Producto.- Una operacin relacional en dos relaciones, A y B, que produce una tercera C,
con C que contiene la concatenacin de cada rengln en con cada rengln de B.
Producto cartesiano.- Operacin relacional en dos relaciones, A y B, que produce una
tercera relacin, C; con C que contiene la concatenacin de cada rengln en A con cada
rengln en B.
Programa de aplicacin.- Un programa desarrollado de acuerdo con las necesidades del
cliente para el procesamiento de una base de datos. Puede escribirse en un lenguaje de
procedimientos estndar, como C++, C, Pascal o Visual Basic, o en un lenguaje nico para
el SGBD.
Registro.- (1) Un grupo de campos pertenecientes a la misma entidad; se utiliza en los
sistemas de procesamiento de archivos. (2) En un modelo relacional, un sinnimo de
rengln y tupla.
191
BASES DE DATOS
BASES DE DATOS
BASES DE DATOS
BASES DE DATOS
195
BASES DE DATOS
BIBLIOGRAFA
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
BASES DE DATOS
[18] Piatinni M., Lneas de evolucin de las bases de datos, NOVATICA, Especial 25
aniversario, edicin digital, ATI, may-jun, 2000.
[19] Piattini M., Castao, De Miguel A., Fundamentos y Modelacin de Bases de Datos.
Computec Ra-ma, Colombia, 1998.
[20] Post G., Sistemas de administracin de bases de datos, McGraw-Hill, 3era ed., 2006.
[21] Rob P., Coronel C., Sistemas de Bases de Datos. Diseo, implementacin y
administracin, ed. Thomson, Mxico, 2004.
[22] Sampalo de la Torre M.A, Leyva E., Garzn M.L, Prieto J., Informtica Volumen
III ed. MAD.
[23] Silberschatz, Korth, Sudarshan, Fundamentos de Bases de Datos, McGrawHill/Interamericana, 5 ed., China, 2006.
[24] http://dev.mysql.com/doc/refman/5.0/es/index.html
197