Acceso a objetos sinonimos

¡Hola! Buenos días! Primero me presento por aquí, soy magico11, y estoy empezando a estudiar algo de Oracle, me parece muy interesante. Pero claro, soy primerizo en esto y tengo algunas dudas que espero podáis ayudarme a resolver 🙂

Tengo instalado Oracle 10g Express en una máquina virtual con Windows XP SP3. He hecho un script de prueba, de una supuesta tienda, con 5 tablas muy breves, y unos cuantos ususarios, roles… para probar. Funciona todo correctamente, pero me gustaría saber qué habría que hacer para que al hacer un “select * from cliente;” con un usuario con el rol “vendedor” funcionase. Ya que para que funcione tengo que poner “select * from violva.cliente”, ya que “violva” es el usuario administrador con el que he creado las tables. Seguramente lo que pregunto sea una tontería pero es que llevo ya un tiempo comiéndome la cabeza y no se me ocurre nada.

[code]/* CREACIÓN DE LOS TABLESPACE */

create tablespace violvadb
datafile ‘violvadb.ora’ size 15M;

/* CREACIÓN Y CONEXIÓN DEL USUARIO VIOLVA (ADMINISTRADOR) */

create user violva identified by admin01 default tablespace violvadb account unlock;
grant all privileges to violva with admin option;
grant dba to violva;
disconnect;
connect violva/admin01;

/* CREACION DE LAS TABLAS DE LA BASE DE DATOS */

create table cliente(
dni_cliente char(8) not null,
nombre_cliente varchar2(30) not null,
apellido_cliente varchar2(45) not null,
telefono_cliente char(9),
constraint cliente_pk primary key (dni_cliente)
);

create table tienda(
codigo_tienda char(2) not null,
direccion varchar2(50) not null,
tipo varchar(15),
constraint tipo_ck check (tipo in (‘dormitorios’,’salones’,’cocinas’,’bannos’,’bebe’,’ropa_interior’)),
constraint tienda_pk primary key (codigo_tienda)
);

create table producto(
id_producto number(4) not null,
descripcion varchar2(30) not null,
stock number(3) not null,
precio number(5,2) not null,
codigo_tienda char(2) not null,
constraint producto_pk primary key (id_producto),
constraint fk_tienda foreign key (codigo_tienda) references tienda(codigo_tienda)
);

create table compra(
numero_factura number(5) not null,
fecha_compra date not null,
monto_total number(6,2) not null,
dni_cliente char(8),
codigo_tienda char(2) not null,
constraint compra_pk primary key (numero_factura),
constraint fk_cliente foreign key (dni_cliente) references cliente(dni_cliente),
constraint fk_tienda2 foreign key (codigo_tienda) references tienda(codigo_tienda)
);

create table empleado(
dni_empleado char(8),
nombre_empleado varchar2(30) not null,
apellido_empleado varchar2(45) not null,
salario number(4) not null,
codigo_tienda char(2),
constraint empleado_pk primary key (dni_empleado),
constraint fk_tienda3 foreign key (codigo_tienda) references tienda(codigo_tienda)
);

/* INTRODUCCION DE DATOS EN LAS TABLAS */

insert into cliente values (11223344,’Francisco’,’Garcia’,666444222);
insert into cliente values (44552200,’Marta’,’Asencio’,994442323);
insert into cliente values (99776622,’Carlos’,’Vega’,666000222);
insert into cliente values (22002200,’Lucía’,’Fonseca’,915558877);
insert into cliente values (11888844,’Sarabel’,’Santa Cruz’,666111259);
insert into cliente values (55225522,’Antonio’,’Valle’,955552219);
insert into cliente values (30000003,’Cristina’,’Benavente’,954444444);
insert into cliente values (00112233,’Sara’,’Herrera’,644133331);
insert into cliente values (66776677,’Marta’,’Lama’,600000006);
insert into cliente values (66666666,’Luis’,’Aragon’,913334455);

insert into tienda values (‘DO’,’C/ Pérez Cerralbo, 54′,’dormitorios’);
insert into tienda values (‘SA’,’C/ Coca Pinera, 98′,’salones’);
insert into tienda values (‘BE’,’C/ Coca Pinera, 102′,’bebe’);
insert into tienda values (‘RI’,’C/ Molino, 252′,’ropa_interior’);
insert into tienda values (‘CO’,’C/ Gibraltar Espanol, 27′,’cocinas’);
insert into tienda values (‘BA’,’C/ Borujas, 5′,’bannos’);

insert into producto values (0147,’Babero Azul Becolor’,50,12.90,’BE’);
insert into producto values (0152,’Babero Rosa Becolor’,40,12.90,’BE’);
insert into producto values (0164,’Pijama Bebe Verde Becolor’,20,18.90,’BE’);
insert into producto values (0208,’Patucos Beige Becolor’,90,9.90,’BE’);
insert into producto values (0315,’Cortinas Beige AD’,10,74.90,’SA’);
insert into producto values (0320,’Ropa Mesa Camilla Gris AD’,4,89.90,’SA’);
insert into producto values (0346,’Cojin Granate Benetton’,95,4.90,’SA’);
insert into producto values (0454,’Cojin Marron Benetton’,25,6.90,’DO’);
insert into producto values (0455,’Nordico Plumas PFL’,40,60.90,’DO’);
insert into producto values (0459,’Funda Nordica Lunares Atrivm’,10,40.00,’DO’);
insert into producto values (0508,’Sabanas Pirineo 150 Colorata’,20,19.90,’DO’);
insert into producto values (0671,’Sabanas Verano 90 Kexulo’,60,14.95,’DO’);
insert into producto values (0700,’Calzoncillo Slip Pierre Cardin’,30,4.90,’RI’);
insert into producto values (0709,’Calzoncillo Boxer Abanderado’,20,3.90,’RI’);
insert into producto values (0784,’Braguitas Unno’,10,5.90,’RI’);
insert into producto values (0869,’Calcetines 3uds Luanvi’,50,7.90,’RI’);
insert into producto values (1058,’Panno 5ud AD’,40,5.90,’CO’);
insert into producto values (1094,’Cortinas Cerezas Benetton’,35,19.90,’CO’);
insert into producto values (1108,’Panno de Hule Frutal’,120,9.95,’CO’);
insert into producto values (1584,’Juego Toallas Blancas Atrivm’,90,10.90,’BA’);
insert into producto values (1592,’Toalla Playa N Geographic’,50,9.90,’BA’);
insert into producto values (1596,’Cortinas Banno Atrivm’,20,14.90,’BA’);
insert into producto values (1599,’Bikini Estampado Roxy’,10,39.90,’BA’);

insert into compra values (12254,’25/04/2009′,24.90,11223344,’BE’);
insert into compra values (15487,’28/04/2009′,54.90,22002200,’BE’);
insert into compra values (25564,’22/07/2009′,194.90,44552200,’BA’);
insert into compra values (25698,’08/02/2009′,14.95,11223344,’BA’);
insert into compra values (35144,’30/12/2009′,99.90,11888844,’SA’);
insert into compra values (45115,’01/12/2010′,9.90,55225522,’SA’);
insert into compra values (49005,’05/02/2010′,175.00,22002200,’RI’);
insert into compra values (50136,’09/02/2010′,15.40,11223344,’RI’);
insert into compra values (59644,’01/03/2010′,15.40,99776622,’CO’);
insert into compra values (63255,’01/05/2010′,19.90,22002200,’CO’);
insert into compra values (65447,’21/11/2010′,25.90,55225522,’CO’);
insert into compra values (67778,’30/01/2011′,19.90,66666666,’CO’);

insert into empleado values (99887766,’Josefa’,’Lara’,1350,’DO’);
insert into empleado values (77665555,’Rocio’,’Giraldo’,1200,’BE’);
insert into empleado values (44440000,’Juan’,’Fernandez’,1200,’BA’);
insert into empleado values (11113333,’Juana’,’Arroniz’,1200,’SA’);
insert into empleado values (44550011,’Macías’,’Sanchez’,1350,’RI’);
insert into empleado values (99999900,’Rosa’,’Perez’,1200,’RI’);
insert into empleado values (33332211,’Carmela’,’Rodriguez’,1200,’CO’);
insert into empleado values (48992016,’Ricardo’,’Valle’,790,NULL);
insert into empleado values (88778888,’Nicolas’,’Borrego’,1950,NULL);

/* CREACIÓN DE ÍNDICES */

create index i_productos on producto (id_producto,descripcion);
create index i_clie_compras on compra (dni_cliente);

/* CREACION DE USUARIOS */

create user nicolas identified by nicolas default tablespace violvadb account unlock;
create user juana identified by juana default tablespace violvadb account unlock;
create user josefa identified by josefa default tablespace violvadb account unlock;
create user rocio identified by rocio default tablespace violvadb account unlock;
create user juan identified by juan default tablespace violvadb account unlock;
create user macias identified by macias default tablespace violvadb account unlock;
create user rosa identified by rosa default tablespace violvadb account unlock;
create user carmela identified by carmela default tablespace violvadb account unlock;
create user ricardo identified by ricardo default tablespace violvadb account unlock;

/* OTORGACIÓN DE PRIVILEGIOS, ROLES, … */

create role vendedor not identified;
create role director not identified;
create role operador not identified;

grant connect to vendedor, director, operador;

grant unlimited tablespace to juana, josefa, rocio, juan, macias, rosa, carmela, nicolas, ricardo;

grant select on cliente to director;
grant select,insert,update,delete on tienda to director;
grant select on compra to director;
grant select,insert,update,delete on empleado to director;
grant select on producto to director;

grant select,insert,update,delete on cliente to vendedor;
grant select on tienda to vendedor;
grant select,insert on compra to vendedor;
grant select on empleado to vendedor;
grant select on producto to vendedor;

grant select on tienda to operador;
grant select,insert,update,delete on producto to operador;

grant vendedor to juana, josefa, rocio, juan, macias, rosa, carmela;
grant director to nicolas;
grant operador to ricardo;[/code]

Muchísimas gracias. Si me orienta alguien me haría un gran favor 😀
Saludos!!!

Leave a Reply