Curso 2019/20
Pág. 1 de 38
CURSO
2019/20
Contenido
Introducción............................................................................................................................................. 5
Índice de Figuras
Índice de Tablas
Introducción
Diseño conceptual
Diseño lógico
Diseño físico
Cada fase es un proceso iterativo, se van produciendo refinamientos sucesivos antes de pasar a la
siguiente fase
Esta notación está compuesta por componentes léxicos o tokens. Estos tokens pueden ser palabras
clave del lenguaje, definiciones de otros elementos sintácticos más básicos, expresiones, variables,
etc. La notación utilizada en BBDD es la siguiente:
Para la utilización de los lenguajes de base de datos, los SGBD proporcionan herramientas como:
A. Herramientas gráficas: (interfaz gráfica de usuario) que permite enviar comandos de forma
sencilla, sin necesidad de conocer la sintaxis del lenguaje.
B. Interprete de comandos (i.c): Aplicación cliente cuya misión es enviar comandos al SGBD y
muestra en pantalla los resultados que le devuelve el SGBD. La utilidad principal de un SGBD
es su intérprete de comandos.
Muchos administradores sólo conocen las herramientas gráficas de gestión y administración de una
base de datos, puesto que es más cómodo y más intuitivo, y aprender los lenguajes de programación
de la base de datos es una tarea difícil y laboriosa.
Sin embargo, conocer los comandos y las instrucciones que proporciona un SGBD proporciona una
visión extra que posibilita automatizar tareas rutinarias y permite solucionar problemas que no se
pueden solucionar sólo con las herramientas gráficas.
Un Sistema Gestor de Base de Datos (SGBD) o DataBase Managenent System (DBMS) es un sistema
que permite la creación, gestión y administración de bases de datos, así como la elección y manejo
de las estructuras necesarias para el almacenamiento y búsqueda de información del modo más
eficiente posible.
En la actualidad, existen multitud de SGBD y pueden ser clasificados según la forma en que
administran los datos en:
1. Relacionales (SQL).
2. No relacionales (NoSQL).
Desde que se comenzó a usar el modelo de bases de datos relacionales, en 1970, ha ido sufriendo
una serie de transformaciones hasta convertirse, hoy en día, en el modelo más utilizado para
administrar bases de datos.
Este modelo se basa fundamentalmente en establecer relaciones o vínculos entre los datos,
imaginando una tabla aparte por cada relación existente con sus propios registros y atributos.
Los principales Sistemas gestores de bases de datos relacionales (SGBD SQL) actualmente son:
2.1.1 MySQL
Sin lugar a dudas, MySQL es el sistema gestor de bases de datos más extendido y utilizado en
cualquier proyecto IT y no sólo en Desarrollo Web. Por este motivo, los desarrolladores tienen a su
disposición diversas herramientas que ofrecen una interfaz gráfica de ventana para facilitar la
administración de las bases de datos MySQL
Debemos comenzar por MySQL Workbench, una aplicación creada por los propios desarrolladores
de MySQL. Se trata de una herramienta visual muy completa que, además, es multiplataforma y se
puede instalar en sistemas Windows, Linux y Mac. Nos ayudará en cualquier etapa del desarrollo o
la administración de la base de datos, desde el diseño del modelo de datos, el acceso a la
información y la generación de diagramas, etc.
La única desventaja es que puede resultar una herramienta un poco compleja, por lo que quizás
usuarios con menos experiencia prefieran otras alternativas.
En segundo lugar, nos encontramos este conocido y altamente extendido gestor de MySQL con
interfaz web. Es difícil encontrar un desarrollador de PHP que no conozca, use o la haya usado en
algún momento o proyecto. Ofrece todas las herramientas de administración de MySQL de una
forma sencilla, como la generación de tablas, su manipulación, acceso a los datos, usuarios de
MySQL, creación y restauración de copias de seguridad, etc. Al tratarse de una interfaz web, es
posible instalarla en cualquier servidor con soporte a PHP y disponer así de una herramienta de
gestión de base de datos remota o local.
Este software dispone de opciones para realizar prácticamente cualquier opción que se pueda crear
vía SQL:
Es el sistema de gestión de una base de datos MySQL preferido por la mayoría de los desarrolladores
que usan Mac OS X. Aunque no es tan completo y avanzado como MySQL Workbench, contiene
todas las funcionalidades esenciales para el uso del día a día: la consulta de la información, edición
y creación de tablas, realización de backups, etc. Sequel Pro resulta muy cómodo de usar, rápido y
no requiere prácticamente aprendizaje, ya que las opciones están muy a la vista y resulta muy
intuitivo. Su principal desventaja es que sólo está disponible para Mac.
El desarrollador o administrador de MySQL que trabaja sobre Windows y que no quiere complicarse
con un sistema gestor complejo como MySQL Workbench tiene en HeidiSQL quizás su mejor
alternativa. Es un programa maduro, con una nutrida cantidad de funcionalidades, que permite
comenzar a administrar MySQL o a acceder a las bases de datos prácticamente sin apenas necesitar
formación. Tiene la ventaja de permitir la administración de otros sistemas gestores de base de
datos como PostgreSQL o SQL Server, aunque sólo está disponible para Windows.
La herramienta universal para bases de datos. Es muy potente, no solo por estar disponible para la
instalación en cualquier sistema operativo, sino también por la cantidad de sistemas gestores de
bases de datos que soporta: MySQL, MariaDB, PostgreSQL, SQLite, Oracle, SQL Server, Sybase, MS
Access.
Está disponible para Windows, Mac OS X y Linux y resulta muy rápido de usar en cualquier sistema.
Dispone de gran cantidad de funcionalidades útiles y resultará especialmente atractivo para los
usuarios de Linux, ya que sería la principal alternativa a MySQL Workbench disponible en este
sistema.
2.1.2 MariaDB
2.1.3 SQLite
La gran desventaja de SQLite es la escalabilidad ya que no soporta bases de datos que sean muy
grandes.
Existen varias Interfaces Gráficas que permiten manipular las bases SQLite:
2.1.4 PostgreSQL
La principal desventaja es la lentitud para la administración de bases de datos pequeñas ya que está
optimizado para gestionar grandes volúmenes de datos.
Su principal desventaja es el precio. Cuenta con un plan gratuito (Express) pero lo normal es la
elección de alguno de los planes de pago disponibles (Standard, Developer, Enterprise o SQL Azure,
la versión de SQL Server en la nube).
SQL Server Management Studio o SSMS, es una herramienta que se puede instalar en cualquier
equipo sin necesidad que en dicho equipo se haya instalado una instancia de SQL Server y desde ahí
conectarse a diversos servidores de Base de Datos.
2.1.6 Oracle
Soporte de transacciones.
Estabilidad.
Escalabilidad.
Multiplataforma.
La principal desventaja, al igual que SQL Server, es el coste del software ya que, aunque cuenta con
una versión gratuita (Express Edition o XE), sus principales opciones son de pago.
Es capaz de manipular todas las funciones básicas de una Base de Datos (creación de tablas,
usuarios, exportación e importación de información, etc.).
Se utilizan en entornos distribuidos que han de estar siempre disponibles y operativos y que
gestionan un importante volumen de datos.
Para la administración de este tipo de bases de datos, actualmente los principales sistemas gestores
de bases de datos (SGBD NoSQL) son:
2.2.1 MongoDB
Empresas como Google, Facebook, eBay, Cisco o Adobe utilizan MongoDB como Sistema Gestor de
Bases de datos.
Indexación y replicación
Balanceo de carga
Almacenamiento en ficheros
Consultas ad hoc
Escalabilidad horizontal
Open Source
Algunas Interfaces gráficas de bases de datos Mongodb o bases de datos NoSQL en general son:
Robomongo.
Studio 3t Not Free, but with No-comercial license.
NoSQLBooster (before called MongoBooster).
Nucleon database Master.
Mongo Manager (NoSQL Manager).
Mongo Management Studio.
MongoJs Query Analizer.
Mongo Client, NoSQL Client.
Cluster Control.
Hackolade.
2.2.2 Redis
Atomicidad y persistencia
Gran velocidad
Simplicidad
Multiplataforma
La interfaz gráfica Redis Desktop Manager es una aplicación de administración de bases de datos
Redis de código abierto para Windows, Linux y MacOS.
2.2.3 Cassandra
Dispone de un lenguaje propio para las consultas denominado CQL (Cassandra Query Languaje).
Multiplataforma
Propio lenguaje de consultas (CQL)
Escalado lineal y horizontal
Es un SGBD distribuido
Utiliza una arquitectura peer-to-peer.
mysql envía comandos SQL al servidor para que sean ejecutados. También hay un conjunto de
comandos que mysql interpreta por sí mismo.
Para obtener una lista de estos comandos, se escribe help o \h en el prompt mysql>
La tabla USER almacena toda la información referente a los usuarios junto con sus privilegios
globales.
Las filas repetidas existen porque determinados usuarios pueden acceder desde más de un
host diferente. Es importante saber que MySQL filtra el acceso a un servidor de bases de
datos de acuerdo a la dirección IP origen del cliente. Por ello es útil mostrar también la
columna "host":
Los caracteres porcentuales (%) son un comodín (wildcard), en el sentido que indican que un
usuario puede conectarse al motor (originar la conexión) desde cualquier host (cliente).
Lamentablemente, a este punto el nuevo usuario no tiene permisos para hacer algo con las
bases de datos. Por consecuencia si el usuario intenta identificarse (con la contraseña
establecida), no será capaz de acceder a la consola de MySQL.
Por ello, lo primero que debemos hacer es proporcionarle el acceso requerido al usuario con
la información que requiere.
Una vez que has finalizado con los permisos, hay que asegurarse siempre de refrescar todos
los privilegios.
FLUSH PRIVILEGES;
A continuación se listan los posibles permisos que se pueden asignar a los usuarios:
Para dar acceso a cualquier base de datos o tabla, asegúrate de insertar un asterisco (*) en
lugar del nombre de la base de datos o tabla.
Cada vez que se actualiza o se cambian permisos, hay de refrescar los privilegios mediante:
FLUSH PRIVILEGES;
Ejemplo:
Así como puedes borrar bases de datos con DROP, también puedes usar el comando DROP
para borrar usuarios:
La herramienta que nos proporciona ORACLE para interactuar con la base de datos se llama
SQL*Plus. Básicamente, es un intérprete SQL con algunas opciones de edición y formateo de
resultados.
Antes de ver la manera de conectarse a SQL*Plus, conviene tener claros algunos conceptos:
Usuario/Clave: Para poder acceder a una base de datos gestionada por ORACLE debemos ser un
usuario autorizado de la misma y conocer la palabra clave, password, asociada al usuario.
Una de las más básicas tareas de un administrador de base de datos es identificar los usuarios. Cada
usuario que conecta en la base de datos debe de tener una cuenta.
Para crear un usuario utilizamos la sentencia CREATE USER. Cuando creas una cuenta como mínimo
tienes que asignar un único nombre (username) y una contraseña para poder autenticarse.
Para cambiar alguno de los atributos que se le ha añadido al usuario creado se utiliza la sentencia
ALTER USER.
Cuando uno se conecta con una instancia de una base de datos la cuenta de usuario debe de estar
autenticada. ORACLE provee tres métodos de autenticación para nuestra cuenta de usuario.
AUTENTICACIÓN MEDIANTE PASSWORD: Cuando un usuario conecta con una base de datos
verifica que este usuario y la contraseña introducida almacenada en la base de datos, sea
correcta. Las contraseñas se guardan encriptadas en la base de datos (en el data dictionary).
AUTENTICACIÓN EXTERNA: Cuando un usuario conecta con la base de datos se verifica que el
nombre de usuario es el mismo que el nombre de usuario del sistema operativo para permitir la
validación.
No se almacenan las cuentas en la base de datos de ninguna forma. Estas cuentas están siempre
referidas con OPS$ .A partir de la versión 10g puedes configurar OS_AUTHENT_PREFIX en el
spfile.
Mediante IDENTIFIED EXTERNALLY decimos a la base de datos que nuestra cuenta es externa
y tiene que ser validada con el sistema operativo.
Mediante IDENTIFIED GLOBALLY decimos a la base de datos que nuestra cuenta se autentica
globalmente, mediante otra opción de seguridad avanzada.
Un tablespace es un almacén lógico de los ficheros de la base de datos. Cada tablespace posee uno
o varios ficheros (datafiles) donde almacena toda la información; estos ficheros deben tener una
estructura lógica.
Cuando se crea una base de datos, hay que crear al menos un tablespace, que por defecto es
SYSTEM. Igualmente, cuando se crea un tablespace, se debe indicar al menos un datafile que
formará parte de este datafile (posteriormente se pueden añadir más datafiles al tablespace).
El datafile es un fichero físico al que tendremos que asignar un directorio, un nombre y un tamaño
inicial que posteriormente se podrá ampliar según las necesidades (y de las limitaciones) de la
instalación. Este tablespace es el que contendrá la información de los usuarios SYS y SYSTEM que
son los usuarios que tienen la información necesaria para que funcione la base de datos.
Por tanto, el tablespace SYSTEM es una pieza clave para el buen funcionamiento de nuestra base de
datos, por lo que es una buena práctica crear el menos otro tablespace donde almacenar el resto
de usuarios que vayamos creando en nuestra base de datos. Podría ahorrarnos:
Mediante esta sentencia asignamos un usuario a un tablespace, este será su tablespace por defecto
cuando creamos un usuario.
La base de datos toma un tablespace por defecto, en caso de querer cambiar este tablespace
utilizamos la siguiente sentencia
Un tablespace temporal se utiliza para almacenar “segmentos” temporales que son creados durante
operaciones como ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX. A veces a
los usuarios se les asocia un tablespace temporal para realizar este tipo de operaciones, cuando
estas operaciones finalizan este segmento temporal que se ha creado exclusivamente para la
operación desaparece.
Mediante TEMPORARY TABLESPACE asignamos como tablespace temporal temp al usuario david.
En caso de que el usuario esté creado si queremos asignarle un tablespace temporal utilizamos
ALTER USER
Al igual que podemos asignar un tablespace a un usuario, también podemos asignarle un perfil
(profile). El principal perfil (profile) por defecto se denomina default.
Un perfil de usuario es una forma de limitar los recursos que puede utilizar un usuario. Antes de
asignar un perfil a un usuario es necesario que este perfil exista en la base de datos.
En caso de que el usuario ya esté creado al igual que en los anteriores casos utilizamos la sentencia
ALTER USER.
Para borrar un usuario utilizamos la sentencia DROP USER, podemos opcionalmente incluir la opción
CASCADE, se utiliza para borrar recursivamente los objetos del usuario que se pretende borrar.
A un usuario podemos otorgarle una serie de privilegios. Un privilegio permite a un usuario acceder
a ciertos objetos o realizar ciertas acciones:
Privilegios sobre Objetos (Object privileges) a permisos sobre vistas, tablas, secuencias,
procedimientos, paquetes.
Privilegios del Sistema (System privileges) a permisos sobre “niveles de la base de datos”
como pueden ser conexión a la base de datos, creación de usuarios, limitar cuentas.
Privilegios sobre Roles (Role privileges) a muchos permisos son otorgados mediante roles
agrupando un conjunto de privilegios.
Para otorgar privilegios utilizamos la sentencia GRANT, para quitar un privilegio o permiso a un
usuario utilizamos la sentencia REVOKE
EJEMPLOS:
Privilegio sobre una tabla:
SQL>GRANT ALL ON tabla_alumnos TO david
Si queremos asignar sólo uno de estos permisos utilizamos la misma sentencia, pero con el permiso
que queramos otorgar.
Para el caso de las vistas podemos a un usuario otorgar permisos SELECT, INSERT, UPDATE,
DELETE, DEBUG, REFERENCES.
Siendo vista_alumnos una vista de nuestra base de datos y david un usuario de esta:
Si queremos quitar un privilegio a uno de estos objetos haremos lo mismo que con GRANT pero
utilizando la sentencia REVOKE.
3.3 Lenguajes
Los SGBD proporcionan lenguajes para poder acceder a los datos y realizar algunas tareas de
gestión.
Structure query lenguaje (SQL): lenguaje estructurado de consultas. Lenguaje de acceso a datos
Inventado por IBM.
Permite obtener o modificar la información de una Base de Datos, está formada por:
COMANDO + CLAÚSULA
DDL es utilizado para crear estructuras dentro de la base de datos, permitiendo por ejemplo:
CREATE, crear objetos en la base de datos como tablas, vistas, usuarios, perfiles.
ALTER, modificar los objetos creados.
DROP, borrar los objetos creados.
TRUNCATE, borrar todos los registros de una tabla.
2. Crea el archivo de la base de datos. Para hacerlo, escribe el comando de creación de bases de
datos:
Sintaxis:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] nombre_db
La instrucción ALTER DATABASE se usa para modificar, mantener o recuperar una base de datos
existente.
Ejemplo MySQL (cambia la colación de una base de datos):
Mysql>ALTER DATABASE Startrek COLLATE latin1_spanish_ci;
Ejemplo Oracle
SQL> ALTER DATABASE DATAFILE ‘/datos/jardineria/system01.dbf' SIZE 1G;
SQL> ALTER DATABASE open read only;
SQL> ALTER DATABASE flashback off;
Ejemplo MySQL:
Ejemplo Oracle
8. Creación de tablas
definición_create:
definición_columna
| [CONSTRAINT [símbolo]] PRIMARY KEY (nombre_columna,...)
| [CONSTRAINT [símbolo]] FOREIGN KEY (nombre_columna,...)
[definición_referencia]
definición_columna:
nombre_columna tipo_datos [NOT NULL | NULL] [DEFAULT valor]
[UNIQUE [KEY] | [PRIMARY] KEY]
[definición_referencia]
definición_referencia:
REFERENCES nombre_tabla [(nombre_columna,...)]
[ON DELETE {CASCADE | SET NULL | NO ACTION} ]
[ON UPDATE {CASCADE | SET NULL | NO ACTION} ]
Una vez creada la/s tabla/s se utiliza en comando DESCRIBE para asegurarse de haber incluido
todos los campos.
Mysql>DESCRIBE nombre_de_la_tabla;
Ejemplo:
A NIVEL DE TABLA
A NIVEL DE COLUMNA
(es posible definir claves compuestas)
CREATE TABLE vehiculo( CREATE TABLE vehiculo(
matricula varchar(7) PRIMARY matricula VARCHAR(7),
KEY, marca VARCHAR(20),
marca VARCHAR(20), modelo VARCHAR(20),
modelo VARCHAR(20), precio NUMERIC(7,2)
precio NUMERIC(7,2) PRIMARY KEY (matricula)
); );
estado VARCHAR(10),
CONSTRAINT C_ESTADO
CHECK (estado IN
'Pendiente','Entregado','Rechazado')
)
TABLESPACE ADMINISTRACION
STORAGE (initial 100k next 100k minextents 1
maxextents unlimited pctincrease 0);
Con el comando SHOW nos permite saber cuántas tablas hay en la base de datos.
MySQL
Oracle
TABLE_NAME
------------------------------
PARTIDOS
ESTADISTICAS
JUGADORES
EQUIPOS
DESCRIBE [esquema.]nombre_tabla
especificación_alter:
ADD definición_columna [FIRST | AFTER nombre_columna ]
| ADD (definición_columna,...)
| ADD [CONSTRAINT [símbolo]]
PRIMARY KEY (nombre_columna,...)
| ADD [CONSTRAINT [símbolo]]
UNIQUE (nombre_columna,...)
| ADD [CONSTRAINT [símbolo]]
FOREIGN KEY (nombre_columna,...)
[definición_referencia]
MySQL
Oracle
FORMATO EJEMPLO
MySQL MySQL
DROP [TEMPORARY] DROP TABLE Mascotas;
TABLE tbl_name [,tbl_name]… DROP TABLE Clientes, Empleados;
Oracle Oracle
DROP [TEMPORARY] DROP TABLE Partidos;
TABLE tbl_name DROP TABLE Jugadores CASCADE
[CASCADE CONSTRAINTS] CONSTRAINT;
Sintaxis MySQL
Sintaxis Oracle
12. Cuestionario