Você está na página 1de 21

UNIVERSIDAD DE EL SALVADOR

ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS


HERRAMIENTAS DE PRODUCTIVIDAD
BASES DE DATOS
CONECTANDO A UNA BASE DE DATOS
CREANDO UNA BASE DE DATOS
Crearemos una pequea base de datos de ejemplo que tendr contendr un conjunto de clientes y su tipo.
Modelo lgico de la base de datos
Modelo fsico de la base de datos
IMPLEMENTACION DE LA BASE DE DATOS
SQL Server Express 2008
Iniciar la aplicacin SQ Ser!er Management Studio" especificar el ser!idor que se le indique. #scriba su carnet como
inicio de sesin y contrasea.
Si fuera necesario crear una base de datos" $aga clic derec$o en el nodo Bases de datos y elija la opcin Nueva base de
datos.
%aga clic en Aceptar para que la base de datos sea creada por SQ Ser!er. &ado 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 implementacin. 'ara crear
una tabla nue!a" $acer clic derec$o en el nodo Tablas y elegir la opcin Nueva Tabla.
SQ Ser!er mostrar una pantalla para la edicin de los campos de la tabla y sus caractersticas. #scriba los nombres de las
columnas de acuerdo al diseo propuesto y el tipo de dato que corresponde.
#n SQ Ser!er" los tipos de datos que se asignarn son los siguientes(
)abla(tipo*cliente
NOMBRE DEL CAMPO TIPO TAMAO LLAVE
id*tipo*cliente bigint +,- Si
nombre !arc$ar ./
)abla(cliente
NOMBRE DEL CAMPO TIPO TAMAO LLAVE
id*cliente bigint +,- Si
nombre !arc$ar ./
id*tipo*cliente bigint +,-
'ara indicar que un campo es la lla!e primaria de la tabla" puede $acerse clic derec$o en el campo que se desea configurar
como lla!e primaria y elegir la opcin Establecer clave principal o $acer clic en el campo y $acer clic en el botn cuyo
icono es una lla!e" situado en la barra de $erramientas de diseo ubicada en la superior al rbol de objetos de la cone0in.
#n el diseo que estamos implementando" usaremos lla!es ficticias como lla!es primarias" por lo que deberemos configurar
para cada una de esas lla!es" como campos de control de identidad.
1na !e2 reali2ada la configuracin de una tabla" presionar el botn guardar en la barra de $erramientas principal y escribir
el nombre de la tabla en el cuadro de te0to que aparece.
Cuando ya tengamos las tablas creadas" ser necesario especificar las relaciones entre ellas. 'ara ello" entramos a modo de
diseo de la tabla dependiente de la relacin" es decir" la tabla que tendr la lla!e fornea. #n este caso" cliente.
#sto desplegar una pantalla en la que se listan las relaciones en las que se !e in!olucrada la tabla seleccionada. 'ara
agregar una nue!a relacin" $aga clic en el botn Agregar. #sto crear una nue!a relacin" a la que deberemos especificar
las tablas y columnas in!olucradas.
'ara especificar la relacin" $aga clic en el nodo Especificacin de tablas y columnas y luego en el botn que aparece a la
derec$a.
#sto mostrar una pantalla donde debemos indicar como Tabla de clave principal la tabla que tiene la lla!e primaria que
deseamos relacionar y el campo que es la lla!e primaria. #n Tabla de clave externa estar seleccionada por defecto la tabla
en la que nos encontrbamos trabajando al entrar a la opcin" en este caso cliente y el campo que ser la lla!e fornea en
dic$a tabla.
Si se desea !erificar el modelo de forma grfica" podemos crear un diagrama de las tablas $aciendo clic derec$o en el nodo
Diagramas de base de datos y eligiendo la opcin Nuevo diagrama de base de datos.
PostgreSQL
1saremos 'g-dmin III para conectarnos al ser!idor de base de datos 'ostgreSQ. #n caso de que 'g-dmin III no est3
instalado en su equipo" para descargar 4nicamente 'g-dmin III" !aya a la direccin(
$ttp(,,555.postgresql.org,ftp,pgadmin6,release,!7.78.9,5in69," descomprima el arc$i!o 2ip y ejecute el instalador.
'ara conectarse a una base de datos 'ostgreSQ desde 'g-dmin III" iniciar la aplicacin 'g-dmin III. 'ara agregar una
nue!a cone0in $aga clic en el icono Add a connection to a server :-adir cone0in a ser!idor;" situado en el e0tremo
i2quierdo de la barra de $erramientas de 'g-dmin III.
#sto mostrar una !entana de registro de un nue!o ser!idor. #n el campo +ame asigne un nombre a la cone0in :p. ej.(
%&'77.;" en el campo %ost" asigne la direccin que se le indique.
1se su n4mero de carnet como nombre de usuario y cla!e y $aga clic en Aceptar.
1na !e2 registrado el ser!idor" podr !er las bases de datos que se encuentran implementadas y crear una nue!a base de
datos si fuera necesario.
Si deseramos crear una base de datos" podemos crearla $aciendo clic derec$o en el nodo Databases y seleccionando la
opcin New Database.
#n este caso" la base de datos ya est creada con el nombre $dp77." por lo que pasaremos a crear un esquema con su
n4mero de carnet como nombre. 'ara ello" $aga clic derec$o en el nodo Schemas y eliga la opcin New Schema.
1na !e2 creado el esquema" puede crear las tablas de acuerdo al diseo especificado.
)abla( tipo*cliente
NOMBRE DEL CAMPO TIPO TAMAO LLAVE
id*tipo*cliente serial +,- Si
nombre c$aracter !arying ./
)abla( cliente
NOMBRE DEL CAMPO TIPO TAMAO LLAVE
id*cliente serial +,- Si
nombre c$aracter !arying ./
id*tipo*cliente integer +,-
'ara crear una tabla $acemos clic derec$o sobre el nodo Tables del esquema en el que estamos trabajando y elegimos la
opcin New table.
#n la !entana que aparece" deberemos de indicar los campos :Columnas; de cada tabla. 1na !e2 creados los campos
:pestaa Columns;" es posible indicar las lla!es primarias y las relaciones entre las tablas" siempre que las tablas
dependientes ya $ayan sido creadas.
'ara crear una lla!e primaria" ir a la pestaa ostraints y $acer clic en el botn Add :-adir; cuando el tipo de restriccin
:Constraint; sea !rimary "ey. -$" indicar el campo que desea declarar como lla!e primaria y $acer clic en -ceptar.
'odemos dejar que 'ostgres asigne el nombre a la restriccin y 4nicamente elegir el campo que queremos declarar como
lla!e primaria. 'or ejemplo para la tabla cliente" 4nicamente agregaremos el campo id*cliente.
1na !e2 agregada la lla!e primaria" podemos definir las lla!es forneas para la tabla en la que estamos trabajando. #n el
caso de la tabla cliente" $acemos clic en Add cuando el tipo de restriccin es #oreign $ey.
'odemos dejar que 'ostgres asigne automticamente el nombre a la restriccin. #n la pestaa 'roperties debemos elegir la
tabla a la que se $ar referencia. #n este caso" la tabla tipo*cliente.
#n la pestaa olumns seleccionar el campo que ser!ir como lla!e fornea en la tabla. #n este caso id*tipo*cliente.
'ostgres asume que el campo al que se est $aciendo referencia es la lla!e primaria de la tabla indicada en la pestaa
propiedades.
1na !e2 indicados los campos" $aga clic en el botn Add :-adir; y luego en el botn %".
1na !e2 definidas las restricciones" presionar el botn %".
+tese que como las lla!es primarias de las tablas $an sido configuradas como tipo serial" 'ostgres crea una secuencia para
cada campo. #sto es el equi!alente al campo de identidad de SQ Ser!er.
CONECTANDO A LA BD DESDE NUESTRA APLICACION
gicamente" cualquier esfuer2o para tener y mantener una base de datos tiene como objeti!o que nuestras aplicaciones
puedan conectarse a ellas para almacenar y recuperar los datos. 1saremos la aplicacin de ejemplo( Clientes para
conectarnos a la base de datos que creamos anteriormente.
#n toda aplicacin <a!a que se conecte a una base de datos debe incluirse la librera de controladores :dri!ers; de cone0in
para el S=>& al que se desea conectarse.
a aplicacin de ejemplo que !eremos est desarrollada para conectarse a una base de datos 'ostgreSQ" por lo que el
dri!er incluido en las libreras del proyecto es el de ese S=>&.
a clase que se conecta a la base de datos" que en el ejemplo est programada en forma de un ser!icio" usa la clase
&ri!erManager para crear una cone0in.
a 1? de cone0in tpicamente tiene la siguiente forma(
jdbc(@sgbdA(,,@nombre o direccin del ser!idorA(@puertoA,@nombre de la base de datosAB@parametros de cone0inA
&onde(
jdbc indica que se trata de una cone0in a tra!3s de un manejador de cone0in a bases de datos <a!a :<a!a &ata >ase
Connecti!ity;.
S=>& indica el S=>& al que est destinado el dri!er. #l nombre a utili2ar es el especificado en la documentacin de cada
dri!er.
+ombre o direccin del ser!idor se refiere al nombre de dominio del ser!idor de base de datos o su direccin I'.
'uerto indica el puerto que est3 escuc$ando el ser!idor de la base de datos. 'ara 'ostgreSQ el puerto por defecto es el
.869 y para SQ Ser!er es el 8866
public class DBService {
private static Connection connection;
private static TipoClienteDB tipoClienteDb;
private static String url =
"jdbc:postgresql://172.16.15.116:5432/hdp115lab4";
public static Connection getConnection() throws SQLException {
if (connection == null) {
connection = DriverManager.getConnection(url, "hdp115", "hdp115");

/*
* 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;
}
}
#n el ejemplo 4nicamente se $a programado un m3todo guardar para la entidad )ipoCliente" que se corresponde con la
entidad tipo*cliente de la base de datos. os m3todos de acceso a datos se $an programa de en la clase )ipoCliente&>.
&ebe modificar la cadena de cone0in seg4n el controlador de cone0in que se est3 usando y la direccin del ser!idor.
'or ejemplo" si se est conectado a un ser!idor que se encuentra en el mismo equipo" puede usar local$ost como nombre del
ser!idor" as( jdbc(postgresql(,,local$ost,$dp77..
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 instruccin 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;
+et>eans incluye por defecto el controlador para cone0iones a bases de datos 'ostgreSQ. Si se desea actuali2ar el
controlador" puede descargarse y actuali2ar el arc$i!o de la librera por defecto o crear una librera nue!a.
#l controlador de SQ Ser!er no est incorporado por defecto.
'ara descargar los controladores de estos S=>& !aya a las siguientes direcciones(
&ri!er <&>C para SQ Ser!er( $ttp(,,555.microsoft.com,do5nloads,esCes,confirmation.asp0B
familyidDEEb97bF.CeEGfC8aF7CbG77C7EE79F/7fdcE
&ri!er <&>C para 'ostgreSQ( $ttp(,,jdbc.postgresql.org,do5nload.$tml