Usuario:ManuelRomero/ProgramacionWeb/INAEM2017/BasesDatos/BD/SGBDC

De WikiEducator
Saltar a: navegación, buscar


Sistema Gestor de Bases de datos



Icon define.gif
Sistema Gestor de Bases de Datos (SGBD)

Un SGBD es un software que nos va a permitir gestionar una base de datos.




Icon define.gif
Gestionar una Base de datos

Consiste de crear la base de datos y manipularla. manipular implica poder realizar operaciones sobre ella como son




Icon key points.gif

Acciones sobre la base de datos

Sobre los elementos de la base de datos (tablas, usuarios, indices, ...
Crear
Eliminar
Modificar
Sobre el contenidos de los elementos (En la tablas)
Insertar
Actualizar
Modificar o cambiar valores
Consultar



SistemaGestoresBD.jpg

La manera en la que se organiza la información para que se pueda gestionar es fundamental, y los software de los gestores de bases de datos han de gestionarla siguiendo ese criterio.
De esta forma aparece una nueva letra, así hablamos de SGBDR, haciendo referencia a que son Relacionales, o SGBDOO haciendo referencia que son orientados a objetos.
BdOOVsBDR.png
Es éste un tema que lleva muchos años en uso.Para más información:



Los Sistemas de Bases de datos Relacionales están basados en Tablas y en claves principales - claves foráneas para mantener relacionadas tuplas o filas de diferentes tableas.


Icon casestudy.gif
Imagen Cliente Factura
  • En la imagen siguiente vemos una tabla de clientes y una facturas
  • Vemos cómo cada factura corresponde a un cliente
  • Para ello en la tabla de factura tenemos la clave de cliente
  • No tiene sentido que en ese campo haya un identificador de un cliente que no existe
  • Esta restricción es una restricción de clave foránea o restricción de integridad referencial

BDClienteFactura.png



  • Entre los sistemas de bases de datos Relacionales tenemos Mysql Vs maria, PostgreSQL' (Aunque ésta última es Objeto Relacional), Oracle que también tiene la posibilidad de ser usada como objeto-Relacional, ...



Actualmente también se trabaja de forma complementaria en las aplicaciones con SGBD NoSql, llamados así por que su estructura no está basada en relaciones entre tablas, sino que tiene otros criterios.
Podemos ver que existen bases de datos que siguen otro criterio, como el de almacenar con clave -valor como hace MongoDB que está basada en Documentos , por lo que se llama una base de datos Documental. Este concepto lo estudiaremos en otro tema. Para gestionar sistemas de bases de tipo Mongo, podemos usar herramientas como Rockmongo, o Mongochef. Esta última es más recomendada .


Icon inter.gif
Recursos de la Web





Mysql

Mysql es un gestor de bases de datos relacional. Actualmente es un producto propietario de la empresa Oracle, y el software correspondiente libre es Maria que en estos momentos funciona exactamente igual que Mysql y con los mismos comandos. (año 2017).
Tener en cuenta la diferencia de la parte del servidor (donde realmente se guardan los datos), y la parte del cliente que es un software que nos ofrece una interfaz de comandos o gráfica y nos permite conectarnos al servidor y gestionar la bases de datos (básicamente enviar sentencias SQL y recoger los resultado).
MysqlClienteServidor.png

 apt-get install mysql-server mysql-client

Como todos servicio se puede arrancar o parar

service mysql start/stop/restart/status
  • El fichero de configuración
/etc/mysql/my.cnf



Mysql
  • En él podemos ver el puerto (3306 por defecto), el usuario y otros parámetros del servicio


Icon activity.jpg
Mysql con docker
  • Monta un contenedor de docker llamado contenedorMysql.
  • Instala en el contenedor mysql.
  • Prueba desde tu localhost a conectarte a la base de datos de ese contenedor.





Mysql desde línea de comandos

Es importante saber manejar la línea de comandos con el cliente mysql. En alguna ocasión puede ser la forma más rápida de obtener información o realizar acciones sobre la base de dados. Para ello debemos de repasar algún comandos. Son pocos, pero hay que conocerlos.

Acciones básicas
  1. Conectarse a una base de datos en un servidor
 mysql -u usuario -ppassword
 # Si no especificas el passowr, se solicitará
 # Si lo especificas ha de ir sin ningún espacio entre el  parámetro -p

1.- Mostrar las bases de datos

 SHOW DATABASES;

2.-Usar una base de datos concreta

 USE nombre_base_datos;

3.-Mostrar la descripción de una base de datos (Las tablas que contiene)

 DESCRIBE nombre_tabla;

4.-Obtener ayuda de los comandos disponibles

 help;
  • Por supuesto debemos de poder ejecutar sentencias SQL

5.-Crear una base de datos (Sentencia SQL), y borrarla 6.-Crear una tabla 7.-Crear un usuario y darle permisos 8.-Modificar y borrar una tabla 9.-Insertar, modificar y borrar registros o tuplas 10.-Realizar consultas select

connect -h,-u, -p
 use database
 exit o quit
 help Para conocer los comandos que se pueden usar.
      http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/sql-syntax.html



Icon activity.jpg
Actividad
  1. Conectar a mysql
  2. Mira Las bases de datos que tienes
  3. usa una base de datos concreta
  4. mira las tablas que tiene esa bases de datos
  5. mira la estructura de la tabla
  6. Haz una consulta de los valores que tiene su primera columna
  7. ejecuta el comando help
  8. sal de sql




Bases de datos
  • Vamos a trabajar con un ejemplo de bases de datos de una tienda

Archivo:BaseDatos.pdf

  • Para la base de datos anterior, vamos a establecer un poblar la BD.
  • A continuación el contenido de un sql para poblar la BD


Icon activity.jpg
Actividad

Usando phpmyadmin, carga los datos para poblar la base de datos


Recordando mysql
  • En la siguiente página puedes hacer un repaso de mysql
http://dev.mysql.com/doc/refman/5.7/en/index.html
  • Un manual en castellano
http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/
  • Debemos conocer también la herramienta phpmyadmin
sudo apt-get install phpmyadmin
Recordando mysql en la página oficial
http://www.phpmyadmin.net/home_page/index.php
  • En el proceso de instalación nos pedirá si queremos configurar la base de datos, decimos que sí
Configure database for phpmyadmin with dbconfig-common? [yes/no] yes
  • Especificamos el password para root en phpmyadmin
MySQL application password for phpmyadmin: 
 
Password confirmation:

Especificamos el servidor web para conectarnos a la base de datos

  1. apache2  2. lighttpd
 
(Enter the items you want to select, separated by spaces.)
 
Web server to reconfigure automatically: 1

Mysql Interfaz gráfica

Además de línea de comandos también se dispone de varias herramientas gráficas alternativas. Siempre resulta más agradable e intuitivo, pero requiere más recursos y tener instalados aplicaciones concretas.
En windows o con wine en linux podemos probar SQLyog https://www.webyog.com/product/sqlyog, una herramienta intuitiva y de poco peso. No obstante usaremos phpmyadmin, por ser un clásico y de sencillo uso.



Icon activity.jpg
Actividad
  • Instalamos phpmyadmin en nuestro contenedor contenedorMysql
sudo apt-get install phpmyadmin
  • Probamos a acceder a él desde nuestro localhost
  • Depende de como instalemos es posible que haya que hacer un enlace simbóloco.
  • Para ello hay que buscar dónde se ha instalado el index.php de phpmyadmin .
  • Entonces haceremos un enlace simbólico de esa carpeta a nuestro DocumentRoot.
  • En mi caso:
# ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Probamos a conectarnos por phpmyadmin a nuestro servidor local

#Escribimos en el url
http://ip_contenedor/phpmyadmin



  • Para la base de datos anterior, vamos a establecer un poblar la BD.
  • A continuación el contenido de un sql para poblar la BD


Icon activity.jpg
Actividad

Usando phpmyadmin, carga los datos para poblar la base de datos


  • Otra herramienta importante que permite realizar diseños es workbrench
http://dev.mysql.com/doc/workbench/en/index.html
    sudo add-apt-repository ppa:olivier-berten/misc 
    sudo apt-get update 
    sudo apt-get install  mysql-workbench


Icon activity.jpg
Actividad
  • Instalamos y probamos las diferentes opciones con esta herramienta
  • Probamos a hacer un diseño en modelo relacional y a partir del modelo creamos las tablas.
  • Probamos las opciones forward engineer y reverser engineer




Herramientas de administración

  • Con phpmyadmin, podemos hacer casi todo de administrar y manejar las bases de datos
  • No obstante mysql proporciona una serie de herramientas que permiten administrar por línea de comandos .
  • En muchas ocasiones este tipo de operaciones resultan muy interesantes.
  1. mysql
  2. myhsqladmin
  3. mysqlshow
mysqladmin
  • Es un cliente específico para la administración
  • Entre otras acciones podemos realizar:
  1. crear y eliminar bases de datos.
  2. mostrar la configuración y el estado del servidor.
  3. cambiar contraseñas.
  4. detener un servidor.
  5. ver la version del servidor
     http://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/mysqladmin.html


Icon activity.jpg
Actividad

Prueba a hacer cada una de las acciones especificadas anteriormente

mysqladmin -u root -proot create nombreBaseDatos
mysqladmin -u root -proot extend-status
mysqladmin -u root -proot password 
mysqladmin -u root -proot shutdown
mysqladmin -u root -proot version




mysqlshow
http://ftp.nchu.edu.tw/MySQL//doc/refman/5.0/es/mysqlshow.html
  • muestra información sobre la base de datos
mysqlshow -u root -proot 
  • Nos mostraría las tablas de ese usuario

Oracle



Icon define.gif
Definición
Oracle es un sistema gestor de bases de datos relacional con características objeto-Relacional


T1.png


Sirve para almacenar los datos

Archivo:3t223.png


T3.png


Qué es una base de datos relacional

T202.png


Modelo de datos desde Oracle

T222.png


Modelo relacional en Oracle

T6.png


Modelo relacional en Oracle

T7.png


Relación de varias vistas

T8.png


Obtener información con SQL

T100.png


Setencias SQL

T111.png


Entornos para interactuar

T122.png





JDeveloper

sudo add-apt-repository ppa:webupd8team/java

apt-get update

apt-get install oracle-java8-installer

update-alternatives –config java

  • Descargamos el fichero a instalar
  • Hay que registrarse en oracle (Crear una cuenta)
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html 
  • Descargamos en Other Platforms” y se pincha “Downlad” son 334MB.
  • Lo tendremos en “/home/usuario/Descarga”
  • Habremos descargado sqldeveloper-4.1.5.21.78-no-jre.zip
  • Ahora se trata de descomprimirlo y tenerlo accesible. por ejemplo lo extraeremos en /opt
cd /home/usuario/descarga
sudo unzip sqldeveloper-4.1.5.21.78-no-jre.zip -d /opt
  • Ahora debemos editar el fichero shell que lanzará el programa de developer
sudo  vim /opt/sqldeveloper/sqldeveloper.sh
  • Localizar y comentar las sigueintes líneas
!/bin/bash
cd “`dirname $0`”/sqldeveloper/bin && bash sqldeveloper $*
  • Y las comentamos con # al principio de la línea
#!/bin/bash
#cd “`dirname $0`”/sqldeveloper/bin && bash sqldeveloper $*
  • Añadimos la siguiente línea
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/ 
cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $* &
  • Y ahora creamos un enlace simbólico para poderlo ejecutar desde la línea de comandos en cualquier ubicación
sudo ln -s /opt/sqldeveloper/sqldeveloper.sh /usr/local/bin/sqldeveloper

Ejecución de JDeveloper

  • Escribimos en línea de comandos
sqldeveloper & 

(Comment.gif: El & es para que se ejecute en background y tener disponible el terminal)


  • Entonces aparece la herramienta.
  • Esta aplicación es un cliente que nos va a permitir conectarnos con una base de datos de Oracle
  • La base de datos estará en un servidor de bases de datos de oracle.
  • Podemos instalarnos una. Oracle deja instalar una versión llamada express para probar
  • Aquí puedes ver una forma deinstalarlo para linux
https://jmguimera.blogspot.com.es/2016/08/como-instalar-y-configurar-oracle-11g.html
  • Nosotros nos concectaremos a una que hay en el instituto en el servidor 172.30.160.190 (ip privada interna)
  • ver imágenes

Sqldeveloper.png


Developer conexion.png


Creando una base de datos para trabajar

Especificación del sistema

Vamos a especificar el sistema con el cual vamos a trabajar

Los empleados  (EMPLOYEES) trabajan en un departamento. 
De los empleados se quiere saber la siguiente información 
   EMPLOYEE_ID
   FIRST_NAME ,
   LAST_NAME ,
   EMAIL ,
   PHONE_,
   HIRE_DATE ,
   SALARY ,
   COMMISSION_PCT ,
Puede que algunos empleados no estén asignados a ningún departamento. 
En Los departamentos (DEPARTMENTS )trabajan los empleados.
De cada departamento se quiere saber
  DEPARTMENT_ID ,
  DEPARTMENT_NAME
Cada departamento es gestionado por un  empleado.
Cada empleado puede tener diferentes tipos de cargos (JOBS).  
de los JOBS se quiere saber
    GRADE_LEVEL,
    LOWEST_SAL ,
    HIGHEST_SAL
Se quiere saber todos los trabajos realizados por los empleados . Si un empleado cambia de
departamento dentro de un mismo cargo o cambia de cargo dentro de un mismo departamento.
Se insertará una nueva fila en esta tabla con la información del antiguo cargo del empleado.
Un Empleado va a ser jefe de otros empleados y cada empleado va a tener un jefe.
Cada departamento va a tener una dirección (LOCATIONS), 
De cada localidad se quiere conocer:
    LOCATION_ID,
    STREET_ADDRESS ,
    POSTAL_CODE ,
    CITY ,
    STATE_PROVINCE
Cada localidad va a pertenecer a una ciudad (COUNTRIES)
   COUNTRY_ID,
   COUNTRY_NAME, 
y cada ciudad va a pertenecer a una region
   REGION_ID,
   REGION_NAME 
Diagrama E/R

Archivo:Modelo ER HR dia.png Modelo ER HR.png

Modelo Relacional


Fichero SQL de creación


Fichero SQL de inserción