dossier base de datos ii - aula virtualvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... ·...

69
UNIVERSIDAD SALESIANA DE BOLIVIA INGENIERIA DE SISTEMAS DOSSIER BASE DE DATOS II Docente: Lic. Oscar F. Aguilar Gemio 1

Upload: others

Post on 15-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

UNIVERSIDAD SALESIANA DE BOLIVIA

INGENIERIA DE SISTEMAS

DOSSIER

BASE DE DATOS II

Docente: Lic. Oscar F. Aguilar Gemio

I - 2012

1

Page 2: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

INDICE

Presentacion……………………………………………………………………….…………3

1. Tema 1 Lenguajes de consulta formales ………………………….….…...4

1.1. El modelo relacional……………………………………………………………….……. 41.2. Operaciones en el Modelo de Datos Relacional ………………………………….………51.3. Algebra relacional………………………………………………………………….……..51.4. Operadores Relacionales …………………………………………………….………….. 61.5. Union……………………………………………………………………………….……. 61.6. Intersección …………………………………………………………………….…….…...71.7. Diferencia ………………………………………………………………………..…….….71.8. Producto Cartesiano ……………………………………………………….………….….81.9. Selección …………………………………………………………………………….……91.10. Proyección………………………………………………………………………….…….101.11. División ………………………………………………………………………….………111.12. Operadores No básicos ………………………………………………………….……….121.13. Ejercicios de álgebra relacional ………………………………………………………….121.14. Limitaciones del álgebra relacional …………………………………………………..….12

2. Tema 2 Lenguajes de consulta comerciales………….…………………. 142.1. Introducción………………………………………………………………………………142.2. El Modelo de Datos Relacional…………………………………………………………..142.3. El Lenguaje SQL………………………………………………………………………….152.4. Select ……………………………………………………………………………………..152.5. Joins ………………………………………………………………………………………162.6. Operadores Agregados…………………………………………………………………….172.7. Agregación por Grupos …………………………………………………………………...172.8. Having …………………………………………………………………………………….192.9. SubConsultas……………………………………………………………………………...192.10. Unión, Intersección, Excepción …………………………………………………………..202.11. Lenguaje de Definición de Datos …………………………………………………………212.12. Create Table ………………………………………………………………………………212.13. Tipos de Datos en SQL …………………………………………………………………...212.14. Create Index ………………………………………………………………………………212.15. Create View ………………………………………………………………………………222.16. Drop Table, Drop Index, Drop View …………………………………………………….222.17. Actualización de Datos …………………………………………………………………..232.18. Insert Into ………………………………………………………………………………...232.19. Update ……………………………………………………………………………………232.20. Delete …………………………………………………………………………………….23

3. Tema 3 Seguridad e integridad ……………………………..……………….243.1. SEGURIDAD ……………………………………………………………………………243.2. Vistas y Seguridad ……………………………………………………………………….243.3. Ventajas de las vistas …………………………………………………………………….253.4. Creación de Vistas ……………………………………………………………………….253.5. Actualización de Vistas ………………………………………………………………….253.6. Indentificadores de usuario ………………………………………………………………263.7. Consesión y Retiro de Privilegios………………………………………………………...263.8. INTEGRIDAD……………………………………………………………………………273.9. Qué es un Disparador o Trigger…………………………………………………………..273.10. Estructura General de un Disparador……………………………………………………..283.11. Disparadores e integridad referencial…………………………………………………….29

2

Page 3: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

3.12. El futuro de los disparadores……………………………………………………………..29

4. Tema 4 Base de datos orientados a objetos………………………..…….304.1. Sistema administrador de base de datos orientada al objeto (OODBMS)……………….304.2. El estándar ODMG-93 ………………………………………………………….……….314.3. Definiendo las oodbms…………………………………………………………………..314.4. Conceptos especificos de oodbms……………………………………………………….334.5. Características de las odbms……………………………………………………………..344.6. Características de las odbms……………………………………………………………..354.7. Los aportes a la tecnología……………………………………………………………….364.8. Los mercados……………………………………………………………………………..364.9. EL MODELO DE OBJETOS…………………………………………………...374.10. Objetos y clases…………………………………………………………………………..374.11. Diagrama de objetos……………………………………………………………………...374.12. Atributos………………………………………………………………………………….384.13. Operaciones y Métodos…………………………………………………………………..384.14. Enlaces y Asociaciones…………………………………………………………………..394.15. Multiplicidad……………………………………………………………………………..394.16. Modelando una asociación como una clase………………………………………………404.17. Roles……………………………………………………………………………………...404.18. Ordenación…………………………………………………………………………….....414.19. Cualificadotes…………………………………………………………………………….414.20. Agregación……………………………………………………………………………….424.21. Propagación de las Operaciones………………………………………………………….434.22. Generalización y Herencia………………………………………………………………434.23. Clases abstractas………………………………………………………………………….454.24. Herencia Múltiple………………………………………………………………………...464.25. Claves Candidatas………………………………………………………………………..484.26. Restricciones……………………………………………………………………………..494.27. Modelo De Datos vs. Modelo De Objetos…………………………………………...…..504.28. Consejos prácticos……………………………………………………………………….50

Bibliografía ………………………………………………………………………………….51

Glosario …………………………………………………………………………………….....51

3

Page 4: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

DOSSIER BASE DE DATOS II

PresentaciónLa gestión de bases de de datos ha evolucionado desde una aplicación informática especializada hasta una parte esencial de un entorno informático moderno. Como tal, el conocimiento acerca de sistemas de bases de datos se ha convertido en una parte esencial en la formación en Informática.El propósito de este Dossier es presentar los conceptos fundamentales de la administración, diseño, consulta, seguridad e integridad de Bases de Datos.El dossier esta orientado a un segundo curso en Bases de Datos para el nivel superior de la Carrera de Ingeniería de Sistemas.En este Dossier se asume que se dispone de conocimientos básicos de Base de Datos, estructura de Datos, organización de computadoras y manejadores de Base de datos. Los conceptos se presentan usando descripciones intuitivas, muchas de las cuales están basadas en el ejemplo propuesto de una empresa de distribución de Suministros a proyectos.

El Dossier esta organizado en cuatro temas:

Tema1 Lenguajes de Consulta FormalesEl Tema 1 presenta los lenguajes formales de consulta, utilizados para obtener información de una Base de Datos. Se centra específicamente en el lenguaje Álgebra Relacional del modelo de Datos Relacional. También se hace referencia al lenguaje Calculo Relacional de Tuplas y Dominios.

Tema 2 Lenguaje de Consulta Comercial - SQLEl Tema 2 se centra en el lenguaje relacional orientado al usuario de mayor influencia SQL (Structured Query Language) Lenguaje Estructurado de Consulta. En este capitulo se describe la manipulación de datos: consultas, actualizaciones, inserciones y borrados.

Tema 3 Seguridad e IntegridadEl Tema 3 presenta la integridad referencial y la seguridad de las Bases de Datos. Este capitulo describe uso de vistas, asignación y retiro de privilegios en SQL para la seguridad. También introduce los conceptos de manejo Procedimientos Almacenados y Disparadores como mecanismos de Integridad.

Tema 4 Base de Datos Orientado a ObjetosEl Tema 4 trata las bases de datos de Objetos. En el se introduce los conceptos de programación Orientada a Objetos y se muestra como estos conceptos constituyen la base para un modelo de datos.

4

Page 5: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Tema 1LENGUAJES DE CONSULTA FORMALES

El Modelo RelacionalEl modelo relacional consta de tres partes:

Estructura de datos relacional. Reglas de Integridad referencial y de entidad. Parte manipulativa de los datos, que consta de:

Álgebra Relacional. Cálculo Relacional SQL

Ejemplo: Para un sistema de proveedores (S), Partes (P) y la relación de Envíos (SP) se tienen las siguientes tablas:

S# SNAME STATUS CITY S1 Smith 20 London S2 Jones 10 Par�S3 Blake 30 Par�S4 Clark 20 London S5 Adams 30 Athens

Tabla 1: Tabla S

P# PNAME COLOR WEIGHT CITY P1 Nut Red 12 London P2 Bolt Green 17 Par�P3 Screw Blue 17 Rome P4 Screw Red 14 London P5 Cam Blue 12 Par�

Tabla 2: Tabla P

S# P# QTY S1 P1 300 S1 P2 200 S1 P3 400 S1 P4 200 S1 P5 100 S1 P6 100 S2 P1 300 S2 P2 400 S3 P2 200 S4 P2 200 S4 P4 300 S4 P5 400 Tabla 3: Tabla SP

5

Page 6: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Operaciones en el Modelo de Datos Relacional

Los datos pueden almacenarse utilizando un modelo de datos relacional, pero no conocemos qué podemos hacer con todas estas tablas para recuperar algo desde esa base de datos todavía. Por ejemplo, alguien podría preguntar por los nombre de todos los proveedores que vendan el artículo 'tornillo'. Hay dos formas diferentes de notaciones para expresar las operaciones entre relaciones.

El Algebra Relacional es una notación algebraica, en la cual las consultas se expresan aplicando operadores especializados a las relaciones.

El Cálculo Relacional es una notación lógica, donde las consultas se expresan formulando algunas restricciones lógicas que las tuplas de la respuesta deben satisfacer.

ALGEBRA RELACIONALGrupos de Operadores del Algebra Relacional

a. Tradicionales de Conjuntos UNION (UNION) INTERSECCION (INTERSECT) DIFERENCIA (MINUS) PRODUCTO CARTESIANO (TIMES)

b. Operadores Especiales de Relaciones SELECCION (WHERE) PROYECCION ([ ]) JUNTURA (JOIN) DIVISION (DIVIDED BY)

c. Nuevos Operadores RelacionalesAdicionalmente se han definido algunas extensiones al Algebra relacional entre ellas, se contemplan los siguientes operadores:

DIFERENCIAL INTEGRAL MAXIMO MINIMO CUENTA SUMA

6

Page 7: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Operadores Relacionales Unión La unión de dos relaciones A y B que deben ser compatibles con respecto a la unión es el conjunto de tuplas que pertenecen a la relación A, a la relación B o a ambas relaciones, y se designa por:

A UNION BCompatibilidad a la Unión Dos relaciones son compatibles a la unión si tienen el mismo número de atributos(es decir son del mismo grado), y deben existir atributos equivalentes dentro de las dos relaciones, es decir:

El atributo 1 de la relación debe estar definido en el mismo dominio del atributo 1 de la relación, el atributo 2 de la relación debe estar definido en el mismo dominio del atributo 2 de la relación, y as�ucesivamente.

Gráficamente se verá como se ilustra en la figura 1.

Figura 1: Representación gráfica de la unión de dos tablas v.g. si tenemos la base de datos de personas solteras y casadas segun se ilustra en las tablas 4, 5 y 6.

#EMP SUELDO E25 10 E30 20 E15 40

Tabla 4: Tabla de Casados

EMP# SAL E70 30 E60 40 E85 90

Tabla 5: Tabla de Solteros

7

Page 8: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

EMP# SAL E25 10 E30 20 E15 40 E70 30 E60 40 E85 90

Tabla 6: Tabla de Todos

CASADOS UNION SOLTEROS = TODOS

SOLTEROS UNION TODOS = TODOS El resultado de la unión conserva los nombres de los atributos de la primer relación

Intersección La intersección de dos relaciones A y B que deben ser compatibles a la unión es el conjunto de tuplos que pertenecen a la relación y a la relación. Gráficamente esto se verá como se ilustra en la figura 2.

Figura 2: Intersección de dos tablas

Con respecto a la base de datos presentada anteriormente tenemos:

CASADOS MINUS TODOS = VACIO TODOS MINUS CASADOS = SOLTEROS

8

Page 9: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

DiferenciaLa diferencia de dos relaciones A y B que deben ser compatibles a la unió es el conjunto de tuplos que pertenecen a la relación y no a la relación. La representación gráfica es ilustrada en la figura 3.Representación gráfica de la diferencia de tablas

Figura 3 Representación gráfica de la diferencia de tablas

Con respecto a la base de datos presentada anteriormente tenemos:CASADOS MINUS TODOS = VACIO

TODOS MINUS CASADOS = SOLTEROS

Producto CartesianoEl producto cartesiano de dos relaciones A y B (A TIMES B) es el conjunto de tuplos que resultan de la concatenación de un tuplo de A con un tuplo de B.

v.g. CASADOS TIMES SOLTEROS da como resultado la tabla 7 #EMP SUELDO EMP# SAL E25 10 E70 30 E25 10 E60 40 E25 10 E85 90 E30 20 E70 30 E30 20 E60 40 E30 20 E85 90 E15 40 E70 30 E15 40 E60 40 E15 40 E85 90

Tabla 7: Tabla Resultante del Producto Cartesiano

Lo anterior puede ser visto gráficamente según se ilustra en la figura 4

9

Page 10: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Figura 4: Representación gráfica del producto cartesiano

De este modo el producto cartesiano de una relación de grado G1 y con cardinalidad C1 por una relación de grado G2 y con cardinalidad C2 produce una relación de grado G1+G2 y con cardinalidad C1*C2.

NOTA: Para poder realizar el producto cartesiano de una relación consigo misma es necesario que definamos un ALIAS y conservar la UNICIDAD de los nombres de los atributos. v.g.

DEFINE ALIAS XS FOR R R TIMES XS

NOTA: De los cuatro operadores anteriores solo la diferencia no es conmutativo.

Selección La selección de una relación es un subconjunto horizontal de una relación en este subconjunto aparecen los tuplos que cumplen alguna condición especificada, gráficamente esto se ve en la figura 5.

Figura 3.5: Representación gráfica de la selección de registros de una tabla

NOTA IMPORTANTE: Las siguiente operaciones son equivalentes:

R WHERE C1 AND C2 = (R WHERE C1) INTERSECT (R WHERE C2) R WHERE C1 OR C2 = (R WHERE C1) UNION (R WHERE C2)

R WHERE NOT C1 = R MINUS ( R WHERE C1)

Proyección La proyección de una relación es un subconjunto vertical con la eliminación de duplicados. Esto se ilustra en la tabla 8.

10

Page 11: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

* * * * * * * * * * * * * *

Tabla 8: Tabla Indicando la ProyecciónLa forma de definir la proyección es encerrando entre paréntesis cuadrados y separados por comas los campos que se desean proyectar:

(S TIMES P) [STATUS, P.CITY]

JoinEs equivalente a un producto cartesiano, seguido de una selección de los tuplos que tengan en los atributos ''equivalentes'' el mismo valor, y finalmente una proyección para eliminar los atributos duplicados.

Una forma de definirlo será A JOIN B = (( A TIMES B)

WHERE A.Ci = B.Ci AND ....A.Cj = B.Cj) [A.A1, ...A.An,B.B1,...B.Bm]

El JOIN que se manejará conocido como EQUIJOIN IN NATURAL en el que la condición de la selección es por igualdad, además se han definido otros tipos de JOIN cuando la condición involucrada no es por igualdad. Dadas las tablas 1 y 2 se obtiene lo indicado en la tabla 9

S# SNAME STATUS CITY P# PNAME COLOR WEIGHT S1 Smith 20 London P1 Nut Red 12 S1 Smith 20 London P4 Screw Red 14 S1 Smith 20 London P6 Cog Red 19 S2 Jones 10 París P2 Bolt Green 17 S2 Jones 10 París P5 Cam Blue 12 S3 Blake 30 París P2 Bolt Green 17 S3 Blake 30 París P5 Cam Blue 12 S4 Clark 20 London P1 Nut Red 12 S4 Clark 20 London P4 Screw Red 14 S4 Clark 20 London P6 Cog Red 19

Tabla 9: Tabla Resultante S JOIN P

11

Page 12: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

División La división de una relación de grado m+n entre una relación de grado n, produce una relación de grado m. Además para poderse realizar la división se debe cumplir que el (m+i ) cómo atributo de la relación este definido en el mismo dominio que el iésimo atributo de la relación. Los tuplos resultantes en la relación (Cociente) son aquellos atributos m tales que aparezcan combinados en A con todos los valores de B. Por ejemplo. Si tenemos las tablas: 10, 11, 12

S# P# S1 P1 S1 P2 S1 P3 S1 P4 S1 P5 S1 P6 S2 P1 S2 P2 S3 P2 S4 P2 S4 P4 S4 P5

Tabla 10: Tabla X

P# P1

Tabla 11: Tabla Y

P# P2 P4

Tabla 12: Tabla Z

P# P1 P2 P3 P4 P5 P6

Tabla 13: X DIVIDED BY Y=

S# S1 S2

Tabla 14: X Divided by Z

S# S1

Tabla 15: X Divided by W

12

Page 13: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

NOTAS: Respecto a la división es importante tener presente que:

RESIDUO = DIVIDENDO MINUS (COCIENTE TIMES DIVISOR) DIVIDENDO = ((COCIENTE TIMES DIVISOR) UNION RESIDUO)

Si consideramos que el dividendo consta de atributos X,Y y el dividendo consta de atributos Y, una forma de calcular la división será

COCIENTE= DIVIDENDO[X] MINUS ((DIVIDENDO[X] TIMES DIVISOR) MINUS DIVIDENDO)[X]

Operadores No básicos

De los 8 operadores vistos solo 5 de ellos son básicos puesto que los otros tres pueden ser definidos en función de los básicos. Los operadores no básicos son:

JOIN Cuya definición la fue dada. DIVISION Cuya definición la fue dada. INTERSECCION Que equivale a: A MINUS (A MINUS B)

Ejercicios de álgebra relacional

Ejercicio 1Respecto a la base de datos de partes(P), proveedores(S) y pedidos(SP), obtenga las consultas en ALGEBRA RELACIONAL:

1.- Obtener los nombres de los proveedores que suministran todas las partes. ((SP[S#,P#] DIVIDEDBY P[P#]) JOIN S)[SNAME]

2.- Obtener los números de proveedor que suministran al menos una parte que sea suministrada por un proveedor que suministra alguna parte de color rojo (RED).

((((P WHERE COLOR='RED')[P#] JOIN SP)[S#] JOIN SP)[P#] JOIN SP)[S#] 3.- Obtener las parejas de Nombre de Proveedor y Nombre de Parte tales que el proveedor y la parte tengan la misma ciudad.

(S JOIN P)[SNAME,PNAME]

4.- Obtener los números de proveedor que suministran al menos las partes que son suministradas por 'S2'. SP[S#,P#] DIVIDEDBY (SP WHERE S#='S2')[P#]

5.- Obtener los pedidos en los que el proveedor sea de 'LONDON' y la parte sea de 'PARIS'. ((S TIMES P TIMES SP) WHERE S.S#=SP.S# AND

P.P#=SP.P# AND (P.CITY='PARIS' OR S.CITY='LONDON')

)[SP.S#,SP.P#,QTY]

13

Page 14: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Limitaciones del álgebra relacionalLa principal limitación del álgebra relacional reside en que no es posible contestar, por lo menos en forma directa, a preguntas que involucren:

Obtener la suma de atributos. Contar el número de tuplos que cumplan una condición

Obtener los tuplos que tengan el valor mínimo respecto a algunos) atributo(s). Obtener los tuplos que tengan el valor máximo respecto a algunos) atributo(s).

Obtener algún(os) atributo(s) si aparecen exactamente n veces. Obtener algún(os) atributo(s) si aparecen mas de n veces.

Obtener algún(os) atributo(s) si aparecen menos de n veces. Obtener algún(os) atributo(s) si aparecen por lo menos n veces.

14

Page 15: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Tema 2LENGUAJES DE CONSULTA COMERCIALES

IntroducciónSQL se ha convetido en el lenguaje de query relacional más popular. El nombre "SQL" es una abreviatura de Structured Query Language (Lenguaje de query estructurado). En 1974 Donald Chamberlain y otros definieron el lenguaje SEQUEL (Structured English Query Language) en IBM Research. Este lenguaje fue implementado inicialmente en un prototipo de IBM llamado SEQUEL-XRM en 1974-75. En 1976-77 se definió una revisión de SEQUEL llamada SEQUEL/2 y el nombre se cambió a SQL en consecuencia.

IBM desarrolló un nuevo prototipo llamado System R en 1977. System R implementó un amplio subconjunto de SEQUEL/2 (now SQL) y un número de cambios que se le hicieron a (now SQL) durante el proyecto. System R se instaló en un número de puestos de usuario, tanto internos a IBM como en algunos clientes seleccionados. Gracias al éxito y aceptación de System R en aquellos puestos de usuario, IBM inició el desarrollo de productos comerciales que implementaban el lenguaje SQL basado en la tecnología System R. Durante los años siguientes, IBM y bastantes otros vendedores anunciaron productos SQL tales como SQL/DS (IBM), DB2 (IBM), ORACLE (Oracle Corp.), y SYBASE (Sybase Inc.). SQL es también un estandar oficial hoy. En 1982, la American National Standards Institute (ANSI) encargó a su Comité de Bases de Datos X3H2 el desarrollo de una propuesta de lenguaje relacional estandar. Esta propuesta fue ratificada en 1986 y consistía básicamente en el dialecto de IBM de SQL. En 1987, este estandar ANSI fue también aceptado por la Organización Internacional de Estandarización (ISO). Esta versión estandar original de SQL recibió informalmente el nombre de "SQL/86". En 1989, el estandar original fue extendido, y recibió el nuevo nombre, también informal, de "SQL/89". También en 1989 se desarrolló un estandar relacionado llamado Database Language Embedded SQL (ESQL).

Los comités ISO y ANSI han estado trabajando durante muchos años en la definición de una versión muy expandida del estandar original, llamado informalmente SQL2 o SQL/92. Esta versión se convitió en un estandar ratificado durante 1992 - "International Standard ISO/IEC 9075:1992, Database Language SQL" -. SQL/92 es la versión a la que normalmente la gente se refiere cuando habla de "es SQL estandar". El Modelo de Datos RelacionalComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir que se basa en el modelo de datos relacional publicado inicialmente por E.F.Codd en 1970. Una base de datos relacional es una base de datos que se percibe por los usuarios como una colección de tablas (y nada más que tablas). Una tabla consiste en filas y columnas, cada fila representa un registro, y cada columna representa un atributo del registro contenido en la tabla. La Base de Datos de Proveedores y Artículos muestra un ejemplo de base de datos consistente en tres tablas.

SUPPLIER es una tabla que recoge el número (SNO), el nombre (SNAME) y la ciudad (CITY) de un proveedor.

PART es una tabla que almacena el número (PNO) el nombre (PNAME) y el precio (PRICE) de un artículo.

SELLS almacena información sobre qué artículo (PNO) es vendido por qué proveedor (SNO). Esto sirve en un sentido para conectar las dos tablas entre ellas.

Ejemplo. La Base de Datos de Proveedores y Artículos

PART PNO | PNAME | PRICE -----+-------------+---------

1 | Tornillos | 10 2 | Tuercas | 8 3 | Cerrojos | 15 4 | Levas | 25

15

Page 16: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

SUPPLIER SNO | SNAME | CITY SELLS SNO | PNO -----+---------+-------- -----+----- 1 | Smith | London 1 | 1 2 | Jones | Paris 1 | 2 3 | Adams | Vienna 2 | 4 4 | Blake | Rome 3 | 1 3 | 3 4 | 2

4 | 3 4 | 4

Las tablas PART y SUPPLIER se pueden ver como entidades y SELLS se puede ver como una relación entre un artículo particular y un proveedor particular.

El Lenguaje SQLComo en el caso de los más modernos lenguajes relacionales, SQL está basado en el cálculo relacional de tuplas. Como resultado, toda query formulada utilizando el cálculo relacional de tuplas ( o su equivalente, el álgebra relacional) se pude formular también utilizando SQL. Hay, sin embargo, capacidades que van más allá del cálculo o del álgebra relaciona. Aquí tenemos una lista de algunas carácteristicas proporcionadas por SQL que no forman parte del álgebra y del cálculo relacionales:

Comandos para inserción, borrado o modificación de datos. Capacidades aritméticas: En SQL es posible incluir operaciones aritméticas así como comparaciones,

por ejemplo A < B + 3. Notese que ni + ni otros operadores aritméticos aparecían en el algebra relacional ni en cálculo relacional.

Asignación y comandos de impresión: es posible imprimir una relación construida por una query y asignar una relacion calculada a un nombre de relación.

Funciones agregadas: Operaciones tales como promedio (average), suma (sum), máximo (max), etc. se pueden aplicar a las columnas de una relación para obtener una cantidad única.

SelectEl comando más usado en SQL es la instrucción SELECT, que se utiliza para recuperar datos. La sintaxis es: SELECT [ALL|DISTINCT] { * | expr_1 [AS c_alias_1] [, ... [, expr_k [AS c_alias_k]]]} FROM table_name_1 [t_alias_1] [, ... [, table_name_n [t_alias_n]]] [WHERE condition] [GROUP BY name_of_attr_i [,... [, name_of_attr_j]] [HAVING condition]] [{UNION [ALL] | INTERSECT | EXCEPT} SELECT ...] [ORDER BY name_of_attr_i [ASC|DESC] [, ... [, name_of_attr_j [ASC|DESC]]]];

Select sencillasAquí tenemos algunos ejemplos sencillos utilizando la instrucción SELECT:

Ejemplo 2-4. Consulta sencilla con cualificaciónPara recuperar todas las tuplas de la tabla PART donde el atributo PRICE es mayor que 10, formularemos la siguiente Consulta: SELECT * FROM PART WHERE PRICE > 10;

y obtenemos la siguiente tabla:

PNO | PNAME | PRICE

16

Page 17: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

-----+-------------+-------- 3 | Cerrojos | 15 4 | Levas | 25

Utilizando "*" en la instrucción SELECT solicitaremos todos los atributos de la tabla. Si queremos recuperar sólo los atributos PNAME y PRICE de la tabla PART utilizaremos la instrucción: SELECT PNAME, PRICE FROM PART WHERE PRICE > 10;

En este caso el resultado es: PNAME | PRICE ------------+-------- Cerrojos | 15 Levas | 25

Notese que la SELECT SQL corresponde a la "projección" en álgebra relaciona, no a la "selección" .

Las cualificaciones en la clásula WHERE pueden también conectarse lógimente utilizando las palabras claves OR, AND, y NOT: SELECT PNAME, PRICE FROM PART WHERE PNAME = 'Cerrojos' AND (PRICE = 0 OR PRICE < 15);

dará como resultado: PNAME | PRICE ------------+-------- Cerrojos | 15

Las operaciones aritméticas se pueden utilizar en la lista de objetivos y en la clausula WHERE. Por ejemplo, si queremos conocer cuanto cuestan si tomamos dos piezas de un artículo, podríamos utilizar la siguiente Consulta:

SELECT PNAME, PRICE * 2 AS DOUBLE FROM PART WHERE PRICE * 2 < 50;

dará como resultado: PNAME | DOUBLE ------------+--------- Tornillos | 20 Tuercas | 16 Cerrojos | 30

Notese que la palabra DOBLE tras la palabra clave AS es el nuevo título de la segunda columna. Esta técnica puede utilizarse para cada elemento de la lista objetivo para asignar un nuevo título a la columna resultante. Este nuevo título recibe el calificativo de "un alias". El alias no puede utilizarse en todo el resto de la Consulta.

Joins (Cruces)El siguiente ejemplo muestra como las joins (cruces) se realizan en SQL. Para cruzar tres tablas SUPPLIER, PART y SELLS a través de sus atributos comunes, formularemos la siguiente instrucción:

17

Page 18: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

SELECT S.SNAME, P.PNAME FROM SUPPLIER S, PART P, SELLS SE WHERE S.SNO = SE.SNO AND P.PNO = SE.PNO; y obtendremos la siguiente tabla como resultado: SNAME | PNAME -------+------- Smith | Tornillos Smith | Tuercas Jones | Levas Adams | Tornillos Adams | Cerrojos Blake | Tuercas Blake | Cerrojos Blake | Levas En la clausula FROM hemos introducido un alias al nombre para cada relación porque hay atributos con nombre común (SNO y PNO) en las relaciones. Ahora podemos distinguir entre los atributos con nombre común simplificando la adicción de un prefijo al nombre del atributo con el nombre del alias seguido de un punto. Primero el producto cartesiano: SUPPLIER × PART × SELLS Ahora seleccionamos únicamente aquellas tuplas que satisfagan las condiciones dadas en la claúsula WHERE (es decir, los atributos con nombre común deben ser iguales). Finalmente eliminamos las columnas repetidas (S.SNAME, P.PNAME). Operadores AgregadosSQL proporciona operadores agregados (como son AVG, COUNT, SUM, MIN, MAX) que toman el nombre de un atributo como argumento. El valor del operador agregado se calcula sobre todos los valores de la columna específicada en la tabla completa. Si se especifican grupos en la Consulta, el cálculo se hace sólo sobre los valores de cada grupo (vean la siguiente sección).

Ejemplo. Si queremos conocer el coste promedio de todos los artículos de la tabla PART, utilizaremos la siguiente Consulta: SELECT AVG(PRICE) AS AVG_PRICE FROM PART;El resultado es: AVG_PRICE ----------- 14.5

Si queremos conocer cuantos artículos se recogen en la tabla PART, utilizaremos la instrucción: SELECT COUNT(PNO) FROM PART;

y obtendremos: COUNT ------- 4

Agregación por GruposSQL nos permite particionar las tuplas de una tabla en grupos. En estas condiciones, los operadores agregados descritos antes pueden aplicarse a los grupos (es decir, el valor del operador agregado no se calculan sobre todos los valores de la columna especificada, sino sobre todos los valores de un grupo). El operador agregado se calcula individualmente para cada grupo).

18

Page 19: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

El particionamiento de las tuplas en grupos se hace utilizando las palabras clave GROUP BY seguidas de una lista de atributos que definen los grupos. Si tenemos GROUP BY A1, &tdot;, Ak habremos particionado la relación en grupos, de tal modo que dos tuplas son del mismo grupo si y sólo si tienen el mismo valor en sus atributos A1, &tdot;, Ak.

Ejemplo. Si queremos conocer cuántos artículso han sido vendido por cada proveedor formularemos la Consulta:

SELECT S.SNO, S.SNAME, COUNT(SE.PNO) FROM SUPPLIER S, SELLS SE WHERE S.SNO = SE.SNO GROUP BY S.SNO, S.SNAME;

y obtendremos: SNO | SNAME | COUNT -----+-------+------- 1 | Smith | 2 2 | Jones | 1 3 | Adams | 2 4 | Blake | 3

Demos ahora una mirada a lo que está ocurriendo aquí. Primero, la join de las tablas SUPPLIER y SELLS: S.SNO | S.SNAME | SE.PNO -------+---------+-------- 1 | Smith | 1 1 | Smith | 2 2 | Jones | 4 3 | Adams | 1 3 | Adams | 3 4 | Blake | 2 4 | Blake | 3 4 | Blake | 4

Ahora particionamos las tuplas en grupos reuniendo todas las tuplas que tiene el mismo atributo en S.SNO y S.SNAME: S.SNO | S.SNAME | SE.PNO -------+---------+-------- 1 | Smith | 1 | 2 -------------------------- 2 | Jones | 4 -------------------------- 3 | Adams | 1 | 3 -------------------------- 4 | Blake | 2 | 3 | 4

En nuestro ejemplo, obtenemos cuatro grupos y ahora podemos aplicar el operador agregado COUNT para cada grupo, obteniendo el resultado total de la Consulta dada anteriormente. Notese que para el resultado de una Consulta utilizando GROUP BY y operadores agregados para dar sentido a los atributos agrupados, debemos primero obtener la lista objetivo. Los demás atributos que no aparecen en la clausula GROUP BY se seleccionarán utilizando una función agregada. Por otro lado, usted no puede utilizar funciones agregadas en atributos que aparecen en la clausula GROUP BY.

19

Page 20: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

HavingLa clausula HAVING trabaja muy similarmente a la clausula WHERE, y se utiliza para considerar sólo aquellos grupos que satisfagan la cualificación dada en la clausula HAVING. Las expresiones permitidas en la clausula HAVING deben involucrar funcionen agregadas. Cada expresión que utilice sólo atributos planos deberá recogerse en la clausula WHERE. Por otro lado, toda expresión que involucre funciones agregadas debe aparecer en la clausula HAVING.

Ejemplo 2-7. Having

Si queremos sólo los proveedores que venden más de un artículo, utilizaremos la Consulta: SELECT S.SNO, S.SNAME, COUNT(SE.PNO) FROM SUPPLIER S, SELLS SE WHERE S.SNO = SE.SNO GROUP BY S.SNO, S.SNAME HAVING COUNT(SE.PNO) > 1;

y obtendremos: SNO | SNAME | COUNT -----+-------+------- 1 | Smith | 2 3 | Adams | 2 4 | Blake | 3

SubConsultasEn las clausulas WHERE y HAVING se permite el uso de subqueries (subselects) en cualquier lugar donde se espere un valor. En este caso, el valor debe derivar de la evaluación previa de la subConsulta. El uso de subqueries amplía el poder expresivo de SQL.

Ejemplo 2-8. Subselect

Si queremos conocer los artículos que tienen mayor precio que el artículo llamado 'Tornillos', utilizaremos la Consulta: SELECT * FROM PART WHERE PRICE > (SELECT PRICE FROM PART WHERE PNAME='Tornillos');

El resultado será: PNO | PNAME | PRICE -----+-------------+-------- 3 | Cerrojos | 15 4 | Levas | 25

Cuando revisamos la Consulta anterior, podemos ver la palabra clave SELECT dos veces. La primera al principio de la Consulta - a la que nos referiremos como la SELECT externa - y la segunda en la clausula WHERE, donde empieza una Consulta anidada - nos referiremos a ella como la SELECT interna. Para cada tupla de la SELECT externa, la SELECT interna deberá ser evaluada. Tras cada evaluación, conoceremos el precio de la tupla llamada 'Tornillos', y podremos chequear si el precio de la tupla actual es mayor. Si queremos conocer todos los proveedores que no venden ningún artículo (por ejemplo, para poderlos eliminar de la base de datos), utilizaremos: SELECT * FROM SUPPLIER S WHERE NOT EXISTS

20

Page 21: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

(SELECT * FROM SELLS SE WHERE SE.SNO = S.SNO);

En nuestro ejemplo, obtendremos un resultado vacío, porque cada proveedor vende al menos un artículo. Notese que utilizamos S.SNO de la SELECT externa en la clausula WHERE de la SELECT interna. Como hemos descrito antes, la subConsulta se evalúa para cada tupla de la Consulta externa, es decir, el valor de S.SNO se toma siempre de la tupla actual de la SELECT externa. Unión, Intersección, ExcepciónEstas operaciones calculan la unión, la intersección y la diferencia de la teoría de conjuntos de las tuplas derivadas de dos subqueries.

Ejemplo 2-9. Union, Intersect, ExceptLa siguiente Consulta es un ejemplo de UNION: SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNAME = 'Jones' UNION SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNAME = 'Adams';

Dará el resultado: SNO | SNAME | CITY -----+-------+-------- 2 | Jones | Paris 3 | Adams | Vienna

Aquí tenemos un ejemplo para INTERSECT: SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 1 INTERSECT SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 2;

que dará como resultado: SNO | SNAME | CITY -----+-------+-------- 2 | Jones | ParisLa única tupla devuelta por ambas partes de la Consulta es la única que tiene $SNO=2$.

Finalmente, un ejemplo de EXCEPT: SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 1 EXCEPT SELECT S.SNO, S.SNAME, S.CITY FROM SUPPLIER S WHERE S.SNO > 3;

que dará como resultado: SNO | SNAME | CITY -----+-------+-------- 2 | Jones | Paris

21

Page 22: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

3 | Adams | Vienna

Lenguaje de Definición de DatosHay incluidos en el lenguaje SQL un conjunto de comandos utilizados para definición de datos.

Create TableEl comando fundamental para definir datos es el que crea una nueva relación (una nueva tabla). La sintaxis del comando CREATE TABLE es: CREATE TABLE table_name (name_of_attr_1 type_of_attr_1 [, name_of_attr_2 type_of_attr_2 [, ...]]); Ejemplo 2-10. Creación de una tablaPara crear las tablas definidas en La Base de Datos de Proveedores y Artículos se utilizaron las siguientes instrucciónes de SQL: CREATE TABLE SUPPLIER (SNO INTEGER, SNAME VARCHAR(20), CITY VARCHAR(20));

CREATE TABLE PART (PNO INTEGER, PNAME VARCHAR(20), PRICE DECIMAL(4 , 2));

CREATE TABLE SELLS (SNO INTEGER, PNO INTEGER);

Tipos de Datos en SQLA continuación sigue una lista de algunos tipos de datos soportados por SQL:

INTEGER: entero binario con signo de palabra completa (31 bits de precisión). SMALLINT: entero binario con signo de media palabra (15 bits de precisión). DECIMAL (p[,q]): número decimal con signo de p dígitos de precisión, asumiendo q a la derecha

para el punto decimal. (15 ≥ p ≥ qq ≥ 0). Si q se omite, se asume que vale 0. FLOAT: numérico con signo de dobre palabra y coma flotante. CHAR(n): cadena de caracteres de longitud fija, de longitud n. VARCHAR(n): cadena de caracteres de longitud variable, de longitud máxima n.

Create IndexSe utilizan los índices para acelerar el acceso a una relación. Si una relación R tiene un índice en el atributo A podremos recuperar todas la tuplas t que tienen t(A) = a en un tiempo aproximadamente proporcional al número de tales tuplas t más que en un tiempo proporcional al tamaño de R. Para crear un índice en SQL se utiliza el comando CREATE INDEX. La sintaxis es: CREATE INDEX index_name ON table_name ( name_of_attribute ); Ejemplo 2-11. Create IndexPara crear un índice llamado I sobre el atributo SNAME de la relación SUPPLIER, utilizaremos la siguiente instrucción: CREATE INDEX I ON SUPPLIER (SNAME);

22

Page 23: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

El indice creado se mantiene automáticamente. es decir, cada vez que una nueva tupla se inserte en la relación SUPPLIER, se adaptará el índice I. Notese que el único cambio que un usuario puede percibir cuando se crea un índice es un incremento en la velocidad.

Create ViewSe puede ver una vista como una tabla virtual, es decir, una tabla que no existe físicamente en la base de datos, pero aparece al usuario como si existiese. Por contraste, cuando hablamos de una tabla base, hay realmente una contraparte físicamente almacenada para cada fila en la tabla en algún sitio del almacenamiento físico. Las vistas no tiene datos almacenados propios, distinguibles y físicamente almacenados. En su lugar, el sistema almacena la definición de la vista (es decir, las reglas para acceder a las tablas base físicamente almacenadas para materializar la vista) en algún lugar de los catálogos del sistema. Para una discusión de las diferentes técnicas para implementar vistas, refierase a SIM98.

En SQL se utiliza el comando CREATE VIEW para definir una vista. La sintaxis es: CREATE VIEW view_name AS select_stmt donde select_stmt es una instrucción select válida, como se definió en Select. Notese que select_stmt no se ejecuta cuando se crea la vista. Simplemente es almacenada en los catalogos del sistema y se ejecuta cada vez que se realiza una Consulta contra la vista.

Sea la siguiente definicón de una vista, utilizamos de nuevo las tablas de la BD Ejemplo:

CREATE VIEW London_Suppliers AS SELECT S.SNAME, P.PNAME FROM SUPPLIER S, PART P, SELLS SE WHERE S.SNO = SE.SNO AND P.PNO = SE.PNO AND S.CITY = 'London'; Ahora podemos utilizar esta relación virtual London_Suppliers como si se tratase de otra tabla base: SELECT * FROM London_Suppliers WHERE P.PNAME = 'Tornillos'; Lo cual nos devolverá la siguiente tabla: SNAME | PNAME -------+---------- Smith | Tornillos Para calcular este resultado, el sistema de base de datos ha realizado previamente un acceso oculto a las tablas de la base SUPPLIER, SELLS y PART. Hace esto ejecutando la Consulta dada en la definición de la vista contra aquellas tablas base. Tras eso, las qualificaciones adicionales (dadas en la Consulta contra la vista) se podrán aplicar para obtener la tabla resultante.

Drop Table, Drop Index, Drop ViewSe utiliza el comando DROP TABLE para eliminar una tabla (incluyendo todas las tuplas almacenadas en ella): DROP TABLE table_name; Para eliminar la tabla SUPPLIER, utilizaremos la instrucción: DROP TABLE SUPPLIER;

23

Page 24: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Se utiliza el comando DROP INDEX para eliminar un índice: DROP INDEX index_name; Finalmente, eliminaremos una vista dada utilizando el comando DROP VIEW: DROP VIEW view_name;

Actualización de DatosInsert IntoUna vez que se crea una tabla puede ser llenada con tuplas utilizando el comando INSERT INTO. La sintaxis es: INSERT INTO table_name (name_of_attr_1 [, name_of_attr_2 [,...]]) VALUES (val_attr_1 [, val_attr_2 [, ...]]); Para insertar la primera tupla en la relación utilizamos la siguiente instrucción: INSERT INTO SUPPLIER (SNO, SNAME, CITY) VALUES (1, 'Smith', 'London'); Para insertar la primera tupla en la relación SELLS, utilizamos: INSERT INTO SELLS (SNO, PNO) VALUES (1, 1);

UpdatePara cambiar uno o más valores de atributos de tuplas en una relación, se utiliza el comando UPDATE. La sintaxis es: UPDATE table_name SET name_of_attr_1 = value_1 [, ... [, name_of_attr_k = value_k]] WHERE condition; Para cambiar el valor del atributo PRICE en el artículo 'Tornillos' de la relación PART, utilizamos: UPDATE PART SET PRICE = 15 WHERE PNAME = 'Tornillos'; El nuevo valor del atributo PRICE de la tupla cuyo nombre es 'Tornillos' es ahora 15.

DeletePara borrar una tupla de una tabla particular, utilizamos el comando DELETE FROM. La sintaxis es: DELETE FROM table_name WHERE condition; Para borrar el proveedor llamado 'Smith' de la tabla SUPPLIER, utilizamos la siguiente instrucción: DELETE FROM SUPPLIER WHERE SNAME = 'Smith';

24

Page 25: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Tema 3SEGURIDAD E INTEGRIDAD

Seguridad e Integridad son dos conceptos que se utilizan frecuentemente en el contexto de las Bases de Datos. Seguridad se refiere a la protección de los datos contra una revelación, alteración o destrucción no autorizada; integridad se refiere a la exactitud o validez de los datos.

Seguridad implica asegurar que los usuarios están autorizados para llevar a cabo lo que tratan de hacer.Integridad implica asegurar que lo que tratan de hacer es correcto.

SEGURIDAD

La unidad de información para propósitos de seguridad puede ser desde una Base de Datos o conjunto de tablas completos hasta un valor específico en una posición específica de fila y columna dentro de una tabla específica.Un usuario dado tendrá por lo regular diferentes derechos de acceso o autorizaciones sobre diferentes objetos de información.Por ejemplo para que un usuario pueda hacer un select , otro para hacer select y update, etc.

El esquema de seguridad en SQL se basa en tres conceptos principales: Los usuarios , cada vez que el DBMS recupera, inserta, suprime y actualiza datos lo hace a cuenta de

algún usuario. Los objetos de la base de datos, son los elementos a los cuales se aplica la protección de seguridad

SQL. Los privilegios son las acciones que un usuario tiene permitido efectuar para un determinado objeto de la

BD. Un usario diferente puede tener un conjunto diferente de privilegios.

En el caso del SQL, el sistema tiene dos características más o menos independientes para el mantenimiento de la seguridad: El mecanismo de las vistas, que puede servir para ocultar ciertos datos confidenciales a ciertos usuarios

no autorizados El subsistema de autorización mediante el cual los usuarios con derechos específicos pueden conceder

de manera selectiva y dinámica esos derechos a otros usuarios, y desùés revocar esos derechos.

Vistas y Seguridad

Una vista es una tabla virtual en la Base de Datos cuyo contenido está definido por una consulta.

Las vistas son parte importante en SQL por varios razones: Las vistas permiten acomodar el aspecto de una BD de modo que diferentes usuarios la vean desde desde

diferentes perspectivas. Las vistas permiten restringir acceso a los datos, permitiendo que usuarios sólo vean ciertas filas o ciertas

columnas de una tabla. Las vistas simplifican el acceso a la BD mediante la presentación de la estructura de los datos

almacenados de modo que sea más natural para cada usuario.

25

Page 26: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Ventajas de las vistas Seguridad Simplicidad de consulta Simplicidad estructurada Aislamiento frente al cambio Integridad de datos

Desventajas de las vistas Rendimiento Restricciones de actualización

Creación de VistasLa sentencia CREATE VIEW se utiliza para crear una vista. Para crear la vista es necesiario tener permiso para acceder a todas las tablas referenciadas en la consulta.

CREATE VIEW Nombre-de-vista ---------- AS Consulta --- (Nombre de columna)

Pueden existir : Vistas Horizontales Vistas verticales Vistas agrupadas Vistas compuestas

Actualización de Vistas

Bajo el estándar SQL una vista puede ser actualizada si la consulta que la define satisface todas estas restricciones: No debe especificar DISTINCT La cláusual FROM debe especificar solamente una tabla actualizable Cada elemento de selección debe ser referencia a una columna simple La clásula WHERE no debe incluir subconsultas. La consulta no debe incluir una cláusula GROUP BY O HAVING

Si la vista satisface estas condiciones, es posible definir operaciones INSERT, DELETE Y UPDATE.

Ejemplo 1: Para usuarios que solo se les permite tener acceso a los registros completos de proveedores que son de La Paz:

CREATE VIEW ProveedoresLaPazAS select codP, NomP, ciudadP

From ProveedoresWhere ciudad=’La Paz’

Ejemplo 2: Para los usuarios que solo pueden tener acceso a los datos de los artículos pero no a sus precios unitarios

CREATE VIEW ArticulosDAS select codA, NomA, Color

From Proveedores

26

Page 27: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Ejemplo 3: Para usuarios a los cuales se le permiten tener acceso a las cantidades promedio enviadas por los proveedores, pero no cantidades individuales

CREATE VIEW CP(codP, CantProm)AS select codP, AVG(cant)

From suministrosGroup by CodP

Indentificadores de usuario

Cada usuario de una Base de Datos basada en SQL tiene asignado un id-usuario, un nombre breve que identifica al usuario dentro del del software DBMS. El id-usuario se encuentra en el núcleo de la seguridad SQL. Toda sentencia SQL ejecutada por DBMS se lleva a cuenta de un id-usuario específico. El id_usuario determina si la sentencia va ser permitida o prohibida por el DBMS. En una BD de producción los id_usuarios son asignados por el administrador.

Consesión y Retiro de Privilegios

La sentencia GRANT se utiliza para conceder privilegios de seguridad sobre objetos de la BD a usuarios específicos

La sentencia REVOKE se utiliza para quitar los privilegios de seguridad sobre objetos de la BD a usuarios específicos

EJEMPLOS: GRANT SELECT ON TABLES PROVEEDORES TO PUBLIC;

GRANT ALL ON TABLE INSCRIPCION, ALUMNOS TO LETY, MEDARDO, VICTOR;

GRANT UPDATE, DELETE ON TABLE CALIFICACIONES

TO GOYO;

REVOKE UPDATE, DELETE

ON TABLE CALIFICACIONES FROM INTRUSO;

REVOKE ALL ON TABLE CALIFICACIONES FROM GERARDO;

También es posible que a un usuario se le conceda el permiso de conceder permisos de acceso.

EJEMPLOS: GRANT SELECT ON TABLE ALUMNOS TO PEDRO

WITH GRANT OPTION;

Del mismo modo se le puede revocar el permiso de conceder permiso: REVOKE SELECT ON TABLES FROM PEDRO;

Otros Aspectos De SeguridadEs importante tener en mente que un SMBD no proporciona toda la seguridad requerida, por lo cual es necesario establecer mecanismos de control adicionales.

Uno de estos mecanismos es la realización de auditorías periódicas del contenido de la base de datos.

27

Page 28: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Un mecanismo que incluso ya se soporta en diversos SMBD es el encriptado, de forma tal que un usuario a pesar de lograr el acceso formal a los archivos de una base de datos no pueda leerlos si no posee la clave de encriptado/decriptado dependiendo del esquema de encriptado seguido.

INTEGRIDAD

El término de Integridad de datos se refiere a la corrección y completitud de los datos en una Base de Datos. Cuando los contenidos de una BD se modifican con sentencias INSERT, DELETE o UPDATE la integridad de los datos almacenados puede perderse de muchas maneras diferentes.

Pueden añadirse datos no válidos a la BD, tales como una inscripcion a una materia no existente. Pueden modificarse datos existentes, tomando un valor incorrecto, por ejemplo cuando se modifica la

nota final (rango) Los cambios a la BD pueden perderse debido a un error del sistema o un fallo eléctrico (transacciones ) Los cambios pueden ser aplicados parcialmente, como por ejemplo si inscribe a un alumno a una materia

sin verficar y actualizar el cupo del curso.

Existen varios casos diferentes de restricciones de integrida de datos que suelen encontrarse en las BDRelacionales como:

Datos requeridos (datos válidos para algunas columnas, no NULL Ej: Nombre, no Materno) Chequeo de valides (dominio Ej. Rangos de números) Integridad de entidad (clave primaria, único y distinto de NULL) Integridad Referencial (DBMS, Disparadores, SP) Reglas comerciales (De la Institución Ej. Cupos, prerequisitos, pago de cuotas) Consistencia (operaciones de manera transaccional Ej.inscripcion: insert alumnos, insert inscripcion,

update cupos)

Nota. Cuando se realiza un Insert se crea una pseudotabla denominada inserted con la misma estructura de la tabla afectada.Cuando se realiza un DELETE se crea una pseudotabla denominada deleted con la misma estructura de la tabla afectada.Cuando se realiza un UPDATE se crean ambas tablas (inserted y deleted)

Qué es un Disparador o Trigger?Para cualquier evento que provoca un cambio en el contenido de una tabla se puede especificar una acción asociada que el DBMS debería efectuar automáticamente. Los eventos que pueden disparar una acción son el INSERT, UPDATE Y DELETE.

La acción disparada por un evento se especifica mediante una secuencia de sentencias SQL, propias del lenguaje SQL del DBMS (Ej. T-SQL, i-SQL, PL-SQL)

Ejemplo: Cuando se añade un nuevo registro a la tabla Inscripción

Internamente se suceden dos eventos:1. La insercion de un registro en Inscripcion2. Actualización de número de inscritos (asignación)

28

Page 29: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Nota. Cuando se realiza un Insert se crea una pseudotabla denominada inserted con la misma estructura de la tabla afectada.Cuando se realiza un DELETE se crea una pseudotabla denominada deleted con la misma estructura de la tabla afectada.Cuando se realiza un UPDATE se crean ambas tablas (inserted y deleted)

Estructura General de un Disparador:

CREATE TRIGGER Nombre_del_DisparadorON NombreTablaFOR [INSERT][UPDATE][DELETED]AS

Sentencias SQL

Ejemplo: Diseñar un Trigger que permita verificar las plazas y actualizar automaticamente el valor del campo numero_inscritos en caso de una inscripcion.

CREATE TRIGGER ActualizarPlazasON InscripcionFOR INSERTASDECLARE @I SMALLINT,

@N SMALLINT

SELECT @N=a.plazas FROM asignacion a, inserted t1Where a.sigla_mat = t1.sigla_mat and

a.paralelo = t1.paralelo anda.gestion = t1.gestion

SELECT @I=a.num_inscritos FROM asignacion a, inserted t1Where a.sigla_mat = t1.sigla_mat and

a.paralelo = t1.paralelo anda.gestion = t1.gestion

IF ( @I < @N )begin

UPDATE AsignacionSET num_inscritos = num_inscritos+1where Asignacion.sigla_mat in (select sigla_mat from inserted) and Asignacion.paralelo in (select paralelo from inserted) and Asignacion.gestion in (select gestion from inserted)

PRINT 'Registro satisfactorio'endELSEbegin

PRINT 'NO HAY CUPO EN ESTE CURSO'

29

Page 30: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

ROLLBACKend

Disparadores e integridad referencial

Los disparadores proporcionan un modo alternativo de implementar las restricciones de integridad referencial proporcionadas por claves foráneas y claves primarias. De hecho, el mecanismo disparador es más flexible que la integridad referencial estricta proporcionado por el estándar ANSI/ISO.

Ejemplo: Realizar un Trigger verifique la existencia de un alumno cuando se inscribe

CREATE TRIGGER AlumnoExistenteON InscripcionFOR INSERTAS IF NOT EXISTS (Select * FROM ALUMNOS a, inserted t1 WHERE a.Cod_al=t1.Cod_al) Begin

PRINT 'Alumno No Existente' ROLLBACKEndELSE PRINT 'Alumno correctamente inscrito'

El futuro de los disparadoresLa principal ventaja de los disparadores es que las reglas comerciales pueden almacenarse en las BD y ser forzadas consistentemente con cada actualización en la BD. Esto puede reducir sustancialmente la complejidad de los programas de aplicación (rutinas de front end, SP, etc) que accedan a la BD.

Los disparadores tienen algunas desventajas:

Complejidad de la BD: Cuando las reglas se trasladan al interior de la BD, preparar la BD pasa a ser una tarea más compleja (Ej. Para cada tabla un triggers)Reglas ocultas: Con las reglas ocultas en la BD programas que parecen efectuar sencillas actualizaciones, pueden de hecho, generar una cantidad enorme de actividad en la BD.

30

Page 31: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Tema 4BASE DE DATOS ORIENTADOS A OBJETOS

SISTEMA ADMINISTRADOR DE BASE DE DATOS ORIENTADA AL OBJETO (OODBMS)A los nuevos servicios de las empresas, le corresponden nuevas funciones de aplicación. Esas modificaciones de aplicación deben poder hacerse rápido, sin tener que reescribir todo. Corría la segunda mitad de la década de los 80’, cuando comienzan a generalizarse en múltiples aplicaciones los sistemas de gestión de bases de datos orientadas al objeto (OODBMS), los cuales toman las ventajas del enfoque orientado al objeto, ya probados y los sistemas de gestión de bases de datos, siendo su principal virtud el ofrecer un muy buen desempeño en la gestión de datos complejos y multimediales. Desde el punto de vista del desarrollador las ventajas están dadas en ganancias de productividad, dado su modelamiento más simple que facilita el desarrollo de aplicaciones. El modelamiento de aplicaciones es mucho más sencillo gracias al concepto de objetos complejos y el modelo obtenido es fácilmente comprensible para el usuario. Este modelo puede ser validado directamente por el cliente de la aplicación. El enfoque Orientado al Objeto favorece la reutilización, porque gracias a la encapsulación y la herencia, es fácil especializar un componente existente para responder a las necesidades particulares de la aplicación. Desde el punto de vista del usuario final de los OODBMS, el mayor aporte es la calidad en términos de ergonomía, fiabilidad, evolución y desempeño. La mayor parte de los productos disponibles en el mercado, son productos cerrados, difícilmente adaptables a las especificaciones de la empresa: la ergonomía de la aplicación es fija, las reglas de cálculo son difícilmente modificables, etc. la tecnología objeto, gracias en particular a la encapsulación y la herencia, da productos desarrollos con un OODBMS más abierto y fácilmente adaptables. El usuario puede obtener un costo menor de las modificaciones de sus procedimientos, que van a integrar más fácilmente su medio ambiente (entorno).

Un poco de historiaLa primera aparición del concepto data de 1984 con la proposición de David Maier y George Copeland de construir un DBMS desde Smalltalk, Copeland et al. (1984). Se pueden citar dos grandes proyectos desde 1985, el proyecto ORION de MCC en Austín, Texas y en 1986 el proyecto Altair, en Rocquencowt, Francia. En 1988, la primera generación apareció, seguida por una segunda generación en 1990. Después de esta intensa actividad, pareciera necesario definir de una manera precisa el concepto de OODBMS (Sistemas de Gestión de Bases de Datos Orientadas al Objeto). En efecto, contrariamente al caso de los sistemas relacionales que primero fueron definidos formalmente en el artículo original de Codd, después se generaron prototipos y finalmente transformados en producto, no hubo un principio de especificación precisa de lo que debía ser un OODBMS. En 1989, el paper "The Object-Oriented Database System Manifesto" aunque con un enfoque demasiado limitado en temas de administración, Stonebraker et al. (1990), propone una definición compuesta de tres tipos de reglas que deben respetar un OODBMS:

Reglas Obligatorias: Las cuales el sistema debe imperativamente seguir para merecer la calidad de OODBMS.

Reglas Facultativas: Lineamientos suplementarios del sistema, pero que no son indispensables. Reglas Abiertas: Propiedades alternativas del sistema que puede ejercer.

El conjunto de reglas es rápidamente admitido por la comunidad científica y comercial como un consenso mínimo. A principios de la década de los 90’, la comercialización efectiva de sistemas progresó rápidamente y fueron desarrolladas varias aplicaciones. En 1992, los principales distribuidores se juntan para definir un estándar que asegure la portabilidad de las aplicaciones de un sistema a otro, y en Octubre de 1993 es publicado el estándar del ODMG (Grupo de Administración de Bases de Datos Orientadas al Objeto), Catell et al. (1993). Se cuenta con una tecnología

31

Page 32: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

madura y adaptada al mercado, una oferta rica y diversificada, una demanda para este tipo de producto y un estándar realista (ODMG-93 es un estándar para bases de datos al objeto puras, en contraste con el estándar SQL3 nacido para bases de datos relaciones extendidas basadas en objetos, siendo ésta compatible con el modelo relacional clásico).

EL ESTÁNDAR ODMG-93: UN ESTÁNDAR PARA BASES DE DATOS ORIENTADAS AL OBJETO PURAS

Es el resultado de trabajos que duraron 18 meses por los 5 principales distribuidores de OODBMS. Su objetivo fue asegurar la portabilidad de las aplicaciones de un sistema a otro. En este objetivo son definidas tres interfaz: 1) ODL (Lenguaje de Definición de Objetos) El lenguaje de definición del objeto permite definir el modelo de datos. Es compatible con IDL, el lenguaje del OMG (Grupo de Administración de Objetos). Permite la definición de objetos complejos, de relación entre esos objetos y de métodos asociados a dichos objetos. 2) OQL (Lenguaje de Consulta al Objeto) El lenguaje de requerimientos permite consultar los objetos de estructuras complejas, de enviar mensajes a objetos, efectuar join y otras operaciones de tipo asociativo. Su sintaxis es del tipo SQL. 3) Conexión vía C++ y Smalltalk. Esta interfaz ("bindings", enlazamientos), especifica como se debe hacer la programación en C++ o Smalltalk de una aplicación sobre una base de datos que ha sido declarada en ODL. La conexión es basada sobre la noción de "puntero inteligente" que permite manejar los objetos persistentes como objetos ordinarios vía punteros persistentes.

DEFINIENDO LAS OODBMS

Un OODBMS ofrece todas la funcionalidad de un sistema de gestión de bases de datos, al igual que todas las de un sistema objeto. Conceptos DBMS La tecnología de gestión de bases de datos (DBMS), nació a fines de los años 60. Las tecnologías de implementación de esos sistemas han evolucionado, su arquitectura ha emigrado hacia una arquitectura Cliente/Servidor, pero los servicios ofrecidos (En particular a su nivel físico) son los mismos. La figura 1 muestra un DBMS tradicional considerando sus aspectos más característicos. Un DBMS ofrece facilidades de almacenamiento, de acceso, manipulación y de compartimento de grandes volúmenes de datos. Esos datos pueden ser muy abultados, ellos no están ni en memoria principal ni en memoria virtual. Es el DBMS quien asegura la gestión de diferentes niveles de jerarquía de memoria, el programador no hace la diferencia entre un dato en memoria y un dato en disco. La gestión del disco asegurada por el DBMS debe ser transparente y ofrece buenos desempeños. Ella debe ofrecer mecanismos tales como gestión oculta de indexación, reagrupamiento de objetos sobre los discos (debe proveer una forma adecuada de reagrupar los objetos de un nivel físico, a un nivel superior ), etc.

32

Page 33: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Figura 2: Composición de un Objeto.La parte estática del objeto puede reagrupar informaciones alfanuméricas, gráficas, textuales, sonoras, etc. Ella puede ser atómica (los objetos atómicos son del tipo de base del sistema: enteros, reales, caracteres, strings, booleanos) o compleja (constituida a partir de otros objetos, atómicos o complejos). La parte dinámica del objeto puede estar constituida de funciones de archivos, cálculos, de búsqueda de información, etc. Contrariamente a lo que existe en la programación clásica, las operaciones son subordinadas a los objetos; el objeto no es solamente caracterizado por lo que es, sino también por lo que hace, ocultando la estructura interna de un objeto y la implementación de las operaciones. Cada objeto tiene una identidad propia (ver figura 3), independiente de su valor. Podemos actualizar el valor de un objeto sin alterar su identidad. El sistema maneja su identidad, atribuyendo a cada objeto un identificador que asegura unicidad.

Figura 3: La identidad objeto.

La noción de identidad de objeto guarda relación con la composición del objeto, diferenciándose de otros objetos. Conceptos como la herencia permiten definir una clase (la clase define una estructura y un comportamiento común, a varios objetos) de objetos a partir de una clase ya existente (herencia simple) o de varias otras clases (herencia múltiple). La clase creada recupera no solamente su estructura sino además sus métodos de su(s) clase(s) padre(s). La herencia trae una descripción compacta bien estructurada del esquema de aplicación. Es una técnica de clasificación de objetos que evita la duplicación de código facilitando la reutilización de propiedades de estructuras y comportamientos ya definidas. Los objetos se comunican entre ellos por envío de mensajes, lo que se quiere decir, es que transmiten órdenes a otros objetos. Cuando se recibe un mensaje por un objeto, éste lo ejecuta. Él puede crear nuevos objetos y enviar nuevos mensajes.

33

Page 34: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Los métodos asociados a clases diferentes, pueden tener el mismo nombre: la elección del método que sea efectivamente llamado es aplazada hasta el momento de la ejecución (enlazamiento dinámico), dependiendo de la persistencia de la clase del objeto del cual el método es llamado en tiempo de ejecución. Ese mecanismo de enlace dinámico aumenta la independencia entre los métodos y los objetos y permite sumar nuevas clases sin modificar ni recompilar los programas existentes, Por ejemplo, la aplicación de gestión de pago maneja diferentes tipos de contratos, cada uno con su método de cálculo de sueldo, basta con crear una nueva subclase de la clase "contrato" con un método de cálculo de sueldo correspondiente a ese algoritmo. Esos nuevos contratos son entonces inmediatamente tomados en cuenta por los programas existentes, sin modificación particular del código. La herencia y el enlazamiento dinámico permiten alivianar los programas y el trabajo del programador (por efecto de la reutilización) cuando se activan los módulos de la aplicación. Se hace notar que el modelamiento de objetos se puede realizar bajo una forma gráfica, pudiendo tener ciclos.

CONCEPTOS ESPECIFICOS DE OODBMSLa noción de objetos complejos optimiza la representación de las estructuras complejas y acortando la distancia que separa el modelamiento de un escenario del mundo real y su implementación. Los objetos complejos permiten así, un modelamiento más intuitivo de datos de una aplicación, su presentación en la base de datos está mas cerca de la realidad. La estructura compleja de los objetos es manejada por punteros lógicos. Esos punteros reemplazan la utilización de uniones relacionales, e inducen así una ganancia de desempeño, particularmente cuando la cantidad de datos es importante. La siguiente figura muestra un esquema típico de una OODBMS:

Figura 4: Una OODBMS tradicional, Manola (1994).

El concepto de identidad de objeto, tiene repercusiones particularmente interesantes en el contexto de un DBMS. La distribución de objetos permite limitar la tabla de la base de datos. Permite una mejor gestión de actualización, y es más rápida, ya que tiene menos objetos que modificar. Ofrece igualmente una gestión automática de integridad referencial (desaparición de referencias a objetos destruidos), problema crucial de las bases de datos. Con las generaciones previas de DBMS, los desarrolladores tuvieron un nivel bajo de productividad. Esto es en particular dado por un problema de funcionalidad entre aquellas DBMS y los lenguajes de programación

34

Page 35: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

utilizados. En efecto, los tipos de datos de esas categorías de herramientas son incompatibles, el programador debe asegurarse por si mismo de la conversión de datos entre la base de datos y el lenguaje: Esto impone el desarrollo suplementario que hay que realizar para mantener la consistencia de la aplicación en su ejecución. La falta de coincidencia entre lenguajes orientados a tablas, tales como SQL, y los lenguajes comunes, significa que se necesita un lenguaje separador para la manipulación de datos (DML), existiendo impedimentos de acoplar estilos declarativos y basados en procedimientos entre los tipos de sistemas del lenguaje de aplicación y de bases de datos, dando lugar a una perdida de información en la interfaz, y obstaculizando la comprobación automática de tipos. Para solucionar este problema los OODBMS ofrecen el concepto de completitud; que es la percepción de escribir completamente una aplicación utilizando el DBMS como un único lenguaje (tal como los lenguajes estándar según la norma ODMG; C++, Smalltalk o Java), sin tener que recurrir a los recursos de los lenguajes externos. Este concepto suprime el problema de funcionalidad, ya que los datos son manipulados de la misma manera en la base de datos que por el lenguaje de programación. En efecto, es el mismo modelo de datos, que es soportado por el lenguaje objeto de desarrollo de la aplicación y por el OODBMS. Los OODBMS ofrecen todo un lenguaje de programación completo integrando los accesos a las bases de datos.

CARACTERÍSTICAS DE LAS ODBMSUn completo modelo de bases de datos, con rasgos tales como; la manipulación fija y el acceso de asociación. Un modelo orientado al objeto que respalda objetos complejos, identidad del objeto, encapsulamiento, clases, caracteres, extensibilidad e integridad computacional. Un DDL (Data Definition languaje, define tipos de objetos, y además el usuario puede declarar procedimientos y variables asociadas con los tipos de objetos) real con rasgos de manipulación de esquemas. La capacidad de almacenar y manipular tanto los datos (objetos) como los metadatos (clases y métodos) en el propio sistemas. Un DML (Data Manipulation Languaje, por lo general contiene un lenguaje de consultas y un componente de lenguaje de programación ), a través de un lenguaje de consulta completo, declarativo. Independencia de datos lógica y física (esto es, un DDL físico y uno lógico y la capacidad para modificar el esquema físico sin cambiar la aplicación). La capacidad de manipular cantidades de datos enormes. La capacidad de desarrollar aplicaciones completas en un medio único.

LOS DESEMPEÑOSEl problema de los desempeños es esencial para los DBMS. El mercado de sistemas orientados al objeto se desarrolla porque esos sistemas ofrecen desempeños mejorados con respecto a los sistemas relacionales. Existen tres tipos de benchmarking ("pruebas de rendimiento") que permiten medir estos sistemas.

Bechmarking 001, Rubenstein et al. (1987), Catell et al. (1992), está orientado a aplicaciones que tienen por objetivo describir la aplicación en cuanto a su tipo de concepción (refiriéndose a su forma de generación, formación). Manipula los objetos complejos entre el servidor y una estación de trabajo.

Bechmarking de Hypermodel, fue hecho por un grupo de navegadores de conceptos en sistemas. Se basa sobre la aplicación del tipo hipertexto y mide el tiempo de acceso a los objetos.

Bechmarking 007, Carey et al. (1993), hecho en 1992 para las limitaciones del Bechmarking 001, abarcando un gran número de operaciones, transacciones, requerimientos y el control de versiones. El 007 denota tres diferentes tamaños:

Pequeño: La base de datos en memoria principal. Mediano: La base de datos está contenida en memoria virtual y una parte en la memoria principal. Grande: La base de datos está en memoria virtual.

Los OODBMS dominan en desempeño con respecto a los sistemas relacionales sobre las aplicaciones manipulando objetos complejos. Esto es por una sencilla razón; que los sistemas relacionales fueron hechos y diseñados para efectuar algunas operaciones simples (selección, proyección, etc.), y los OODBMS tienen por

35

Page 36: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

finalidad manipular objetos estructurados y complejos. En cuanto a una comparación arquitectónica entre el modelo relacional y el modelo objeto aplicado a DBMS, la figura 5 muestra su correspondiente composición habitual.

LOS APORTES A LA TECNOLOGIALos OODBMS permiten llegar a nuevos dominios para los cuales las bases de datos tradicionales son renuentes a ser aceptadas.Su fuerte es en ambientes donde hay una necesidad de datos no estándar, es decir, de aquellos que uno manipula textos estructurados o no estructurados, imágenes, gráficos, sonidos, videos, documentos o programas. Se trata entonces de ambientes donde la estructura de los datos es tan compleja que representarla en un modelo tradicional es ineficaz. Se trata de dominios o tipos de datos que al usarlos no permanecen fijos desde el inicio y son variables en el tiempo. Son dominios comunes, por ejemplo:

CAD Gestión de datos técnicos Cartografía Multimedia. Sistemas distribuidos y cliente/servidor. Bases de datos multimedia. Correo por voz. GIS

En todos estos dominios, la tecnología de OODBMS aporta los desempeños mejores y un desarrollo más eficaz de aplicaciones.Los OODBMS disminuyen los costos lógicos de desarrollo.Esta baja de costos es obtenida en opinión de connotadas figuras ligadas a DBMS (Por citar algunos: Atkinson et al., Bancilhon, Graham), por un acortamiento del ciclo de análisis, concepción, codificación, depuración, testeo, mantención y evolución. Mejoramiento obtenido por:

La reutilización del componente lógico. La disminución de código. La capacidad de modelamiento directo de información compleja. La mejor integración a los lenguajes de programación. Desarrollo rápido de prototipos de aplicaciones. Utilización de medio ambiente gráfico de desarrollo. Utilización de herramientas de generación de interfaz gráfica de realización.

Los OODBMS permiten producir aplicaciones gráficas de mejor calidad.Las aplicaciones son mejoradas en dos puntos esenciales:

Los desempeños en el caso de la manipulación de datos complejos. La calidad "industrial" de aplicaciones para la facilidad de mantención, su capacidad de crecimiento

y posibilidad de ser personalizadas en dominios específicos. Los OODBMS permiten recuperar y mejorar las aplicaciones existentes.Para los sistemas que disponen de una interfaz C++ estándar, el mecanismo consiste en tomar una aplicación existente en la cual la persistencia es asegurada por un sistema de archivos que al migrarlos al OODBMS se reemplaza el acceso a los archivos por el almacenamiento en el OODBMS. Así, el costo de migración es mínimo y la aplicación es bastante mejorada. En efecto, resultando en:

Una simplificación de código (el acceso a los objetos de la base de datos es inmediata y sin traducción).

La capacidad de fiabilidad y compatibilidad de los datos.

Los Mercados1. Aplicación en Sistemas de información geográficos.

36

Page 37: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Para los sistemas de información geográficos o para toda aplicación en la cual hay una dimensión espacial o geográfica (la cartografía de una región, la topología de una zona o el plano de un edificio), los desarrolladores de estas aplicaciones necesitan la tecnología de objetos; ella ofrece un mayor desarrollo y mejores desempeños. 2. Gestión de datos técnicos. Porque permiten almacenar los datos de naturaleza variada y de tipo extensible, los OODBMS son elegibles como sistemas de almacenamiento para este tipo de aplicaciones, que incluyen la gestión de datos científicos experimentales, la gestión de datos asistidos por computador (CAD) y la documentación técnica. 3. Aplicaciones Multimedia. Para toda aplicación que manipula gráficos, imágenes, animación y voz, los OODBMS son los primeros en la elección de los desarrolladores.

EL MODELO DE OBJETOS.

IntroducciónModelo de Objetos: captura la estructura estática del sistema, mostrando:

- objetos - relaciones entre objetos - atributos - operaciones

Es el más importante, puesto que el sistema se construye alrededor de los objetos.

Objetos y clases.Objeto:

− Concepto, abstracción o cosa con fronteras definidas y significado para nuestro problema. − Permite una mejor comprensión del mundo y proporciona la base para una implementación sobre el ordenador. − No existe una representación exacta. − Todos los objetos tienen una identidad y son distinguibles.

Clase:− Describe grupos de objetos con propiedades (atributos) similares, comportamiento (operaciones) comunes, relaciones con otros objetos y semántica común. − Cada objeto sabe cuál es su clase, ya que es una instancia de la misma.− Elemento esencial para la abstracción y generalización.

Diagrama de objetos.

Notación gráfica para modelar los objetos, clases y sus relaciones.Dos clase de diagramas:

o de clases o de objetos (instancias)

Diagrama de clases: o Esquema, patrón o plantilla para describir muchos casos posibles de datos. Describe clases de

objetos.Diagrama de objetos:

o Describe cómo se relacionan un grupo particular de objetos entre sí.

37

Page 38: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Notación de clases y objetos.

Atributos.

Los atributos presentan las siguientes características:− Valor de un dato dentro de un objeto. − Cada atributo tiene un valor para cada objeto. − El nombre de un atributo es único dentro de una clase. − Debería ser un dato ‘puro’, no un objeto (no tiene identidad): si un objeto necesita otro objeto habrá

que modelarlo como asociación. − Además del nombre podemos especificar el Tipo y el Valor por defecto. − Los identificadores de objetos explícitos no se necesitan en el Modelo de Objetos.

Notación de atributos.

Operaciones y Métodos.

Función o transformación que se aplica ‘a’ o ‘por’ los objetos en una clase. Tienen un objeto destino como argumento implícito (el objeto actual). Polimorfismo: la misma operación puede aplicarse a clases diferentes dentro de una jerarquía de herencia. Método:

Implementación de una operación para una clase. Las operaciones con métodos en varias clases deben compartir la misma signatura (tipos de sus argumentos y valor que devuelven).

Notación de Operaciones y Métodos.

Notación para las clases.

Animal Manifero

AñosNombrePeso

Actualizar( )Diagnostico( )Imprimir( )

Pais

NombreCantidad_Habitantes

Actualizar( )Poblacion( )Imprimir( )

38

Page 39: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

● Enlaces y Asociaciones.

• Enlace: conexión física o conceptual entre objetos. • Asociación: grupo de enlaces con la misma estructura y semántica común. • Sentido de una asociación:

Inherentemente son bidireccionales.Directa (forward) e inversa (inverse).

• Implementación común en los lenguajes de programación mediante punteros o referencias, aunque en la fase de modelización no es recomendable esta práctica.

• Las asociaciones pueden ser binarias, ternarias o de órdenes superiores. • Los nombres de las asociaciones son opcionales en la notación (se escriben en cursiva).

Ejemplo de Enlace y Asociación:

 

● Multiplicidad.

• Especifica cuántos objetos de una clase pueden relacionarse con un único objeto de una clase asociada. • Se especifica mediante:

- un subconjunto (posiblemente infinito) de enteros no negativos: 0..n,- bien uno o varios intervalos no conexos: 1..4, 7.

• No debemos preocuparnos de ajustar la multiplicidad demasiado pronto en nuestro Modelo de Objetos. • En los Diagramas de Objetos la multiplicidad se especifica mediante símbolos especiales en los extremos de

las líneas de las asociaciones.

 

● Atributos de los enlaces.

39

Page 40: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

• Propiedades de los enlaces de una asociación. - Opcionales en los enlaces uno-a-uno y uno-a-muchos.- Obligatorios en los enlaces muchos-a-muchos.

●  Modelando una asociación como una clase.

• Además de los atributos de un enlace, permite añadir un nombre y operaciones. • Son útiles cuando:

- Los enlaces pueden participar en asociaciones con otros objetos.- Los enlaces están sujetos a operaciones.

 ● Roles.

• Rol: uno de los extremos de una asociación. • Nombre de Rol: nombre que identifica de forma única el final de una asociación. Atributo derivado cuyo

valor es un conjunto de objetos relacionados. Deben ser únicos en las asociaciones de una clase. • Suelen aparecer como ‘nombres’ en los enunciados de los problemas. • En relaciones n-arias: un rol en cada extremo. • Proporcionan una forma de ver las asociaciones como recorrido desde un objeto hacia otro conjunto de

objetos.• Su uso es opcional. A veces resulta más claro su uso que los nombres de las asociaciones. • Necesarios en las relaciones entre objetos de la misma clase, o cuando existe más de una asociación entre el

mismo par de clases. 

40

Page 41: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

 ● Ordenación.

• Se utiliza en la parte ‘muchos’ de una asociación en la que los objetos deben estar ordenados.

 

● Cualificadores.

• Asociación cualificada: relaciona dos clases mediante un cualificador. Puede considerarse como un tipo de asociación ternaria.

• Cualificador: atributo especial que puede reducir la multiplicidad de una asociación. • Pueden utilizarse en asociaciones uno a muchos o muchos a muchos. • Distinguen conjuntos de objetos en el extremo "muchos" de la asociación. • Mejora la semántica y aumenta la visibilidad de caminos de navegación. • Se representa mediante un cuadro en el extremo más próximo a la clase a la que cualifica.

Ejemplo: directorio + nombre de archivo.

• Notación de cualificación:

1) Un directorio contiene más de un archivo. 

El nombre del directorio más el nombre del archivo en el directorio, identifican de forma única al archivo,

 

2) otro ejemplo realizando ahora agrupamientos.

41

Page 42: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

 

● Agregación.

•  Relación ‘parte-todo’ o ‘parte-de’: el ensamblaje se relaciona con sus componentes.•  Verifica las propiedades transitiva y antisimétrica. También es común la agregación recursiva. •  En caso de duda, utilizar una asociación ordinaria. •  Preguntas útiles para identificar agregaciones:

- ¿Se puede utilizar la frase ‘parte de’?- ¿Se propagan algunas operaciones del ‘todo’ a las ‘partes’ de forma automática?- ¿Se propagan algunos valores de los atributos del ‘todo’ a alguna o todas de las ‘partes’?- ¿Existe una asimetría intrínseca en la asociación, por la cual un objeto está subordinado a otro (la

eliminación del ‘todo’ implica la de las ’partes’)?

• Notación de agregación:> Agregados fijos: estructura fija, con el número y tipos de subpartes predefinidos.

  > Agregados variables: tienen un número finito de niveles, pero el número de partes varía.

  > Agregados Recursivos.

Agregados recursivos: contienen, directa o indirectamente, un caso de la misma clase.

42

Page 43: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

 

● Propagación de las Operaciones.

• Aplicación automática de una operación a una red de objetos cuando se aplica la operación a un objeto inicial.

• La propagación de una operación a las partes es un buen indicador de agregación. 

 ●Generalización y Herencia.

• Generalización: relación entre una clase (superclase) y una o más versiones refinadas de ella (subclases). • Relación "es-un". • Las subclases ‘heredan’ las características, atributos y operaciones de su superclase. • Una instancia de una subclase es una instancia de sus clases antecesoras o ascendientes. • Distinción entre generalización y herencia:

- Generación: relación entre clases.- Herencia: mecanismo para compartir características.

• Ascendientes y descendientes: generalización en múltiples niveles. • Discriminador: atributo de tipo enumerado, que indica la propiedad del objeto que se está abstrayendo para

una relación de generalización. Solo debería discriminarse una propiedad a la vez. Ejemplo: Fichero:Contenido: de texto, binario, de datos.Acceso: secuencial, directo, indexado.Carácter: ejecutable, no ejecutable.

43

Page 44: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

• Generalización como extensión y restricción: - una instancia de una clase es una instancia de todas sus clases ascendientes y no puede omitir o

suprimir un atributo de sus ascendientes.- una subclase puede añadir nuevas características: extensión.- una subclase puede redefinir una característica de sus ascendientes: restricción.

Por ejemplo: limitar los valores en un rango menor (círculo es una elipse de a = b)• Agregación vs. Generalización.

- La agregación relaciona instancias (relación ‘y’).- La generalización relaciona clases (relación ‘o’).

• Notación de generalización y herencia.

 ● Redefinición (override).

• Una subclase ‘reemplaza’ una característica de su superclase definiendo una característica con el mismo nombre.

• Motivos para redefinir:- Especificar un comportamiento que dependa de la subclase.- Aplicar de forma más rigurosa las especificaciones de una característica.- Mejorar el rendimiento.

• No se debe reemplazar la signatura de una característica. Debe preservar:- Tipos de los atributos.- Número y tipos de argumentos de funciones.- Tipo del valor devuelto por una operación.

• Redefinir operaciones por:

44

Page 45: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

-  Extensión.-  Restricción.-  Optimización. -  Conveniencia.

• Reglas prácticas:-  Todas las operaciones de consulta y actualización se heredan por todas las subclases.-  Las operaciones de actualización que modifiquen atributos o asociaciones restringidas, deben mantener

la misma restricción.-  Las operaciones heredadas se pueden refinar añadiendo un nuevo comportamiento.

 ● Clases abstractas.

• Las clases abstractas sirven para definir un comportamiento y/o estructura común a un conjunto de subclases.

• Una clase abstracta no es instanciable (no existen objetos de esa clase). Sin embargo, sus subclases pueden ser clases concretas (que sí son instanciables).

 •  Organizan características comunes de varias clases (a). • Pueden definir el protocolo para una operación sin proporcionar un método correspondiente (operación abstracta). Una clase concreta no puede contener operaciones abstractas. • La naturaleza abstracta de una clase es siempre provisional.

45

Page 46: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

 

   ●  Herencia Múltiple.

• Permite a una clase tener más de una superclase, y heredar las características de todos sus padres. • Las principales ventajas son:

-  Una mayor potencia a la hora de definir nuevas clases.-  Oportunidades adicionales de reutilización.-  Acercamiento a la forma natural de pensar.

Ejemplo: (El triángulo relleno, significa que las clases no son disjuntas).

46

Page 47: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

 

•  La desventaja se encuentra en los problemas de implementación (por ejemplo, la herencia repetida de C++).

•  Clase vínculo (join): clase con más de un padre. •  Herencia múltiple accidental.

Ejemplo:Un instructor es inherentemente Profesor y Alumno, ¿cómo modelar un Profesor de una Universidad que recibe clases en otra?

• Resolución de Herencia múltiple:

 

● Características De Clase.

 Las clases pueden ser consideradas también como Metaobjetos.  Atributos de clase:

− Describen un valor común para todos los objetos de la clase.− Permiten almacenar información que puede usarse como valor por defecto en la instanciación.− Permiten almacenar información sobre las instancias de la clase.

  Operaciones de clase:

− Operación que tiene lugar sobre atributos de la clase.

47

Page 48: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

− Se invoca sobre la clase y no sobre una instancia concreta. Ejemplo: new en C++, en la declaración del objeto se llama al constructor de la clase

Ejemplo de características de clase.

● Claves Candidatas.

 Una clave candidata es un conjunto mínimo de atributos que identifican un objeto o enlace.  El identificador de objeto (OID) es siempre una clave candidata.  Es un concepto lógico muy utilizado en el mundo de los SGBDR.  Se denotan en los diagramas de clases mediante corchetes.

   

48

Page 49: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

   ● Restricciones.

 Es una relación funcional entre entidades (clase, objeto, atributo, enlace o asociación) dentro del Modelo de Objetos que limita los valores que la entidad puede tomar.

   Restricciones sobre enlaces:

    Restricciones generales.

− Se expresan mediante lenguaje natural o ecuaciones.− Se denota mediante una línea de puntos entre las clases implicadas y con la descripción entre llaves.

 Objetos, enlaces y atributos derivados.− Un objeto derivado se define como una función de uno o más objetos.− Es redundante, pero se introduce en el Modelo para facilitar la comprensión.− También existen enlaces y atributos derivados.

49

Page 50: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

 ● Modelo De Datos vs. Modelo De Objetos.

 Una BD se desarrolla mediante un Modelo de Datos.1) Se construye el Modelo de Datos sobre el dominio de la aplicación.2) Se transforma del Modelo de Datos en un Diseño de la BD mediante la aplicación de una serie de

transformaciones estándar (normalización). Un Sistema de Objetos se construye modelando mediante técnicas diferentes, pues las técnicas del Modelo de Datos son bastante limitadas para soportar el Modelo de Objetos.

● Consejos prácticos.

• No comenzar construyendo diagramas de clases; primero, es necesario comprender el problema. • Intentar mantener el Modelo sencillo. • Seleccionar con cuidado los nombres. • No introducir punteros o referencias a otros objetos como atributos. • Intentar evitar asociaciones n- arias. • No intentar establecer el grado de multiplicidad perfecto al principio. • No introducir atributos de enlace dentro de la clase. • Utilizar asociaciones cualificadas donde sea posible. • Intentar evitar generalizaciones profundamente anidadas. • Intentar asociaciones uno a uno. • No se sorprenda si su modelo requiere una revisión.• Documentar siempre los Modelos de Objetos.

50

Page 51: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

Bibliografía

KORTH, HENRY, “Fundamentos de bases de datos”, España, McGRAW-HILL, 1999

DATE, J.C., “Sistemas de bases de datos”, España, ADDISON-WESLEY, 1995

HAWRYSZKIEWYCZ, “Análisis y Diseño de Bases de Datos”, , ,

JAMES MARTIN, “Organización de Bases de Datos”, México, PRENTICE HALL, 1998

GROFF, JAMES & WEINBER, PAUL, “Aplique SQL”, , ,

JOYANES AGUILAR, LUIS, ”Programación orientada a objetos”, España, McGRAW-HILL, 1998

BOOCH, GRADY, “Diseño orientado a objetos con aplicaciones “, España, McGRAW-HILL, 1991

RUMBAUGH, J. ; BLAHA, M., “Modelado y diseño orientado a objetos, España, PRENTICE HALL, 1995

Glosario

BDOO: Bases de Datos Orientadas a Objetos

BDR: Bases de Datos por Relación

BLOB: Objetos Binarios de Gran Tamaño

BDOO94: Bases de Datos orientados a Objetos 94

CAD: Diseño Asistido por Computadora

CAE: Ingeniería Apoyada por computadora

CORBA: (Common Object Request Broker Arquitecture)

LDD ó DDL: Lenguaje de definición de Datos

LMD ó DML: Lenguaje de Manejo de Datos

OO: Orientación a Objetos

51

Page 52: DOSSIER BASE DE DATOS II - AULA VIRTUALvirtual.usalesiana.edu.bo/web/contenido/dossier/12012/... · Web viewComo mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir

ODL: Estándar de Definición de Lenguaje de Datos

OMG: Grupo Manejador de Objetos

OML: Lenguaje de Manipulación de Datos

ODMG: Gestión Manejadora de datos Objeto

OQL: Equivalente al SQL(Lenguaje de Consulta)

SQL: Lenguaje de Consulta Estructurado

SGBD: Sistema de Gestión de Bases de Datos

SGBDOO: Sistema de Gestión de Bases de Datos Orientada a Objeto

SO: Sistema Operativo

Base de datos distribuida (BDD) conjunto de múltiples bases de datos lógicamente relacionadas las cuales se encuentran distribuidas entre diferentes sitios interconectados por una red de comunicaciones

Sistema de bases de datos distribuida (SBDD) Un sistema en el cual múltiples sitios de bases de datos están ligados por un sistema de comunicaciones, de tal forma que, un usuario en cualquier sitio puede accesar los datos en cualquier parte de la red exactamente como si los datos estuvieran almacenados en su sitio propio.

Sistema de manejo de bases de datos distribuidas (SMBDD) Aquel que se encarga del manejo de la BDD y proporciona un mecanismo de acceso que hace que la distribución sea transparente a los usuarios. El término transparente significa que la aplicación trabajaría, desde un punto de vista lógico, como si un solo SMBD ejecutado en una sola máquina, administrara esos datos.

Sistema de base de datos distribuida (SBDD) El resultado de la integración de una base de datos distribuida con un sistema para su manejo.

52