advertisement

Base De Datos Oracle Para Una Galeria De

67 %
33 %
advertisement
Information about Base De Datos Oracle Para Una Galeria De
Education

Published on January 31, 2009

Author: arkalira

Source: slideshare.net

advertisement

Base de datos Oracle para una galeria de venta de fotografias. Arkaitz Lira Luque + + + +

Modelo entidad – relación

Tablas y contenidos I/IV Cliente: Grupos:

Cliente:

Grupos:

Tablas y contenidos II/IV Fotografias: Pedidos:

Fotografias:

Pedidos:

Tablas y contenidos III/IV Pagotarj: Precios: Tamano:

Pagotarj:

Precios:

Tamano:

Tablas y contenidos IV/IV Visitas: Almacen:

Visitas:

Almacen:

En detalle: constraints Almacen: Cliente: Fotografias: FOTOGRAFIAS_FK = FOTOGRAFIAS_FK_CLIENTE

Almacen:

En detalle: constraints Grupos: Pagotarj: Precios: Tamano:

Grupos:

En detalle: constraints Pedidos: Visitas:

Pedidos:

Administración de usuarios: Tablas I Almacen: ADMINISTRADOR  Todos los permisos. Puede otorgar. Cliente: Contable  INDEX, SELECT. Puede otorgar. Envios  ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE. Puede otorgar. ADMINISTRADOR  Todos los permisos. Puede Otorgar. Usuario  INDEX, SELECT, UPDATE. No puede otorgar. Fotografias: Envios  INDEX, SELECT. Puede otorgar. ADMINISTRADOR  Todos los permisos. Puede Otorgar. Usuario  INDEX, DELETE, INSERT, SELECT, UPDATE. No puede otorgar.

Almacen:

ADMINISTRADOR  Todos los permisos. Puede otorgar.

Cliente:

Contable  INDEX, SELECT. Puede otorgar.

Envios  ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE. Puede otorgar.

ADMINISTRADOR  Todos los permisos. Puede Otorgar.

Usuario  INDEX, SELECT, UPDATE. No puede otorgar.

Fotografias:

Envios  INDEX, SELECT. Puede otorgar.

ADMINISTRADOR  Todos los permisos. Puede Otorgar.

Usuario  INDEX, DELETE, INSERT, SELECT, UPDATE. No puede otorgar.

Administración de usuarios: Tablas II Grupos: ADMINISTRADOR  Todos los permisos. Puede otorgar. Usuario  INDEX, DELETE, INSERT, SELECT, UPDATE. No puede otorgar. Pagotarj: ADMINISTRADOR  Todos los permisos. Puede otorgar. Contable  ALTER, INDEX, SELECT, UPDATE. Puede otorgar. Pedidos: ADMINISTRADOR  Todos los permisos. Puede otorgar. Envios  ALTER, INDEX, DELETE, INSERT, SELECT, UPDATE. Puede otorgar.

Grupos:

ADMINISTRADOR  Todos los permisos. Puede otorgar.

Usuario  INDEX, DELETE, INSERT, SELECT, UPDATE. No puede otorgar.

Pagotarj:

ADMINISTRADOR  Todos los permisos. Puede otorgar.

Contable  ALTER, INDEX, SELECT, UPDATE. Puede otorgar.

Pedidos:

ADMINISTRADOR  Todos los permisos. Puede otorgar.

Envios  ALTER, INDEX, DELETE, INSERT, SELECT, UPDATE. Puede otorgar.

Administración de usuarios: Tablas III Precios: ADMINISTRADOR  Todos los permisos. Puede otorgar. Envios  INDEX, SELECT. Puede otorgar. Contable  ALTER, INDEX, DELETE, INSERT, SELECT, UPDATE. Puede otorgar. Tamano: ADMINISTRADOR  Todos los permisos. Puede otorgar. Envios  ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE. Puede otorgar. Visitas: ADMINISTRADOR  Todos los permisos. Puede otorgar. Usuario  INDEX, INSERT, SELECT. No puede otorgar.

Precios:

ADMINISTRADOR  Todos los permisos. Puede otorgar.

Envios  INDEX, SELECT. Puede otorgar.

Contable  ALTER, INDEX, DELETE, INSERT, SELECT, UPDATE. Puede otorgar.

Tamano:

ADMINISTRADOR  Todos los permisos. Puede otorgar.

Envios  ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE. Puede otorgar.

Visitas:

ADMINISTRADOR  Todos los permisos. Puede otorgar.

Usuario  INDEX, INSERT, SELECT. No puede otorgar.

Administración de usuarios - Permisos Arkaitz Prop. Esquema Usuario Usuario Usuario Administrador / Arkaitz Visitas Envios Envios Envios Envios Envios Envios Envios / Usuario Administrador / Arkaitz Tamano Envios Contable Contable / Envios Contable Contable Contable Contable / Envios / Usuario Administrador / Arkaitz Precios Envios Envios Envios Envios Envios Envios / Usuario Envios Administrador / Arkaitz Pedidos Contable Contable Contable Usuario Contable Usuario Contable Administrador / Arkaitz PagoTarj Usuario Usuario Usuario Usuario Usuario Administrador / Arkaitz Grupos Envios Envios Usuario Usuario Usuario Envios / Usuario Administrador / Arkaitz Fotografias Contable / Envios Envios Contable / Usuario / Envios Envios Usuario / Envios Envios Contable / Usuario / Envios Administrador / Arkaitz Cliente Administrador / Arkaitz Almacen GRANT DROP ALTER CREATE INDEX DELETE UPDATE INSERT SELECT Todos los permisos

Administración de usuarios: Views Para realizar operaciones de inserción, actualización, borrado, etc. Es necesario disponer de permisos suficientes y una view de tabla (o tablas) completa. Usuarios Views Mixtas Views de tabla completa Consultas mixtas Inserciones, actualizaciones. Usuarios Consultas mixtas Usuarios Consultas mixtas EJEMPLO: Usuario dispone de 6 views de tabla completa y 10 views mixtas sobre views mixtas que el DBAdmin ha creado previamente.

Para realizar operaciones de inserción, actualización, borrado, etc. Es necesario disponer de permisos suficientes y una view de tabla (o tablas) completa.

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: ADMINS  CLTARJ  CREATE OR REPLACE FORCE VIEW "ADMINS" ("Grupo", "Creado", "Por", "Nombre", "Apellidos", "Fecha de alta") AS select "GRUPOS"."nombgrupo" as "Grupo" , "GRUPOS"."creado" as "Creado", "CLIENTE"."username" as "Por", "CLIENTE"."nombre" as "Nombre", "CLIENTE"."apellidos" as "Apellidos", "CLIENTE"."fechalta" as "Fecha de alta" from "GRUPOS" "GRUPOS", "CLIENTE" "CLIENTE" where "CLIENTE"."username" = "GRUPOS"."admin" order by "GRUPOS"."nombgrupo"  CREATE OR REPLACE FORCE VIEW "CLTARJ" ("Usuario", "Nombre", "Apellidos", "Tarj. Bloqueada", "Fecha de alta") AS select "CL"."username" as "Usuario", "CL"."nombre" as "Nombre", "CL"."apellidos" as "Apellidos", "PG"."bloqueado" as "Tarj. Bloqueada", "CL"."fechalta" as "Fecha de alta" from "PAGOTARJ" "PG", "CLIENTE" "CL" where "CL"."username" = "PG"."username" AND "PG"."bloqueado" LIKE 'no' order by "CL"."fechalta"  CLTARJBLOQ es otra view con el mismo contenido pero nos permite ver los clientes con tarjeta bloqueada. ("PG"."bloqueado" LIKE 'si' )

Views del propietario del esquema y cedidas a los correspondientes usuarios:

ADMINS 

CLTARJ 

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: FOTOS  GRUPO CONCEPTUAL IDFOTO FECHA  CREATE OR REPLACE FORCE VIEW "FOTOSGRUPOCONCEPTUAL" ("Grupo", "Titulo de la foto", "Sacada por", "Impresiones hasta", "Precio 15x20", "Precio 30x40", "Precio 50x70") AS select "G"."nombgrupo" as "Grupo", "F"."titulo" as "Titulo de la foto", "F"."propietario" as "Sacada por", "T"."tamano" as "Impresiones hasta", "P"."precio100" as "Precio 15x20", "P"."precio110" as "Precio 30x40", "P"."precio111" as "Precio 50x70" from "GRUPOS" "G", "PRECIOS" "P", "FOTOGRAFIAS" "F", "TAMANO" "T“ where "G"."idgrupo" = "F"."grupo" and "G"."idgrupo" = 4 and "T"."codigo" = "F"."tamanos" and "P"."idprecio" = "F"."precios"  CREATE OR REPLACE FORCE VIEW "IDFOTOFECHA" ("Id", "Titulo", "De", "Fecha") AS select "FOTOGRAFIAS"."nombfoto" as "Id", "FOTOGRAFIAS"."titulo" as "Titulo", "FOTOGRAFIAS"."propietario" as "De", "FOTOGRAFIAS"."fecha" as "Fecha" from "FOTOGRAFIAS"  FOTOSGRUPODEPORTES, FOTOSGRUPOMODA, FOTOSGRUPORETRATO y FOTOSGRUPOFAUNAFLORA son igual a ésta pero cambiando el idgrupo por el correspondiente al del grupo que queremos ver.

Views del propietario del esquema y cedidas a los correspondientes usuarios:

FOTOS 

GRUPO

CONCEPTUAL

IDFOTO

FECHA 

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: MAS VENDIDAS  MAS VISITADAS  CREATE OR REPLACE FORCE VIEW "MASVENDIDAS" ("Pedidos", "Nombfoto", "Titulo", "Sacada por", "Impresiones hasta", "Precio 15x20", "Precio 30x40", "Precio 50x70", "Vendidas") AS select COUNT("P"."foto") as "Pedidos", "F"."nombfoto" as "Nombfoto", "F"."titulo" as "Titulo", "F"."propietario" as "Sacada por", "T"."tamano" as "Impresiones hasta", "PR"."precio100" as "Precio 15x20", "PR"."precio110" as "Precio 30x40", "PR"."precio111" as "Precio 50x70", SUM("P"."cantidad") as "Vendidas" from "PEDIDOS" "P", "FOTOGRAFIAS" "F", "PRECIOS" "PR", "TAMANO" "T" where "F"."nombfoto" = "P"."foto" and "T"."codigo" = "F"."tamanos" and "PR"."idprecio" = "F"."precios" group by "F"."titulo", "F"."nombfoto", "F"."propietario", "T"."tamano", "PR"."precio100", "PR"."precio110", "PR"."precio111"  CREATE OR REPLACE FORCE VIEW "MASVISITADAS" ("Foto", "Titulo", "De", "Num. Visitas") AS select "FOTOGRAFIAS"."nombfoto" as "Foto", "FOTOGRAFIAS"."titulo" as "Titulo", "FOTOGRAFIAS"."propietario" as "De", COUNT("VISITAS"."idvisita") as "Num. Visitas" from "VISITAS" "VISITAS", "FOTOGRAFIAS" "FOTOGRAFIAS" where "FOTOGRAFIAS"."nombfoto" = "VISITAS"."nfoto" group by "FOTOGRAFIAS"."nombfoto", "FOTOGRAFIAS"."titulo", "FOTOGRAFIAS"."propietario" 

Views del propietario del esquema y cedidas a los correspondientes usuarios:

MAS

VENDIDAS 

MAS

VISITADAS 

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: NOHAN COMPRADO  PEDIDOS INFORMACION  CREATE OR REPLACE FORCE VIEW "NOHANCOMPRADO" ("nombre", "apellidos", "localidad", "comprador", "vendedor", "Ventas hechas") AS select "CLIENTE"."nombre" as "nombre", "CLIENTE"."apellidos" as "apellidos", "CLIENTE"."localidad" as "localidad", "CLIENTE"."comprador" as "comprador", "CLIENTE"."vendedor" as "vendedor", COUNT("PEDIDOS"."foto") as "Ventas hechas" from "CLIENTE" "CLIENTE", "FOTOGRAFIAS" "FOTOGRAFIAS", "PEDIDOS" "PEDIDOS" where "PEDIDOS"."foto" = "FOTOGRAFIAS"."nombfoto" AND "FOTOGRAFIAS"."propietario" = "CLIENTE"."username" AND "CLIENTE"."comprador" = 'no' group by "CLIENTE"."nombre", "CLIENTE"."apellidos", "CLIENTE"."localidad", "CLIENTE"."comprador", "CLIENTE"."vendedor"  CREATE OR REPLACE FORCE VIEW "PEDIDOSINFORMACION" ("Ultimo pedido", "Cantidad Maxima pedida") AS select MAX("P"."fechaped") as "Ultimo pedido", MAX("P"."cantidad") as "Cantidad Maxima pedida" from "PEDIDOS" "P" where "P"."estado" LIKE 'En proceso' 

Views del propietario del esquema y cedidas a los correspondientes usuarios:

NOHAN

COMPRADO 

PEDIDOS

INFORMACION 

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: PEDIDOS ASOCIADOS  CREATE OR REPLACE FORCE VIEW "PEDIDOSASOCIADOS" ("Pedido asociado", "Fecha pedido", "Nombfoto", "Titulo", "Sacada por", "Pedida por", "En tamano", "Estado", "Precio/unit", "Cantidad", "Total sin I.V.A", "Total del pedido") AS select "P"."pedasociados" as "Pedido asociado", "P"."fechaped" as "Fecha pedido", "F"."nombfoto" as "Nombfoto", "F"."titulo" as "Titulo", "F"."propietario" as "Sacada por", "P"."usuario" as "Pedida por", "T"."tamano" as "En tamano", "P"."estado" as "Estado", "P"."precio" as "Precio/unit", "P"."cantidad" as "Cantidad", "P"."precio" * "P"."cantidad" as "Total sin I.V.A", "P"."precio" * "P"."cantidad"+("P"."precio" * "P"."cantidad")*0.16 as "Total del pedido" from "PEDIDOS" "P", "FOTOGRAFIAS" "F", "PRECIOS" "PR", "TAMANO" "T" where "F"."nombfoto" = "P"."foto" and "T"."codigo" = "P"."tamano" and "PR"."idprecio" = "F"."precios" and "P"."estado" NOT LIKE 'Enviado' and "P"."pedasociados" LIKE 'P%' order by "P"."pedasociados", "P"."fechaped"

Views del propietario del esquema y cedidas a los correspondientes usuarios:

PEDIDOS

ASOCIADOS 

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: PEDIDOS EN PROCESO  CREATE OR REPLACE FORCE VIEW "PEDIDOSENPROCESO" ("Nombfoto", "Titulo", "Sacada por", "Pedida por", "Fecha", "Enviado", "En tamano", "Estado", "Precio/unit", "Cantidad", "Total sin I.V.A", "Total del pedido") AS select "F"."nombfoto" as "Nombfoto", "F"."titulo" as "Titulo", "F"."propietario" as "Sacada por", "P"."usuario" as "Pedida por", "P"."fechaped" as "Fecha", "P"."enviado" as "Enviado", "T"."tamano" as "En tamano", "P"."estado" as "Estado", "P"."precio" as "Precio/unit", "P"."cantidad" as "Cantidad", "P"."precio" * "P"."cantidad" as "Total sin I.V.A", "P"."precio" * "P"."cantidad"+("P"."precio" * "P"."cantidad")*0.16 as "Total del pedido" from "PEDIDOS" "P", "FOTOGRAFIAS" "F", "PRECIOS" "PR", "TAMANO" "T" where "F"."nombfoto" = "P"."foto" and "T"."codigo" = "P"."tamano" and "PR"."idprecio" = "F"."precios" and "P"."estado" NOT LIKE 'Enviado'

Views del propietario del esquema y cedidas a los correspondientes usuarios:

PEDIDOS

EN PROCESO 

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: PEDIDOS ENVIADOS  CREATE OR REPLACE FORCE VIEW "PEDIDOSENVIADOS" ("Nombfoto", "Titulo", "Sacada por", "Pedida por", "Fecha", "Enviado", "En tamano", "Estado", "Precio/unit", "Cantidad", "Total sin I.V.A", "Total del pedido") AS select "F"."nombfoto" as "Nombfoto", "F"."titulo" as "Titulo", "F"."propietario" as "Sacada por", "P"."usuario" as "Pedida por", "P"."fechaped" as "Fecha", "P"."enviado" as "Enviado", "T"."tamano" as "En tamano", "P"."estado" as "Estado", "P"."precio" as "Precio/unit", "P"."cantidad" as "Cantidad", "P"."precio" * "P"."cantidad" as "Total sin I.V.A", "P"."precio" * "P"."cantidad"+("P"."precio" * "P"."cantidad")*0.16 as "Total del pedido" from "PEDIDOS" "P", "FOTOGRAFIAS" "F", "PRECIOS" "PR", "TAMANO" "T" where "F"."nombfoto" = "P"."foto" and "T"."codigo" = "P"."tamano" and "PR"."idprecio" = "F"."precios" and ”P"."estado" LIKE 'Enviado'

Views del propietario del esquema y cedidas a los correspondientes usuarios:

PEDIDOS

ENVIADOS 

Views y consultas Views del propietario del esquema y cedidas a los correspondientes usuarios: TAMAÑO PRECIOS  CREATE OR REPLACE FORCE VIEW "TAMAÑOPRECIOS" ("Codigo de tamaño", "Id. precio", "Tamaños", "Precio 15x20", "Precio 30x40", "Precio 50x70") AS select "T"."codigo" as "Codigo de tamaño", "PR"."idprecio" as "Id. precio", "T"."tamano" as "Tamaños", "PR"."precio100" as "Precio 15x20", "PR"."precio110" as "Precio 30x40", "PR"."precio111" as "Precio 50x70" from "TAMANO" "T", "PRECIOS" "PR“ where ("T"."codigo" = 100 AND "PR"."idprecio" BETWEEN 1 AND 3) OR ("T"."codigo" = 110 AND "PR"."idprecio" BETWEEN 2 AND 3) OR ("T"."codigo" = 111 AND "PR"."idprecio" BETWEEN 3 AND 3) ORDER BY "PR"."precio111", "PR"."idprecio"

Views del propietario del esquema y cedidas a los correspondientes usuarios:

TAMAÑO

PRECIOS 

Dificultades I/II Almacenar las imágenes en un campo de tipo BLOB en la tabla ALMACEN: Solución: 1. Crear directorio del que coger las imágenes: CREATE OR REPLACE DIRECTORY IMGS AS 'C:oraclelobimgs'; 2. Dar permisos al DBA sobre el directorio: GRANT READ ON DIRECTORY IMGS to ARKAITZ WITH GRANT OPTION ; GRANT READ ON DIRECTORY IMGS to PUBLIC ; 3. Insertar las fotografias del directorio c:/oracle/blob/imgs/ en la bbdd: DECLARE l_bfile BFILE; l_blob BLOB; BEGIN INSERT INTO ALMACEN ( IDALMACEN , NFOTO , BIN ) VALUES (' 000013 ',' 013 ', EMPTY_BLOB() ) RETURN BIN INTO l_blob; l_bfile := BFILENAME('IMGS', ‘ Nombre del fichero jpg '); DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly); DBMS_LOB.loadfromfile(l_blob,l_bfile,DBMS_LOB.getlength(l_bfile)); DBMS_LOB.fileclose(l_bfile); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE; END;

Almacenar las imágenes en un campo de tipo BLOB

en la tabla ALMACEN:

Solución:

1. Crear directorio del que coger las imágenes:

CREATE OR REPLACE

DIRECTORY IMGS AS 'C:oraclelobimgs';

2. Dar permisos al DBA sobre el directorio:

GRANT READ ON DIRECTORY IMGS to ARKAITZ WITH

GRANT OPTION ;

GRANT READ ON DIRECTORY IMGS to PUBLIC ;

Dificultades II/II Leer y descargar las imágenes al disco para su impresión: Solución: Usar un ‘DataBase Modeler’ externo como TOAD. Video en la siguiente transparencia. Los usuarios no ven tablas ni views de otro Esquema incluso dandoles permisos suficientes: Solución: Como el esquema de trabajo es diferente para cada usuario tenemos que conceder los permisos, y crear Views en cada cuenta para que puedan obtener la informacion y ejecutar operaciones sobre las tablas.

Leer y descargar las imágenes al disco para su

impresión:

Solución:

Usar un ‘DataBase Modeler’ externo como TOAD.

Video en la siguiente transparencia.

Video explicativo del uso de TOAD para recuperar las imágenes.

Base de datos Oracle para una galeria de venta de fotografias. Arkaitz Lira Luque + + + +

Add a comment

Related presentations

Related pages

Cómo crear una base de datos de Oracle (Guía de inicio ...

Cómo crear una base de datos de Oracle ... Tenga a mano la documentación de instalación de Oracle. Consulte los procedimientos para realizar las ...
Read more

Database 12c | Oracle LATAM

Oracle Database 12c presenta una estructura de tenencia múltiple que hace ... “ Al utilizar una base de datos conectable para nuestro servicio de ...
Read more

Creación de una base de datos Oracle - Guía de Oracle ...

Creación de una base de datos Oracle. ... datos física en espera o una instancia de base de datos lógica en espera. Para obtener instrucciones sobre ...
Read more

Almacén de datos - Plataforma de almacenamiento ... - Oracle

La plataforma de almacén de datos de Oracle es una ... un desempeño extraordinario y consolidación de base de datos para el ...
Read more

Arranque y parada de una base de datos Oracle - orasite.com

Objetivos Explicar brevemente los diferentes métodos para parar y arrancar una base de datos ORACLE. ... Más alternativas para el arranque de base de datos.
Read more

Aplicacion 15. Base de Datos Oracle para Reservas Hotel ...

El video muestra el proceso de implementación de una base de datos en Oracle para Reservas de Hotel.
Read more

Crear Base de Datos, crear tabla , eliminar tabla e ...

Como crear nuestra primer base de datos y acceder a ella desde consola y desde ... Como crear una Base de Datos en Oracle 11g ...
Read more

Base de datos - Wikipedia, la enciclopedia libre

Una base de datos o banco de datos es un conjunto de datos pertenecientes a un mismo ... tomar decisiones y realizar análisis de datos para ...
Read more