Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ºqaºº
I. PORTADA
UNIVERSIDAD TÉCNICA DE AMBATO
Título:
II.
1. PP
INFORME DEL PROYECTO
2. YY
2.1 Título
2.2 Objetivos
2.3 Resumen
2.5 Introducción
A finales de los años sesenta nacen las bases de datos. En estas bases de datos se
guardan los datos utilizados por los usuarios, empresas, etc. Y los programas que
los utilizan no se tienen que preocupar de su mantenimiento ni almacenaje por lo
que un cambio en la base de datos no tiene por qué afectar en principio a los
programas que la utilizan.
Una base de datos (cuya abreviatura es BD) es una entidad en la cual se pueden
almacenar datos de manera estructurada, con la menor redundancia posible.
Diferentes programas y diferentes usuarios deben poder utilizar estos datos. Por lo
tanto, el concepto de base de datos generalmente está relacionado con el de red,
ya que se debe poder compartir esta información. Generalmente se habla de un
"Sistema de información" para designar a la estructura global que incluye todos los
mecanismos para compartir datos.
Una base de datos proporciona a los usuarios el acceso a datos, que pueden visualizar,
ingresar o actualizar, en concordancia con los derechos de acceso que se les hayan
otorgado. Se convierte más útil a medida que la cantidad de datos almacenados crece.
Una base de datos puede ser local, es decir que puede utilizarla solo un usuario en un
equipo, o puede ser distribuida, es decir que la información se almacena en equipos
remotos y se puede acceder a ella a través de una red.
La principal ventaja de utilizar bases de datos es que múltiples usuarios pueden acceder
a ellas al mismo tiempo.
Las bases de datos son un gran pilar de la programación actual, ya que nos permiten
almacenar y usar de forma rápida y eficiente cantidades ingentes de datos con cierta
facilidad. En la actualidad se usa de forma mayoritaria las bases de datos
relacionales (dominadas por distintos gestores a través del lenguaje SQL, en gran
medida).
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
Pero ahora vamos a dar un pequeño repaso a lo más esencial del modelo entidad-
relación, que es y ha sido durante años la mejor forma de representar la estructura
de estas bases de datos relacionales (o de representar sus esquemas).
Entidad
Las entidades representan cosas u objetos (ya sean reales o abstractos), que se
diferencian claramente entre sí.
Para poder seguir un ejemplo durante el artículo añadiré ejemplos sobre un taller
mecánico, donde se podría crear las siguientes entidades:
Atributos
Este ejemplo es con tres atributos, pero un coche podría tener cientos (si fuese
necesario) y seguirían la misma estructura de columnas, tras implementarlo en
una BBDD.
Relación
Es un vínculo que nos permite definir una dependencia entre varias entidades, es
decir, nos permite exigir que varias entidades compartan ciertos atributos de forma
indispensable.
Por ejemplo, los empleados del taller (de la entidad "Empleados") tienen un cargo
(según la entidad "Cargo del empleado"). Es decir, un atributo de la entidad
"Empleados" especificará que cargo tiene en el taller, y tiene que ser idéntico al que
ya existe en la entidad "Cargo del empleado".
Las relaciones se muestran en los diagramas como rombos, que se unen a las
entidades mediante líneas.
Yo, bajo mi punto de vista, entiendo mejor esto en una tabla (de una implementación
en una BBDD), por lo que voy a poner el ejemplo de cómo se representaría
(resaltada la relación, que posteriormente veremos cómo se haría).
Empleados
Nombre DNI Cargo
Carlos Sánchez 45338600L 001
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
Relaciones de cardinalidad
Podemos encontrar distintos tipos de relaciones según como participen en ellas las
entidades. Es decir, en el caso anterior cada empleado puede tener un cargo, pero
un mismo cargo lo pueden compartir varios empleados.
Esto complementa a las representaciones de las relaciones, mediante un intervalo
en cada extremo de la relación que especifica cuantos objetos o cosas (de cada
entidad) pueden intervenir en esa relación.
Uno a uno: Una entidad se relaciona únicamente con otra y viceversa. Por ejemplo,
si tuviésemos una entidad con distintos chasis y otra con matrículas deberíamos de
determinar que cada chasis solo puede tener una matrícula (y cada matrícula un
chasis, ni más en ningún caso).
Uno a varios o varios a uno: determina que un registro de una entidad puede estar
relacionado con varios de otra entidad, pero en esta entidad existir solo una vez.
Como ha sido en el caso anterior del trabajador del taller.
Varios a varios: determina que una entidad puede relacionarse con otra con
ninguno o varios registros y viceversa. Por ejemplo, en el taller un coche puede ser
reparado por varios mecánicos distintos y esos mecánicos pueden reparar varios
coches distintos.
Claves
Superclase: aplica una clave o restricción a varios atributos de la entidad, para así
asegurarse que en su conjunto no se repitan varias veces y así no poder entrar en
dudas al querer identificar un registro.
Clave externa o clave foránea: este campo tiene que estar estrictamente
relacionado con la clave primaria de otra entidad, para así exigir que exista
previamente ese clave. Anteriormente hemos hablado de ello cuando
comentábamos que un empleado indispensablemente tiene que tener un cargo (que
lo hemos representado numéricamente), por lo cual si intentásemos darle un cargo
inexistente el gestor de bases de datos nos devolvería un error. [3]
MySQL
Nació como una iniciativa de Software Libre y aún sigue ofreciéndose como tal,
para usuarios particulares. Pero si se desea utilizarlo para promover datos en una
empresa, se puede comprar una licencia, como un software propietario, que es
autoría de la empresa patrocinante (Actualmente Oracle Corporation).
Utilidad de MySQL
Cuando se combina con PHP, se convierte en una mezcla poderosa, que siempre
es tomada en cuenta para realizar aplicaciones cliente/servidor, que requieran el uso
de una base de datos rápida, segura y potente.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
Java NetBeans.
A continuación, voy a describir paso a paso lo que se necesita para crear una base
de datos y utilizar MySQL con Java. Esta guía ha sido diseñada para aquellos
usuarios que sean principiantes en el manejo de bases de datos MySQL con Java.
Yo alguna vez estuve en dicha posición y cómo me hubiese encantado que alguien
me explicara lo que debía hacer paso por paso. Veamos qué es lo que se necesita.
4 Statement st = Conexion.createStatement();
5 st.executeUpdate(Query);
6 closeConnection();
7 MySQLConnection("root", "", name);
8 JOptionPane.showMessageDialog(null, "Se ha creado la base de datos " +
9 name + " de forma exitosa");
10 } catch (SQLException ex) {
11 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
12 null, ex);
}
}
Un punto que me gustaría resaltar es la variable que he llamado Query. Esta variable
contiene una instrucción que es con lo que se trabaja en MySQL. Para las bases de
datos, el Query consta de los comantos CREATE TABLE seguido del nombre de la
base de datos. Nótese que para que este método se pueda utilizar es necesario
primero ejecutar MySQLConnection(). Una vez que se ha creado la Base de Datos,
se cierra la conexión y se reinicia, ahora introduciendo como parámetro la base de
datos que hemos creado.
Vamos a crear un método para crear una tabla dentro de la base de datos. Lo
llamaremos createTable().
1 package mysql_test;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.SQLException;
6 import java.sql.Statement;
7 import java.util.logging.Level;
8 import java.util.logging.Logger;
9 import javax.swing.JOptionPane;
10
11 public class MySQL {
12
13 private static Connection Conexion;
14
15 public void MySQLConnection(String user, String pass, String db_name)
16 {
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
17 try {
18 Class.forName("com.mysql.jdbc.Driver");
19 Conexion =
20 DriverManager.getConnection("jdbc:mysql://localhost:3306/" + db_name,
21 user, pass);
22 System.out.println("Se ha iniciado la conexión con el servidor de
23 forma exitosa");
24 } catch (ClassNotFoundException ex) {
25 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
26 null, ex);
27 } catch (SQLException ex) {
28 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
29 null, ex);
30 }
31 }
32
33 public void closeConnection() {
34 try {
35 Conexion.close();
36 System.out.println("Se ha finalizado la conexión con el servidor");
37 } catch (SQLException ex) {
38 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
39 null, ex);
40 }
41 }
42
43 public void createDB(String name) {
44 try {
45 String Query = "CREATE DATABASE " + name;
46 Statement st = Conexion.createStatement();
47 st.executeUpdate(Query);
48 MySQLConnection("root", "", name);
49 JOptionPane.showMessageDialog(null, "Se ha creado la base de
50 datos " + name + " de forma exitosa");
51 } catch (SQLException ex) {
52 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
53 null, ex);
54 }
55 }
56
57 public void createTable(String name) {
58 try {
59 String Query = "CREATE TABLE " + name + ""
60 + "(ID VARCHAR(25),Nombre VARCHAR(50), Apellido
61 VARCHAR(50),"
62 + " Edad VARCHAR(3), Sexo VARCHAR(1))";
63 JOptionPane.showMessageDialog(null, "Se ha creado la base de
64 tabla " + name + " de forma exitosa");
65 Statement st = Conexion.createStatement();
66 st.executeUpdate(Query);
67 } catch (SQLException ex) {
68 Logger.getLogger(MySQL.class.getName()).log(Level.SEVERE,
69 null, ex);
70 }
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
71 }
72
73 public void insertData(String table_name, String ID, String name, String
74 lastname, String age, String gender) {
75 try {
76 String Query = "INSERT INTO " + table_name + " VALUES("
77 + "\"" + ID + "\", "
78 + "\"" + name + "\", "
79 + "\"" + lastname + "\", "
80 + "\"" + age + "\", "
81 + "\"" + gender + "\")";
82 Statement st = Conexion.createStatement();
83 st.executeUpdate(Query);
84 JOptionPane.showMessageDialog(null, "Datos almacenados de
85 forma exitosa");
86 } catch (SQLException ex) {
87 JOptionPane.showMessageDialog(null, "Error en el
88 almacenamiento de datos");
89 }
90 }
91
92 public void getValues(String table_name) {
93 try {
94 String Query = "SELECT * FROM " + table_name;
95 Statement st = Conexion.createStatement();
96 java.sql.ResultSet resultSet;
97 resultSet = st.executeQuery(Query);
98
99 while (resultSet.next()) {
100 System.out.println("ID: " + resultSet.getString("ID") + " "
101 + "Nombre: " + resultSet.getString("Nombre") + " " +
102 resultSet.getString("Apellido") + " "
103 + "Edad: " + resultSet.getString("Edad") + " "
104 + "Sexo: " + resultSet.getString("Sexo"));
105 }
106
107 } catch (SQLException ex) {
108 JOptionPane.showMessageDialog(null, "Error en la adquisición de
datos");
}
}
Colocamos los 4 botones con las opciones que deseamos que posea nuestra
aplicación. Las opciones “Registrar Usuario“, “Obtener Registros” y “Borrar
Registro” se encuentran inactivas ya que no pueden ser ejecutadas si no se inicia
la conexión con el servidor MySQL.
Vamos a crear una clase con un formulario de registro y una con la opción de borrar
un registro. He agregado las clases Window_Register y Window_Delete con las
siguientes interfaces gráficas.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
Ahora cada vez que ejecutamos nuestro programa nos aparece la ventana principal.
Vamos a programar la clase Window.java.
Primero creamos un objeto llamado db como una instancia de la clase MySQL. En
el botón “Conectar a base de Datos” debemos colocar el siguiente código:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
Ahora vamos a cada ventana que hemos agregado y programamos los botones.
Primero la ventana de borrar registros.
Con esto hemos terminado nuestra programación. Tenemos una pequeña aplicación
que nos permite registrar información en una base de datos, imprimirla y borrar
ciertos registros.
En este documento pudimos observar la importancia de tener una base de datos así
como también la importancia de saber hacer una base bien estructurada y funcional
mediante los pasos y maneras a seguir demostrado anteriormente así como la
debida conexión entre MySQL y java NetBeans para un buen manejo de la base
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA INDUSTRIAL EN PROCESOS DE AUTOMATIZACIÓN
PERÍODO ACADÉMICO: SEPTIEMBRE/2017 – FEBRERO/2018
2.8 Conclusiones