Anda di halaman 1dari 19

IES Suárez de Figueroa- @vanza

Administración de sistemas informáticos en red


Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

Tema 3. Diseño físico de bases de datos

1. Introducción

Tras haber diseñado el diagrama entidad-relación y el esquema lógico de la


base de datos, el siguiente paso consiste en implementar ese esquema lógico en el
SGBD elegido.

En nuestro caso el SGBD elegido es MariaDB, y más concretamente el que


viene con el paquete XAMPP que puedes descargar en esta web:
https://www.apachefriends.org/es/index.html​.

La instalación en Windows es muy sencilla, basta con hacer doble clic sobre el
archivo descargado, elegir los programas que queremos instalar y pulsar siguiente. Si
no queremos instalar programas innecesarios al menos debemos elegir Apache,
MySQL, Php y phpMyAdmin.

Una vez finalizada la instalación tenemos instalado en nuestro ordenador un


servidor de base de datos relacional, MariaDB. Además, también hemos instalado un
cliente web que permite la conexión con el servidor de base de datos. Se trata de
phpMyAdmin.

En un recurso adjunto encontrarás información sobre otros clientes gráficos.

2. Tipos de tablas.

Antes de hablar de los tipos de tablas comentaremos el concepto de transacción


en un SGBD. Una transacción es un conjunto de órdenes que se ejecutan formando
una unidad de trabajo, es decir, en forma indivisible o atómica.

Un SGBD se dice transaccional, si es capaz de mantener la integridad de los


datos, haciendo que estas transacciones no puedan finalizar en un estado intermedio.
Cuando por alguna causa el sistema debe cancelar la transacción, empieza a
deshacer las órdenes ejecutadas hasta dejar la base de datos en su estado inicial
(llamado punto de integridad), como si la orden de la transacción nunca se hubiese
realizado.

El lenguaje de consulta de datos SQL (Structured Query Language), provee los


mecanismos para especificar que un conjunto de acciones deben constituir una
transacción.

Una tabla se dice transaccional si soporta transacciones.

MariaDB soporta varios tipos de tablas o motores de almacenamiento. Durante


este curso utilizaremos únicamente tablas InnoDB, que son las que permiten la

1
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

utilización de claves ajenas y transacciones. Es el tipo de tabla por defecto, en el


servidor MariaDB.

Al crear una tabla InnoDB se generan dos archivos en disco con las extensiones
frm e ibd. El primero guarda la definición de la tabla y el segundo información relativa a
los índices. La existencia de estos archivos ibd depende de la configuración del
servidor en cuanto al almacenamiento de los índices de tablas innodb. Puede existir un
archivo por tabla o bien almacenarse de forma conjunta. MariaDb viene configurado
para crear un archivo de índices por tabla.

Entre los tipos de tabla no transaccionales destaca MyISAM, con un rápido acceso
a datos y soporte para índices de texto completo (fulltext). Cada tabla MyISAM se
organiza en tres ficheros con distintas extensiones:

- Frm. Almacena la definición de la tabla.


- MYD. Almacena los datos.
- MYI. Almacena los índices.

En la imagen adjunta pueden observarse los distintos


archivos generados para cada una de las tablas de los
ejemplos que se plantean en el tema. Es necesario
mencionar que por cada base de datos se crea una
carpeta dentro de xampp\mysql\data, y en esa carpeta se
almacenan los archivos correspondientes a las tablas.

3. Tipos de datos

En el diagrama entidad-relación y en el esquema lógico aparecen los conceptos


de atributo, campo y columna. Con ellos nos referimos a información que queremos
almacenar sobre una entidad. Ejemplos pueden ser DNI, precio, nombre, dirección, …

Al crear una tabla es necesario especificar que campos la forman y que tipos de
datos tienen asociados estos campos. El tipo de dato de cada campo determina la
información que podrá guardarse en dicho campo. Así, si debemos guardar el precio
de un producto será necesario utilizar un tipo de datos numérico; si lo que queremos
es almacenar la fecha de nacimiento de una persona, el tipo de datos a utilizar será
fecha y si el dato a almacenar es el nombre o descripción de un producto el tipo de
datos elegido será texto o cadena.

Los tipos de datos soportados por MariaDB serán explicados a continuación y


pueden estudiarse a fondo en estas webs:

- Web oficial de MariaDB: ​https://mariadb.com/kb/en/mariadb/data-types/​.

2
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

- TechOnTheNet: ​https://www.techonthenet.com/mariadb/datatypes.php​.

3.1. Tipos de datos de cadena o texto.

- Char(N) y Varchar(N). Permiten almacenar textos de 1 a 255 caracteres el


primero y de 1 a 65.535 el segundo. El número de caracteres se indica en el valor de
N.

- Tinyblob, Blob, Mediumblob, Longblob. Permiten textos de hasta 255 caracteres,


65.535, 16 millones y 4 gigas respectivamente. Generalmente se utilizan para guardar
imágenes, sonidos, etc. en una base de datos.

- Enum (valor1, valor2, …, valorN). Un campo de este tipo puede almacenar un


valor de los indicados entre paréntesis.

- Set (valor1, valor2, …, valorN). Un campo de tipo set puede almacenar cero o
varios miembros del grupo de valores indicados entre los paréntesis.

3.2. Tipos de datos numéricos.

- Tinyint. Permite almacenar valores enteros comprendidos entre -128 y 127.

- Smallint. Para enteros entre -32768 y 32767.

- Mediumint. Enteros entre -8388608 y 8388607.

- Int. En este caso el rango va de -2147 millones hasta 2147 millones


aproximadamente.

- Bigint. Permiten enteros en un rango comprendido entre -9223372036854775808


y 9223372036854775807.

- Decimal. Permite guardar números con un número exacto de dígitos en la parte


entera y en la decimal. Así, con este ejemplo, cantidad decimal (5,2), se indica que en
la columna cantidad se guardarán números de 5 dígitos y de ellos 2 serán para la parte
decimal.

- Double. Tipo que permite almacenar números reales con rango


-1.7976931348623157E+308 y -2.2250738585072014E-308.

Todos los tipos numéricos pueden almacenarse con los modificadores Unsigned y
Zerofill. Con el primero el rango de valores cambia, ya que no permiten negativos y los
números almacenados irán desde 0 hasta el máximo permitido en cada caso
(consultar la web indicada). Zerofill permite rellenar con ceros por la izquierda campos
enteros cuando el número de dígitos guardados en dicho campo sea inferior al número
indicado como ancho en la definición de dicho campo.

3
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

Un ejemplo: cantidad int(6) zerofill. Al guardar valores inferiores a 6 dígitos se


muestran con ceros a la izquierda hasta completar el ancho de seis. Solo afecta a
como se muestran los datos y no a su almacenamiento.

Un campo zerofill es por defecto unsigned.

3.3. Tipos de datos fecha/hora.

- Date. Para guardar fechas entre '1000-01-01' y '9999-12-31'. El formato utilizado


es AAAA-MM-DD.

- DateTime. Permite almacenar valores con fecha y hora. El rango de valores está
comprendido entre '1000-01-01 00:00:00' y '9999-12-31 23:59:59'. El formato utilizado
para mostrar los valores es 'AAAA-MM-DD HH:MM:SS'.

- TimeStamp. Es utilizado para guardar el instante en el tiempo en el que una fila


es añadida o modificada, aplicando las clausulas DEFAULT CURRENT_TIMESTAMP
y ON UPDATE CURRENT_TIMESTAMP por defecto. Permite guardar fechas y horas
con rango entre '1970-01-01 00:00:01' y '2038-01-19 05:14:07'.

- Time. Para columnas que guarden horas. El rango de valores debe estar
comprendido entre '-838:59:59' y '838:59:59'.

- Year. Es utilizada para guardar años.

4. El lenguaje SQL

Como se comentó al principio del tema, tras obtener el esquema lógico de una
base de datos, debemos implementar el mismo en el SGBD elegido. El siguiente paso
será por tanto crear la base de datos, sus tablas y relaciones.

Para todo ello se utiliza el lenguaje SQL (Structured Query Language). El SQL es
un lenguaje que se compone de una serie comandos u órdenes que permiten al
usuario crear bases de datos, tablas , relaciones, índices, etc. También incluye
sentencias para trabajar con los datos de esas tablas y para controlar el acceso a los
mismos. Por eso está compuestos por tres grupos de sentencias:

- DDL o lenguaje de definición de datos, que incluye sentencias de creación,


eliminación y modificación de bases de datos, tablas y demás objetos.
- DML o lenguaje de manipulación de datos, formado por las sentencias que
permiten insertar datos, actualizarlos, eliminarlos y consultarlos.
- DCL o lenguaje de control de datos, que es la parte encargada del control de
acceso y gestión de usuarios.

El lenguaje ha evolucionado desde su creación en 1974, siendo la última revisión la


de 2008.

4
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

En este tema se estudia el DDL.

5. Sintaxis para escribir instrucciones SQL.

En este apartado se estudian la simbología utilizada en las sentencias SQL y la


sintaxis necesaria.

Símbolos:

- Mayúsculas. Una palabra en mayúsculas refleja una palabra reservada de SQL


y por tanto hay que escribirla tal y como aparece en la sintaxis.
- Minúsculas. Una palabra en minúsculas es algo variable y hay que sustituirla
por un dato concreto.
- [], corchetes. Los corchetes se utilizan para reflejar que las alternativas que
contienen son opcionales. Por tanto toda palabra no encerrada entre corchetes
debe ser incluida obligatoriamente en la sentencia.
- |, barra vertical. La barra vertical sirve para separar opciones alternativas en
una lista. Solo se puede usar una de ellas.
- [|], lista entre corchetes y con barra. Cuando una lista separada con barras se
encierra entre corchetes indica que se puede elegir entre estos valores
opcionalmente.
- {}, llaves. Si una lista se encierra entre llaves, igual que pasa con los corchetes,
indica que sus valores se pueden elegir pero es necesario elegir uno de ellos.
- …, puntos suspensivos. Varias palabras separadas por comas y finalizadas con
puntos suspensivos significan que se puede usar un número variable de esos
datos y siempre separados con comas.

Para entender mejor todo esto, estudiaremos la sentencia SELECT que permite
seleccionar datos de tablas de una base de datos. Para probar los ejemplos que
siguen, será necesario tener instalado Xampp y además tener en el servidor la base de
datos “Oposiciones” cuyo script puedes descargar en el apartado recursos.

Su sintaxis:

SELECT [ALL | DISTINCT] columna1 [columna2, columna3,.......] | * FROM tabla1


[tabla2, tabla3, ….] [WHERE condición ] [ORDER BY expr1 [DESC | ASC] [, expr2
[DESC | ASC] ....]

Al analizar la sentencia se obtiene:

- SELECT, obligatorio al estar en mayúsculas


- [ALL | DISTINCT] columna1 [columna2, columna3,.......] | *, la barra vertical
separa el asterisco del resto, por tanto se debe elegir entre ambas opciones.
- [ALL | DISTINCT], estas dos palabras reservadas van entre corchetes, lo que
indica que son opcionales y al ir en mayúsculas deben escribirse así. La barra
vertical que las separa indica que hemos de elegir entre ALL y DISTINCT.

5
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

- columna1 [columna2, columna3,.......]. En este caso puede especificarse un


nombre de columna o varios separados por comas. Al ir en minúsculas deben
cambiarse por nombres de columnas válidos.
- tabla1 [tabla2, tabla3, ….]. Pueden especificarse varios nombres de tablas
separados por comas.

Ejemplos válidos serían:

- select * from opositores


- select dni, nombre from opositores

Imágenes de la ejecución del primer ejemplo y de su resultado.

5.1. Elementos de las sentencias SQL

Como se ha comentado, una sentencia consta de:

- palabras reservadas del lenguaje como select, order, where


- clausulas opcionales y obligatorias
- nombre de objetos como tablas, columnas, etc.
- valores correspondientes a los diferentes tipos de datos
o texto o cadenas. Van entre comillas dobles o sencillas y para
compararlos no se tienen en cuenta las mayúsculas.

select * from opositores where ciudad = 'badajoz'

select * from opositores where ciudad = "badajoz"

o Números. Pueden usarse los formatos siguientes: 4, +4, -2, 2.5,


3.1089E+24

6
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

o Fechas y horas. Las fechas se representan entre comillas simples o


dobles y con el formato año-mes-día. Ejemplo: '2017-01-11', sería el 11
de enero de 2017.
o Los valores lógicos o booleanos sólo admiten true y false.

6. Creación, modificación y eliminación de bases de datos

Para trabajar con bases de datos tenemos las instrucciones siguientes:

- CREATE DATABASE nombreDeBaseDeDatos. Con esta orden se crea una


base de datos con el nombre especificado.

Create Datase Prueba

- USE nombreDeBaseDeDatos. Elegir una base de datos o usarla como base de


datos por defecto. Todas las sentencias u órdenes que se escriban tras esta se
refieren a la base de datos indicada.

Use prueba

- DROP DATABASE nombreDeBaseDeDatos. Elimina la base de datos indicada.

Drop database prueba.

Ejemplos realizados con phpMyAdmin.

- Crear una base de datos. Mediante CREATE DATABASE. Abrimos una


ventana SQL, tecleamos la orden y pulsamos el botón continuar. En el panel de
la izquierda aparecerá el nombre de la base de datos creada.

- Eliminar una base de datos. Debe tenerse en cuenta que al eliminar una base
de datos se perderá toda la información que ésta almacena, por tanto esta
orden no debe ser ejecutada a la ligera.

- Activar una base de datos. La orden “use BaseDatos” no es útil en este


entorno. Para activar una base de datos basta con seleccionarla en el panel de
la izquierda, el que contiene la lista de bases de datos del servidor. A partir de

7
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

ese instante todas las sentencias ejecutadas se refieren a la base de datos


seleccionada.

7. Creación, modificación y eliminación de tablas.

Una vez creada la base de datos se crearán las tablas que la forman, con sus
nombres, columnas, relaciones, índices, etc.

Es necesario mencionar que todas las órdenes SQL que estudiaremos y las que ya
hemos visto, pueden llevarse a cabo gráficamente, pero este no es el objetivo de este
curso.

Para trabajar con tablas disponemos de tres sentencias:

- CREATE TABLE, para crear una tabla.


- ALTER TABLE para modificar una tabla existente.
- DROP TABLE, para eliminarla.

7.1. CREATE TABLE

Crear una tabla consiste en darle un nombre a la misma, a cada una de sus
columnas, asociarle tipos de datos a estas columnas y crear restricciones como
claves primarias, ajenas, etc.

El formato básico de esta orden es:

Como se observa, se trata de dar nombre a la tabla y definir su estructura.

Una tabla puede incluir restricciones de clave primaria, ajena, índices, campos que
permiten nulos o no, valores por defecto en algún campo, etc.

Existen restricciones que sólo afectan a un campo y otras que afectan a más de
uno. Esta característica hace que se deban indicar de forma distinta como se explica a
continuación.

8
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

Restricciones que afectan a un solo campo o columna. S ​ e escriben


inmediatamente después de indicar el nombre y tipo de datos de esa columna. Su
sintaxis:

- NOT NULL | NULL. Indica si el campo permite nulos o no. Por defecto permite
nulos.
- DEFAULT ValorPorDefecto. Sirve para guardar un valor por defecto en esa
columna cuando no se le asigne ningún valor.
- AUTO_INCREMENT. Los campos enteros con esta restricción se
autoincrementarán al añadir filas. No se les puede asignar valores.
- PRIMARY KEY. Una tabla sólo puede tener una clave primaria, además este
campo no permite nulos. Con esta restricción indicamos que la columna
asociada será la clave primaria.
- INDEX. Indica que la columna lleva asociado un índice y por tanto su contenido
se almacena en una tabla de índices que agiliza las operaciones de búsqueda
sobre las tablas.
- UNIQUE: Indica que la columna lleva asociado un índice único, es decir, que no
permite duplicados. Por ejemplo: en la tabla Clientes anterior, se ha elegido el
CodCliente como PRIMARY KEY, pero el atributo DNI de igual forma no puede
repetirse. Para recoger esta restricción lo podemos definir como UNIQUE. Se
utiliza por tanto, para crear claves alternativas.
- REFERENCES: Se usa para especificar que esa columna es clave ajena que
referencia (apunta) a una columna que es clave primaria en otra tabla.

En el ejemplo que sigue se crean dos tablas, Cursos y Alumnos. En la creación


de cada tabla deben indicarse entre paréntesis los campos que la forman con sus
restricciones, separados por comas.

Si dentro de una misma ventana SQL se escriben varias órdenes SQL deben
separarse por punto y coma (;). En el caso que nos ocupa los dos CREATE TABLE
están separados por punto y coma.

Debe tenerse en cuenta que las tablas se crean en la base de datos activa, por
lo que hay que prestar especial atención a seleccionar la base de datos sobre la
que se va a trabajar.

9
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

En la primera instrucción CREATE TABLE creamos la tabla Cursos con sus


columnas. La columna CODIGOCURSO es el campo clave principal y además sus
valores se autoincrementarán.

Por su parte, la tabla Alumnos tiene como clave principal la columna


NUMEROEXPEDIENTE y una clave ajena, el campo CURSO. Esta clave ajena hace
referencia a la tabla Cursos, y más concretamente a su clave principal
(CODIGOCURSO). Las clausulas ON UPDATE CASCADE y ON DELETE RESTRICT
sirven para indicar las acciones referenciales, o que ocurre cuando se actualiza (ON
UPDATE) o se elimina (ON DELETE) un registro de la tabla principal a la que apunta.
En este caso, si se cambia el código de curso en la tabla Cursos se cambiarán
también en los registros relacionados en Alumnos. ON DELETE RESTRICT indica que
no pueden borrarse cursos si tienen alumnos relacionados.

Las acciones referenciales se estudiaron en la unidad 2 y son CASCADE,


RESTRICT, NO ACTION, SET NULL y SET DEFEAULT.

Por defecto las tablas creadas utilizan el motor Innodb.

Restricciones que afectan a varias columnas. ​Al crear una tabla y tras haber
definido sus columnas individuales con nombres, tipos de datos y restricciones de una
sola columna, llega el momento de declarar las restricciones formadas por más de una
columna. Su sintaxis:

10
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

- CONSTRAINT [simbolo] PRIMARY KEY (NombreColumnasIndice,…). De esta


forma se indica la clave principal de la tabla. Válido también para el caso en
que esté formada por varios campos. En símbolo se indica un nombre para esa
restricción, suele usarse como patrón PK_nombre.
- KEY e INDEX: Además de la clave primaria tenemos otro tipo de índice que
permite definir índices sobre una columna, sobre varias o sobre partes de
columnas. Un índice se debe definir para aquellas columnas que se usen
frecuentemente. Las opciones KEY o INDEX se usan indistintamente. El
nombre del índice es opcional.
- FULLTEXT: Indica que una o más columnas forman un índice de tipo búsqueda
de texto, que no comentaremos en este curso.
- CONSTRAINT [símbolo]] FOREIGN KEY … Esta restricción permite crear
claves ajenas formadas por varios campos.

11
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

Ejemplo:

En la tabla Habitaciones se crea una clave principal formada por dos campos y se
le asigna el nombre PK_HAB.

En la tabla Reservas:

- Un índice único, UQ_RESERVA, para los campos indicados. Es útil para que
no pueda repetirse hotel + habitación + fecha entrada.
- Una clave ajena, FK_HAB que apunta a la tabla Habitaciones. En
REFERENCES se indica la tabla a la que apunta y su clave principal entre
paréntesis. Los campos que forman la clave ajena se indican tras FOREIGN
KEY. Las iniciales FK vienen de FOREIGN KEY, clave ajena en inglés.

Por defecto, las tablas creadas en MariaDB son del tipo InnoDb. Si queremos
cambiar el tipo de motor debemos especificarlo en la sentencias CREATE TABLE
de la siguiente forma: Create Table (definición de la tabla) Engine=TipoMotor;

12
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

7.2. ALTER TABLE

Permite modificar la estructura de una tabla: añadir una nueva columna, cambiar el
tipo de una columna, establecer una clave primaria, eliminar una columna, establecer
una clave ajena, etc. La sintaxis general de esta sentencia admite muchas opciones,
las más importantes son:

- ADD [COLUMN]. Añadir una nueva columna a la tabla. Con FIRST la columna
será la primera y con AFTER se añade “después de” la que se indique.
- ADD INDEX. Añadir un nuevo índice.
- ADD [CONSTRAINT]… Añadir restricciones de clave primaria, ajena, índice
único.
- CHANGE [COLUMN]. Permite cambiar el nombre de una columna y su
definición.
- DROP [COLUMN]. Eliminar una columna.
- DROP PRIMARY KEY. Eliminar la clave primaria.
- DROP INDEX NombreIndice. Eliminar un índice.
- DROP FOREIGN KEY Símbolo. Eliminar una restricción de clave ajena.
- ALTER COLUMN NombreColumna. Modificar la definición de una columna.
- MODIFY [COLUMN]. Modificar la definición de la columna. No puede
modificarse su nombre.
- RENAME NuevoNombreTabla. Modificar nombre de tabla.

13
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

Ejemplos:

- Creación de las tablas Pedidos y Clientes.

- Modificación de las tablas.


o Añadir la clave principal.
o Añadir columna.
o Modificar tamaño columna.
o Añadir un índice.
o Añadir clave ajena.
o Cambiar nombre a la tabla.

En el documento correspondiente al recurso 2 aparecen varios ejemplos


relacionados con ALTER TABLE.

14
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

7.1. DROP TABLE

Esta sentencia permite eliminar una o más tablas de la base de datos.

Su sintaxis:

La clausula IF EXISTS se utiliza para no obtener error si no existe la tabla a borrar.

Pueden especificarse varias tablas separadas por comas.

Si se intenta borrar la tabla principal de una relación se obtendrá un mensaje de


error. Es decir, si se tienen las tablas relacionadas Departamentos y Empleados, un
departamento tiene varios empleados, al intentar eliminar la tabla Departamentos se
obtendría error. Lo que si estaría permitido sería

DROP TABLE EMPLEADOS, DEPARTAMENTO

En este caso se elimina antes la tabla subordinada, la que contiene la clave ajena,
y luego la principal.

8. Creación y eliminación de índices.

Los índices agilizan el acceso a los datos de las tablas. Suelen crearse para
columnas que se utilizan a menudo en las búsquedas. Funcionan de forma parecida a
como lo hace el índice de un libro de papel, es decir, buscamos una palabra o capítulo
en el índice y este nos indica la página en la que está la información que buscamos.

Por este motivo, la creación de índices conlleva la necesidad de un espacio extra


de almacenamiento para el propio índice. Se necesitará por tanto una tabla para
almacenar el índice. El usuario no accede directamente a esta tabla, es el propio
sistema gestor el que se encarga de acceder a ella.

Los índices aportan la ventaja de un acceso más rápido a los datos, pero tienen
inconvenientes. Es necesario un espacio de almacenamiento extra y además deben
reorganizarse con las altas, bajas y modificaciones de datos.

Pueden crearse índices con la sentencias CREATE TABLE y ALTER TABLE como
se ha visto, o bien mediante la orden CREATE INDEX que se detalla a continuación.

Con UNIQUE se crea un índice que no admite duplicados.

15
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

FULLTEXT se utiliza en columnas char y varchar para crear índices de texto


completo, que incluyen varias funcionalidades en búsquedas de texto.

ASC|DESC, indican como se ordenan los datos en el índice.

Para eliminar índices se utiliza DROP INDEX como se describe:

Ejemplos de creación/eliminación de un índice para la tabla Habitaciones, columna


capacidad.

CREATE INDEX IX_CAPACIDAD ON HABITACIONES (CAPACIDAD);

DROP INDEX IX_CAPACIDAD ON HABITACIONES;

9. Creación, modificación y eliminación de vistas.

La sentencia SELECT (que no es objetivo de esta unidad) sirve para


seleccionar/consultar datos de las tablas de la base de datos.

Las vistas son sentencias SELECT a las que se les da un nombre para
almacenarlas en la base de datos y poder usarlas cuando sea necesario.

Para trabajar con vistas se dispone de las sentencias: CREATE VIEW, ALTER
VIEW y DROP VIEW.

- CREATE VIEW. Para crear la vista se le da un nombre y se escribe la


sentencia SELECT que la forma.

Ejemplo de una vista que incluye una SELECT que muestra nombre de hotel,
numero de habitación y su precio base.

Las vistas pueden verse en phpMyAdmin en el panel de la izquierda, bajo las


tablas.

- ALTER VIEW. Modificar la definición de la vista.

En el ejemplo modificamos la vista añadiendo una columna más.

16
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

- DROP VIEW. Eliminar una vista.

10. Otras sentencias.

- SHOW databases. Muestra las bases de datos del servidor.


- SHOW COLUMNS FROM nombreTabla. Muestra las columnas de una tabla.
- SHOW FIELDS FROM nombreTabla. Muestra las columnas de una tabla.
- DESCRIBE nombreTabla. Muestra las columnas de una tabla.
- SHOW INDEX FROM nombreTabla. Muestra los índices de una tabla.
- SHOW CREATE DATABASE nombreBaseDatos. Muestra la sentencia de
creación de la base de datos especificada.
- SHOW CREATE TABLE nombreTabla; Muestra la sentencia de creación de la
tabla.
- SHOW CREATE VIEW nombreVista; Muestra la sentencia de creación de la
vista.

Para probar estas sentencias podemos hacer uso de un cliente de texto que viene
con el paquete Xampp.

Para acceder a él abrimos una ventana “Símbolo del sistema” de Windows,


accedemos a la carpeta c:\xampp\mysql\bin y ejecutamos el programa cliente “mysql”
con los parámetros que se observan.

-h localhost. Indica que vamos a conectarnos a un servidor MariaDb que está en la


máquina local. Para conectar con otro equipo se especifica su dirección IP.

- u root. Aquí se especifica el usuario con el que vamos a conectar. En este caso
root.

- p contraseña. Contraseña del usuario con el que conectamos al servidor. En mi


caso en blanco (no se recomienda).

17
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

Una vez conectados podemos probar las órdenes SQL vistas hasta ahora,
terminando siempre cada sentencia con punto y coma.

- Mostrando las bases de datos disponibles.

- Activar una base de datos.

- Mostrando la descripción de la tabla Habitaciones.

- Mostrando el Create Table para Habitaciones.

11. El diccionario de datos

En la unidad 1 se hizo referencia al “Diccionario de datos”, en él se describe


información sobre la base de datos, sus tablas, campos, relaciones, tipos de datos,
etc. Son los llamados metadatos.

18
IES Suárez de Figueroa- @vanza
Administración de sistemas informáticos en red
Gestión de bases de datos Unidad 3. Diseño físico de bases de datos

En MariaDb toda esta información se encuentra en la base de datos


INFORMATION_SCHEMA. El estudio de esta base de datos escapa a los objetivos de
este módulo.

19

Anda mungkin juga menyukai