Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
En este tipo de bases de datos la información se representa mediante objetos, como los presentes en la programación orientada a objetos.
Cuando se integra las características de una base de datos con las de un lenguaje de programación orientado a objetos, el resultado es un sistema gestor de base de datos orientada a objetos (ODBMS, object database management system).
De manera parecida, el tipo estructurado siguiente puede usarse para representar el atributo compuesto dirección:
create type Direccion as
(calle varchar(20),
ciudad varchar(20),
codigo_postal varchar(9))
not final
O bien, realizando una estructura más del tipo Cliente y generar la tabla a partir de ella:
create type TipoCliente as
(nombre Nombre,
direccion Direccion,
fecha_nacimiento date)
not final
create table cliente of TipoCliente
•Encapsulación - Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos incorrectos o conflictos.
•Herencia - Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases.
•Polimorfismo - Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos.
En el siguiente trabajo hablaremos sobre la programación orientada a objetos referente a las bases de datos, sus característica, también hablaremos sobre los datos complejos y datos básicos.
Las bases de datos orientadas a objetos se diseñan para trabajar bien en conjunción con lenguajes de programación orientados a objetos como Java, C#, Visual Basic.NET y C++. Los ODBMS usan exactamente el mismo modelo que estos lenguajes de programación.
En SQL: 1999 se usan funciones constructoras para crear valores de los tipos estructurados. Las funciones con el mismo nombre que un tipo estructurado son funciones constructoras de ese tipo estructurado. Por ejemplo, se puede declarar una función constructora para el tipo Nombre de esta manera:
create function Nombre(nombre_pila varchar(20), apellidos varchar(20))
returns Nombre
begin
set self.nombre_pila = nombre_pila;
set self.apellidos = apellidos;
end
De manera predeterminada, cada tipo estructurado tiene una función sin argumentos que configura los atributos con sus valores predeterminados. Cualquier otra función constructora hay que crearla de manera específica.
Un ODBMS hace que los objetos de la base de datos aparezcan como objetos de un lenguaje de programación en uno o más lenguajes de programación a los que dé soporte. Un ODBMS extiende los lenguajes con datos persistentes de forma transparente, control de concurrencia, recuperación de datos, consultas asociativas y otras capacidades.
En SQL estos tipos se denominan tipos definidos por el usuario. La especificación final indica que no se puede crear subtipos de nombre, mientras que la especificación not final de dirección indica que se pueden crear subtipos de dirección. Ahora se pueden usar estos tipos para crear atributos compuestos en las relaciones, con sólo declarar que un atributo es de uno de estos tipos. Por ejemplo, se puede crear una tabla cliente de la siguiente manera.
create table cliente (
nombre Nombre,
direccion Direccion,
fecha_nacimiento date)
Una base de datos orientada a objetos es una base de datos que incorpora los conceptos del paradigma de programación orientada a objetos:
Los ODBMS son una buena elección para aquellos sistemas que necesitan un buen rendimiento en la manipulación de tipos de dato complejos.
Más adelante hablaremos sobre el concepto de herencia en SQL y herencia de tablas.
La instrucción siguiente ilustra la manera de crear una nueva tupla de la relación Cliente. Se da por supuesto que se ha definido una función constructora para Dirección, igual que la función constructora que se definió para Nombre.
insert into Cliente
values
(new Nombre(‘Martín’, ‘Gómez’),
new Direccion(‘Calle Mayor 20’, ‘Madrid’, ‘28045’),
date ‘22-8-1960’)
Las siguientes estructuras son datos complejos:
Se puede tener acceso a los componentes de los atributos compuestos usando la notación “punto”; por ejemplo, nombre.nombre_pila devuelve el componente nombre de pila del atributo nombre. El acceso al atributo nombre devolvería un valor del tipo estructurado Nombre.
La siguiente consulta ilustra la manera de tener acceso a los atributos componentes de los atributos compuestos. La consulta busca el apellido y la ciudad de cada cliente.
select nombre.apellido, direccion.ciudad
from cliente
Colecciones: También conocidos como conjuntos, este tipo de datos clasifican los arrays y los conjuntos en que los elementos pueden aparecer varias veces.
Pilas
Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos.
Los tipos estructurados permiten representación directa de los atributos compuestos en los diagramas entidad-relación.
Los ODBMS proporcionan los costes de desarrollo más bajos y el mejor rendimiento cuando se usan objetos gracias a que almacenan objetos en disco y tienen una integración transparente con el programa escrito en un lenguaje de programación orientado a objetos, al almacenar exactamente el modelo de objeto usado a nivel aplicativo, lo que reduce los costes de desarrollo y mantenimiento.
Herencia de tipos
Supóngase que se tiene la siguiente definición de tipo para las personas:
create type Persona
(nombre varchar(20),
direccion varchar(20))
Puede que se desee almacenar en la base de datos información adicional sobre las personas que son estudiantes y sobre las que son profesores.
Los tipos estructurados permiten representar directamente los atributos compuestos de los diagramas E-R. Por ejemplo, en las tablas siguientes.
Las bases de datos orientadas a objetos son lo más moderno en este siglo XXI esto se debe al poder que tiene el paradigma de programación orientada a objetos, utilizando la programación orientada a objetos es más fácil modelar un problema de la vida real con objetos y si los agrupamos en clases es más fácil de optimizar el problema.
Colas
Son listas lineales de información a las cuales de accede de un modo determinado siendo el de tipo FIFO (First In, First Out) (Primero en Entrar, Primero en Salir), lo que quiere decir que el primer dato en entrar es también el primer dato en salir, en las colas no se permite el acceso aleatorio a ningún elemento concreto.
Las subtablas deben ser subtipos del tipo de la tabla madre. Todos los atributos presentes también están presentes en las subtablas. La palabra clave only también puede usarse en las sentencias delete y update. Sin la palabra clave only, la instrucción delete aplicada a una supertabla, también borra las tuplas que se insertaron originalmente en las subtablas.
La herencia múltiple es posible con las tablas, igual que con los tipos.
Por ejemplo, se puede crear una tabla del tipo Profesor -Ayudante:
Por ejemplo, se puede definir el siguiente tipo estructurado para representar el atributo compuesto nombre con los atributos componentes nombre_pila y apellidos:
create type Nombre as
(nombre_pila varchar(20),
apellidos varchar(20))
final
Se les llama datos complejos a aquellos datos que no son básicos.
Los datos básicos son aquellos datos primitivos que contiene un lenguaje de programación como: int, float, double, boolean, char, etc. También se puede decir que los datos básicos son registros bastante pequeños cuyos campos son atómicos, es decir, que no contienen estructuras adicionales.
Los datos complejos o agrupados son aquellos que pueden contener un conjunto de datos, en el caso de bases de datos podrían ser atributos compuestos, multievaluados o atributos que representan cadenas grandes de string como direcciones, fechas de nacimiento, etc.
La herencia de tablas se corresponde con el concepto de especialización/generalización de E-R.
Create table profesores_ayudantes of ProfesorAyudante under estudiantes, profesores
Tipos estructurados: Los tipos estructurados permiten representación directa de los atributos compuestos en los diagramas entidad-relación.
Objetos de gran tamaño: Desde ya hace varios años que se necesita almacenar datos con atributos muy grandes (varios Mbytes), como libros, canciones, etc. E incluso aún más grandes; como mapas de alta resolución, video, etc. que puede llegar fácilmente a los Gbytes.
Se dice que las tuplas de una subtabla se corresponden con las tuplas de la tabla madre si tienen el mismo valor para todos los atributos heredados. Por tanto, las tuplas correspondientes representan a la misma entidad.
Los requisitos de consistencia de las subtablas son:
INSTITUTO TECNOLÓGICO DE LEÓN
Herencia de tipos: Los tipos derivados heredan los atributos de superclase; los métodos también se heredan por sus subtipos, al igual que los atributos. Sin embargo, un subtipo puede redefinir el efecto de un método declarándolo de nuevo, y esto será lo que se conoce como sobre escritura (overriding) del método.
La herencia de tablas: permite al programador crear tablas de base de datos que heredan de otras tablas de la misma forma que las clases pueden heredar de otras clases en los lenguajes orientados a objetos. La herencia de tablas es una forma sencilla de que dos o más tablas compartan información en una única tabla padre.
Matrices o arrays
Los arrays son agrupaciones de datos homogéneas, contiguas y estáticas. Los elementos que contienen son todos del mismo tipo. El número de elementos que podemos guardar se define inicialmente cuando escribimos el programa.
Tabla en las bases de datos, se refiere al tipo de modelado de datos, donde se guardan los datos recogidos por un programa. Su estructura general se asemeja a la vista general de un programa de Hoja de cálculo.
Las tablas se componen de dos estructuras:
Campo: Corresponde al nombre de la columna. Debe ser único y además de tener un tipo de dato asociado.
Registro: Corresponde a cada fila que compone la tabla. Allí se componen los datos y los registros.
En los esquemas de las bases de datos orientadas a objetos suelen necesitar gran número de clases. Frecuentemente, sin embargo, varias de las clases son parecidas entre sí, entonces aquí se recurre al mecanismo de programación orientada a objetos llamado “herencia”.
La herencia puede hallarse en el nivel de los tipos o en el nivel de las tablas.
1. Cada tupla de la super tabla puede corresponderse, como máximo con una tupla de cada una de sus subtablas inmediatas.
2. SQL posee una restricción adicional que hace que todas las tuplas que se corresponden entre si deben proceder de una tupla (insertada en una tabla).
Por el contrario, las bases de datos convencionales aportan un dominio de las técnicas de almacenamiento y consulta de grandes volúmenes de datos, aunque su capacidad de manipulación es limitada.
Las bases de datos orientadas a objetos pretenden unir la capacidad de manipulación de datos de los LPOO con la capacidad de almacenamiento y consulta de los SGBD.
a) Crear objetos
b) Crear clases para organizar objetos
c) Llamar métodos para acceder objetos específicos
d) Estructuras jerárquicas de herencia para organizar clases y sub-clases
e) Se soportan los tipos complejos como registro, conjuntos, referencias, listas, pilas, colas y arreglos
f) Se pueden crear funciones que tengan un código en algún lenguaje de programación como por ejemplo: SQL, java, C, etc.
g)Manejo de métodos
Las Base de Datos Objeto Relacional son una extensión de las bases de datos relacionales tradicionales, a la cual se le proporcionan características de la programación orientada a objetos.
El beneficio principal no es un tiempo de desarrollo más reducido, el desarrollo orientado a objetos puede requerir más tiempo que el desarrollo convencional porque se pretende que promueva la reutilización futura y la reducción de los posteriores errores y el futuro mantenimiento.
Las bases de datos orientadas a objetos unen dos tecnologías:
La de las bases de datos y la de los lenguajes orientados a objetos. Los LPOO aportan gran capacidad en la manipulación de datos, pero no implementan el almacenamiento y consulta de grandes volúmenes de datos.
Las subtablas de SQL no se pueden usar para representar las especializaciones que se solapen de los modelos E-R. Por supuesto, se pueden crear tablas diferentes para representar las especializaciones o generalizaciones que se solapen sin usar la herencia. SQL define un nuevo privilegio denominado under, en el cual es necesario para crear subtipos o subtablas bajo otro tipo o tabla la razón de ser de este privilegio es parecida a la del privilegio references.
Anidamiento y desanidamiento
La transformación de una relación anidada en una forma con menos atributos de tipos relación (o sin ellos) se denomina desanidamiento.
Por ejemplo se ilustra la manera en que se pueden definir en SQL, estos atributos valorados con arrays y multiconjuntos.
create type Editor as
(nombre varchar(20)
sucursal vachar(20)
create type Libro as
(titulo vachar (20),
array_autores vachar (20) array10,
fecha_publicacion date,
editor Editor,
conjunto_palabras_clave varchar(20) multiset)
create table
A diferencia de los elementos de los multiconjuntos, los elementos de los arrays están ordenados.
Los atributos multivalorados de los esquemas E-R se pueden asignar en SQL atributos valorados como multiconjuntos si el orden es importante se pueden usar los arrays de SQL en lugar de los multiconjuntos.
Creación y acceso a los valores de los conjuntos array´silberschatz´,´Korth´, ´Sudarshan]
de manera parecida se puede crear un multiconjunto de palabras clave de la manera siguiente:multiset´computadora´, ´base de datos´, ´SQL
Al desanidar un arrays la consulta anterior pierde información sobre el orden de los elementos de consulta. Se pueden usar las clausulas UNESTED WITH ORDINALITY para obtener esta información. La clausulas WITH ORDINALITY genera un atributo adicional que se registra la posición del elemento en el arrays. Se puede usar una consulta parecida. Pero sin la clausula WITH ORDINALITY, para generar la relación.
Entity SQL admite los operadores siguientes para construir, anular la construcción y navegar a través de referencias.
REF (Entity SQL)
CREATEREF (Entity SQL)
KEY (Entity SQL)
DEREF (Entity SQL)
Puede navegar por una referencia utilizando el operador de acceso a miembros (.) (Punto). El fragmento de código siguiente extrae la propiedad Id (de Order) navegando por la propiedad r (referencia).
Los lenguajes orientados a objetos ofrecen la posibilidad de hacer referencia a objetos. Los atributos de un tipo dado pueden servir de referencia para los objetos de un tipo concreto. Por ejemplo, en SQL se puede definir el tipo Departamento con el campo nombre y el campo director, que es una referencia al tipo Persona, y la tabla departamentos del tipo Departamento, de la manera siguiente:
create type Departamento(
nombre varchar(20),
director ref(Persona) scope personas)
create table departamentos of Departamento
Esto es análogo a las tablas, que no tienen declarado un número máximo de filas. Los valores de un tipo MULTISET pueden crearse enumerando sus elementos o mediante una sentencia; por ejemplo, MULTISET1, 2, 3, 4 o MULTISET(SELECT nivel FROM cursos).
El tipo MULTISET tiene operaciones para convertir un multiconjunto en un array o en otro multiconjunto cuyos elementos sean de un tipo compatible, para eliminar duplicados del multiconjunto, para devolver el número de elementos de un multiconjunto dado, y para volver el elemento de un multiconjunto que sólo tiene un elemento.
Además, también soporta la unión, intersección y diferencia entre multiconjuntos, así como tres nuevas funciones de agregación para crear un multiconjunto del valor del argumento en cada fila de un grupo (COLLECT), para crear la unión de multiconjuntos del valor del multiconjunto de cada fila de un grupo (FUSION) y para crear la intersección de multiconjuntos del valor del multiconjunto de cada fila de un grupo (INTERSECTION).
En este caso, la referencia está restringida a las tuplas de la tabla personas. La restricción del ámbito de referencia a las tuplas de una tabla es obligatoria en SQL, y hace que las referencias se comporten como las claves externas.
La tabla a la que hace referencia debe tener un atributo que guarde el identificador para cada tupla. Ese atributo, denominado atributo autorreferenciable, se declara añadiendo una cláusula ref is a la instrucción create table:
create table personas of Persona
ref is id_persona system generated
En este caso, id_persona es el nombre del atributo, no una palabra clave, y la instrucción system generated especifica que la base de datos genera de manera automática el identificador. Para inicializar el atributo de referencia hay que obtener el identificador de la tupla a la que se va a hacer referencia. Se puede conseguir el valor del identificador de la tupla mediante una consulta. Por tanto, para crear una tupla con el valor de referencia, primero se puede crear la tupla con una referencia nula y luego definir la referencia de manera independiente:
insert into departamentos
values (‘CS’, null)
update departamentos set director = (select p.id_persona
from persona as p
where nombre = ‘Martín’)
where nombre = ‘CS’
Los tipos de datos complejos, son utilizados ya que facilitan ciertas situaciones. Existen los elementos de datos básicos son registros bastantes pequeños y cuyos campos son atómicos. Con sistemas de tipos complejos se pueden representar directamente conceptos del modelo E-R como los atributos compuestos, los atributos multivalorados, la generalización y la especialización, sin necesidad de una compleja traducción al modelo relacional. La posibilidad de usar tipos de datos complejos como los conjuntos y los arrays puede resultar útil en muchas aplicaciones, pero se debe usar con cuidado.
SQL soporta dos tipos de conjuntos: arrays y multiconjuntos.
Un multiconjunto es una colección de elementos del mismo tipo, sin orden y permitiendo la existencia de elementos repetidos. El tipo de elemento puede ser cualquier otro tipo de SQL.
Por ejemplo, INTEGER MULTISET indica el tipo de un valor del multiconjunto cuyo tipo de elemento es INTEGER.
El tipo de elemento también podría ser otro tipo de colección, que permitiera colecciones anidadas. Un multiconjunto es una colección ilimitada, sin cardinalidad máxima definida. Esto no significa, sin embargo, que el usuario puede insertar elementos en un multiconjunto sin límite, solamente que el estándar no indica que debería haber un límite.
Los objetos en tiempo de ejecución tienen identidades únicas. Dos variables que hacen referencia al mismo objeto en realidad hacen referencia a la misma instancia del objeto. Por este motivo, los cambios que se realizan a través de una variable están visibles inmediatamente a través de la otra.
Las filas de una tabla de base de datos relacional no tienen identidades únicas. Dado que cada fila tiene una clave principal única, dos filas no comparten el mismo valor de clave. Sin embargo, este hecho restringe sólo el contenido de la tabla de base de datos.
En realidad, la mayoría de las veces los datos se extraen de la base de datos y se colocan en un nivel diferente, donde una aplicación trabaja con ellos. Éste es el modelo que LINQ a SQL admite. Cuando los datos se extraen de la base de datos como filas, no se espera que dos filas que representan los mismos datos realmente se correspondan con las mismas instancias de fila. Si consulta un cliente concreto dos veces, obtiene dos filas de datos. Cada fila contiene la misma información.
En el caso de los objetos, se espera algo muy diferente. Se espera que, si se solicita la misma información a DataContext varias veces, de hecho se obtendrá la misma instancia de objeto. Este comportamiento es el esperado porque los objetos tienen un significado especial para una aplicación y se espera que se comporten como objetos. Se han diseñado como jerarquías o gráficos. Lo que se espera es que se recuperarán como tales y no que se recibirán múltiples instancias replicadas sólo porque se solicitó lo mismo más de una vez.
Una alternativa a los identificadores generados por el sistema es permitir que los usuarios generen los identificadores. El tipo del atributo autoreferencial debe especificarse como parte de la definición de tipos de la tabla a la que se hace referencia, y la definición de la tabla debe especificar que la referencia está generada por el usuario (user generated):
create type Persona
(nombre varchar(20),
direccion varchar(20))
ref using varchar(20)
create table personas of Persona
ref is id_persona user generated
Al insertar tuplas en personas hay que proporcionar el valor del identificador:
insert into personas (id_persona, nombre, direccion) values
(‘01284567’, ‘Martín’, ‘Av del Segura, 23’)
En LINQ a SQL, DataContext administra la identidad de objeto. Siempre que se recupera una nueva fila de la base de datos, la fila se registra en una tabla de identidad según su clave principal y se crea un nuevo objeto. Siempre que se recupera esa misma fila, la instancia de objeto original se devuelve a la aplicación. De esta manera, DataContext convierte el concepto de identidad desde el punto de vista de la base de datos (es decir, claves principales) en el concepto de identidad desde el punto de vista del lenguaje (es decir, instancias). La aplicación solo ve el objeto en el estado en que se recuperó por primera vez. Los nuevos datos, si son diferentes, se descartan. Para obtener más información.
LINQ a SQL utiliza este enfoque para administrar la integridad de los objetos locales de manera que se admitan las actualizaciones optimistas. Dado que los únicos cambios que se producen después de crear el objeto son los realizados por la aplicación, la intención de la aplicación está clara. Si en ese período de tiempo un tercero ha realizado cambios, se identifican en el momento en que se llama a SubmitChanges().
Una referencia es un puntero lógico a una entidad concreta en un conjunto de entidades específico.
http://dulberly.blogspot.mx/2012/12/tipos-dedatos-complejos-los-elementos.html
http://fudamentobditics.blogspot.mx/p/unidad-7.html
identidadreferencia.doc
http://es.wikipedia.org/wiki/Mapeo_objeto-relacional
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r88166.PDF
Introducción a los sistemas de Bases de Datos Relacionales - Séptima Edición - C.J. Date
Sistemas de Bases de Datos - Conceptos Fundamentales - ELMASRI-NAVATHE
Fundamentos de Bases de datos - Abraham Silberschatz - McGRAW-HILL
http://ylez.wordpress.com/2011/02/12/caracteristicas-de-las-bases-de-datos-objeto-relacionales/
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r85673.DOCX