bases_asir_cap6 otros objetos de la base de datos luis hueso ibáñez

Upload: automoto-aficionado-peru

Post on 09-Mar-2016

218 views

Category:

Documents


0 download

DESCRIPTION

Bases_asir_cap6 Otros Objetos de La Base de Datos Luis Hueso Ibáñez

TRANSCRIPT

  • Captulo 6

    Otros objetos de la base de datos

  • NDICE CAPTULO 6

    Vistas Ventajas Vistas en MySQL

    Enlaces a otras bases de datos Enlaces entre tablas de distintos gestores Vnculos a bases de datos remotas

    Sinnimos Pblicos Privados

  • VISTAS

    Son consultas almacenadas

    Representan una seccin o parte de la base de datos

    Pertenecen al nivel externo

  • VISTASVentajas

    Representan un subconjunto de los datos de una o varias tablas

    Simplifican la realizacin de combinaciones (JOIN) de tablas al poder definirlas como una nica vista

    Pueden actuar como tablas agregadas pudiendo resumir en una tabla el resultado de funciones de agregacin aplicadas sobre varias tablas

    Ocultan la complejidad de los datos evitando que el cliente deba conocer todo el diseo relacional subyacente a una base dedatos

    Ocupan poco espacio ya que solo se almacena su definicin

    Proporcionan una capa adicional de seguridad ya que evitan el acceso directo a los datos de las tablas subyacentes

  • Vistas en MySQL I

    Las vistas se crean con el comando CREATE VIEW

    Pueden contener casi cualquier tipo de consulta

    Restricciones:

    Que no se usen tablas temporales

    No usar clusulas GROUP BY ni HAVING

    No usar uniones ni reuniones externas

    No usar consultas correlacionadas

    Para el caso de reuniones INNER podemos actualizar o insertar siempre y cuando los campos afectados sean nicamente los de una de las tablas implicadas en la reunin

  • Vistas en MySQL II

    Hay vistas actualizables

    Admiten comandos UPDATE, INSERT, DELETE

    Se requiere relacin uno a uno entre los registros de la vista y la tabla subyacente

    En el caso de comandos INSERT se requiere adems

    -No debe haber nombres duplicados

    -Debe incluir todas las columnas de las tablas que no tengan indicado un valor por defecto.

    -Las columnas de la vista deben ser referencias a columnas simples y no columnas derivadas

  • Vistas en MySQL: comandos I

    Creacin de vistas

    CREATE[OR REPLACE][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}][DEFINER = { user | CURRENT_USER }][SQL SECURITY { DEFINER | INVOKER }]VIEW view_name [(column_list)]AS select_statement[WITH [CASCADED | LOCAL] CHECK OPTION]

  • Vistas en MySQL: comandos II

    Creacin de vistas

    Ejemplo

    Para poder dar acceso a sus datos a un jugador de la base de datos liga podemos crear la siguiente vista con el algoritmo MERGE:

    CREATE ALGORITHM=MERGE VIEW vdatos_jugador as SELECT * FROM jugador WHERE id_jugador=identificador_jugador$$

    As, mediante esta vista cada jugador solo tendr acceso a sus datos.

  • Vistas en MySQL: comandos III

    Modificacin de vistas

    ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW nombre_vista [(columnas)]AS sentencia_select[WITH [CASCADED | LOCAL] CHECK OPTION]

    Eliminacin, DROP VIEW

    DROP VIEW [IF EXISTS]nombre_vista [, nombre_vista] ...[RESTRICT | CASCADE]

  • Vistas en MySQL: comandos IV

    Consulta de vistas

    Para la obtencin de informacin de definicin de una vista usamos SHOW CREATE VIEW.

    Tambin podemos acceder directamente a la tabla VIEWS de INFORMATION_SCHEMA.

    Por ejemplo, para ver informacin de una vista en la base de datos test usamos lo siguiente:

    SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWSWHERE TABLE_SCHEMA ='test';

  • Enlaces a otras bases de datos I

    Enlaces entre tablas de distintos gestores

    Permiten que otros usuarios puedan acceder a nuestros datos sin conocer nuestro gestor

    Permiten usa herramientas de otros gestores manteniendo nuestros gestor de datos.

  • Enlaces a otras bases de datos II

    Enlaces entre tablas de distintos gestores

    Ejemplo

    En el siguiente ejemplo explicamos cmo acceder a tablas MySQL desde un gestor como base del paquete ofimtico LibreOffice.

    1. Una vez descargado e instalado el paquete de la pgina oficial (http://www.libreoffice.org/) lo iniciamos desde InicioProgramasLibreOfficeBase.

    2. A continuacin veremos un cuadro de dilogo similar a lo siguiente:

  • Enlaces a otras bases de datos III

    Enlaces entre tablas de distintos gestores

    3. Ahora se nos pregunta por si queremos usar JDBC u ODBC como medio de conexin. Elegimos JDBC por ser ms ptimo.

    4. En este momento debemos indicar los parmetros de nuestro servidor: base de datos, nombre o IP del equipo servidor y puerto en el que escucha el servidor MySQL.

    5. Finalmente se nos pide el nombre de usuario, as como si la base de datos requiere contrasea o no y despus de finalizar podremos guardar la base de datos con el nombre que queramos en nuestro equipo.

    6. Cuando abramos el fichero guardado podremos trabajar con la base de datos tal como haramos desde MySQL.

  • Enlaces a otras bases de datos IV

    Vnculos a bases remotas: Oracle (Database link)

    Databaselink es un puntero desde una base de datos haciaotra base de datos remota

    Ejemplo

    Si tengo la tabla t1 en mi base de datos oracle1 y quiero hacer un SELECT sobre la t2 de la base de datos oracle2.

    Si creamos en oracle1 un database link llamado por ejemplo oracle2dblink esta consulta sera tan simple como ejecutar:

    SELECT * FROM t2@oracle2dblink

    Desde nuestra base de datos oracle1, podramos estar consultando los datos de la tabla t2 de la base de datos remota oracle2.

  • Enlaces a otras bases de datos V

    Vnculos a bases remotas: Oracle (Database link)

    Comando creacin database links

    CREATE [ SHARED ] [ PUBLIC ] DATABASE LINK dblink[ CONNECT TO { CURRENT_USER | user IDENTIFIED BY password [ dblink_authentication ] } | dblink_authentication ]

    [ USING 'connect_string' ] ;

  • Enlaces a otras bases de datos VI

    Vnculos a bases remotas: Oracle (Database link)

    Ejemplo creacin database links

    Database link para enlazar con la base de datos liga de un servidor remoto.

    CREATE DATABASE LINK liga_DBLINK CONNECT TO root IDENTIFIED BY root USING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = Hostname)(PORT = 1521)) (CONNECT_DATA = (SID = liga)))

    Crearamos entonces un dblink llamado liga_dblink que nos permite conectar desde la base de datos actual a la base remota liga, situada en el host=Hostname y con el SID=liga

    Ahora si quisiramos usar el enlace, por ejemplo para una consulta, ejecutamos la SELECT concatenando al identificador de la tabla @liga_dblink:

    SELECT id,name FROM Usuarios@liga_dblink;

  • Enlaces a otras bases de datos VII

    Vnculos a bases remotas: Oracle (Database link)

    Tipos de enlaces en Oracle

    Private: el propietario es el usuario que crea el enlace. En este caso se crea el enlace dentro de un esquema especfico del servidor. Solo el propietario puede acceder al enlace.

    Public: el propietario es el usuario especial PUBLIC. Es un enlace visible por todos los usuarios de las bases de datos en el servidor permitindoles acceso a los objetos de la base de datos remota correspondiente.

    Global: el propietario es PUBLIC. Se da cuando Oracle usa un servidor de directorio (Directory Server) en cuyo caso el enlace es accesible desde cualquier servidor dentro del directorio mediante los servicios de nombres de red (net service name).

  • Enlaces a otras bases de datos VIII

    Vnculos a bases remotas: Oracle (Database link)

    Tipos de usuarios de enlaces en Oracle

    Usuarios conectados: son los que se usan cuando no se especifica ninguno en la creacin del link (no tiene que ser el que cre el enlace, sino el que lo usa en ese momento).

    Usuario actual: es un usuario global especial especificado mediante CURRENT_USR en la creacin del enlace.

    Usuario fijo: es aquel cuyas credenciales estn incluidas en la definicin del enlace. stas se usarn para la autenticacin en el equipo servidor remoto.

  • Enlaces a otras bases de datos IX

    Vnculos a bases remotas: Motor FEDERATED de MySQL

    Una forma alternativa de crear enlaces en MySQL

    Las tablas federadas se crean con el comando DDL CREATE TABLE incluyendo la opcin CONNECTION con la siguiente sintaxis:

    scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

  • Enlaces a otras bases de datos X

    Vnculos a bases remotas: Motor FEDERATED de MySQL

    Ejemplo

    Supongamos que disponemos de dos servidores en ejecucin, en la misma mquina o en distintas

    Queremos acceder a una tabla remota en uno de los servidores (dentro de la base de datos test) que se define as:

    CREATE TABLE remote_table(id int(20) NOT NULL auto_increment,name varchar(32) NOT NULL default '',other int(20) NOT NULL default '0',PRIMARY KEY (id),KEY name (name),KEY other_key (other))

    La opcin de tabla (ENGINE) puede ser cualquiera

  • Enlaces a otras bases de datos XI

    Vnculos a bases remotas: Motor FEDERATED de MySQL

    EjemploA continuacin, creamos una tabla de tipo FEDERATED en el servidor local para acceder a la tabla remota:

    CREATE TABLE federated_table (id int(20) NOT NULL auto_increment,name varchar(32) NOT NULL default '',other int(20) NOT NULL default '0',PRIMARY KEY (id),KEY name (name),KEY other_key (other)

    )ENGINE=FEDERATEDDEFAULT CHARSET=latin1CONNECTION='mysql://root@equipo_remoto:9306/test/remote_table;

    La estructura de esta tabla debe ser exactamente la misma que la de la tabla remota, excepto que la opcin de tabla ENGINE debe ser FEDERATED.

  • Sinnimos I

    Nombre alternativo para una tabla, vista, rutina, secuencia o base de datos

    Facilitan a los usuarios acceder a objetos de las bases de datos que son propiedad de otros usuarios

    Simplifican la nomenclatura de los objetos

    Comando creacin/eliminacin

    CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM[ schema. ]synonym FOR [ schema. ]object [ @ dblink ] ;

    DROP [PUBLIC] synonym

    La clausula PUBLIC especifica que el sinnimo es pblico, es decir visible para todos los usuarios. En otro caso es privado

  • Sinnimos II

    Ejemplo sinnimos pblico y privado

    Para crear un sinnimo privado llamado sequipos sobre la tabla equipos de la base (schema) liga

    CREATE SYNONYM sequiposFOR liga.equipos;

    Para crear un sinnimo pblico sobre la base remota liga en la tabla equipos:

    CREATE SYNONYM sequiposFOR [email protected];

  • FIN CAPITULO 6