MP2 Libro Bases de Datos PDF
MP2 Libro Bases de Datos PDF
MP2 Libro Bases de Datos PDF
Bases de datos
Módulo 2A: BBDD
2. MODELO ENTIDAD-RELACIÓN...........................................................................34
4. NORMALIZACIÓN..............................................................................................70
2
Módulo 2A: BBDD
5.1. Tipos de lenguajes para gestionar los datos en un SGBDR corporativo ........................................ 81
6.3. Propiedades de las transacciones: atomicidad, consistencia, aislamiento y permanencia ........ 133
6.8. Recuperación ante errores. Mecanismos para deshacer transacciones ..................................... 138
BIBLIOGRAFÍA..................................................................................................... 144
WEBGRAFÍA........................................................................................................ 144
3
Módulo 2A: BBDD
Las bases de datos (BBDD) son una parte esencial e imprescindible en el ámbito de
los sistemas informáticos. Existen diversas perspectivas y definiciones sobre las
BBDD, pero nos vamos a centrar en aquellas relativas a la informática.
Una BBDD se puede definir como una agrupación de datos relacionados entre sí,
almacenados en formato digital, con una organización o estructura determinada,
de modo que se permite el acceso a dicha información con cierta rapidez.
Entre las propiedades más importantes de las BBDD podemos destacar las
siguientes:
4
Módulo 2A: BBDD
Las BBDD como concepto genérico, es decir, como idea de un conjunto de datos o
registros recopilados, organizados de algún modo y accesibles para un uso
posterior, está directamente relacionado con el origen de la historia humana, dado
que dicho origen se establece tras la invención de la escritura.
Se ha descubierto que muchos de los primeros escritos que se han hallado y
estudiado, como por ejemplo los de la antigua civilización sumeria, servían como
registro de las transacciones comerciales o como inventario. Por ejemplo, de la
cantidad de arroz recogido tras una cosecha o de animales de ganadería que
pertenecían a una persona tras una transacción comercial.
Toda esta información quedaba registrada de manera clara y organizada para poder
realizar posteriores consultas en caso de necesitarse.
Con el avance de la historia, este tipo de información fue registrándose cada vez
con mejores tecnologías: se pasó del uso de tablillas de arcilla al uso de
ordenadores digitales, pasando por tecnologías intermedias, como el papel y la
tinta.
5
Módulo 2A: BBDD
En este apartado, nos vamos a centrar en la evolución histórica de las BBDD desde
del siglo XX. Es decir, desde la aparición de la informática y la digitalización de la
información.
• 1900 – 1950
Se dan los primeros pasos de la informática con la invención del tubo de vacío,
la construcción de la primera puerta lógica AND, la máquina de Turing, la
primera máquina electromecánica (Harvard Mark I) o el diseño de la
arquitectura de von Neumann.
• Años 60
Aparecen sistemas por lotes (batchprocessing), que eran ejecuciones de
programas en los que no era necesario que el usuario tuviese que estar
controlando la máquina continuamente. Comienza la incipiente
comercialización de la informática y surge DatabaseTaskGroup dentro de
CODASYL. Por otro lado, IBM y American Airlines crean SABRE, un sistema de
control de pasajeros y vuelos de avión en Estados Unidos.
6
Módulo 2A: BBDD
• Años 70
Edgar Frank Codd crea y publica el modelo relacional de bases de datos. A raíz
de esa publicación, nace el sistema de BBDD de ORACLE. Aparece el modelo
entidad-relación, que facilita el diseño de las BBDD.
• Años 80
Fue a partir de los 80 cuando empezó a extenderse la informática y, con ella, las
BBDD. Anteriormente, las aplicaciones que gestionaban las BBDD estaban
diseñadas para ser gestionadas por personal muy cualificado. Para solventar
este problema surgió la estandarización, con un nuevo lenguaje de
programación denominado SQL. Este lenguaje produjo un estímulo en el
ámbito de las BBDD relacionales.
Fue entonces cuando aparecieron los primeros ordenadores personales,
capaces de manejar sistemas de gestión de BBDD a nivel de usuario.
7
Módulo 2A: BBDD
• Años 90
A principios de los noventa, nos encontrábamos con una distribución bastante
amplia de utilización de BBDD en todas las empresas, por lo que esta década se
caracteriza las mejoras en el rendimiento de los sistemas gestores.
Microsoft desarrolla el popular sistema gestor de BBDD: Microsoft Access.
Los Sistemas de Gestión de bases de datos (SGBD) de la época tenían que
servir, básicamente, para gestionar las distintas BBDD que utiliza cada usuario
en un ordenador personal.
8
Módulo 2A: BBDD
Ventajas
Desventajas
9
Módulo 2A: BBDD
Las BBDD son hoy la técnica más eficiente para guardar información de todo tipo de
una manera estructurada y accesible. En la sociedad actual, las BBDD están
presentes en múltiples ámbitos. Por ejemplo, en Educación, se puede mantener un
registro completo de todos los alumnos con sus respectivas calificaciones. En el de
la Sanidad se usan BBDD para almacenar toda la información de los pacientes, junto
con sus historiales médicos. La Banca la usa, por ejemplo, para guardar información
de sus clientes y sus cuentas bancarias. Incluso solo en un teléfono móvil se pueden
llegar a encontrar distintas BBDD para diversas aplicaciones.
En el ámbito de la informática, para almacenar información se utiliza un elemento
clave llamado fichero. Los ficheros, también denominados archivos, son una
secuencia de dígitos binarios que, siguiendo una estructura lógica determinada,
almacenan una información concreta, como, por ejemplo, un informe, una imagen,
una BD o una canción musical.
Tipos de ficheros
Según como sea el método de acceso a un fichero, podemos diferenciar entre los
siguientes tipos:
• Otros: existen otros tipos de ficheros, como los que usan las funciones
Hash, esto es, un algoritmo matemático que se utiliza para generar la
relación clave-posición de cada registro.
10
Módulo 2A: BBDD
Cerrar (close) Cierra el fichero, por lo que no se puede trabajar más con él.
11
Módulo 2A: BBDD
12
Módulo 2A: BBDD
13
Módulo 2A: BBDD
Tipos de BBDD
Existen diversos tipos de BBDD, pero en función del criterio que usemos para
categorizarlas, obtendremos distintas clasificaciones.
A continuación, vamos a listar los tipos de BBDD según su modelo de datos (cómo
están estructurados internamente) y según su ubicación.
Si nos guiamos por el criterio de la ubicación, podemos dividir las bases de datos en
centralizadas y distribuidas. Este punto lo estudiaremos un poco más adelante.
14
Módulo 2A: BBDD
Gestores de BBDD.
• Definición: especifican los tipos de datos, las estructuras y las restricciones que
se van a almacenar, asegurando la cohesión e integridad de estos.
• Construcción: proceso de almacenamiento de datos en algún medio controlado
por el SGBD. En esta función, podemos citar la posibilidad que deben tener
estos sistemas de gestión para que dicha BBDD se pueda conectar con el
exterior utilizando algún medio. El estándar más utilizado para estos casos es el
protocolo ODBC, que comunica la BD con una aplicación externa.
• Manipulación: incluye tareas como la manipulación y consulta de los datos
almacenados para obtener una información.
15
Módulo 2A: BBDD
Esquema de un SGBD.
16
Módulo 2A: BBDD
• SGBD comerciales: son aquellos que requieren una licencia de uso, de tal
modo que el usuario debe abonar un pago establecido para tener el
derecho al uso o redistribución del SGBD. Además, un SGBD comercial
puede ser de código cerrado, lo que significa que el usuario del SGBD no
tiene acceso al código fuente y, por tanto, no puede modificarlo.
• SGBD libres: son aquellos que no requieren de una licencia de uso por
parte del usuario, ni para la utilización ni para la distribución. Es común
que los SGBD libres, más allá de su uso gratuito, dispongan de código
abierto, de modo que el usuario pueda modificar el mismo SGBD.
Algunos de los SGBD libres más comunes son MySQL, PostgreSQL y
MariaDB.
Oracle es una empresa que ofrece un SGBD de tipo comercial (también ofrece otro libre) y MySQL
está más enfocado a los SGBD libres.
17
Módulo 2A: BBDD
Objetos SGBD.
Para que los SGBD puedan mantener la seguridad e integridad de todos los datos,
deben proporcionar una serie de herramientas a los usuarios, entre las que
podemos encontrar:
• Creación y especificación de los datos: crean la estructura física que se
requiera en cada unidad.
• Manipulación de los datos de las BBDD: añaden, modifican, suprimen o
consultan los datos.
• Recuperación: se lleva a cabo mediante la creación de copias de seguridad.
• Gestión de la comunicación de la BBDD.
• Creación de aplicaciones.
• Instalación de la BBDD.
• Exportación e importación de datos.
18
Módulo 2A: BBDD
19
Módulo 2A: BBDD
20
Módulo 2A: BBDD
21
Módulo 2A: BBDD
• On-Line:
- No deja que el programador defina los datos, sino que los define
directamente.
22
Módulo 2A: BBDD
• Nivel interno o físico: es el nivel que determina cómo están almacenados los
datos físicamente en el sistema informático. Este nivel concreta los detalles
de almacenamiento de cada conjunto de datos, tales como el tipo de dato
para cierto campo, el método de acceso a una tabla, etc.
Esta arquitectura permite a que el DBA cambie sin que los usuarios lo vean.
23
Módulo 2A: BBDD
Un modelo de BD determina la
estructura lógica que tendrá la
BD. Es decir, establece cómo
organizar, almacenar y
manipular los datos. Además,
también indica qué operaciones
se pueden llevar a cabo con los
datos.
Esquema jerárquico.
24
Módulo 2A: BBDD
Esquema en red.
• Modelo relacional: fue propuesto por Edgar Frank Codd en los años 70. Este
modelo organiza la información de la BD con el uso de relaciones y tuplas.
Una tupla se puede entender como un registro y una relación se puede
entender como una tabla. Una tabla contiene varios registros.
25
Módulo 2A: BBDD
La POO se ideó para BBDD adaptadas a estos lenguajes. Las BBDD orientadas
a objetos siguen esta misma filosofía. De este modo, se pretende que este
modelo de BBDD pueda solucionar las limitaciones que tienen las
relacionales.
Las BBDD orientadas a objetos son de las que más están creciendo en los
últimos años.
• Reglas de integridad del modelo: deben de cumplirse por el SGBD para que
no se pierda integridad cada vez que se realicen actualizaciones de los
programas.
26
Módulo 2A: BBDD
27
Módulo 2A: BBDD
Una base de datos centralizada es una base de datos que está almacenada de
manera íntegra en un solo lugar, es decir, en una misma máquina. Sin embargo y tal
y como se comentaba en el apartado anterior, una base de datos distribuida (BDD)
es un conjunto de BBDD que se encuentran lógicamente relacionadas. Esto significa
que se distribuyen en diferentes sitios, de forma que se necesita una interconexión
de red para comunicarse. A continuación, detallamos con más precisión cada una de
ellas:
Definición - Las BBDD centralizadas son aquellas que se encuentran almacenadas en una
única computadora, por lo que el sistema informático no interacciona con
ninguna otra máquina.
- Ejemplos de estos sistemas pueden ser BBDD básicas de un solo usuario o
BBDD de alto rendimiento, implantadas en grandes sistemas.
28
Módulo 2A: BBDD
29
Módulo 2A: BBDD
30
Módulo 2A: BBDD
• Particionadas: en este caso solo tenemos una copia de cada nodo. De todas
formas, cada nodo alojará algunos fragmentos de la BD. Esto hace que el
coste sea más reducido aunque, también, va a tener menos disponibilidad
que el anterior.
31
Módulo 2A: BBDD
Arquitectura.
32
Módulo 2A: BBDD
Las BBDD múltiples actúan como una interfaz de varios componentes diferentes.
Una BD múltiple cuenta con distintas operaciones que facilitan el acceso a la
información, manteniendo la consistencia de esta y ofreciendo un acceso uniforme
a los servicios.
33
Módulo 2A: BBDD
2. Modelo entidad-relación
• El diagrama entidad-relación.
• Las restricciones y otras anotaciones que no se pueden representar en el
diagrama (como las claves candidatas).
34
Módulo 2A: BBDD
35
Módulo 2A: BBDD
36
Módulo 2A: BBDD
37
Módulo 2A: BBDD
La relación sirve para escenificar las conexiones entre las diferentes entidades,
dándoles así un significado semántico más completo.
La palabra escogida para identificar la relación acostumbra a ser un verbo e indica la
relación existente entre dichas entidades. Este puede estar en infinitivo o en una
forma verbal, normalmente Presente.
Se pueden representar gráficamente mediante un rombo:
38
Módulo 2A: BBDD
Cardinalidad
La cardinalidad representa la participación que hay entre las entidades, es decir, el
número de instancias de una entidad respecto a otra entidad con la que está
relacionada y viceversa.
Pues bien, la cardinalidad nos indicará si un cliente genera una factura o muchas
facturas. Y al revés también. La cardinalidad nos indicará si una factura puede ser
generada por un cliente o por muchos clientes. Las cardinalidades posibles son: de
uno a uno, de uno a muchos y de muchos a muchos.
39
Módulo 2A: BBDD
CARDINALIDAD EXPLICACIÓN
1:1 (Uno a uno) Este caso ocurre cuando las instancias de dos
entidades están relacionadas, como máximo, con solo
una instancia de la otra entidad. Es decir, que no
habrá una instancia de una entidad que pueda
relacionarse con dos o más instancias de la otra
entidad, sino solo con una, como mucho.
En este caso se indica que un entrenador, como máximo, dirigirá a un equipo. Y que
un equipo será dirigido, como máximo, por un entrenador.
40
Módulo 2A: BBDD
Este caso indica que un cliente puede generar muchas facturas, pero que cada
factura pertenecerá un solo cliente.
Y en este caso se indica que un alumno puede estudiar muchas asignaturas y que
cada asignatura puede ser estudiada por muchos alumnos.
Nota: Si hay que poner una segunda N, la segunda N se transforma en una M (se
hace así por convenio), pero su significado se mantiene invariable.
Participaciones
En este caso se indica que un alumno debe estudiar, como mínimo, una asignatura
y, como máximo, muchas. Esto se representa con: (1,n)
Y por otro lado, la expresión (0,n) nos indica que una asignatura puede ser
estudiada por ningún alumno, como mínimo, o por muchos alumnos, como
máximo.
41
Módulo 2A: BBDD
PARTICIPACIÓN DESCRIPCIÓN
42
Módulo 2A: BBDD
Línea de Factura es una entidad débil, dado que depende de Factura, que es su
entidad Fuerte.
Línea de factura no nos puede asegurar que cada instancia que tenga no se repita,
dado que podría ocurrir que dos facturas distintas tuviesen una línea de factura
con el número “3” y con “leche” como Artículo.
Sin embargo, la entidad Factura es una entidad fuerte, dado que nunca habrá dos
facturas con el mismo código.
43
Módulo 2A: BBDD
Las entidades débiles tienen identificador, que se representa con una línea
subrayada discontinua. La entidad débil necesitará su identificador junto a la clave
primaria de su entidad fuerte (en este ejemplo, código de factura) para poder
distinguir de manera unívoca cada instancia.
44
Módulo 2A: BBDD
45
Módulo 2A: BBDD
46
Módulo 2A: BBDD
• Generalización/especialización
INCLUSIVA (O SOLAPAMIENTO)
EXCLUSIVA (O DISJUNTA)
Cuando un ejemplar del supertipo solo puede
pertenecer a un subtipo
47
Módulo 2A: BBDD
Dado que no podría ser ambos subtipos a la vez, nos encontramos ante una relación
exclusiva.
Ejemplo de exclusividad.
Ejemplo de inclusividad.
48
Módulo 2A: BBDD
TOTALIDAD
Cuando todo ejemplar del supertipo debe
pertenecer a algún subtipo
PARCIALIDAD
Cuando hay ejemplares del supertipo que no
pertenecen a ningún subtipo
49
Módulo 2A: BBDD
Por ejemplo, imaginemos una entidad Restaurante. Las instancias de dicha entidad
deberán tener sí o sí algún subtipo, en este caso, todos los restaurantes o bien
pertenecen al subtipo Con estrella o bien al subtipo de Sin estrella, pero en ningún
caso podrán no pertenecer a ninguno de los subtipos.
Ejemplo de totalidad.
Ejemplo de parcialidad.
50
Módulo 2A: BBDD
Por tanto, los diferentes tipos en los que podemos diferenciar una relación
jerárquica van a ser los siguientes:
Exclusiva total
Exclusiva parcial
Solapada total
Solapada parcial
51
Módulo 2A: BBDD
Debemos tener claro que una entidad jerárquica, sea exclusiva o inclusiva, es
independiente a que sea total o parcial.
52
Módulo 2A: BBDD
53
Módulo 2A: BBDD
54
Módulo 2A: BBDD
3. Modelo relacional
La idea básica del modelo relacional consiste en representar las BBDD como un
conjunto de relaciones interrelacionadas entre sí. Para entender mejor este
concepto podemos visualizar cada relación como una tabla, donde cada columna es
un atributo y cada fila de la tabla un registro o tupla.
Los términos principales del modelo relacional son los siguientes:
• Tupla: cada una de las filas de una tabla. También puede llamarse registro.
• Atributo: cada columna de las que consta una determinada tabla. Un
atributo podría ser nombre, fecha, código…
• Dominio: el rango de posibles valores que se asigna inicialmente a un
atributo determinado. Por ejemplo, en un atributo código se podría
determinar como dominio los números enteros, o en un atributo nombre se
podría establecer como dominio cualquier cadena de texto.
• Grado: el número de atributos de una relación.
• Cardinalidad: el número de tuplas de una relación, es decir, es el número de
registros en la tabla.
• BD relacional: conjunto de relaciones normalizadas.
55
Módulo 2A: BBDD
Valor Atributo
Relación socio.
56
Módulo 2A: BBDD
Nombre Función
Dpto1 Ventas
Dpto2 Estadística
Dpto3 Compras
Relación departamento.
57
Módulo 2A: BBDD
Las propiedades que deben cumplir todas las relaciones son las siguientes:
• Cada relación debe tener asignado un nombre distinto al de las demás
relaciones. Por ejemplo: no puede haber dos relaciones que se llamen
cliente.
• Cada relación tiene un número fijo de atributos para todas las tuplas.
Por ejemplo, si una relación tiene como atributos DNI, Nombre y Teléfono,
no puede haber ninguna fila, es decir, ninguna tupla de esa tabla que posea
cuatro atributos.
• Cada atributo tiene un único dominio.
Por ejemplo, el atributo edad tiene como dominio solo los números enteros
positivos.
• No importa el orden de los atributos.
Por ejemplo, estas dos relaciones son equivalentes:
58
Módulo 2A: BBDD
Según su cardinalidad:
• Claves simples (o atómicas): están compuestas por un solo atributo.
• Claves compuestas: están compuestas por dos o más atributos.
59
Módulo 2A: BBDD
60
Módulo 2A: BBDD
61
Módulo 2A: BBDD
La integridad es uno de los objetivos que deben cumplir los SGBD. Gracias a la
integridad de los datos se dificulta la pérdida de estos.
Parte de este objetivo puede cumplirse si se cumple la coherencia y veracidad de la
información de la BD. Cabe tener en cuenta que las operaciones de inserción,
borrado y modificación de tuplas pueden afectar a la integridad. Si el SGBD no
asegura desde un principio la integridad, esta debe ser garantizada por las
aplicaciones.
Para mantener la integridad de la BD hay que tener en cuenta algunas restricciones,
como por ejemplo, cada vez que se inserte o se modifique algún valor del atributo.
Las principales restricciones que deben cumplirse en todas las BBDD son:
• Reglas de la integridad de la entidad
- Ningún atributo (o campo) que forme parte de la clave primaria puede
ser nulo (Nulo= ausencia de valor, valor desconocido).
- Se deben realizar comprobaciones en cada inserción y modificación.
62
Módulo 2A: BBDD
Nulos no permitidos
No se admiten valores nulos de la clave ajena. Tienen que coincidir siempre con un
valor de la clave primaria.
Restringido
Un valor de clave primaria no puede ser modificado ni borrado si existe alguna tupla
en otra R que lo contenga como clave ajena.
Transmisión en cascada
Si borramos o modificamos una tupla de R que contiene la clave primaria
referenciada en otra R diferente por una clave ajena, se producirá el borrado o
modificación en cascada de todas las tuplas de la otra R que contengan esa clave
como ajena.
Puestas a nulos
El borrado o modificación de una tupla de una R que contiene la clave primaria
referenciada en otra R por una clave ajena producirá la puesta a nulo del valor de la
clave ajena en todas las tuplas de la otra R que contengan esa clave como ajena.
63
Módulo 2A: BBDD
A continuación, vamos a especificar cada uno de los posibles casos que nos
podemos encontrar al pasar del modelo entidad-relación al modelo relacional.
64
Módulo 2A: BBDD
Dentro de cada uno de los tres casos, podemos diferenciar distintos subcasos que
veremos a continuación.
65
Módulo 2A: BBDD
66
Módulo 2A: BBDD
En este subcaso se crearán dos tablas, una por cada entidad, de tal modo
que en la nueva tabla de la entidad que en el diagrama del modelo
entidad-relación estaba en la parte del (0,1) heredará la clave primaria de
la otra entidad, convirtiéndose esta en clave ajena tal que así:
67
Módulo 2A: BBDD
En este subcaso se creará una tabla por cada entidad y además una
nueva tabla para la relación. La nueva tabla tendrá las dos claves
primarias de ambas entidades como ajenas, siendo la clave primaria de
la tabla relación la misma que estuviese en la entidad con la cardinalidad
(1,n), es decir, en la parte del (1,n).
68
Módulo 2A: BBDD
En este subcaso se creará una tabla por cada entidad y, además, una nueva tabla de
la relación que estará formada por las dos claves primarias de las entidades, siendo
ajenas en la nueva tabla. La clave primaria estará formada por ambas claves.
69
Módulo 2A: BBDD
4. Normalización
La normalización es una técnica ideada por Edgar Frank Codd que consiste en
aplicar unos requisitos y restricciones a las tablas que obtenemos en el modelo
relacional tras haber ejecutado el proceso del paso del modelo entidad-relación al
relacional.
70
Módulo 2A: BBDD
71
Módulo 2A: BBDD
72
Módulo 2A: BBDD
73
Módulo 2A: BBDD
74
Módulo 2A: BBDD
75
Módulo 2A: BBDD
76
Módulo 2A: BBDD
Para que una tabla esté en segunda forma normal (2FN) debe cumplir los siguientes
requisitos:
1. Estar en primera forma normal
2. Todos los atributos no claves deben tener una dependencia funcional
completa de los atributos que sí forman la clave (no debe haber
dependencia parcial)
Veamos el siguiente ejemplo, donde la clave primaria está compuesta por CodLibro
y CodTienda:
77
Módulo 2A: BBDD
Para que una tabla esté en tercera forma normal (3FN) debe cumplir los siguientes
requisitos:
1. Estar en 2FNl
78
Módulo 2A: BBDD
La Forma normal Boyce-Codd (FNBC) es una versión de la 3FN un poco más estricta.
Decimos que una relación está en FNBC cuando está en 3FN y todos sus atributos
no clave son clave candidata.
• En la cuarta forma normal (4FN) se requiere que una tabla esté en 3FN y no
haya dependencias multivaluadas no triviales
• En la quinta forma normal (5FN) se requiere que una tabla esté en 4FN y
cada dependencia de unión se implique por las claves candidatas
4.8. Desnormalización
79
Módulo 2A: BBDD
80
Módulo 2A: BBDD
En este tema vamos a explicar algunos de los tipos de lenguajes existentes que se
pueden usar para la gestión y desarrollo de una BD en un SGBDR corporativo, por
tanto, en esta categoría no incluiremos los lenguajes para SGBD tipo freeware,
como podría ser SQLite.
Para Oracle
PL/SQL es un lenguaje procedural usado en Oracle RDBMS (Relational Data Base
Management System). PL/SQL es el acrónimo de Procedural Language / Structured
Query Language. Al igual que la mayoría de lenguajes de BD, PL/SQL está basado en
SQL y además soporta algunas características extra sobre el control de excepciones,
el manejo de las variables o en las estructuras de control de flujo.
Los lenguajes procedurales son propios de la programación estructurada y usan
llamadas a rutinas, las cuales tienen un conjunto de sentencias. PL/SQL es un
lenguaje procedural orientado a SQL.
Para Microsoft
SQL server es un SGBDR de la empresa Microsoft. El lenguaje usado en SQL server
es T-SQL, acrónimo de Transact-SQL. Dicho lenguaje deriva del estándar SQL, pero al
igual que PL/SQL añade la opción de trabajar con procedimientos. Es un lenguaje
muy potente que nos da muchas posibilidades para manejar una BD.
81
Módulo 2A: BBDD
MySQL Workbench
Es una herramienta gráfica para la creación, desarrollo y
mantenimiento de BBDD para el SGBD de MySQL server.
Posee una versión freeware mantenida por la
comunidad y otra versión privada, perteneciente a la
empresa Oracle.
Maria DB
Es otra herramienta gráfica para la
gestión de una BD de MySQL, pero está
desarrollada por la comunidad y su
desarrollo está liderado por algunos de
los primeros desarrolladores de MySQL.
Tiene una licencia de software libre.
PhpMyAdmin de MySQL
Es una herramienta que nos ayuda a manejar un SGBD como MySQL a través de la
web. Esta herramienta tiene licencia de software libre. Tiene una interfaz muy
intuitiva y soporta todas las características de MySQL. Dispone de diferentes
opciones que nos permiten visualizar cualquier
gestión que realicemos en la BD como crear,
modificar o borrar tablas. Y también permite
importar y exportar información, estadísticas,
copias de seguridad, etc.
82
Módulo 2A: BBDD
83
Módulo 2A: BBDD
https://dev.mysql.com/downloads/mysql/
Nos aparecerá una página web como la que se muestra abajo. Debemos hacer clic
en Go to Download Page para continuar:
84
Módulo 2A: BBDD
3. A continuación, nos
pedirá si deseamos
registrarnos para comenzar
la descarga. En nuestro
caso, elegiremos la opción
de No thanks, just start my
download para
descargarnos el fichero.
Una vez realizados estos pasos, el archivo que contiene MySQL Server se
descargará en nuestra máquina local. El próximo paso será instalarlo.
85
Módulo 2A: BBDD
En este caso, vamos a optar por la opción Full para instalarnos todas las
herramientas disponibles en MySQL y, después, haremos clic en Next.
86
Módulo 2A: BBDD
5. En este punto, la instalación nos informará de todos los programas que hay que
tener instalados en la máquina para que MySQL Server funcione correctamente. Es
posible que algunos programas ya los tuviéramos previamente instalados, por
tanto, MySQL instalará algunos programas de manera automática, pero es posible
que haya otros programas requeridos que tengamos que instalar a mano.
Es decir, aquellos programas requeridos que MySQL no instale automáticamente,
tendremos que descargarlos e instalarlos por nuestra cuenta.
87
Módulo 2A: BBDD
Al final del proceso, nos aparecerá un listado de los programas instalados. Después
debemos clic en Next.
88
Módulo 2A: BBDD
89
Módulo 2A: BBDD
90
Módulo 2A: BBDD
91
Módulo 2A: BBDD
10. Veamos ahora el servicio que MySQL Server habilita en Windows. En nuestro
caso, lo dejamos como está por defecto y clicamos en Next.
92
Módulo 2A: BBDD
93
Módulo 2A: BBDD
94
Módulo 2A: BBDD
95
Módulo 2A: BBDD
2. Observamos una cantidad de elementos que nos ofrece MySQL que podemos
incorporar: ejemplos, documentación, consola (shell). En nuestro caso, nos interesa
incorporar MySQL Workbench. Así que elegimos una versión de Workbench y la
volcamos a la parte de la derecha para que sea incluida.
96
Módulo 2A: BBDD
3. Llegados a este punto, hacemos clic en Execute para que el programa instalador
descargue e instale MySQL Workbench.
97
Módulo 2A: BBDD
4. Una vez finalizado con éxito el paso anterior, ya tendremos disponible MySQL
Workbench en nuestro sistema.
98
Módulo 2A: BBDD
99
Módulo 2A: BBDD
En esta ocasión pulsaremos el botón de Nueva para crear una nueva conexión al
servidor. Dejaremos la IP del servidor (que nos aparecerá por defecto 127.0.0.1). A
continuación, introduciremos la contraseña que definimos para el servidor. En
nuestro caso root.
100
Módulo 2A: BBDD
Una vez configurada la conexión, podremos cambiarle el nombre. Cuando esté todo
listo, pulsaremos en Abrir.
El entorno grafico del cliente de SQL es el siguiente:
101
Módulo 2A: BBDD
Crear BD
Para crear una BD usamos el comando “CREATE DATABASE”. Hay que diferenciar lo
que es crear una BD y crear una tabla. En una BD pueden existir muchas tablas.
Ejemplo en MySQL:
102
Módulo 2A: BBDD
Para la elección del nombre de tabla en SQL debemos cumplir las siguientes
condiciones:
• Máximo de 30 caracteres.
• Solo se permiten las letras, los números, el signo de subrayado “_” y los
caracteres “$” y “#” (aunque no son los más recomendados).
Ejemplo en MySQL:
- Con PRIMARY KEY indicamos al SGBD que ese atributo es la clave primaria de la
tabla.
- Con NOT NULL indicamos al SGBD que ese atributo siempre debe tener algún
valor, es decir, no puede crearse un registro en esa tabla sin asignar un valor a ese
atributo.
- Con DEFAULT indicamos al SGBD el valor que queremos que ese atributo tenga por
defecto.
103
Módulo 2A: BBDD
El nombre de los tipos de variables puede cambiar según qué variante de SQL
usemos. Algunos de los existentes en MySQL son:
https://dev.mysql.com/doc/refman/8.0/en/data-types.html
En el estándar SQL o en variantes como Oracle SQL, los tipos de datos pueden
codificarse de manera distinta:
104
Módulo 2A: BBDD
105
Módulo 2A: BBDD
Ejemplo en MySQL:
DROP TABLEterritorio_info;
Modificación de la tabla
Para modificar una tabla usamos el comando ALTER TABLE. Existen varias opciones
para hacerlo. Podemos añadir, modificar o eliminar columnas de una tabla, así
como activar o desactivar restricciones.
En el siguiente formato podemos ver todas las opciones de esta cláusula:
106
Módulo 2A: BBDD
- MODIFY/CHANGE:
- DROP:
Ejemplos en MySQL:
Para eliminar una columna de una tabla usamos el comando ALTER TABLE… DROP
COLUMN …, en el que indicamos la tabla a la que nos referimos y la columna que se
queremos borrar:
107
Módulo 2A: BBDD
Para eliminar la clave primaria de una columna usamos el comando ALTER TABLE…
DROP PRIMARY KEY. Ojo, se borra la condición de clave primaria de un atributo, no
el atributo. Tan solo debemos indicar en el comando el nombre de la tabla:
Para lo contrario, es decir, para dotar como clave primaria a un atributo de una
tabla usamos el comando ALTER TABLE … ADD PRIMARY KEY( ), indicando entre los
paréntesis el atributo que se desea hacer clave primaria:
Para insertar un atributo nuevo, es decir, una columna nueva en una tabla usamos
el comando ALTER TABLE … ADD …, indicando el nombre de la tabla, el nombre del
atributo, su tipo de dato y las restricciones que pudiese tener, tal y como se realiza
en la creación de la tabla:
Para modificar una columna podemos utilizar el comando ALTER TABLE… MODIFY…,
donde se indica el nombre de la tabla y las nuevas propiedades de ese atributo. En
este ejemplo dotamos de la propiedad de autoincrementarse a la columna del id:
108
Módulo 2A: BBDD
Restricciones
Las restricciones en las BBDD hacen que las estructuras sean más eficaces, lo cual
facilita la manipulación de los datos por parte de los usuarios.
Hay distintos tipos de restricciones:
- Clave primaria (PRIMARY KEY)
109
Módulo 2A: BBDD
Para terminar, vamos a ver unos ejemplos de cómo serían las distintas
restricciones que podemos definir en MySQL:
En este caso hemos creado la misma tabla que en el ejemplo anterior, pero
hemos añadido restricciones de forma diferente. Tanto la clave primaria
como los campos obligatorios (NOT NULL) se implementan a nivel de campo,
pero la restricción de la clave foránea se está creando a nivel de tabla, donde
iniciamos la restricción con la palabra reservada (CONSTRAINT) y, a
continuación, un nombre que le damos a la restricción (cf_cp).
Seguidamente, nos encontramos con el tipo de restricción (FOREIGN KEY) y
como es una clave ajena, entonces le tenemos que indicar a qué clave de
otra tabla se refiere (REFERENCES).
110
Módulo 2A: BBDD
También podemos hacer uso de las restricciones en las sentencias ALTER para
añadir, modificar o eliminar alguna restricción:
REFERENCES oficinas;
En este caso, podemos ver cómo se modifica una tabla añadiéndole una
restricción a un campo existente, ya que ahora es una clave foránea de una
clave principal (Código) de la tabla Oficinas.
111
Módulo 2A: BBDD
- INSERT
- UPDATE
- DELETE
112
Módulo 2A: BBDD
Ejemplo en MySQL
Pongamos que partimos de la siguiente tabla que tiene información relativa a los
pueblos y ciudades de un país:
INSERT INTO municipios (id, nombre, poblacion) VALUES (11, "Valencia", 794000);
Existe otra posibilidad a la hora de introducir valores a todas las columnas de una
tabla. No hace falta especificar el nombre de las columnas, como en el ejemplo
anterior. El orden de los valores debe coincidir con el orden de los campos creados
en la tabla.
INSERT INTOnombre_tabla
VALUES(valor1, valor2, valor3, ...);
113
Módulo 2A: BBDD
Ejemplo en MySQL
Podríamos realizar una consulta como la del ejemplo anterior, pero sin especificar el
nombre de cada atributo, siempre y cuando pongamos los valores del nuevo
registro en el mismo orden que se estableció en los atributos de la tabla.
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2,...
WHERE condicion;
Ejemplo en MySQL
ID NOMBRE POBLACIÓN
11 Valencia 794000
12 Málaga 574000
114
Módulo 2A: BBDD
Obtendríamos una actualización del campo población del registro, cuyo id tiene el
valor de 11, de modo que el contenido de la tabla quedaría así:
ID NOMBRE POBLACIÓN
11 Valencia 800000
12 Málaga 574000
Sin embargo, si hacemos una actualización sin especificar la cláusula del WHERE,
actualizaremos el valor de todos los registros de la tabla. Por ejemplo, imaginemos
que sobre la tabla anterior queremos cambiar el valor del atributo nombre de
“Málaga” a “Sevilla”, pero no especificamos nada en la parte del WHERE, de modo
que indicáramos esta sentencia:
ID NOMBRE POBLACIÓN
11 Sevilla 800000
12 Sevilla 574000
Habríamos cambiado el valor del atributo nombre de todos los registros de la tabla
y no solo del registro que nos interesaba.
115
Módulo 2A: BBDD
Ejemplo en MySQL
ID NOMBRE POBLACIÓN
11 Valencia 800000
12 Málaga 574000
13 Zaragoza 674000
116
Módulo 2A: BBDD
En MySQL, para eliminar todos los registros de una tabla, y por tanto dejarla vacía,
podemos usar DELETE FROM sin la cláusula WHERE, pero disponemos también del
comando TRUNCATE, que permite eliminar todos los registros de una tabla de una
manera más rápida y eficiente:
TRUNCATE municipios;
117
Módulo 2A: BBDD
Ejemplo en MySQL
Supongamos que partimos de la tabla municipios con el siguiente contenido:
ID NOMBRE POBLACIÓN
11 Valencia 800000
12 Málaga 574000
13 Zaragoza 674000
14 Sevilla 688000
Para obtener toda la información de esta tabla, es decir, para obtener todos los
registros de la tabla junto con todos sus campos deberíamos realizar la siguiente
orden:
Esta sentencia nos devolvería los cuatro registros de la tabla con tres campos cada
uno, tal como se muestra en la tabla anterior.
Con el símbolo * indicamos que deseamos ver todos los campos de cada registro.
Sin embargo, si quisiéramos ver todos los registros de la tabla, pero que solo
aparezca el nombre de cada uno, deberíamos realizar la siguiente sentencia:
118
Módulo 2A: BBDD
NOMBRE
Valencia
Málaga
Zaragoza
Sevilla
119
Módulo 2A: BBDD
Ejemplo en MySQL
Supongamos que partimos de la tabla municipios con sus cuatro registros (Valencia,
Málaga, Zaragoza y Sevilla) y queremos que el SGBD nos muestre el nombre y
número de habitantes de aquellos municipios que posean más de 600.000
habitantes. Para tal propósito, podemos realizar la siguiente sentencia:
NOMBRE POBLACIÓN
Valencia 800000
Zaragoza 674000
Sevilla 688000
El valor por defecto sería Ordenar de manera ascendente, por tanto, no habría que
indicarlo.
120
Módulo 2A: BBDD
Ejemplo en MySQL
Supongamos que queremos que el SGBD nos devuelva el id y nombre de todos los
municipios de la tabla ordenados por número de habitantes, de menor a mayor. Es
decir, de forma ascendente. Para tal propósito usaríamos la siguiente sentencia:
ID NOMBRE
12 Málaga
13 Zaragoza
14 Sevilla
11 Valencia
Las dos cláusulas que hemos visto en este apartado se pueden complementar con
una consulta con restricción y que sus valores salgan ordenados.
121
Módulo 2A: BBDD
Ejemplo en MySQL
Podríamos combinar dos de los requerimientos anteriores, es decir, que solo
aparezcan los municipios de más de 600.000 habitantes y que aparezcan ordenados
de menor a mayor. Para tal propósito, usaríamos esta sentencia:
ID NOMBRE
13 Zaragoza
14 Sevilla
11 Valencia
122
Módulo 2A: BBDD
SELECT columna1,funcion_agregacion(nombre_columna)
FROM nombre_tabla
WHERE condicion
GROUP BY nombre_columna;
SELECT columna1,columna2….
FROM nombre_tabla
WHERE columna IS NULL / IS NOT NULL
123
Módulo 2A: BBDD
SELECT tabla.columna1,tabla.columna2….
FROM nombre_tabla1, nombre_tabla2
WHERE tabla1.campo_clave=tabla2.campo_clave_ajena;
124
Módulo 2A: BBDD
SELECT cSignatura
FROM TPrestamo
WHERE Cnif = (SELECT Cnif
FROM TSocio
WHERE cApellidos = “Robinson González”
AND cNombre = “Paula”);
125
Módulo 2A: BBDD
Para que esta operación se pueda llevar a cabo de una forma satisfactoria debe
cumplir las siguientes condiciones:
• Las consultas, de forma individual, deben tener el mismo número de campos y
con los mismos tipos de datos representados en el mismo orden.
• Por defecto, este operador solo selecciona para sus resultados los valores
distintos de los campos que lo forman. En el caso de desear valores
duplicados, tendríamos que añadir la opción UNION ALL.
Ejemplo:
UNION
De igual manera que hay una cláusula para la unión, hay una sentencia para la
diferencia: EXCEPT o INTERSERCT. Tiene el mismo formato que la sentencia
anterior, es decir, la diferencia de los resultados de dos consultas.
126
Módulo 2A: BBDD
Ejemplo:
SELECT productID
FROM production.product
INTERSECT
SELECT productID
FROM production.workorder
En el siguiente apartado vamos a ver los INNER JOIN, junto con sus variantes LEFT y
RIGHT JOIN. El objetivo de todas las sentencias JOIN es calcular la intersección entre
dos tablas o relaciones.
Es una segunda forma de realizar consultas donde intervengan varias tablas.
Su formato es el siguiente:
SELECT columna(s)
FROM tabla1
INNER JOIN tabla2
ON tabla1.columna=tabla2.columna;.
Una variedad de esta sentencia es RIGHT JOIN. Esta devuelve las tuplas comunes a
las dos tablas y no comunes de la segunda tabla. Mientras que la cláusula LEFT JOIN
devuelve las comunes y no comunes de la primera tabla.
A continuación, vamos a explicar las sentencias anteriores con un ejemplo:
SELECT columna(s)
FROM tabla1
RIGHT JOIN tabla2
ON tabla1.columna=tabla2.columna;
SELECT columna(s)
FROM tabla1
LEFT JOIN tabla2
ON tabla1.columna=tabla2.columna;
127
Módulo 2A: BBDD
Ejemplo:
Para seleccionar solo los valores DISTINCT de la columna País en la tabla
Consumidores.
Ejemplo:
SELECT COUNT(idConsumidor), Pais
FROM Consumidores
GROUP BY Pais
HAVING COUNT(idConsumidor) > 5;
128
Módulo 2A: BBDD
129
Módulo 2A: BBDD
Tabla PAÍSES
ID NOMBRE EXTENSIÓN
33 Francia 506000
34 España 644000
130
Módulo 2A: BBDD
Tabla MUNICIPIOS
131
Módulo 2A: BBDD
132
Módulo 2A: BBDD
133
Módulo 2A: BBDD
Debemos saber que una transacción comienza con el comando BEGIN o START
TRANSACTION y puede acabar, como vimos anteriormente, en COMMIT o en
ROLLBACK, para confirmar la transacción realizada, en el caso de COMMIT, o para
deshacer los cambios realizados desde el comienzo de la transacción, en el caso de
ROLLBACK.
134
Módulo 2A: BBDD
Ejemplo en MySQL
Supongamos que partimos de estos datos de la tabla MUNICIPIOS:
START TRANSACTION;
UPDATE municipios SET nombre = "Montpellier" WHERE id=130;
UPDATE municipios SET nombre = "Pontevedra" WHERE id=120;
COMMIT;
135
Módulo 2A: BBDD
• Dirty Read (lectura sucia): cuando una transacción consulta datos escritos de
otra que aún no ha sido confirmada.
Uno de los principales problemas que se ocasionan en las transacciones de los datos
de una BD es que se solicite el acceso a un mismo dato desde dos lugares
diferentes. En esa situación se necesita un control de concurrencia para dar una
solución.
El encargado de este control de concurrencia es el planificador. Este va a realizar
diferentes esquemas para que las transacciones no se solapen entre ellas.
Siempre es conveniente que el planificador no realice ningún cambio en el sistema,
tanto si las transacciones se ejecutan de forma concurrente, como si lo hacen una
detrás de otra.
Veamos qué tipo de técnicas podemos utilizar para evitar este tipo de problemas:
136
Módulo 2A: BBDD
• Técnicas pesimistas
Las marcas de tiempo se utilizan para que exista un único identificador para
cada transacción. Estas marcas deben ir en orden para poder el acceso a los
diferentes datos sin que estos se solapen.
• Técnicas optimistas
137
Módulo 2A: BBDD
6. Problemas físicos.
• Fallos que pierden contenido de la memoria estable como, por ejemplo, los
discos.
• Cuando se daña una parte de la BD: se puede restaurar una copia previa al
fallo y reconstruir un nuevo estado volviendo a realizar las operaciones que
ya están almacenadas.
138
Módulo 2A: BBDD
Una vista es una consulta preestablecida sobre una o varias tablas de una BD. Las
vistas no forman parte del esquema físico de la BD, sino que son tablas virtuales. Si
una vista ya creada está basada en unas tablas y la información de dichas tablas es
modificada, la próxima vez que se invoque a esa vista, la información también
estará actualizada. Esto es debido a que las vistas no almacenan la información de
las tablas, sino que se guarda la estructura de la propia vista, que es una consulta.
Creación
139
Módulo 2A: BBDD
Una vez que ya se han creado las vistas, se pueden utilizar de la misma forma que si
fueran tablas.
FROM empleados
Cuando definimos una vista es habitual que usemos la sintaxis CREATE OR REPLACE.
Por lo tanto, se puede utilizar para crear o modificar una vista ya definida
previamente.
Tipos de vistas
En función del número de tablas que conforman la vista podemos diferenciar entre
dos tipos de vistas:
• Simples: son aquellas que están formadas por una única tabla y no tienen
ninguna función de agrupación. Permiten operaciones DML.
• Complejas: son aquellas que están formadas por más de una tabla y sí
utilizan funciones de agrupación. No permiten operaciones DML.
140
Módulo 2A: BBDD
Podríamos crear una vista simple que nos mostrase solo los Municipios de Francia y
solo los campos de Nombre y Población:
NOMBRE POBLACIÓN
Montpellier 83000
Lyon 513000
141
Módulo 2A: BBDD
En función de las operaciones de las vistas, podemos diferenciar entre dos tipos de
vistas:
• Las vistas pueden añadir información que no existe en las tablas, como
medias aritméticas o sumatorios.
Ejemplo en MySQL
Para eliminar la anterior vista que hemos creado de municipios_franceses
utilizaríamos la siguiente sentencia:
142
Módulo 2A: BBDD
Tipos de restricciones
La clave principal de una tabla, en la mayoría de los casos, suele ser una
columna o una combinación de columnas que van a tener una serie de
valores únicos y de esta manera, ofrecerán integridad.
La restricción de clave principal, cuando interviene más de una columna,
puede que se encuentre con estos valores duplicados en una misma
columna, así que, para cada combinación de valores, debemos definir esta
restricción de clave principal.
La tabla de nuestro ejemplo debe cumplir:
- La restricción de clave principal solo va incluida en una tabla.
Hacen referencia a una o varias columnas que van a ser utilizadas para crear
diferentes vínculos entre las distintas tablas. La intención es que estos
puedan ser almacenados en una tabla de clave externa. Podemos decir que
para que se cree vínculo entre dos tablas, una columna de una de las tablas
debe hacer referencia a otra columna que actúa como clave principal de la
otra.
Deben cumplir:
- Solo admite operaciones de DELETE cuando tiene más de 253
referencias de clave.
143
Módulo 2A: BBDD
Bibliografía
Webgrafía
• https://sites.google.com/site/carlospesrivas/recursos/informatica-ciclos-
formativos-de-grado-superior
• http://apuntes-fp.blogspot.com.es/p/apuntes.html
• https://ardillan.xyz/dam-desarrollo-de-aplicaciones-multiplataforma/
144
Módulo 2A: BBDD