Modelo Entidad Relacion

-Entidades :objetos que se distinguen por características.
-Entidades Fuerte: No necesita de ningún atributo externo.
Entidades Fuerte


-Entidades Débil : Necesita de otro atributo, es decir depende de otra entidad.
Entidades Débil


Atributos: Son características de las entidades
Obligatorios: Tiene que tener un valor.
Obligatorios


Opcionales. No tiene que tener valor.


Simples
Simples
Compuestos

Compuestos




Mono valorados: Toma un solo valor
Multivalorados: Toma varios valores.
Derivados: Resulta de otro
Ejemplo: Fecha de nacimiento
Llave Candidata: Son todos los atributos que identifican plenamente a una entidad.
Binarias: 2 entidades
Reflexivos: Relacion entre ellas mismas
N arias: Mas de dos Entidades

Relación de Uno a Uno(1 a 1)
Relación de Uno a Uno


Relación de Uno a Muchos (1 a *)

Relación de Uno a Muchos


Relación de  Muchos  a Muchos (* a *)

Relación de  Muchos  a Muchos



Relación Reflexiva

Relación Reflexiva






Relacion N arias
Relacion N arias





Conexion JDBC MYSQL desde una pagina JSP

Este es un pequeño ejemplo de como conectarce a una base de datos mysql desde java usando el driver para establecer la coneccion desde una pagina JSP

<%@ page language="java" %> <%@ page import = "java.sql.Connection"%> <%@ page import = "java.sql.DriverManager"%> <%@ page import = "java.sql.ResultSet"%> <%@ page import = "java.sql.Statement"%> <html> <body> <h1>Consulta a base de datos</h1> <% try { // Conexion con bd Class.forName("com.mysql.jdbc.Driver"); Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root", ""); if (!conexion.isClosed()) { // La consulta Statement st = conexion.createStatement(); ResultSet rs = st.executeQuery("select * from contacto" ); // Ponemos los resultados en un table de html out.println("<table border=\"1\"><tr><td>Id</td><td>Nombre</td><td>Apellido</td><td>Telefono</td></tr>"); while (rs.next()) { out.println("<tr>"); out.println("<td>"+rs.getObject("id")+"</td>"); out.println("<td>"+rs.getObject("nombre")+"</td>"); out.println("<td>"+rs.getObject("apellidos")+"</td>"); out.println("<td>"+rs.getObject("telefono")+"</td>"); out.println("</tr>"); } out.println("</table>"); // cierre de la conexion conexion.close(); } else // Error en la conexion out.println("fallo"); } catch (Exception e) { // Error en algun momento. out.println("Excepcion "+e); e.printStackTrace(); } %> </body> </html>




descargar conexion.jsp

Tipado Fuerte .NET Framework


Es especificar los tipos de datos de todas las variables.


  • El uso del Tipado fuerte permite lo siguiente:

  • Minimiza la cantidad de memoria que utiliza la aplicación.

  • Permite al compilador verificación de tipos.

  • La ejecución del código es más rápida.

    Ensamblados .NET Framework


    Es la unidad más elemental de código que puede ejecutar el entorno de .NET Framework, el cual está conformado por un conjunto de tipos y recursos.
     
    Tipos de ensamblados según modo de creación
    Estáticos: Es aquel que es creado por el programador en tiempo de diseño.
    Dinámicos: Son aquellos que son creados en tiempo de ejecución.
     
    Contenido de un Ensamblado
    El ensamblado es constituido por los siguientes elementos:
    Manifiesto
    Metadatos
    Módulos de código con los tipos compilados en IL
    Recursos adicionales
     
    El Manifiesto de un ensamblado contiene la siguiente información
    Nombre: Una cadena con el nombre del ensamblado.
    Versión: Numero de versión.
    Cultura: Información sobre idioma y otros elementos culturales que soporta el ensamblado.
    Nombre Seguro: en el caso de ensamblados compartidos, este nombre permite identificar al ensamblado a atreves de una clave.
    Lista de Ficheros
    Referencia de Tipos
    Ensamblados Referenciados

    Tipos Valor - Tipo Referencia .NET Framework


    Tipos Valor
    Es aquella que contiene directamente sus datos. Es decir que una variable de Tipo Valor no puede afectar a otra variable.
    Tipo Referencia
    Es aquella que contiene una referencia o puntero al valor de un objeto. Dos variables de Tipo de Referencia pueden referirse al mismo Objeto, en donde las operaciones que se realizan en una variable pueden afectar al objeto referenciado por otra variable por Tipo de Referencia.

    Servidores de Entorno .NET Framework


    Un servidor de entorno o Runtime Host es el que se encarga de ejecutar un dominio de aplicación dentro del Common Language Runtime.
    Cuando el CLR va a ejecutar una aplicación, un servidor de entorno crea el entorno de ejecución o Shell para dicha aplicación, y este es cargado en un proceso, seguidamente crea un dominio de aplicación en este proceso y por ultimo carga la aplicación en el dominio.
    .NET Framework dispone de los siguientes servidores de entorno:

    •  
    • ASP.NET: Carga el entorno en un proceso preparado para gestionarse en la Web ; el cual también crea un dominio de aplicación para cada aplicación de internet ejecutada en un servidor.
    • Internet Explorer: Crea un dominio de aplicación por cada sitio web visitado.
    • Windows Shell: Crea un dominio de aplicación con interfaz Windows, para cada programa que es ejecutado.

      Namespaces .NET Framework


      Un espacio de nombres, es el medio proporcionado por la plataforma para organizar las clases de una manera más lógica y jerárquica dentro del entorno.
       
      Para poder acceder a un espacio de nombres en una aplicación de VB.NET debemos realizarla con la palabra reservada Imports en la cabecera del Modulo o Clase junto con el nombre del espacio de nombres y la clase que queremos acceder, o usar la descripción calificada completa en cada momento que debemos hacer referencia a la clase.
      Ejemplo:
      Imports Manejador.Productos
      Imports System.Windows.Forms
       
      Descripción Calificada
      Manejador.Contabilidad:Factura()

      Dominios de Aplicación .NET Framework


      Una de las principales características de .NET Framework es la seguridad y aislamiento de cada aplicación, pudiendo ejecutar múltiples aplicaciones en un mismo proceso.
      Para poder conseguir aislar las aplicaciones de modo que no se produzcan choques entre ellas, ha sido a través de procesos. Es decir que cada aplicación se carga en un proceso por separado, lo cual proporciona un adecuado nivel de aislamiento, con lo cual se evitan los posibles conflictos entre las direcciones de memoria utilizadas por cada programa.

      DML (LMD) Lenguaje de Manipulación de Datos.


      (Data Manipulation Language), Lenguaje de Manipulación de Datos.
      En los niveles de abstracción de los datos se aplica no solo a la definición o estructuración de datos, sino también a a la manipulación de los datos. Por manipulación de datos queremos decir a:
      La recuperación de la información almacenada en la BD
      La inserción de la información nueva en la BD
      La eliminación de la información de la BD
      La modificación de los datos almacenados en la BD
      Algunas ejemplos de las sentencias de manipulación de datos son:
      Insert
      Delete
      Update
      Select

      DDL (LDD) Lenguaje de Definición de Datos

      Un esquema de BD se especifica mediante un conjunto de definiciones que se expresan mediante un lenguaje especial llamado lenguaje de definición de datos (Data Definition Language (DDL)). El resultado de compilación de sentencias DDL es un conjunto de tablas las cuales se almacenan en un archivo especial llamado diccionario de datos .Esta tablas reciben el nombre de Metadatos
      Algunos ejemplos son los siguientes:
      Create, Drop, Alter etc.

      Flujo de actividades en el diseño de un sgbd


      1.DISEÑO CONCEPTUAL (Independiente del DBMS)
      ¢ Determinar las visualizaciones del usuario final, los resultados, y los requerimientos de procesamiento de transacciones)
      ¢ Definir entidades, atributos, relaciones, dibujar ER.
      2.SELECCIÓN DEL SOFTWARE PARA DBMS
      3.DISEÑO LOGICO (Dependiente del DBMS)
      ¢ Transformar el modelo conceptual en definiciones de tablas, vistas, etc.
      4.DISEÑO FISICO (Dependiente del hardware)
      ¢ Definir estructuras de almacenamiento y rutas de acceso para un desempeño óptimo.

      Características deseables de un SGBD


      Es importante recordar las características de un SGBD a la hora de elegir:
      1) ACID
      ¢ ATOMICIDAD: La transacción se ejecuta completamente o no, pero no se queda a medias
      ¢ CONSISTENCIA: propiedad que asegura que una transacción no romperá con la integridad de una base de datos.
      ¢ AISLAMIENTO (isolation): propiedad que asegura que no se afectarán entre sí las transacciones. En otras palabras, dos o más transacciones sobre los mismos datos no generarán un problema.
      ¢ DURABILIDAD: propiedad que asegura la persistencia de una transacción, es decir, una vez que la transacción quedó aceptada no podrá deshacerse aunque falle el sistema.


      2)  RENDIMIENTO

      3) ALTA DISPONIBILIDAD: Recuperación de desastres, Recuperación de fallos del sistema.

      4) SEGURIDAD: Para los datos, usuarios (clave pública) y empresas.

      5)  ESCALABILIDAD: Crítico para Internet, mayor número de usuarios en donde no aumente tanto el costo por usuario (lineal)


      Tipos de SGBDs

      Diferentes tipos de Sistemas Manejadores de Bases de Datoa
      Según ubicación:
      ¢ Un solo sitio, SGBDs centralizado
      ¢ En varios sitios, SGBDs distribuido
      Según tipo y grado de uso:
      ¢ SGBDs transaccional o de producción
      ¢ SGBDs de soporte a decisiones (Sistemas de Soporte de decisiones DSS, almacenes de datos para manejar históricos)

      Funciones de un Sistema Gestor de base de datos SGBD


      Funciones
      Componentes
      Definición de los datos
      Lenguaje de definición de los esquemas de las bases de datos
      Manipulación de los datos
      Lenguaje de manipulación de datos
      Gestión de los datos
      Herramienta para la gestion

      SISTEMA DE BASES DE DATOS


      Sistema de información computacional, cuyo objetivo principal es gestionar grandes cantidades de información.
      Consta de 4 componentes:
      a) Software (Software de Sistema Operativo, SGBD, Programas de aplicación y utilerías)
        c) Usuarios  (DBA, Diseñador de la Bds, Programador de Aplicaciones, Usuario Final)
      b) Hardware (discos, cintas, etc.)
      d) Datos

      BASES DE DATOS


      Desde hace mucho tiempo el ser humano el ser humano ha registrado los datos en diferentes medios como son: papel, piedra, etc. Con el fin de dejar constancia de un fenómeno o idea.
      Entonces definamos que es una base de datos:
      Conjunto de datos relacionados entre sí.
      Representa algún aspecto del mundo real
      Datos Útiles -->Recolectados y Almacenados -->Base da datos

       Una Base de Datos debe ser consistente.
       Redundancia Mínima.
      Seguridad - Privacidad
      Facil Acceso
      Versatilidad : Se puede moldear adaptar

      C++

      Propósito de una base de datos


      Es guardar la información importante de las organizaciones, empresas y personas de una manera organizada, y que sea de fácil recuperación.
      Almacenar la información en una sola parte para que no halla datos ambiguos, es decir a veces la información pueda estar repetida en diferentes partes.
      Seguridad en la información ya que usuarios o personas no autorizadas no pueden acceder a la información.

      Conectarse a una base de datos con JDBC desde java Mysql

      Ejemplo de código en java de como conectarse por JDBC  desde java a  MYSQL con la creación de una clase conexión


      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.SQLException;
      import javax.swing.JOptionPane;
      
      /**
       *
       * @author jesus cabarcas
       */
       /*Creamos la clase */
      public class Conexion {
          private Connection conexion; // Abstrae una conexion a la base de datos
           private String usuario = "root"; // usuario con permisos para conectarse a Base de datos
          private String password = ""; // contrasena del usuario que se puede conectar a la base de datos
          private String driver = "com.mysql.jdbc.Driver"; // Clase del Driver de jConnector
          private String beseDatos="jdbc:mysql://localhost:3306/prueba";//cadena de coneccion
          private static Conexion instancia;
          /** Crea a new instancia de  Conexion */
          public static Conexion getInstancia (){
          if(Conexion.instancia==null){
          Conexion.instancia=new Conexion();
          }
          return instancia;
          }
          public static void main(String arg[])throws Exception{
      
          Conexion.getInstancia().conectar();
          }
         /** Metodo que se encarga de conectar a la base de datos*/
          public void conectar()throws Exception {
           //si la conecion es null nos conectamos
              if(this.getConexion()!=null){
                  return;
              }
              else if(this.getConexion() == null){
      
      
                  try {
                      Class.forName(this.getDriver()) ; // obtine una istancia de la clase Diver
      // establece la conexion con el Diver jconector y este a su vez con la base de datos
                      this.setConexion(DriverManager.getConnection(this.getBeseDatos(), this.getUsuario(), this.getPassword()));
                    
                  } catch (SQLException ex) {
                    throw new Exception("ERROR AL CONECTARCE CON LA BASE DE DATOS");
                  } catch (ClassNotFoundException ex) {
                       throw new Exception("Clase no encontrada");
                  }
        }
      
      
          }
          /** desconecta de la base de datos */
          public void desconectar()throws Exception{
          if(!this.getConexion().isClosed())
              this.setConexion(null);
      
          }
      
          public Conexion() {
          }
      /*Metodos getter y setter*/
          public Connection getConexion() {
              return conexion;
          }
      
          public void setConexion(Connection conexion) {
              this.conexion = conexion;
          }
      
          public String getUsuario() {
              return usuario;
          }
      
          public void setUsuario(String usuario) {
              this.usuario = usuario;
          }
      
          public String getPassword() {
              return password;
          }
      
          public void setPassword(String password) {
              this.password = password;
          }
      
          public String getDriver() {
              return driver;
          }
      
          public void setDriver(String driver) {
              this.driver = driver;
          }
      
          public String getBeseDatos() {
              return beseDatos;
          }
      
          public void setBeseDatos(String beseDatos) {
              this.beseDatos = beseDatos;
          }
      
      }
      
      Descarga la clase

      Just-In-Time (JIT Compiler) .NET Framework

      Es el encargado de generar el código binario específico para cada procesador en el que el programa será ejecutado para optimizar y mejorar la velocidad de la ejecución el compilador JIT parte de que algunas partes del código nunca son ejecutadas.

      EL IL Intermidiate Language .NET Framework


      Cuando el código fuente es compilado no es convertido directamente a código binario, si no a un lenguaje intermedio, que recibe el nombre de Microsoft Intermediate Language (MSIL o IL).
      El IL generado por el compilador, consiste en un conjunto de instrucciones que son independientes del sistema operativo o procesador en el cual se va a ejecutar el programa, y que se ocupan de manipulación de objetos, accesos a memoria, manejo de excepciones etc.

      Recolección de memoria en .NET Framework

      Garbage Collector es el encargado de hallar los objetos de la aplicación que no son utilizados y liberar la memoria que usan. La liberación de memoria se realiza cuando el CLR lo disponga

      EL CLS Common Language Specification .NET Framework


      Es el encargado de definir los mínimos estándares que deben cumplir los lenguajes y desarrolladores, para que sus componentes y aplicaciones puedan ser utilizados con otros lenguajes compatibles con .NET.
      El CLS permite a los desarrolladores crear aplicaciones en múltiples lenguajes con la seguridad de que no habrá problema alguno al momento de entregar los diferentes problemas, algunos al integrar los diferentes lenguajes. Lo que permite heredar clases desarrolladas en C# a Visual Basic  y otros lenguajes.
      El CLS tiene varias finalidades  las cuales describiremos a continuación:
      Independencia del lenguaje : El desarrollador ya no se ve obligado a programar en un lenguaje que no es de su agrado porque no provee funcionalidades las cuales no tiene su lenguaje preferido, porque .Net proporciona funcionalidades de modo independiente del lenguaje. Lo que quiere decir que podemos escribir programas en el lenguaje que más nos guste.
      Integración entre Lenguajes: Ahora es posible desarrollar programas diferentes lenguajes e integrarse unos con otros siempre y cuando cumplan con las especificaciones del lenguaje.
      Apertura a nuevos lenguajes: es posible agregar a .NET Framework nuevos lenguajes no solo los creados por Microsoft sino por otros fabricantes.

      Principales Tipos de Datos en .NET Framework y su relación VB.NET

      Los principales tipos de datos definidos en VB.NET son definidos en la siguiente tabla:

      Tipo de Dato
      (Nombre de la clase)
      Tipo de Dato VB.NET
      Descripción
      Byte
      Byte
      Entero sin signo 8 bit
      SByte
      SByte(tipo de dato no nativo)
      Entero sin signo 8 bit(tipo no acorde con el CLS)
      Int16
      Short
      Entero con signo 16 bit
      Int32
      Integer
      Entero con signo 32 bit
      Int64
      Long
      Entero con signo 64 bit
      UInt16
      UInt16 (tipo de dato no nativo)
      Entero sin signo 16 bit(tipo no acorde con el CLS)
      UInt32
      UInt32 (tipo de dato no nativo)
      Entero sin signo 32 bit(tipo no acorde con el CLS)
      UInt64
      UInt64 (tipo de dato no nativo)
      Entero sin signo 64 bit(tipo no acorde con el CLS)
      Single
      Single
      Numero con coma flotante de precisión simple de 32 bit
      Double
      Double
      Numero con coma flotante de precisión doble de 64 bit
      Decimal
      Decimal
      Valor decimal de 96 bit
      IntPtr
      IntPtr(tipo de dato no nativo)
      Entero con signo con tamaño dependiente de la plataforma de 32 bit y 64 bit en plataforma de 64 bit(tipo de dato no acorde con el CLS)
      UIntPtr
      UIntPtr (tipo de dato no nativo)
      Entero sin signo con tamaño dependiente de la plataforma de 32 bit y 64 bit en plataforma de 64 bit(tipo de dato no acorde con el CLS)
      Boolean
      Boolean
      Valor logico
      Char
      Char
      Caracteres Unicode de 16 bit
      String
      String
      Cadena de caracteres

      El CTS, Common Type System .NET Framework


      Es el mecanismo del CLR que permite especificar en qué modo los tipos serán creados y manipulados por el entorno de ejecución de .NET Framework.
      El Common Type System es el encargado de decirle al Common Language Runtime como quiere que se ejecute el código.

      EL CLR Common Language Runtime .NET Framework


      El common language runtime es el encargado de la ejecución del código de las aplicaciones.

      A continuación se listan algunas características de este componente de la plataforma.

       • Proporciona un desarrollo de aplicaciones más sencillo y veloz, ya que funcionalidades que debía crear el    programador vienen implementadas en el entorno de ejecución.

       • Gestiona y administra el código en tiempo de ejecución, carga, disposición en memoria, recuperación de  memoria no utilizada a través del recolector de basura (Garbage Collector).

       • Gestión a bajo nivel que en otros lenguajes es labor de los programadores.

       • Proporciona un sistema común de tipos para todos los lenguajes del entorno.

       • Gestiona la seguridad del código que es ejecutado.

       • Dispone de un diseño abierto a lenguajes creados por terceros.

      Que es .NET


      .NET es la nueva arquitectura tecnológica, desarrollada por Microsoft para la creación de y distribución de software como un servicio. Con esta nueva herramienta de desarrollo, los programadores podrán crear aplicaciones basadas en servicios Web.
      Las principales características que forman .NET son las siguientes:
      La plataforma .NET Framework, que proporciona la infraestructura, aplicaciones y el entorno de ejecución para las mismas.
      Los productos de Microsoft enfocados hacia .NET que son los siguientes Windows.NET server, Visual Studio.NET, Office.NET etc.

      Importancia de las bases de datos



      Las bases de datos se han convertido en área muy importante en el mundo de los sistemas de información.
      Porque el ser humano ahora se pregunta donde guardaremos tanta información , sin dañar a nuestro entorno como lo es la naturaleza , que al pasar de los años hemos venido destruyendo talando los arboles y acabando sus recursos.
      Es ahí donde entran las bases de datos las cuales permiten ahorrar papel, como dinero a las compañías, tiempos de búsqueda y mejor organización de la información.
      Feedback con los clientes de las compañías que aunque no lo creamos cada paso que damos queda registrado en alguna parte, nuestros gustos que programas de televisión nos gusta en fin un numero de cosas que podemos lograr con estos potentes bases de datos

      Mi primer Reporte en Ireport usando Java , Maven y NetBeans Generar PDF Versión WEB

      Mi primer Reporte en Ireport usando Java , Maven y NetBeans Generar PDF Versión WEB Estructura del proyecto Listado de rutas de car...