Apndice B

Anuncio
Apéndice B
Introducción a las bases de datos y al
lenguaje MySQL.
Puesto que el presente proyecto está íntimamente relacionado con las
bases de datos, en este apéndice se presenta una breve introducción a
este método de almacenamiento y consulta de información y a uno de los
lenguajes de gestión de bases de datos más relevantes hoy en día: el
lenguaje MySQL.
El apartado B.1 contiene una visión general sobre la teoría de bases de
datos, mostrando los conceptos fundamentales de las mismas, mientras
que el apartado B.2 contiene una introducción al lenguaje MySQL.
B.1.- Bases de datos [5]
Una base de datos no es más que un conjunto organizado de datos que
es utilizado por determinadas aplicaciones para consultar y/o almacenar
información.
Una base de datos por sí sola carece de sentido si no está respaldada por
un sistema que permita al usuario interactuar con dicha base de datos.
173
Proyecto Fin de Carrera
B.1.1.- Sistema de bases de datos
Una sistema de bases de datos es un sistema informatizado cuyo
propósito es el almacenamiento y la consulta de datos. Está formado por
cuatro componentes fundamentales:
-
Datos: es la información almacenada, que es compartida por todos
los usuarios de la base de datos.
-
Hardware: está compuesto por las unidades de almacenamiento,
en las que residen físicamente los datos almacenados, y por todos
los dispositivos necesarios para llevar a cabo las operaciones de
entrada/salida requeridas por los procesos de actualización y
consulta de la base de datos. El hardware constituye la capa física
del sistema de bases de datos.
-
Software: está compuesto por todas las aplicaciones que operan
entre el usuario final y la capa física de la base de datos. El
conjunto de aplicaciones del sistema de bases de datos es conocido
como Sistema de Gestión de la Base de Datos (DataBase
Management System – DBMS).
Todas las peticiones de actualización y consulta de la base de datos
que hacen los usuarios del sistema son manejadas por el DBMS. La
función principal que proporciona el DBMS es, por tanto, posibilitar
que el usuario del sistema pueda despreocuparse de cómo está
estructurada la capa física y de cómo tiene que interactuar con ella
para efectuar las operaciones que desea. En otras palabras, el
DBMS proporciona al usuario una visión del sistema que está por
encima del nivel hardware y que soporta las operaciones
demandadas por él.
-
174
Usuarios: existen tres tipos fundamentales de usuarios:
-
Programador de aplicaciones: este tipo de usuario escribe
aplicaciones que interaccionan con la base de datos. Estas
aplicaciones realizan todas las operaciones posibles que se
pueden llevar a cabo con los datos: consultan, eliminan,
agregan y actualizan información en la base de datos. Todas las
operaciones mencionadas se implementan a través de
instrucciones que realizan las peticiones oportunas al sistema de
bases de datos.
-
Usuario final: este tipo de usuario interactúa con el sistema de
bases de datos a través de las aplicaciones desarrolladas por el
programador de aplicaciones o a través de lenguajes propios de
los sistemas de bases de datos. Haciendo uso de estos
lenguajes, el usuario final puede ejecutar comandos de alto
Apéndice B. Introducción a las bases de datos y al lenguaje MySQL
nivel como, por ejemplo, seleccionar determinados datos
(mediante el comando SELECT) o insertar nuevos datos
(mediante el comando INSERT).
-
Administrador del sistema de bases de datos: este tipo de
usuario es el gestor principal del sistema de bases de datos.
Entre sus tareas más relevantes están las siguientes: decidir la
información que va a almacenar la base de datos, decidir la
estructura de almacenamiento de la información y la estrategia
de acceso a la misma, gestionar el acceso de los usuarios
(usuarios autorizados y permisos de accesibilidad de cada
usuario, fundamentalmente), definir la política de seguridad que
se va a mantener frente a usuarios hostiles y definir la política
que se va a seguir para asegurar la integridad de los datos.
El administrador del sistema de bases de datos es comunmente
conocido por su acrónimo inglés: DBA (DataBase Administrator).
B.1.2.- ¿Por qué almacenar los datos en un sistema de bases
de datos?
Las ventajas que presenta un sistema de bases de datos frente a un
sistema tradicional de almacenamiento de información son las siguientes:
-
Compactibilidad: para almacenar una determinada cantidad de
información, el espacio físico que requiere un sistema de bases de
datos es notablemente menor que el que requieren otros sistemas
de almacenamiento. Esto es debido a que el sistema de bases de
datos almacena la información de forma organizada.
-
Velocidad: el modo en que se encuentra almacenada la
información en un sistema de bases de datos permite modificar o
consultar dicha información con una rapidez considerablemete
superior a la que se alcanza en otros sistemas de almacenamiento
en los que la información se agrupa sin ninguna estructura.
-
Precisión: la información contenida en la base de datos está
actualizada y puede ser consultada en cualquier momento.
-
Multiusuario: el sistema de bases de datos puede ser utilizado
por varios usuarios simultáneamente.
-
Control centralizado: el control centralizado está representado
por la persona o grupo de personas que ejercen las funciones de
DBA. El control centralizado ofrece, fundamentalmente, las
siguientes ventajas:
175
Proyecto Fin de Carrera
-
Posibilidad de reducir la redundancia de los datos:
cuando no se utiliza un sistema de bases de datos, las
aplicaciones que hacen uso de la misma información necesitan
tener almacenada dicha información en ficheros particulares,
empleándose parte de la capacidad de almacenamiento
disponible en albergar exactamente los mismos datos. Sin
embargo, si las aplicaciones acceden a un sistema de bases de
datos común, la redundacia de información se eliminaría
completamente, lo que supone, en la mayoría de los casos, un
importante ahorro del espacio de almacenamiento disponible.
Aún así, no siempre es deseable eliminar completamente la
redundacia que pueda existir en la información almacenada. En
algunas ocasiones existen motivos técnicos para mantener
cierto nivel de redundancia, aunque ésta debe estar muy
controlada.
-
Posibilidad de eliminar la inconsistencia de los datos:
esta ventaja es derivada del anterior. Cuando existe
redundancia en la información almacenada y esta redundancia
no es controlada, puede suceder que una actualización afecte
sólo a una parte de la información redundante, lo que daría
lugar a que entradas de la base de datos que antes de llevar a
cabo la actualización eran idénticas sean distintas una vez que
dicha actualización se ha ejecutado. Esto es lo que se conoce
como inconsistencia de la base de datos.
Si finalizado el proceso de actualización se realiza una consulta
a la base de datos, es probable que ésta suministre datos
erróneos, ya que la información almacenada es inconsistente.
Por tanto, si se elimina la redundancia en la base de datos, se
elimina la posibilidad de que dicha base de datos pueda ser
inconsistente.
En el caso de que la redundancia existente en la base de datos
esté controlada, es el DBMS el que asegura la consistencia de
dicha base de datos. Un método para asegurar la consistencia
de la base de datos en el caso de que exista redundancia en la
información almacenada consiste en aplicar la propagación de
actualizaciones (propagating updates), que se basa en
actualizar todas las entradas redundantes cuando sea
actualizada cualquiera de ellas.
-
176
Posibilidad de compartir los datos: esto implica que las
aplicaciones existentes pueden compartir la información
almacenada en la base de datos y que las nuevas aplicaciones
que se desarrollen pueden operar con esta misma información,
eliminando la necesidad de que cada nueva aplicación cree
Apéndice B. Introducción a las bases de datos y al lenguaje MySQL
nuevos datos, lo que implica un importante ahorro en el espacio
de almacenamiento disponible.
-
Posibilidad de aplicar restricciones de seguridad: debido
a que el DBA tiene una jurisdicción completa sobre el sistema
de bases de datos los datos, puede asegurar que sólo los
usuarios autorizados acceden al contenido de la base de datos.
-
Posibilidad de mantener la integridad de los datos: la
integridad de una base de datos consiste en la capacidad de la
misma para almacenar datos precisos; por tanto, un ejemplo de
falta de integridad en una base de datos es la existencia en la
misma de varias entradas que almacenen los mismos datos. No
obstante, la falta de integridad puede persistir incluso si se
elimina completamente la redundacia de información en la base
de datos, ya que es posible que se introduzca información
errónea involuntariamente cuando se lleva a cabo un proceso
de actulización. Para evitar la introducción de errores durante
los procesos de actualización, el DBA establece determinados
controles que se disparan cada vez que se ejecutan estos
procesos.
B.1.3.- Independencia de los datos
Una de las características más relevantes de un sistema de bases de datos
es la independencia de los datos almacenados frente al modo en que
éstos son almacenados físicamente.
En la actualidad, numerosas aplicaciones son dependientes de los datos
que necesitan para ejecutarse. En dichas aplicaciones, el modo en el que
se organizan los datos en las unidades de almacenamiento y las técnicas
de acceso a los mismos están integrados en el código fuente. Se dice que
la aplicación es dependiente de los datos porque no es posible alterar la
estructura de almacenamiento de los datos (cómo se almacenan los datos
físicamente) ni la estrategia de acceso a los mismos sin modificar el
código fuente de la aplicación que utiliza dichos datos.
En un sistema de bases de datos se evita a toda costa que las
aplicaciones sean dependientes de los datos. Esto se debe a dos motivos
fundamentales:
-
Las diferentes aplicaciones pueden necesitar diferentes
visiones de los mismos datos.
Es posible que en un entorno de trabajo existan aplicaciones que
operen con los mismos datos pero en formatos distintos.
177
Proyecto Fin de Carrera
Por ejemplo, pueden existir dos aplicaciones que utilicen los
mismos datos pero que una de ellas opere con números en formato
decimal y la otra, en binario. Si se quisiera eliminar la redundancia
de los datos y para ello se decidieran integrar los dos conjuntos de
ficheros utilizados por ambas aplicaciones en un único conjunto de
ficheros, habría que modificar las aplicaciones para que todas
operaran con los números en el mismo formato.
En un sistema de bases de datos, el DBMS realiza todas las
conversiones necesarias en el formato de los datos, evitándose de
este modo que el código fuente de las aplicaciones que hacen uso
de la información contenida en la base de datos sea dependiente
del formato de esta información.
-
El DBA tiene libertad para modificar la estructura de
almacenamiento y/o la estrategia de acceso a los datos.
El DBA puede optar en cualquier momento por variar la estructura
de almacenamiento debido a que, por ejemplo, se introduzcan
nuevas clases de datos o se adopten nuevos estándares. También
puede optar por variar la estrategia de acceso a los datos debido a
que aparezcan en el mercado nuevos sistemas de almacenamiento.
Estos factores hacen que, en caso de que las aplicaciones que se
estén usando sean dependientes de los datos, haya que modificar
el código fuente de todas las aplicaciones cuando se lleva a cabo
alguna de las variaciones mencionadas.
Por estos dos motivos, el lugar y el modo en que está almacenada la
información en un sistema de bases de datos es transparente para las
aplicaciones de dicho sistema, por lo que en estos sistemas se prefiere
utilizar siempre aplicaciones independientes de los datos.
B.1.4.- Los tres niveles de la arquitectura ANSI/SPARC
La arquitectura de bases de datos propuesta por el Comité de Requisitos y
Planificación de Sistemas del Instituto Nacional de Estándares
Norteamericano (American National Standards Institute/Systems Planning
And Requirements Committee - ANSI/SPARC) está dividida en tres niveles:
178
-
El nivel interno: es el nivel más cercano al dispositivo de
almacenamiento físico. Este nivel se ocupa del modo en el que se
almacenan los datos.
-
El nivel externo: es el nivel más cercano a los usuarios finales.
Este nivel se ocupa del modo en el que los datos almacenados son
visualizados por cada uno de estos usuarios.
Apéndice B. Introducción a las bases de datos y al lenguaje MySQL
-
El nivel conceptual: es el nivel intermedio entre los dos
anteriores. Este nivel se ocupa de mostrar los datos almacenados
mediante una representación común a todos los usuarios.
La figura B.1 muestra gráficamente la distribución de los tres niveles
anteriores.
Figura B.1. Niveles de la arquitectura ANSI/SPARC.
La figura B.2 muestra un ejemplo práctico en el que se pueden ver los
tres niveles de la arquitectura ANSI/SPARC.
PRODUCTION
ACCOUNT
Struct Withdraw{
Struct Worker{
char code[3]
char id[3]
int salary
char Skill[20]
}
}
Employee
Employee_number character(6)
Employee_skill character(20)
Salary numeric(5)
Stored_emp LENGTH=18
Prefix type=BYTE(6), OFFSET= 0
Emp# type=BYTE(6), OFFSET= 6, index=emp#
Skill type=BYTE(20), OFFSET= 12
Pay type=FULLWORD, OFFSET=32
Æ Nivel externo
Æ Nivel conceptual
Æ Nivel interno
Figura B.2. Niveles de la arquitectura ANSI/SPARC. Ejemplo práctico.
Como se desprende de la observación de las dos figuras anteriores,
pueden existir varias vistas externas de la información contenida en la
base de datos, cada una de ellas constituida por una representación
abstracta del fragmento de información que le sea útil a un determinado
usuario. Sin embargo, sólo existe una vista conceptual de los datos,
constituida por una representación abstracta del total de la información
contenida en la base de datos.
179
Proyecto Fin de Carrera
B.1.4.1.- El nivel externo
El nivel externo es el primer nivel de la arquitectura ANSI/SPARC.
En este nivel se localizan todos los lenguajes que utilizan los distintos
usuarios para comunicarse con el sistema de bases de datos. Cada tipo de
usuario, exceptuando el DBA, interactúa con este sistema a través de un
lenguaje diferente:
-
El programador de aplicaciones: este usuario puede utilizar
cualquiera de los lenguajes de programación existentes, como por
ejemplo Java, PHP, C o C++, entre otros.
-
El usuario final: este usuario puede utilizar tanto lenguajes de
consulta (query languages) como lenguajes basados en formularios
o menús.
Todos los lenguajes que utilizan los diferentes usuarios incluyen un
sublenguaje para el tratamiento de datos (data sublanguage – DSL). Este
subjeguaje es un subconjunto del lenguaje completo y está desarrollado
específicamente para el tratamiento de bases de datos.
El DSL es la combinación de otros dos lenguajes:
-
Lenguaje de definición de datos (data definition language –
DDL): proporciona la capacidad necesaria para definir o describir
objetos de la base de datos (por ejemplo, la definición de una
nueva vista de los datos).
-
Lenguaje de manipulación de datos (data manipulation
lenguaje – DML): proporciona la capacidad para dar soporte a la
manipulación o procesamiento de los objetos de la base de datos
(por ejemplo, la realización de una consulta a la base de datos).
El DSL más extendido hoy en día es SQL (Structured Query Language).
B.1.4.2.- El nivel conceptual
El nivel conceptual es el segundo nivel de la arquitectura ANSI/SPARC.
La vista conceptual es una representación de toda la información
contenida en la base de datos. Esta representación es independiente de la
forma en la que los datos están físicamente almacenados.
La vista conceptual se describe a través del esquema conceptual
(conceptual schema), formado por definiciones de cada una de las
diferentes entidades conceptuales que componen la base de datos
180
Apéndice B. Introducción a las bases de datos y al lenguaje MySQL
(tablas, campos que constituyen estas tablas y relaciones que existen
entre las diferentes tablas).
El esquema conceptual está escrito mediante un lenguaje especial de
definición de datos: el DDL conceptual. Debido a que en los sistemas de
bases de datos se mantiene la independencia de los datos1, las
definiciones conceptuales establecidas a través el DDL conceptual sólo
son definiciones de la información contenida en la base de datos y no
tienen ninguna relación con la estructura de almacenamiento de dicha
información o con las estrategias que se siguen para acceder a la misma.
Según lo anterior, la vista conceptual es una visión del contenido total de
la base de datos, mientras que el esquema conceptual es la definición de
dicha vista.
El esquema conceptual también establece restricciones de seguridad y de
integridad de los datos almacenados en la base de datos.
B.1.4.3.- El nivel interno
El nivel interno es el tercer nivel de la arquitectura ANSI/SPARC.
La vista interna es una representación a bajo nivel de la base de datos
completa y está formada por múltiples ocurrencias de los diferentes tipos
de entidades internas que componen dicha base de datos; en otras
palabras, la vista interna es una representación de la estructura de
almacenamiento de los datos.
La vista interna está descrita a través del esquema interno (internal
schema). Este esquema no sólo contiene definiciones de los diferentes
tipos de entidades internas existentes, sino que también especifica cómo
se representan dichas entidades y cuál es la secuencia física de
almacenamiento de las mismas.
El esquema interno está escrito mediante otro DDL especial: el DDL
interno.
B.1.4.4.- Mapeo
Existen dos mapeos diferentes en una base de datos: uno entre el nivel
conceptual y el interno y otro entre el nivel externo y el conceptual.
1
Para obtener información acerca de la independencia de los datos, véase el apartado
B.1.3.- Independencia de los datos, pág. 177.
181
Proyecto Fin de Carrera
El mapeo entre el nivel conceptual y el interno establece la
correspondencia entre la vista conceptual y la vista interna, es decir,
establece el modo en el que las entidades conceptuales son
representadas en el nivel interno. Este mapeo tiene la misión de aislar el
nivel conceptual del nivel interno y preservar de este modo la
independencia de los datos. Así, si se realizara cualquier modificación en
el nivel interno (por ejemplo, si se modificara la estructura de
almacenamiento de datos), el mapeo entre los niveles conceptual e
interno debería ser también modificado adecuadamente, permitiendo que
el esquema conceptual permaneciera invariable.
El mapeo entre el nivel externo y el nivel conceptual establece la
correspondencia entre una vista externa particular y la vista conceptual.
Al ¡gual que el mapeo entre los niveles conceptual e interno, este mapeo
tiene la misión de aislar el nivel externo del nivel conceptual para
preservar la independencia de los datos.
B.1.5.- Arquitectura servidor/cliente
En la actualidad, los sistemas de bases de datos están estructurados en
arquitecturas servidor/cliente.
En la máquina que actúa como servidor se encuentra alojada la base de
datos y el DBMS, que gestiona todas las operaciones relacionadas con la
base de datos.
En la máquina que actúa como cliente se encuentran las aplicaciones que
el usuario final utiliza para realizar las acciones que considere necesarias
sobre la base de datos. Estas aplicaciones pueden ser proporcionadas por
el propio DBMS, como generadores de informes sobre el estado de la base
de datos o lenguajes de consulta, o pueden ser aplicaciones desarrolladas
por terceros que hagan uso de la información contenida en bases de
datos.
La comunicación entre las máquinas servidor y cliente suele ser a través
de redes locales o de internet.
B.1.6.- El modelo relacional de datos
El modelo relacional de datos, lanzado por IBM en la década de 1960, es
el modelo de más aceptado actualmente para la representación y manejo
abstracto (mediante tablas) de bases de datos, aunque poco a poco se
están imponiendo los modelos orientados a objetos.
Este modelo, que está construido sobre una sólida base matemática, se
basa en los siguientes principios:
182
Apéndice B. Introducción a las bases de datos y al lenguaje MySQL
-
Los datos son representados como conjuntos de relaciones.
-
Cada relación es representada mediante una tabla.
-
Cada columna de una determinada tabla representa un atributo.
-
El conjunto de todos los valores posibles que puede tomar un
determinado atributo constituye el dominio de dicho atributo.
-
Cada fila de una determinada tabla, también llamada tupla,
representa una entidad.
-
Cada tabla posee un conjunto irreducible de atributos que
referencian unívocamente cada entidad de dicha tabla. A este
conjunto de atributos se le llama primary key.
El modelo relacional de datos asegura la integridad de los datos
imponiendo restricciones que deben cumplir dichos datos antes de ser
insertados en cualquier tabla que forme parte de la base de datos.
Este modelo dispone de dos lenguajes para operar con los datos:
-
Álgebra relacional: es el conjunto de operaciones posibles que se
pueden realizar en las tablas.
-
Cálculo relacional: es el lenguaje de consulta que se utiliza para
operar con la base de datos.
La tabla siguiente muestra las expresiones formales propuestas en el
modelo relacional y las expresiones informales equivalentes:
Expresión formal
Relacion
Tupla, Entidad
Cardinalidad
Atributo
Grado
Primary Key
Dominio
Expresión informal
Tabla
Fila
Número de filas
Columna
Número de columnas
Identificador único
Conjunto de valores
posibles que puede tomar
un determinado atributo
Tabla B.1. Correspondencia entre las expresiones formales propuestas en el modelo
relacional de datos y las expresiones informales equivalentes.
Así mismo, la figura siguiente muestra un ejemplo práctico en el que se
puede apreciar el uso de la terminología expuesta en la tabla B.1:
183
Proyecto Fin de Carrera
Figura B.3. Terminología propuesta en el modelo relacional de datos. Ejemplo práctico.
B.2.- El lenguaje MySQL [6]
El lenguaje MySQL es una implementación basada en código abierto del
lenguaje SQL. Este lenguaje permite realizar todas las operaciones que
son posibles en una base de datos, es decir, permite crear y eliminar
tablas, introducir y eliminar datos en tablas existentes y realizar consultas.
En los siguientes subapartados se estudian brevemente las acciones más
comunes que se pueden ejecutar sobre una base de datos mediante el
lenguaje MySQL2.
B.2.1.- Crear una tabla
Para crear una tabla se utiliza el comando CREATE, cuya sintaxis básica es
la siguiente:
CREATE TABLE `table_name` (
`attribute_1_name` attribute_1_type [NULL|NOT NULL][UNIQUE]
[DEFAULT 'default_value']
[PRIMARY KEY]
[REFERENCES tableref_1_name(atributeref_1)],
...
`attribute_n_name` attribute_n_type [NULL|NOT NULL][UNIQUE]
[DEFAULT 'default_value']
[PRIMARY KEY]
[REFERENCES tableref_n_name(atributeref_n)],
[PRIMARY KEY (attribute_1_key,..., attribute_n_key)])
donde:
2
Para obtener información detallada acerca de todas las acciones que se pueden llevar a
cabo en una base de datos mediante el lenguaje MySQL, veáse la página web oficial de
MySQL en www.mysql.com.
184
Apéndice B. Introducción a las bases de datos y al lenguaje MySQL
-
NULL: si está presente en algún atributo, indica que dicho atributo
puede tomar un valor nulo en alguna o en todas las tuplas. Está
presente por defecto en todos los atributos de la tabla.
-
NOT NULL: si está presente en algún atributo, indica que dicho
atributo no puede tomar un valor nulo en ninguna tupla.
-
UNIQUE: si está presente en algún atributo, indica que el sistema
debe impedir que dos o más tuplas de la tabla contenga el mismo
valor para dicho atributo.
-
PRIMARY KEY: indica los atributos de la tabla que constituyen la
clave primaria de la misma. La clave primaria es obligatoriamente
UNIQUE y NOT NULL.
-
DEFAULT: si está presente en algun atributo, indica el valor por
defecto que toma dicho atributo en caso de que no se especifique
ningún valor.
B.2.2.- Insertar datos en una tabla
Para insertar datos en una tabla se utiliza el comando INSERT INTO, cuya
sintaxis básica es la siguiente:
INSERT INTO table_name
(atrribute_1, atrribute_n, ..., atrribute_n)
VALUES (value_1, value_2, ..., value_n)
B.2.3.- Eliminar datos de una tabla
Para eliminar datos de una tabla se utiliza el comando DELETE, cuya
sintaxis básica es la siguiente:
DELETE FROM table_name
WHERE <condition_1> [AND|OR <condition_2>
[AND|OR <condition_3>
...
[AND|OR <condition_n>]...]]
Las condiciones que se establecen para seleccionar los datos tienen la
siguiente sintaxis:
attribute [=][!=][LIKE][<][<=][>][>=] value
donde se especifica únicamente un operador que relacione el atributo con
el valor.
185
Proyecto Fin de Carrera
B.2.4.- Seleccionar datos de una tabla
Para seleccionar datos de una tabla se utiliza el comando SELECT, cuya
sintaxis básica es la siguiente:
SELECT attribute_1, ..., attribute_n FROM table_name
WHERE <condition_1> [AND|OR <condition_2>
[AND|OR <condition_3>
...
[AND|OR <condition_n>]...]]
Las condiciones que se establecen para seleccionar los datos tienen la
siguiente sintaxis:
attribute [=][!=][LIKE][<][<=][>][>=] value
donde se especifica únicamente un operador que relacione el atributo con
el valor.
En caso de que se deseen seleccionar todos los atributos de las tuplas que
cumplan las condiciones especificadas, se puede sustituir la lista completa
de atributos por el carácter asterisco.
186
Descargar