Guía de laboratorio N° 4 - Bases de datos

25
 UNIVERSIDAD DE EL SALVADOR ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS HERRAMIENT AS DE PRODUCTIVIDAD BASES DE DATOS CONECTANDO A UNA BASE DE DATOS

Transcript of Guía de laboratorio N° 4 - Bases de datos

Page 1: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

UNIVERSIDAD DE EL SALVADOR

ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS

HERRAMIENTAS DE PRODUCTIVIDAD

BASES DE DATOS

CONECTANDO A UNA BASE DE DATOS

Page 2: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

INSTALANDO EL SISTEMA GESTOR DE BASE DE DATOS

Este apartado de la guía tiene como objetivo que el estudiante pueda instalar un Sistema Gestor de Base de Datos (SGDB)

en su equipo de trabajo particular.

Para instalar el SGBD en Windows vaya a las direcciones que se detalla a continuación y siga los pasos que corresponden:

PostgreSQL Server: http://www.enterprisedb.com/products-services-training/pgdownload

SQL Server 2008: Express SP3: http://www.microsoft.com/downloads/es-es/details.aspx?familyid=15279834-

6f7e-4c95-a772-921f771a9549&displaylang=es

INSTALANDO SQL Server 2008 Express

Para SQL Server debe realizar una  Nueva instalación independiente. Si se desea instalar el SGDB debe elegir la opción

Servicios de Motor de base de datos.

Por defecto, el nombre de la instancia es SQLExpress. Puede cambiar el nombre o elegir la opción  Instancia

 predeterminada. Cambie el nombre predeterminado de la instancia si tiene otra instalación de SQL Server Express, que ya

tenga asignado este nombre.

Page 3: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Las cuentas de servicio son las cuentas de usuario del Sistema operativo que podrán ejecutar los servicios de SQL Server.Elija un nombre de usuario válido y su contraseña. En un entorno de desarrollo, usualmente se usa el usuario que está

realizando la instalación.

Page 4: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

En el modo de autenticación, se recomienda el  Modo mixto. Esto permitirá crear una cuenta de administrador del Servidor

de la base de datos (sa) y asignar una contraseña.

Page 5: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Además, se debe agregar un usuario del SO como administrador de SQL Server. Como se mencionó antes, en un entorno de

desarrollo, se suele agregar al usuario que realiza la instalación.

Para administrar la base de datos desde un entorno de ventanas se recomienda instalar el SQL Server Management Studio

Express, que puede descargar desde la siguiente dirección: http://www.microsoft.com/downloads/es-es/details.aspx?

FamilyID=08e52ac2-1d62-45f6-9a4a-4b76a8564a2b.

Este entorno permite realizar acciones como:

Crear y borrar usuarios de base de datos (Inicios de sesión)

Crear, modificar y eliminar Bases de datos

Agregar, modificar y eliminar objetos a la base de datos: Tablas, Procedimientos almacenados, Trigerrs, etc.

NOTA: En Windows 7, la instalación del Management Studio debe realizar antes de instalar el Servidor de la base de datos

para evitar un conflicto de incompatibilidad.

Page 6: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

INSTALANDO PostgreSQL

Para una instalación en Windows, ejecutar el instalador para Windows y seguir los pasos.

Los usuario de Linux pueden instalar el servidor de base de datos desde el gestor de paquetes correspondiente a ladistribución que tengan instalada. En cualquier gestor de paquetes bastará con escribir la palabra: postgresql-server para que

el gestor de paquetes nos muestre el paquete deseado. Al elegir instalarlo, el gestor de paquetes mostrará una advertencia deque además del paquete, se instalarán las dependencias necesarias para que funcione correctamente.

Otra alternativa es descargar en el centro de descarga de Postgres el instalador gráfico, que es un paquete de instalación que

incluye el GUI de administración para servidores de base de datos PostgreSQL (PgAdmin III).

El GUI de administración para bases de datos PostgreSQL que viene por defecto con el instalador es PgAdmin III. Este

gestor permite crear acciones como:

Crear y borrar usuarios

Crear, modificar y eliminar bases de datos

Agregar, modificar y eliminar objetos a la base de datos: esquemas, tablas, secuencias, etc.

Por defecto, PostgreSQL se instala con las siguientes características:

Super usuario administrador del SGBD: postgres

Puerto de conexión: 5432

Esta configuración puede ser modificada en los archivos pg_hba.conf y postgresql.conf, que se encuentran en la carpeta data

especificada durante la instalación.

Page 7: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

CREANDO UNA BASE DE DATOS

Crearemos una pequeña base de datos de ejemplo que tendrá contendrá un conjunto de clientes y su tipo.

Modelo lógico de la base de datos

Modelo físico de la base de datos

IMPLEMENTACION DE LA BASE DE DATOS

SQL Server Express 2008

Iniciar la aplicación SQL Server Management Studio, especificar el servidor que se le indique. Escriba su carnet como

inicio de sesión y contraseña.

Si fuera necesario crear una base de datos, haga clic derecho en el nodo Bases de datos y elija la opción  Nueva base de

datos. Como nombre de la base de datos escriba su número de carnet.

Page 8: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Haga clic en Aceptar para que la base de datos sea creada por SQL Server. Dado que en nuestro caso la base de datos ya se

encuentra creada, es posible agregar los objetos de los que estará compuesta para su correcta implementación. Para crearuna tabla nueva, hacer clic derecho en el nodo Tablas y elegir la opción Nueva Tabla.

Page 9: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

SQL Server mostrará una pantalla para la edición de los campos de la tabla y sus características. Escriba los nombres de las

columnas de acuerdo al diseño propuesto y el tipo de dato que corresponde.

En SQL Server, los tipos de datos que se asignarán son los siguientes:

Tabla:tipo_cliente

NOMBRE DEL CAMPO TIPO TAMAÑO LLAVE

id_tipo_cliente bigint N/A Si

nombre varchar 50

Tabla:cliente

NOMBRE DEL CAMPO TIPO TAMAÑO LLAVE

id_cliente bigint N/A Si

nombre varchar 50

id_tipo_cliente bigint N/A

Page 10: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Para indicar que un campos es la llave primaria de la tabla, puede hacerse clic derecho en el campo que se desea configurar

como llave primaria y elegir la opción  Establecer clave principal o hacer clic en el campo y hacer clic en el botón cuyo

icono es una llave, situado en la barra de herramientas de diseño ubicada en la superior al árbol de objetos de la conexión.

En el diseño que estamos implementando, usaremos llaves ficticias como llaves primarias, por lo que deberemos configurar

para cada una de esas llaves, como campos de control de identidad.

Una vez realizada la configuración de una tabla, presionar el botón guardar en la barra de herramientas principal y escribir

Page 11: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

el nombre de la tabla en el cuadro de texto que aparece.

Cuando ya tengamos las tablas creadas, será necesario especificar las relaciones entre ellas. Para ello, entramos a modo de

diseño de la tabla dependiente de la relación, es decir, la tabla que tendrá la llave foránea. En este caso, cliente.

Esto desplegará una pantalla en la que se listan las relaciones en las que se ve involucrada la tabla seleccionada. Para

agregar una nueva relación, haga clic en el botón  Agregar. Esto creará una nueva relación, a la que deberemos especificar

las tablas y columnas involucradas.

Page 12: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Para especificar la relación, haga clic en el nodo  Especificación de tablas y columnas y luego en el botón que aparece a la

derecha.

Esto mostrará una pantalla donde debemos indicar como Tabla de clave principal la tabla que tiene la llave primaria que

deseamos relacionar y el campo que es la llave primaria. En Tabla de clave externa estará seleccionada por defecto la tabla

en la que nos encontrábamos trabajando al entrar a la opción, en este caso cliente y el campo que será la llave foránea en

dicha tabla.

Page 13: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Page 14: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Si se desea verificar el modelo de forma gráfica, podemos crear un diagrama de las tablas haciendo clic derecho en el nodo

 Diagramas de base de datos y eligiendo la opción Nuevo diagrama de base de datos.

Page 15: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

PostgreSQL

Para conectarse a una base de datos PostgreSQL desde PgAdmin III, iniciar la aplicación PgAdmin III. Para agregar una

nueva conexión haga clic en el icono  Add a connection to a server (Añadir conexión a servidor), situado en el extremo

izquierdo de la barra de herramientas de PgAdmin III.

Esto mostrará una ventana de registro de un nuevo servidor. En el campo Name asigne un nombre a la conexión (p. ej.:

HDP115), en el campo Host, asigne la dirección que se le indique.

Use su número de carnet como nombre de usuario y clave y haga clic en Aceptar.

Una vez registrado el servidor, podrá

Page 16: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Si deseáramos crear una base de datos, podemos crearla haciendo clic derecho en el nodo  Databases y seleccionando la

opción New Database.

En este caso, la base de datos ya está creada con el nombre hdp115, por lo que pasaremos a crear un esquema con su

número de carnet como nombre. Para ello, haga clic derecho en el nodo Schemas y eliga la opción New Schema.

Una vez creado el esquema, puede crear las tablas de acuerdo al diseño especificado.

Page 17: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Tabla: tipo_cliente

NOMBRE DEL CAMPO TIPO TAMAÑO LLAVE

id_tipo_cliente serial N/A Si

nombre character varying 50

Tabla: cliente

NOMBRE DEL CAMPO TIPO TAMAÑO LLAVE

id_cliente serial N/A Si

nombre character varying 50

id_tipo_cliente integer N/A

Para crear una tabla hacemos clic derecho sobre el nodo Tables del esquema en el que estamos trabajando y elegimos la

opción New table.

En la ventana que aparece, deberemos de indicar los campos (Columnas) de cada tabla. Una vez creados los campos

(pestaña Columns), es posible indicar las llaves primarias y las relaciones entre las tablas, siempre que las tablas

dependientes ya hayan sido creadas.

Page 18: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Para crear una llave primaria, ir a la pestaña Costraints y hacer clic en el botón  Add (Añadir) cuando el tipo de restricción(Constraint) sea Primary key. Ahí, indicar el campo que desea declarar como llave primaria y hacer clic en Aceptar.

Podemos dejar que Postgres asigne el nombre a la restricción y únicamente elegir el campo que queremos declarar como

llave primaria. En este caso, únicamente agregaremos el campo id_cliente.

Page 19: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Una vez agregada la llave primaria, podemos definir las llaves foráneas para la tabla en la que estamos trabajando. En el

caso de la tabla cliente, hacemos clic en Add cuando el tipo de restricción es Foreign Key y

Podemos dejar que Postgres asigne automáticamente el nombre a la restricción. En la pestaña P roperties debemos elegir latabla a la que se hará referencia. En este caso, la tabla tipo_cliente.

En la pestaña Columns seleccionar el campo que servirá como llave foránea en la tabla. En este caso id_tipo_cliente.

Postgres asume que el campo al que se está haciendo referencia es la llave primaria de la tabla indicada en la pestaña

propiedades.

Page 20: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Una vez indicados los campos, haga clic en el botón Add (Añadir( y luego en el botón Ok .

Una vez definidas las restricciones, presionar el botón Ok .

Page 21: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Nótese que como las llaves primarias de las tablas han sido configuradas como tipo serial, Postgres crea una secuencia para

cada campo. Esto es el equivalente al campo de identidad de SQL Server.

Page 22: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

CONECTANDO A LA BD DESDE NUESTRA APLICACION

Lógicamente, cualquier esfuerzo para tener y mantener una base de datos tiene como objetivo que nuestras aplicaciones

puedan conectarse a ellas para almacenar y recuperar los datos. Usaremos la aplicación de ejemplo: Clientes paraconectarnos a la base de datos que creamos anteriormente.

En toda aplicación Java que se conecte a una base de datos debe incluirse la librería de controladores (drivers) de conexión

para el SGBD al que se desea conectarse.

La aplicación de ejemplo que veremos está desarrollada para conectarse a una base de datos PostgreSQL, por lo que el

driver incluido en las librerías del proyecto es el de ese SGBD.

La clase que se conecta a la base de datos, que en el ejemplo está programada en forma de un servicio, usa la clase

DriverManager para crear una conexión.

La URL de conexión típicamente tiene la siguiente forma:

 jdbc:<sgbd>://<nombre o dirección del servidor>:<puerto>/<nombre de la base de datos>?<parametros de conexión>

Donde:

 jdbc indica que se trata de una conexión a través de un manejador de conexión a bases de datos Java (Java Data Base

Connectivity).

Page 23: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

SGBD indicar el Sistema Gestor de Base de Datos al que está destinado el driver. El nombre a utilizar es el especificado enla documentación de cada driver.

Nombre o dirección del servidor. El nombre de dominio del servidor de base de datos o su dirección IP.

Puerto: El puerto que esté escuchando el servidor de la base de datos. Para PostgreSQL el puerto por defecto es el 5432 y

para SQL Server es el 4433

 public class DBService {

private static Connection connection;

private static TipoClienteDB tipoClienteDb;

   private static String url = "jdbc:postgresql://192.168.1.5:5432/hdp115";

public static Connection getConnection() throws SQLException {

if (connection == null) {

  connection = DriverManager.getConnection(url, "postgres", "admin"); 

/*

* Configurando el esquema xx0000 como el esquema de trabajo* Exclusivo de PostgreSQL

*/ 

Statement stat = connection.createStatement();

stat.execute("SET search_path = 'xx00000'");

}

return connection;

}

public static TipoClienteDB getTipoClienteDb() {

if (tipoClienteDb == null) {

tipoClienteDb = new TipoClienteDB();

}

return tipoClienteDb;

}

}

En el ejemplo únicamente se ha programado un método guardar para la entidad TipoCliente, que se corresponde con la

entidad tipo_cliente de la base de datos. Los métodos de acceso a datos se han programa de en la clase TipoClienteDB.

Debe modificar la cadena de conexión según el controlador de conexión que se esté usando y la dirección del servidor.

Por ejemplo, si se está conectado a un servidor que se encuentra en el mismo equipo, puede usar localhost como nombre delservidor, así: jdbc:postgresql://localhost/hdp115.

Page 24: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

 public class TipoClienteDB {

 

 public List<TipoCliente> findAll() throws SQLException{

List<TipoCliente> tiposCliente = new ArrayList<TipoCliente>();

 

String sql = "SELECT * FROM tipo_cliente";

 

PreparedStatement prepStat = 

DBService.getConnection().prepareStatement(sql); 

ResultSet res = prepStat.executeQuery();

while(res.next()){

TipoCliente tipoCliente = new TipoCliente();

 

tipoCliente.setIdCliente(res.getInt("id_tipo_cliente"));

tipoCliente.setNombre(res.getString("nombre"));

 

tiposCliente.add(tipoCliente);

}

 

return tiposCliente;

}

 public int save(TipoCliente tipoCliente) throws SQLException{

int id = 0;

 

/*

* RETURNING id_tipo_cliente es una instrucción exclusiva de

PostgreSQL

* Si se cambia el motor de la base de datos, deberá quitarse esta

 parte de la sentencia

*/ 

  String sql = "INSERT INTO tipo_cliente(nombre) VALUES(?) RETURNING id_tipo_cliente";

 PreparedStatement prepStat = 

DBService.getConnection().prepareStatement(sql);

prepStat.setString(1, tipoCliente.getNombre());

 

ResultSet rs = prepStat.executeQuery();

 

if(rs.next()){

id = rs.getInt(1);

}

 

return id;

}

}

NetBeans incluye por defecto el controlador para conexiones a bases de datos PostgreSQL. Si se desea actualizar el

controlador, puede descargarse y actualizar el archivo de la librería por defecto o crear una librería nueva.

El controlador de SQL Server no está incorporado por defecto.

Page 25: Guía de laboratorio N° 4 - Bases de datos

5/17/2018 Gu a de laboratorio N° 4 - Bases de datos - slidepdf.com

http://slidepdf.com/reader/full/guia-de-laboratorio-n-4-bases-de-datos-55b082797764c

Para descargar los controladores de estos SGBD vaya a las siguientes direcciones:

Driver JDBC para SQL Server: http://www.microsoft.com/downloads/es-es/confirmation.aspx?familyid=99b21b65-e98f-4a61-b811-19912601fdc9

Driver JDBC para PostgreSQL: http://jdbc.postgresql.org/download.html