En bases de datos , un sinónimo es un alias o nombre alternativo para una tabla , vista , secuencia u otro objeto de esquema . Se utilizan principalmente para que los usuarios puedan acceder de forma intuitiva a los objetos de base de datos que pertenecen a otros usuarios. También ocultan la identidad del objeto subyacente y dificultan que un programa o usuario malintencionado tenga como objetivo el objeto subyacente ( seguridad por oscuridad ). Debido a que un sinónimo es solo un nombre alternativo para un objeto, no requiere almacenamiento más allá de su definición. Cuando una aplicación utiliza un sinónimo, el DBMS reenvía la solicitud al objeto base subyacente del sinónimo . Al codificar sus programas para que utilicen sinónimos en lugar de nombres de objetos de base de datos, se aísla de cualquier cambio en el nombre, la propiedad o las ubicaciones de los objetos, a costa de agregar otra capa que también debe mantenerse. Los usuarios también pueden tener diferentes necesidades; por ejemplo, algunos pueden desear utilizar un nombre más corto para referirse a los objetos de base de datos que consultan a menudo, lo que se puede hacer con alias sin tener que cambiar el nombre del objeto subyacente y alterar el código que hace referencia a él.
Los sinónimos son muy poderosos desde el punto de vista de permitir a los usuarios acceder a objetos que no se encuentran dentro de su esquema . Todos los sinónimos deben crearse explícitamente con el comando CREATE SYNONYM y los objetos subyacentes pueden ubicarse en la misma base de datos o en otras bases de datos que estén conectadas por vínculos de base de datos [ aclarar ]
Hay dos usos principales de los sinónimos:
Cuando se crea una tabla o un procedimiento, se crea en un esquema particular y otros usuarios pueden acceder a él únicamente utilizando el nombre de ese esquema como prefijo del nombre del objeto. La forma de evitar esto es que el propietario del esquema cree un sinónimo con el mismo nombre que el nombre de la tabla.
Los sinónimos públicos pertenecen a un esquema especial en Oracle Database llamado PUBLIC. Como se mencionó anteriormente, todos los usuarios de la base de datos pueden hacer referencia a los sinónimos públicos. Los sinónimos públicos suelen ser creados por el propietario de la aplicación para las tablas y otros objetos, como procedimientos y paquetes, de modo que los usuarios de la aplicación puedan ver los objetos.
El siguiente código muestra cómo crear un sinónimo público para la tabla de empleados:
CREAR SINÓNIMO PÚBLICO empleados para hr . empleados ;
Ahora cualquier usuario puede ver la tabla con solo escribir el nombre de la tabla original. Si lo desea, puede proporcionar un nombre de tabla diferente para esa tabla en la declaración CREATE SYNONYM. Recuerde que el administrador de la base de datos debe crear sinónimos públicos. El hecho de que pueda ver una tabla a través de sinónimos públicos (o privados) no significa que también pueda realizar operaciones SELECT, INSERT, UPDATE o DELETE en la tabla. Para poder realizar esas operaciones, un usuario necesita privilegios específicos para el objeto subyacente, ya sea directamente o a través de roles del propietario de la aplicación.
Un sinónimo privado es un sinónimo dentro de un esquema de base de datos que un desarrollador normalmente utiliza para enmascarar el nombre verdadero de una tabla, un procedimiento almacenado de vista u otro objeto de base de datos en un esquema de aplicación.
A diferencia de los sinónimos públicos, los sinónimos privados solo pueden ser referenciados por el esquema que posee la tabla o el objeto. Es posible que desee crear sinónimos privados cuando desee hacer referencia a la misma tabla en diferentes contextos. Los sinónimos privados anulan las definiciones de sinónimos públicos. Los sinónimos privados se crean de la misma manera que los públicos, pero se omite la palabra clave PUBLIC en la declaración CREATE.
El siguiente ejemplo muestra cómo crear un sinónimo privado llamado direcciones para la tabla de ubicaciones. Tenga en cuenta que una vez que cree el sinónimo privado, puede hacer referencia al sinónimo exactamente como lo haría con el nombre de la tabla original.
CREAR SINÓNIMO direcciones PARA hr . ubicaciones ;
Los sinónimos, tanto privados como públicos, se eliminan de la misma manera mediante el comando DROP SYNONYM, pero hay una diferencia importante. Si elimina un sinónimo público, debe agregar la palabra clave PUBLIC después de la palabra clave DROP.
DROP SINÓNIMO direcciones ;
La vista ALL_SYNONYMS (o DBA_SYNONYMS) proporciona información sobre todos los sinónimos en su base de datos.