Conexion a bases de datos

12,811 views

Published on

Pasos y estrategias para conectar una base de datos en los lenguajes de programación para Internet.

Published in: Education

Conexion a bases de datos

  1. 1. Autor : Profesor: José Molina MSc r stoAsesor de Proyectos y Sistemas de Información PaEmail : rmolinaj@gmail.com lo zaWeb : www.rmolinaj.es.tl onGoogle : sites.google.com/site/sulbaranjose29/ G CIUDAD BOLIVAR 09/10/2012 . Lic
  2. 2. Base de Datos con Visual BasicProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  3. 3. SQLt e Sd oce R r
  4. 4. ¿Qué es el ODBC?Open Data Base Conectivity: Conectividadabierta de bases de datos. Si escribimos una aplicación para acceder alas tablas de una DB de Access, ¿qué ocurrirási después queremos que la misma aplicación,y sin reescribir nada, utilice tablas de SQLServer u otra DB cualquiera? La respuesta essencilla: no funcionará.Nuestra aplicación, diseñada para un motorconcreto, no sabrá dialogar con el otro.Evidentemente, si todas las DB funcionaranigual, no tendríamos este problema.... aunqueeso no es probable que ocurra nunca.
  5. 5. Pero si hubiera un elemento que por un lado seasiempre igual, y por el otro sea capaz de dialogar conuna DB concreta, solo tendríamos que ir cambiandoeste elemento, y nuestra aplicación siemprefuncionaría sin importar lo que hay al otro lado.A esas piezas intercambiables las llamaremosorígenes de datos de ODBCCasi todas las DB actuales tienen un ODBC.Debido a que este elemento impone ciertaslimitaciones, ya que no todo lo que la DB sabe haceres compatible con la aplicación, como velocidad deproceso, tiempos de espera, máxima longitud deregistro, número máximo de registros, versión deSQL, etc., está cayendo en desuso a cambio de otrastécnicas de programación, pero aún le quedanmuchos años de buen servicio.
  6. 6. Modelo de datos ADOADO (ActiveX Data Objects) es una tecnología orientada aobjetos para componentes ActiveX basada en una API enC++ llamada OLE DB.Para los programadores, presenta la inestimable ventajade poder prescindir de los detalles de programación debajo nivel de OLE DB a la hora de acceder a datosalmacenados en BD relacionales o no relacionales. Losobjetos ADO, por ser componentes ActiveX, puedeninvocarse desde cualquiera de los lenguajes máspopulares que trabajen con objetos.Los objetos ADO son independientes del lenguaje que seutilice al accederlos (Visual Basic, JavaScript, VBScript,etc.) y permiten conectarse a cualquier BD compatible conODBC a través de un interfaz basado en objetos.ADO expone al programador tres objetos principales paraacceder a los datos: el objeto Connection, el objetoCommand y el objeto RecordSet.
  7. 7. RecordSetUn objeto Recordset es una tabla en memoriaque contiene los datos que manejará nuestraaplicación.Esta tabla almacena el resultado obtenido porlas consultas realizadas sobre la base de datosa la que nos encontremos conectadosmediante el objeto Connection.Un Recordset se encuentra formado por filas(tuplas o registros) y columnas (atributos ocampos), a las que deberemos hacerreferencia para poder acceder a sus datos.
  8. 8. El objeto Recordset mantiene la posición decada registro devuelto por la consulta, lo quenos permite "recorrer" los resultados de uno enuno.Las buenas aplicaciones de base de datosemplean el objeto Connection para establecerun vínculo y el objeto Recordset paramanipular los datos devueltos lo que permitedesarrollar aplicaciones de bases de datos querealicen casi cualquier tarea de tratamiento dedatos¿Qué diferencia hay entre una tabla de una DBy un RecordSet?
  9. 9. Tabla Atributos Campos BOF Puntero EOF Tuplas Registros
  10. 10. 3 Pasos Previos a Insertar DatosProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  11. 11. 1) Crear una base de datos en un gestor ej: Informix, Access, Oracle, ...Llamarle Mensajeria a la Base de Datos
  12. 12. 2) Crear un ODBC en el Panel de Control del Sistema OperativoProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  13. 13. Paso 1: Tipo de ODBC
  14. 14. Paso 2:
  15. 15. Paso 3: odbc_mensajeria
  16. 16. Paso 4:
  17. 17. Paso 5:
  18. 18. PASO 3: Conectar desde Visual Basic Agregar un módulo que contenga:
  19. 19. PASO 4: Realizar la Programación Visual BasicImports net.tablas1.db.oldb Agregar un objeto que contenga:Imports system.dataImports system.data.oldbPUBLIC CLASS IncluirPrivate sub Button1_click(ByVal sender As system.Object, Byval e As system.EventArgs) Handles Button1.click Dim a= nom_trabj.text Dim b= pago_trabj.text Dim RS As New Dataset if (b=“”) then Msgbox(“No debe dejar ningun campo en blanco..”),MsgboxStyle.critical) else If MessageBox.Show(“seguro de guardar?, MessageBoxbuttons.Yesno) = windows. forms.dialogResult.yes then Dim Conect as String =“provider=microsoft.jet.oledeb.4.0;data source=C:sistema vb30-mensajeriamensajeria.mdb;jet OLEDB:Database Password=p@rto” Using conexión As new oledb.Oledbconnection(Conect) conexión.Open() Dim CadenaSQL as String CadenaSQL = “INSERT INTO nom_trab,pago_sld) values (‘”& a &” ‘ ,’ “&b&”’)” Dim cmd As New OledbCommnad(CadenaSQL,conexión) Dim I As Integer = cmd.executeNonQuery Msgbox(“Se agrego con éxito..” + I. to String + “Registro”) conexión.Close() nom_trabj.clear() pago_trabj.clear() nom_trabj.focus() End Using endif endifEnd sub
  20. 20. Conectar una Base de Datos en JAVAProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  21. 21. JAVAJava es un lenguaje de programación introducido por SunMicrosystem cuyas características lo sitúan, junto aMicrosoft C# (C Sharp).Ambos lenguajes de programación son orientados a objetos,en los cuales existe la herencia, que hace mas fácil laprogramación de aplicaciones y códigos reutilizables.
  22. 22. INTRODUCCIÓNHoy en día muchas de las empresas, organizaciones, opequeños negocios necesitan guardar información y tenerlaa disposición cuando se le necesite, y hacer esto de maneramanual suele ser masivamente tedioso y desgastante.Es por eso que la creación de aplicaciones que puedanmanipular datos en una base de datos, sea convertido en unaforma de agilizar y hacer mucho mas fácil el manejo deinformación.
  23. 23. JAVAEste lenguaje de programación de hizo muy popular debidoa la gran facilidad para construir aplicaciones robustas, sinla necesidad de ocupar una gran cantidad de espacio endisco, lo que lo convirtió en el lenguaje ideal para crearaplicaciones para internet, además de también serindependiente de la plataformaEsto gracias a la JVM (Java Virtual Machine, la maquinavirtual de Java), que le da esa capacidad de serindependiente de la plataforma y funcionaren diferentesSistemas Operativos (Windows, Linux, Mac, entre otros).
  24. 24. JAVATambién gracias a la JVM, no hay necesidad que lasaplicaciones Java tengan todo el código maquina necesariopara ejecutarse. Por el contrario una aplicación Java alcompilarse solo genera archivos byte codes Que soninterpretados por la JVM y esta ejecuta la aplicaciónPor ejemplo una aplicación grafica en C++ ocupa de DDLs(todo el código maquina), mas el código fuente con el quese programo para poder ejecutarse en Windows, lo quevendría a ocupar alrededor de 5MB
  25. 25. JAVALos que por el contrario, una aplicación grafica en Javaviene a ocupar tal ves unos 500 KB, porque todo el códigomaquina para ejecutar la aplicación ya esta instalado en laPC y ya no es necesario que vaya empaquetado junto con laaplicación
  26. 26. ENTORNO DE DESARROLLO DE JAVAPara poder desarrollar aplicaciones en Java es necesariotener instalado el JDK (Java Development Kit), Que incluyeun conjunto de programas y librerías que permitendesarrollar, compilar y ejecutar programas en JavaExisten diferentes versiones de Java para desarrollaraplicaciones empresariales, aplicaciones como maspersonales y aplicaciones para dispositivos móviles.
  27. 27. ENTORNO DE DESARROLLO DE JAVA
  28. 28. ENTORNO DE DESARROLLO DE JAVAEl J2SE proporciona la base para desarrollar y distribuiraplicaciones que podrán ejecutarse en un servidor o en unordenador personal con distintos sistemas operativosEste entorno de desarrollo incluye las librerías AWT,SWING y SQL que permiten crear aplicaciones graficas conacceso a bases de datos
  29. 29. ENTORNO DE DESARROLLO DE JAVAEl J2SE proporciona la base para desarrollar y distribuiraplicaciones que podrán ejecutarse en un servidor o en unordenador personal con distintos sistemas operativos
  30. 30. SQL (STRUCTURE QUERY LANGUAGE)Es un lenguaje estándar para interactuar con bases de datosrelacionales y es soportado prácticamente por todos lossistemas administradores de bases de datos actualesSQL incluye operaciones de definición como CREATE, aligual que operaciones de manipulación de datos comoINSERT, UPDATE, SELECT y DELETELos datos de una base de datos relacional se almacenan entablas lógicamente relacionadas entre si utilizando camposclaves comunes, a su ves cada tabla dispone de datos enfilas y columnas
  31. 31. QUE ES UNA TABLA DE BASE DE DATOSEs una colección de datos presentados en forma de matrizbidimensional, que esta conformada por columnas y filas,donde las filas reciben el nombre de registros y lascolumnas de camposLos usuarios de un sistema administrador de bases de datospueden realizar sobre una determinada base de datosoperaciones tales como: Insertar Recuperar Modificar Eliminar Buscar
  32. 32. FUNDAMENTOS PARA ESTABLECER UNA CONEXIÓN CON UNA BASE DE DATOS JAVA proporciona una API(ApplicationProgramming Interface) llamada JDBC (Java Data Base Connectivity) para poder hacer conexiones con bases de datos relacionales a través de un controlador especifico para acceder a una base de datos especifica (MySQL, SQL, Postgre SQL) y poder ejecutar instrucciones SQL desde la aplicación Java
  33. 33. JDBC (JAVA DATABASE CONNECTIVITY)Esta API proporciona un conjunto de clases que permiteejecutar instrucciones SQL para manipular y gestionar basesde datos relacionalesPero previamente a que un aplicación java pueda haceroperaciones sobre una base de datos, debe de existir unaconexión entre la aplicación Java y la base de datos amanipular con esta aplicación
  34. 34. CONTROLADORESLa conexión entre la aplicación Java y la base de datos sehace a través de un controlador (driver).La función de este controlador es traducir los mensajes debajo nivel del sistema base de datos a mensajes de bajonivel de la API JDBC y viceversaFabricantes particulares proporcionan controladores(drivers) específicos para acceder a sus sistemas de bases dedatos
  35. 35. PAQUETE JDBCEl API JDBC se proporciona en el paquete java. Sqlincluido en el JDK (Java Development Kit) J2SE(Java 2Platform Estándar Edition).Este paquete contienen las interfaces y clases Javafundamentales de JDBC, entre ellas cabe destacar:Driver: permite conectarse a una base de datos. Cadasistema administrador de bases de datos requiere uncontrolador (Driver) especificoDriver Manager: Permite gestionar todos los controladoresinstalados en la maquina virtual de java
  36. 36. PAQUETE JDBCConnection: representa una conexión con una base de datosStatement: Permite ejecutar instrucciones SQLResultSet: Conjunto de resultados. Contiene las filasobtenidas al ejecutar una sentencia SELECTResultSetMetaData: Permite obtener información sobre unResultSet, por ejemplo el numero de columnas, susnombres, tipos.De estas clases, cualquier aplicación Java utilizara casisiempre estas cuatro:
  37. 37. PAQUETE JDBCDriverManager utilizada para crear un objeto Connection,objeto que será utilizado para crear un objeto Statement, quea su ves será utilizado para crear un objeto ResultSetDriverManager utilizada para crear un objeto Connection,objeto que será utilizado para crear un objeto Statement, quea su ves será utilizado para crear un objeto ResultSet
  38. 38. CONECTAR CON LA FUENTES DE DATOSLa clase Driver Manager contiene el métodogetConnection(argumento URL) que devuelve un objeto detipo Connectiony es a partir de este método que se crea estetipo de objeto.Una ves registrado el controlador JDBCClass.for Name ("org.sqlite.JDBC");Se solicita a Driver Manager que proporcione una conexióncon una base de datos, en este caso se hará con SQLiteObjeto Connection =DriverManager.getConnection ( "jdbc:sqlite: rutaMiBD.db")
  39. 39. CONECTAR CON LA FUENTES DE DATOSSi Driver Manager no encuentra el controlador de acuerdoal URL especificado, genera una excepción de tipoSQLException, que se captura con:try{ código que puede generar una excepción} catch(SQLException e) {Mensaje con el error que se capturo en error}
  40. 40. CONECTAR CON LA FUENTES DE DATOSCada controlador utiliza un URL de acuerdo con elprotocolo JDBC. Por ejemplo:Para SQLite;DriverManager.getConnection("jdbc:sqlite:rutaMiBD.db”)ParaMySQL;DriverManager.getConnection("jdbc:mysql://servidor/sMiBD",usuario,password);ParaSQL;DriverManager.getConnection("jdbc:odbc:nombreorigen de datos , usuario, contraseña”)
  41. 41. CONECTAR CON LA FUENTES DE DATOSEn este caso se le agrega ODBC(Open Data baseConnectivity) al URL, porque se usa el ODBC que vienepor default en S.O. Windows para crear un origen de basede datos y utilizarlo como puente para acceder a los datos dela base de datosUna ves que ya se tiene la conexión guardada en un objetode la clase Connection, se utiliza la clase Statement paracrear otro objeto que nos permita ejecutar las instruccionesSQL, y que a su vez, y como se menciono anteriormente,este objeto nos servirá para crear un objeto ResultSet, quenos servirá para recuperar información de la base de datos.
  42. 42. CONECTAR CON LA FUENTES DE DATOSEl objeto Statement sigue la siguiente estructura para podercrearseObjeto Statement = Objeto Connection.createStatement();ExecuteUpdate (argumento Instrucción SQL ), este métodonos sirve básicamente para ejecutar sentencias SQL comoINSERT, UPDATE y DELETE, por lo que este método notiene ningún tipo de retorno. Por ejemplo:Objeto Statement.excuteUpdate (“ DELETE FROMAlumnos WHERE ID_Alumno= 1”);
  43. 43. RECUPERAR DATOS DE LA BASE DE DATOSComo se menciono anteriormente, para recuperar datos deuna base de datos, enviaremos las sentencia SELECT comoargumento del método excute Query de la clase Statement,este método nos va a devolver las filas que arroje elSELECT en capsulados en un objeto ResultSetUna ves que tenemos cargado el objeto ResultSet con filas,podemos movernos entre ellas con los siguientes métodosque proporciona esta clase.beforFirst(): Mover el cursor antes de la primera fila.first(): Mover el cursor a la primera fila.last(): Mover el cursor a la ultima fila.afterLast(): Mover el cursor después de la ultima fila.
  44. 44. RECUPERAR DATOS DE LA BASE DE DATOSprevious(): Mover el cursor a la fila anterior.next(): Mover el cursor a la fila siguienteabsolute(fila): Mover el cursor a la fila especificarelative(n): Mover el cursor n filas a partir de la actual (npuede ser un numero entero positivo o negativo).Para obtener los datos de la fila donde esta el cursor, lainterfaz ResultSet también proporciona varios métodos,algunos de ellos y básicamente los mas utilizados son:
  45. 45. RECUPERAR DATOS DE LA BASE DE DATOSgetString(String): Recupera el dato de la columnaespecificada por StringgetString(int): Recupera el dato de la columna indicada porel índice especificadoExisten algunos métodos análogos a los anteriores que sonutilizados cuando se sabe que el dato dela columna de la filaactual es entero o real, por ejemplo: getInt, getLong,getFloat y getDouble
  46. 46. NAVEGAR POR LA BASE DE DATOSHemos visto anteriormente que una vez obtenido unconjunto de resultados, podemos utilizar los métodosproporcionados por la interfaz ResultSet para movernos pordicho conjuntoPara ello debemos conocer que un objeto ResultSet, poromisión y dependiendo del sistema administrador de basesde datos, no es actualizable y tiene un cursor que solo semueve hacia adelanteNo obstante, es posible crear objetos ResultSet actualizablesy que permitan moverse hacia atrás o adelante. Para poderhacer esto, se necesita mandarle 2 argumentos al métodocreateStatement de la clase Statement, a la hora de crear estetipo de objeto.
  47. 47. NAVEGAR POR LA BASE DE DATOSEstos argumentos son constantes enteras definidas en lainterfaz ResultSet, los argumentos son:TYPE_SCROLL_INSENSITIVE. Crea un conjunto deresultados en el que el cursor se puede mover en ambasdirecciones (desplazable)CONCUR_UPDATABLE. Indica que la hoja de resultadoses actualizableQuedando de la siguiente forma la creación del Statement:Objeto Statement =objetoConnection.createStatement(ResulSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
  48. 48. CERRAR OBJETOSEntra dentro de practicas buenas de programación,cerrar losobjetos Statement, ResultSet y Connection una ves que yano serán usados, por ejemplo cuando se cierre la aplicaciónJava o cuando se termine de usar un ResultSetCada una de estas clases contiene un método para hacerdicho proceso, el método se llama close(), fácil de usar, porejemplo:Nombre Objeto.close();
  49. 49. EN RESUMEN PARA CREAR UNA CONEXIÓN A BASE DE DATOS CON JAVARegistrar el ODBCDireccionar el controlador con Driver ManagerRegistrar la conexión con ConnectionCrear un objeto Statement para poder ejecutarinstrucciones SQLUtilizar Resultset, ResultSet y MetaData para recuperarinformación de la base de datos.Cerrar objetos.
  50. 50. EJEMPLO: DESCRIPCIÓN DE LOS COMPONENTES JAVALa aplicación que se construyo tiene los siguientes componentes, que se encuentranen el paquete javax.Swing:JFrame; ventana principal.JPanel; contenedor.JTable; para mostrar los registros.JButton; accionar las diferentes operaciones.JToolbar; para acomodar los botones.DefaultTableModel; para controlar la tabla.JTextField; para capturar información.JLabel; mostrar textos.JOptionPane; para mandar mensajes.Border; para pintar los bordes en los paneles, con un texto.JScrollPane; para desplazarse por los registros de la tabla cuando estos seandemasiados y ya no puedan visualizarse todos.Interfaces, actionListener y keyListener; para darle la capacidad de escuchareventos a los botones y cajas de texto
  51. 51. r sto Pa lo za onProf.: José Molina G CIUDAD BOLIVAR 09/10/2012 . Lic
  52. 52. ¿Qué es PHP? • HiperText Preprocesor • Tecnologia para servidor interpretada ¿Cómo Nace PHP? • Nace en Otoño de 1994 ¿Cómo se crea y sobre que base? • Basado en C y C++ aunque su primera versión fue escrita en Perl • Paradigma Imperativo y OO Rasmus LerdorfProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  53. 53. En la actualidad: • PHP 1, 1995 • PHP 2, 1995-1997 • PHP 3, 1997-2000… • PHP 4, Mayo 2000 • PHP 5, Julio 2004 VERSION ACTUALProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  54. 54. Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web mediante formularios Ventajas – Proporcionar información actualizada – Software libre bajo licencia GPL ( Codigo Fuentes y Modificable) – Facilitar la realización de búsquedas mediante formularios – Disminuir los costes de mantenimiento (mantenimiento lado cliente) – Multiplataforma (Unix, Win32, Mac) – Multitud Framewoks nos centramos en Logica de Negocios – Soporta más de 20 Sistemas de gestion de bases de datos: – MySQL mejor integracion con PHP – Oracle – SyBaseProf.: José Molina – PostgreSQL… CIUDAD BOLIVAR 09/10/2012
  55. 55. Servidor web Cliente (navegador) Página Página Página PHP HTML HTML internet Intérprete PHP <?PHP $nombre = “micromante"; print ("<P>Hola, $nombre</P>"); ?> Hola,micromante <P>Hola, micromante</P>Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  56. 56. FORM orden SQL PHP Base de resultado datos PASOS DEL PROCESO • Lado Cliente • Cliente pide mediante formulario HTML actualizar contenido • Lado Servidor • HTML mediante PHP conecta a la base de datos y hace la query • La BD devuelve variable con contenido y PHP la procesa • PHP rederiza el contenido a mostrar • Lado Cliente • Muestra la web renderizada en formato HTML en el navegadorProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  57. 57. Conectar con el servidor de bases de datos: mysql_connect() Seleccionar una base de datos: mysql_select_db() Enviar la instrucción SQL a la base de datos: mysql_query() Obtener y procesar los resultados: mysql_num_rows() y mysql_fetch_array() Cerrar la conexión con el servidor de bases de datos: mysql_close()Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  58. 58. Mediante $_GET[‘variable’] • Normalmente, GET es usado para obtener un archivo u otro recurso, posiblemente con parámetros especificando más exactamente lo que se necesita. El contenido de la variable es visible en navegador Mediante $_POST[‘variable’] • Normalmente POST es usado para enviar un pedazo de datos al servidor para ser procesado, cualquier cosa que esto signifique. Gestion de contraseñas y variables importantes. De forma oculta en cabecera HTMLProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  59. 59. Seleccionar una base de datos: mysql_connect() Devuelve true en caso de éxito y false en caso contrario Sintaxis: $ CONEXIÓN = mysql_connect(SERVER,USER,PASS) Ejemplo: mysql_connect(“localhost",“carlos", “1234") or die("No se pudo conectar a la base ");Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  60. 60. Seleccionar una base de datos: mysql_select_db() Devuelve true en caso de éxito y false en caso contrario Sintaxis: mysql_select_db (database); Ejemplo: mysql_select_db (“usuarios”) or die (“No se puede seleccionar la base de datos”);Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  61. 61. Enviar la instrucción SQL a la base de datos: mysql_query() • Devuelve un identificador o true (dependiendo de la instrucción) si la instrucción se ejecuta correctamente y false en caso contrario Sintaxis: $consulta = mysql_query (instrucción, $conexion); Ejemplo: $consulta = mysql_query (“select * from noticias”, $conexion) or die (“Fallo en la consulta”); $consulta = mysql_query (VARIABLECADENA, $conexion) or die (“Fallo en la consulta”);Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  62. 62. mysql_real_escape_string(): funcion para el escapado de caracteres antes de enviar la query.Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  63. 63. Obtener y procesar los resultados: mysql_num_rows(), mysql_fetch_array() • mysql_query() devuelve las filas de la tabla afectadas por la instrucción • mysql_num_rows() devuelve el número de filas afectadas • mysql_fetch_array(), que obtiene una fila del resultado en un array asociativo cada vez que se invoca Sintaxis: $nfilas = mysql_num_rows ($consulta); $fila = mysql_fetch_array ($consulta);Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  64. 64. Cerrar la conexión con el servidor de bases de datos: mysql_close() Sintaxis: mysql_close ($IDCONEXION); Ejemplo mysql_close ($conexion); “MUY IMPORTANTE SIEMPRE DEBEMOS CERRAR LA CONEXIÓN PARA EVITAR POSIBLES HACKS A NUESTRA BASE DE DATOS”Prof.: José Molina CIUDAD BOLIVAR 09/10/2012
  65. 65. • Requisitos •Servidor web Apache (www.apache.org) • con el módulo PHP (www.php.net) • y la base de datos MySQL (www.mysql.com) si se desea crear páginas dinámicas • Utilidades Recomendadas • XAMPP es una distribución de Apache que incluye MySQL, PHP y otras herramientas para el desarrollo de aplicaciones web, como phpMyAdmin. (http://es.wikipedia.org/wiki/XAMPP) • Editores de PHP, como DevPHP (www.sourceforge.net), • Manuales de PHP y MySQLProf.: José Molina CIUDAD BOLIVAR 09/10/2012
  66. 66. BASE DE DATOS DISTRIBUIDAS ORACLE r sto Pa lo za onProf.: José Molina G CIUDAD BOLIVAR 09/10/2012 . Lic
  67. 67. Se trata de una base de datos a nivel lógico, pero queen realidad (físicamente) está implementada en variasubicaciones físicas, incluso en máquinas diferentes ydistantes.Cada máquina ejecuta su propia instancia y conjuntosde archivos y todas se conectan en red para hacerque el usuario no tenga que cambiar su código parareflejar esta distribución.La dificultad de esta estructura suele estar aliviadapor medio de instantáneas que grabanmomentáneamente os datos de las tablas distantes.Permiten trabajar con los datos copiados y seprograman para que cada cierto tiempo recojannuevamente los datos a fin de reflejar sus cambios.Posee arquitectura cliente/servidor.
  68. 68. Utiliza el software de redOracle Net8 para comunicaciónentre bases de datos. Net8permite a las bases de datoscomunicarse a través de redespara  soportar transaccionesdistribuidas y remotas.Empaqueta sentencias SQL enuno de los muchos protocolosde comunicación parafacilitar al cliente lacomunicación con el servidory después empaqueta ydevuelve los resultados deforma similar al cliente
  69. 69. DATABASE LINKSConcepto central en las BD distribuidas enORACLE.Un DB Link define un camino unidireccionaldesde una BD ORACLE a otra.Un usuario local puede acceder a través deun link a objetos de esquemas de otrosusuarios en BDremotas (siempre que tenga permiso suficiente para hacerlo) como si se tratara de unaúnica BD.Se almacenan en el catálogo: SELECT db_link FROM user_db_links;
  70. 70. CREACIÓN Y BORRADO DB LINKCreación:  Crea un link público de nombre nombreLink que establece un enlace a una BD remota cuya ubicación está descrita en el nombre de servicio a través un usuario y contraseña de dicha BD. CREATE PUBLIC DATABASE LINK nombreLink CONNECT TO usuario IDENTIFIED BY contraseña USING nombre de servicio;Borrado: DROP [PUBLIC] DATABASE LINK nombreLink
  71. 71. NOMBRE DE SERVICIOCada BD es identificada unívocamente en una BDdistribuida por un nombre global de BD. Este consta delnombre de la BD junto con el nombre del host en la reden la que esta BD está ubicada.Este nombre se hace transparente al usuario mediante eluso de nombres de servicio (service names) en ladefinición de los enlaces (links).Los nombres de servicio se definen en el archivotnsnames.ora de Oracle, cuya ubicacióndepende del ordenador:  c:oracleora92networkadmintnsnames.ora
  72. 72. EJEMPLONombreServiceName = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST= NombreOrdenadorEnRed)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NombreBD) ))
  73. 73. TIPOS DE DBLINKS USUARIOSENLACES PRIVADOS: Sólo lo  FIXED: Hay que puede usar el que los indicar en la crea. definición usuario y(CREATE contraseña. DATABASELINK ....)  CONNECTED USER(SIN PÚBLICOS: Lo pueden CONNECT): Válido usar todos los usuarios para el usuario de la BD. conectado. Debe tener en la BD remota una cuenta con el(CREATEPUBLICDATABA mismo nombre de SELINK ....) usuario y misma contraseña.
  74. 74. LINKSEl nombre de un objeto en una BD es unívocodentro del esquema de su propietario. Sinembargo, en una BD remota puede existir unesquema con el mismo nombre,que puede tener un objeto con el mismo nombre. Acceso a través de un link a un objeto remoto de un determinado propietario en una BD remota: propietario.nombreObjeto@nombreLink O bien nombreObjeto@nombreLink Si el usuario que accede al objeto es el propietario del mismo.
  75. 75. CONSULTA A BDD REMOTASPara realizar consultas en una BD distribuidapodemos utilizar objetos situados en una BD remota. Seutiliza para ello los links previamente creados. SELECT nombre FROM dbb.autor@link WHERE nacionalidad = "Francia“ SELECT nombre FROM dbb.autor@link, libro WHERE dbb.autor.idautor@link = libro.idautor AND nacionalidad = "Francia“También es posible realizar operaciones deactualización (insert, update, delete) en la BDremota, siempre que tengamos el permiso necesariopara realizarlas.
  76. 76. SINONIMOSLas referencias a las tablas de la BD remota en las anterioresconsultas no son transparentes al usuario : necesita conocer elnombre del link y el propietario dela tabla. Para hacerlastotalmente transparentes se pueden definir sinónimos.CREACIÓN: CREATE [PUBLIC] SYNONYM nombreSinomimo FOR nombreObjeto;Permite referirse a un nombre global de un objeto a través del sinónimo.Esconde el acceso remoto a la tabla haciendo transparente su acceso. El parámetroPUBLIC hace disponible el sinónimo para todos los usuarios.
  77. 77. EJEMPLO DE CREAR/BORRAR SINÓNIMO CREATE SYNONYM autores FOR dbb.autor@linkAutores actúa como sinónimo de dbb.autor@link .Ahora podemos definir consultas totalmentetransparentes al usuario: SELECT nombre FROM autores WHERE nacionalidad = "Francia" DROP[PUBLIC] SYNONYM autores;
  78. 78. WIKI: •APACHE: http://wiki.apache.org/general/ •PHP: http://es.wikipedia.org/wiki/PHP •MYSQL: http://es.wikipedia.org/wiki/MySQL LIBROS y REFERENCIA: •DREAMWEAVER 8 Y PHP | Ed.ANAYA (David Powers) •PHP Y MYSQL | Ed.RA-MA (Jacobo Pavon Puertas) •FLASH CS3 DINAMICO, AS3, PHP, XML Y BD | Ed.ANAYA •PHP, XML Y BASES DE DATOS | Ed.ANAYA Referencia http://es.scribd.com/lvillacorta_1/d/48466088BASE-DE-DATOProf.: José Molina CIUDAD BOLIVAR 09/10/2012

×