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
Top Related