guía de laboratorio n° 4 bases de datos

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

Upload: isaac-guillen

Post on 28-May-2015

89 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Guía de laboratorio n° 4   bases de datos

UNIVERSIDAD DE EL SALVADORESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOSHERRAMIENTAS DE PRODUCTIVIDAD

BASES DE DATOS

CONECTANDO A UNA BASE DE DATOS

Page 2: Guía de laboratorio n° 4   bases de datos

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

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

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

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

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 la distribució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 de que 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

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

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 crear una 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

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

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

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

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
Page 14: Guía de laboratorio n° 4   bases de datos

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

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

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

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

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

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 Properties debemos elegir la tabla 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

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

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

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 para conectarnos 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

SGBD indicar el Sistema Gestor de Base de Datos al que está destinado el driver. El nombre a utilizar es el especificado en la 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 del servidor, así: jdbc:postgresql://localhost/hdp115.

Page 24: Guía de laboratorio n° 4   bases de datos

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

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