Oracle - Que es un Esquema??

 
Vista:

Que es un Esquema??

Publicado por Lorena Rojas (8 intervenciones) el 02/08/2006 02:43:46
Pues si, estoy empezando con esto de las bases de datos en oracle y mi primera duda es:

¿Que es un esquema?

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Que es un Esquema??

Publicado por Rodolfo Reyes (445 intervenciones) el 02/08/2006 05:32:07
Lo siguiente es sobre un Manajador de Base de datos en General:

1) En un servidor se pueden instalar N instancias del Manejador. Cada instancia, es cada vez que haces una instalación en una misma computadora. Ejemplo, instalar una o mas veces oracle en la misma computadora.

2) Dentro de cada instancia se pueden crear N bases de datos. En Oracle especificamente solo se puede crear una base de datos por Instancia.

3) Dentro de cada base de datos se pueden crear esquemas. En Oracle se pueden crear ilimitada cantidad de esquemas, el limite realmente lo da la cantidad de espacio en el disco duro.

4) Dentro de cada esquema se crean objetos(tablas, procedimientos, funciones, vistas, paquetes, etc.)

Entonces un esquema es una forma de agrupar objetos. Y todos estos objetos tienen en comun, que pertenecen a un esquema. Esto te permite tener por ejemplo: varias tablas con el mismo nombre en la misma base de datos, para esto cada tabla estaria creada en un diferente esquema.

En la mayoria de manejadores de bases de datos se utilizan los esquemas(SQL Server, Oracle, FireBird, etc.)

En el caso especifico de Oracle, para crear un esquema tienes que crear un usuario con permisos para poder crear algun objeto(tabla, procedimiento, funcion, vista, etc.). En el momento es que este usuario cree un objeto automaticamente se creara un esquema con el mismo nombre del usuario.

Supon que tienes un usuario de nombre "Lorena". Haces login en Oracle con este usuario, y creas la tabla alumnos.

create table alumnos
(id number(10) not null,
nombre varchar2(100)
)
/

Al crear la tabla la tabla "alumnos" con el usuario Lorena, acabas tambien de crear el esquema "Lorena".

Ahora supon que creas el usuario "rojas", haces login en oracle y tambien creas la tabla alumnos. Ahora en la base de datos tienes creadas dos tablas con el nombre de alumnos, una pertenece al esquema "lorena" y la otra al esquema "rojas". Para poder diferenciar entre una tabla y otra tienes que anteponer el nombre del esquema.

Ejemplo:

//Aqui estas listando la información de la tabla alumnos del esquema "lorena"
Select *
from lorena.alumnos

//Aqui estas listando la información de la tabla alumnos del esquema "rojas"
select *
from rojas.alumnos

Para que con el usuario "rojas" puedas ver la tabla "lorena.alumnos" tienes que darle al usuario "rojas" permiso de "select" sobre la tabla, y lo mismo si con el usuario "lorena" quisieras ver la tabla "rojas.alumnos"

Ahora un termino nuevo "sinonimo", para no tener que estar escribiendo siempre "lorena.alumnos", puedes crear un sinonimo publico.

ejemplo:

Create public SYNONYM alumnos_l for lorena.alumnos
/

Entonces ahora en vez de estar escribiendo "lorena.alumnos", tambien puedes utilizar "alumnos_l".

Ejemplo:

//Los siguientes dos querys se refieren exactamente a la misma tabla y tendrian exactamente el mismo resultado

Select *
from lorena.alumnos
/

Select *
from alumnos_I
/

Lo unico que tienes que tener en cuenta para crear los sinonimos publicos, es que el nombre que utilices debe de ser unico. Si ya utilizaste el nombre de sinonimo "alumnos_I", ya no puedes crear otro sinonimo con el mismo nombre. Recuerda que los sinonimos no se crean en los esquemas, estos objetos son unicos para toda la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar