SlideShare una empresa de Scribd logo
1 de 28
RELACIONES ANIDADAS  BARRIENTOS TERÁN JOSÉ LUIS CAYETANO CALIXTO FIDEL CONTRERAS MARTÍNEZ VICTORIA GARCÍA SOTO ELIZABETH MÉNDEZ MARTÍNEZ ORCAR YAIR
RELACIONES ANIDADAS. El modelo relacional anidado es una extensión del modelo relacional en la que los dominios pueden ser atómicos o de relación. Por tanto, el valor de las tuplas de los atributos puede ser una relación, y las relaciones pueden guardarse en otras relaciones. Los objetos complejos, por tanto, pueden representarse mediante una única tupla de las relaciones anidadas. Si se consideran las tuplas de las relaciones anidadas como elementos de datos, se tiene una correspondencia uno a uno entre los elementos de datos y los objetos de la vista de la base de datos del usuario. Un dominio es atómico si los elementos del mismo se consideran unidades indivisibles.
	Las relaciones anidadas se ilustran mediante Un ejemplo extraído de una biblioteca. Considérese que para cada libro se almacena la información siguiente: Título del libro Lista de autores Editorial Lista de palabras clave Puede verse que, si se define una relación para la información anterior, varios de los dominios serán no atómicos.
Autores. Un libro puede tener varios autores. No obstante, puede que se desee hallar todos los documentos entre cuyos autores estuviera Santos. Por tanto, hay interés en una parte del elemento del dominio «conjunto de autores». Palabras clave. Si se guarda un conjunto de palabras clave de cada documento se espera poder recuperar todos los documentos cuyas claves incluyan una o varias de las palabras clave especificadas. Por tanto, se considera que el dominio de la lista de palabras clave no es atómico. Editorial. A diferencia de palabras clave y autores, editorial no tiene un dominio de tipo conjunto. Sin embargo, se puede considerar que editorial consiste en los subcamposnombre y sucursal. Esta manera de considerarlo hace que el dominio de editorial no sea atómico.
TIPOS COMPLEJOS Las relaciones anidadas son sólo un ejemplo de las extensiones del modelo relacional básico. Otros tipos de datos no atómicos, como los registros anidados, también se han mostrado útiles. El modelo de datos orientado a objetos ha creado la necesidad de características como la herencia y las referencias a los objetos.
Los sistemas de tipos complejos y la programación orientada a objetos permiten que los conceptos del modelo E-R, como la identidad de las entidades, los atributos multivalorados y la generalización y la especialización, se representen directamente sin que haga falta una compleja traducción al modelo relacional.
HERENCIA La herencia puede hallarse en el nivel de los tipos o en el nivel de las tablas. En primer lugar se considerará la herencia de los tipos y después en el nivel de las tablas. HERENCIA DE TIPOS Supóngase que se dispone de la siguiente definición de tipos para las personas: createtypePersona (nombre varchar(20), dirección varchar(20))
Puede que se desee guardar en la base de datos más información sobre las personas que sean estudiantes y sobre las que sean profesores. Dado que los estudiantes y los profesores también son personas, se puede utilizar la herencia para definir los tipos estudiante y profesor. createtypeEstudiante underPersona (curso varchar(20), departamento varchar(20)) createtypeProfesor underPersona (sueldo integer, departamento varchar(20))
Tanto Estudiante como Profesor heredan los atributos de Persona, es decir, nombre y dirección. Estudiante y Profesor se denominan subtipos de Persona y ésta, a su vez, es un supertipo de Estudiante y de Profesor.    Los métodos de un tipo estructurado se heredan por sus subtipos, al igual que los atributos. Sin embargo, un subtipo puede redefinir el efecto de un método declarando de nuevo el método, usando overridingmethoden lugar de methoden la declaración del método.   Supóngase ahora que se desea guardar la información sobre los ayudantes, que son simultáneamente estudiantes y profesores, quizás incluso en departamentos diferentes.
Por ejemplo, si el sistema de tipos permite la herencia múltiple, se puede definir un tipo para los ayudantes de la manera siguiente: createtypeAyudante underEstudiante, Profesor   Ayudante heredaría todos los atributos de Estudiante y de Profesor. Surge un problema, sin embargo, dado que los atributos nombre, dirección y departamento se hallan presentes en Estudiante y en Profesor. Los atributos nombre y dirección se heredan en realidad de un origen común, Persona. Así que no se provoca ningún conflicto al heredarlos de Estudiante y de Profesor. Sin embargo, el atributo departamento se define de manera separada en Estudiante y en Profesor.
De hecho, los ayudantes pueden ser estudiantes de un departamento y profesores de otro. Para evitar un conflicto entre los dos ejemplares de departamento se les puede cambiar el nombre utilizando una instrucción as como se muestra en la siguiente definición del tipo Ayudante: createtypeAyudante underEstudiante with(departamento as dep-estudiante) Profesor with(departamento as dep-profesor)
En SQL, como en la mayor parte de los lenguajes de programación, las entidades deben tener exactamente un tipo más específico. Es decir, cada valor debe estar asociado con un tipo específico, denominado tipo más específico, cuando se crea. Mediante la herencia también se asocia con cada uno de los supertipos de su tipo más específico.    Por ejemplo, supóngase que una entidad tiene el tipo Persona y el tipo Estudiante. Por tanto, el tipo más específico de la entidad es Estudiante, dado que Estudiante es un subtipo de Persona. Sin embargo, una entidad no puede tener los tipos Estudiante y Profesor, a menos que tenga un tipo, como Ayudante, que sea un subtipo de Profesor y de Estudiante.
HERENCIA DE TABLAS Por ejemplo, supóngase que se define la tabla personas de la manera siguiente:   createtablepersona of Persona Se pueden definir entonces las tablas estudiantes y profesores como subtablasde persona: createtableestudiantes of Estudiante under persona create table profesoresof Profesor underpersona
Los tipos de las subtablas deben ser subtipos del tipo de la tabla padre. Por tanto, cada atributo presente en persona debe estar también presente en las subtablas. Además, cuando se declaran estudiantes y profesores como subtablas de persona, cada tupla presente en estudiantes o profesores también están presentes implícitamente en persona. Así, si una consulta usa la tabla persona, encontrará no sólo las tuplas insertadas directamente en la tabla, sino también las tuplas insertadas en sus subtablasestudiantes y profesores. Sin embargo, sólo se puede acceder a los atributos que están presentes en persona.   createtableayudantes of Ayudante underestudiantes, profesores
TIPOS DE REFERENCIA Los lenguajes orientados a objetos proporcionan la posibilidad de hacer referencia a los objetos. El atributo de un tipo puede ser una referencia a un objeto de un tipo especificado.    createtypeDepartamento( nombre varchar(20), director ref(Persona) scopepersona ) createtabledepartamentos of Departamento    Se puede omitir la declaración scopepersona de la declaración de tipos y en su lugar añadirla a la instrucción  create table. create table departamentosof Departamento (director with options scope persona)
Para inicializar un atributo referencia es necesario obtener el identificador de la tupla a la que se va a hacer referencia. Se puede obtener el valor del identificador de una tupla mediante una consulta. Así, para crear una tupla con el valor referencia, se puede crear en primer lugar la tupla con una referencia nula y después establecer la referencia: insertintodepartamentos values(‘Informática’, null) updatedepartamentos   set director = (select ref(p) from persona as p where nombre= ‘Juan’) wherenombre = ‘Informática’   Esta sintaxis para acceder al identificador de una tupla está basada en la sintaxis de Oracle.
Este atributo, denominado atributo autorreferencial, se declara añadiendo la cláusula refisa la instrucción createtable.   create table persona of Persona ref is idosystem generated Donde ido es un nombre de atributo, no una palabra clave. La subconsulta anterior podría usar selectp.ido en lugar de selectref(p).   Una alternativa a los identificadores generados por el sistema es permitir a los usuarios generar identificadores. El tipo del atributo autorreferencial se debe especificar como parte de la definición de tipos de la tabla referenciada, y la definición de tabla debe especificar que la referencia la genera el usuario (usergenerated).
createtypePersona (nombre varchar(20), dirección varchar(20)) ref using varchar(20) create table persona of Persona refisido usergenerated   Al insertar una tupla en persona se debe proporcionar un valor para el identificador:   insertintopersona values (‘01284567’, ‘Juan’, ‘Plaza Mayor, 1’) Ninguna otra tupla de persona o sus supertablas pueden tener el mismo identificador. Se puede entonces usar el valor del identificador al insertar una tupla en departamentos, sin necesitar una consulta separada para obtener el identificador. insertintodepartamentos values(‘Informática’, ‘01284567’) 
Es posible incluso usar un valor existente de clave primaria como identificador, incluyendo la cláusula reffromen la definición de tipos: createtypePersona (nombre varchar(20) primarykey, dirección varchar(20)) ref from nombre create table persona of Persona refisido derived   Nótese que la definición de tabla debe especificar que la referencia es derivada y aún debe especificar un nombre de atributo autorreferencial. Al insertar una tupla en departamentos, se puede usar: insertintodepartamentos values(‘Informática’, ‘Juan’)
CONSULTAS CON TIPOS COMPLEJOS En este apartado se presenta una extensión del lenguaje de consulta SQL para trabajar con los tipos complejos. Se puede comenzar por un ejemplo sencillo: averiguar el título y el nombre de la editorial de cada documento. La consulta siguiente lleva a cabo esa tarea:  selecttítulo, editorial.nombre fromlibros   Obsérvese que se hace referencia al campo nombre del atributo compuesto editorial utilizando una notación con un punto.
Expresiones de ruta Se puede usar la siguiente consulta para hallar los nombres y direcciones de los directores de todos los departamentos.    selectdirector–>nombre, director–>dirección fromdepartamentos   Una expresión como «director–>nombre» se denomina una expresión de ruta.   Dado que director es una referencia a una tupla de la tabla persona, el atributo nombre en la consulta anterior es el atributo nombre de la tupla de la tabla persona.   Se pueden usar las referencias para ocultar las operaciones reunión; en el ejemplo anterior, sin las referencias, el campo director de departamento se declararía como clave externa de la tabla persona. Para encontrar el nombre y dirección del director de un departamento se necesitaría una reunión explícita de las relaciones departamentos y persona. El uso de referencias simplifica considerablemente la consulta.
Atributos de tipo colección Ahora se considera la forma de manejar los atributos de tipo colección. Los arraysson el único tipo colección soportado por SQL:1999, pero también se usa la misma sintaxis para los atributos de tipo relación. Una expresión que se evalúe a una colección puede aparecer en cualquier lugar en que aparezca un nombre de relación, tal como en la cláusula from, como ilustran los siguientes párrafos. Se usa la tabla libros que se definió anteriormente.  Si se desea hallar todos los documentos que tienen las palabras «base de datos» entre sus palabras clave se puede utilizar la consulta siguiente: selecttítulo fromlibros where«base de datos» in (unnest(lista-palabrasclave))   Obsérvese que se ha usado unnest(lista-palabras-clave) en una posición en la que SQL sin relaciones anidadas habría exigido una subexpresiónselect-fromwhere. Si se sabe que un libro en particular tiene tres autores, se podría escribir: select array-autores[1], array-autores[2], array-autores[3] fromlibros wheretítulo = ‘Fundamentos de bases de datos’
ANIDAMIENTO Y DESANIDAMIENTO  La transformación de una relación anidada en una forma con menos (o sin) atributos de tipo relación se denomina desanidamiento. La relación libros tiene dos atributos, array-autores y lista-palabras-clave, que son colecciones, y otros dos, título y editorial, que no lo son. Supóngase que se desea convertir la relación en una sola relación plana, sin relaciones anidadas ni tipos estructurados como atributos. Se puede utilizar la siguiente consulta para llevar a cabo la tarea:   selecttítulo, A as autor, editorial.nombre as nombre-edit, editorial.sucursal as sucursal.edit, K as palabra-clave from librosas B, unnest(B.array-autores) as A, unnest(B.lista-palabras-clave) as K   La variable B de la cláusula fromse declara para que tome valores de libros. La variable A se declara para que tome valores de los autores en array-autores para el documento B y K se declara para que tome valores de las palabras clave de la lista-palabras-clave del mismo.
El proceso inverso de transformar una relación 1FN en una relación anidada se denomina anidamiento. El anidamiento puede realizarse mediante una extensión de la agrupación en SQL. En el uso normal de la agrupación en SQL se crea (lógicamente) una relación multiconjunto temporal para cada grupo y se aplica una función de agregación a esa relación temporal. Devolviendo el multiconjunto en lugar de aplicar la función de agregación se puede crear una relación anidada.  La consulta siguiente anida la relación en el atributo palabra-clave:   selecttítulo, autor, Editorial(nombre-edit, sucursal-edit) as editorial, set(palabra-clave) as lista-palabras-clave fromlibros-planos groupbytítulo, autor, editorial  
Si se desea anidar también el atributo autor y volver a convertir, por tanto, la tabla libros-planos, en 1FN, en la tabla anidada libros mostrada en la Figura 9.1 se puede utilizar la consulta siguiente:   selecttítulo, set(autor) as array-autores, Editorial (nombre-edit, sucursal-edit) as editorial, set(palabra-clave) as lista-palabras-clave fromlibros-planos groupbytítulo, editoria
COMPARACIÓN ENTRE LAS BASES DE DATOS ORIENTADAS A OBJETOSY LAS BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS Las extensiones persistentes de los lenguajes de programación y los sistemas relacionales orientados a objetos se han dirigido a mercados diferentes. La naturaleza declarativa y la limitada potencia (comparada con la de los lenguajes de programación) del lenguaje SQL proporcionan una buena protección de los datos respecto de los errores de programación y hace que las optimizaciones de alto nivel, como la reducción de E/S, resulten relativamente sencillas.
Los sistemas relacionales orientados a objetos se dirigen a la simplificación de la realización de los modelos de datos y de las consultas mediante el uso de tipos de datos complejos. Las aplicaciones típicas incluyen el almacenamiento y la consulta de datos complejos, incluyendo los datos multimedia. Los lenguajes declarativos como SQL, sin embargo, imponen una reducción significativa del rendimiento a ciertos tipos de aplicaciones que se ejecutan principalmente en la memoria principal y realizan gran número de accesos a la base de datos. Los lenguajes de programación persistentes se dirigen a las aplicaciones de este tipo que tienen necesidad de elevados rendimientos.  
Los puntos fuertes de los varios tipos de sistemas de bases de datos pueden resumirse de la manera siguiente:   • Sistemas relacionales: tipos de datos sencillos, lenguajes de consulta potentes, protección elevada. • Bases de datos orientadas a objetos basadas en lenguajes de programación persistentes: tipos de datos complejos, integración con los lenguajes de programación, elevado rendimiento. • Sistemas relacionales orientados a objetos: tipos de datos complejos, lenguajes de consulta potentes, protección elevada.

Más contenido relacionado

Similar a Relaciones anidadas y herencia de tipos

Base de datos 2 parte
Base de datos 2 parteBase de datos 2 parte
Base de datos 2 partesaraiacevedo
 
Modelo de entidad de relación
Modelo de entidad de relaciónModelo de entidad de relación
Modelo de entidad de relacióntatytaloor
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relaciónnatha16853
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relaciónnatha16853
 
Elementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relaciónElementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relaciónCam Bandini
 
Modelo De Datos Rozic
Modelo De Datos RozicModelo De Datos Rozic
Modelo De Datos RozicCarlos Arturo
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relaciónnatha16853
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relaciónnatha16853
 
Base datos 2 camila florez maria florez
Base datos 2 camila florez maria florezBase datos 2 camila florez maria florez
Base datos 2 camila florez maria florezCamila Florez
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datoslauraluiso
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.K Manuel TN
 
Modelo entidad relación informatik 2
Modelo entidad relación informatik 2Modelo entidad relación informatik 2
Modelo entidad relación informatik 2geanellavallejo
 
Base de datos
Base de datosBase de datos
Base de datoscaoxman
 
Reglas conversión modelo relacional
Reglas conversión modelo relacionalReglas conversión modelo relacional
Reglas conversión modelo relacionalrmirandaibanez
 

Similar a Relaciones anidadas y herencia de tipos (20)

Base de datos 2 parte
Base de datos 2 parteBase de datos 2 parte
Base de datos 2 parte
 
32117.ppt
32117.ppt32117.ppt
32117.ppt
 
Modelo de entidad de relación
Modelo de entidad de relaciónModelo de entidad de relación
Modelo de entidad de relación
 
Base de datos
Base de datosBase de datos
Base de datos
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relación
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relación
 
Elementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relaciónElementos básicos de modelo entidad relación
Elementos básicos de modelo entidad relación
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relación
 
Modelo De Datos Rozic
Modelo De Datos RozicModelo De Datos Rozic
Modelo De Datos Rozic
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relación
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relación
 
Base datos 2 camila florez maria florez
Base datos 2 camila florez maria florezBase datos 2 camila florez maria florez
Base datos 2 camila florez maria florez
 
Modelo de datos_rozic
Modelo de datos_rozicModelo de datos_rozic
Modelo de datos_rozic
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Fundamentos de bases de datos unidad 2
Fundamentos de bases de datos unidad 2Fundamentos de bases de datos unidad 2
Fundamentos de bases de datos unidad 2
 
5.1 estructura de una clase.
5.1 estructura de una clase.5.1 estructura de una clase.
5.1 estructura de una clase.
 
Base de Datos! :)
Base de Datos! :)Base de Datos! :)
Base de Datos! :)
 
Modelo entidad relación informatik 2
Modelo entidad relación informatik 2Modelo entidad relación informatik 2
Modelo entidad relación informatik 2
 
Base de datos
Base de datosBase de datos
Base de datos
 
Reglas conversión modelo relacional
Reglas conversión modelo relacionalReglas conversión modelo relacional
Reglas conversión modelo relacional
 

Último

Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)veganet
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptAlberto Rubio
 

Último (20)

Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
 

Relaciones anidadas y herencia de tipos

  • 1. RELACIONES ANIDADAS BARRIENTOS TERÁN JOSÉ LUIS CAYETANO CALIXTO FIDEL CONTRERAS MARTÍNEZ VICTORIA GARCÍA SOTO ELIZABETH MÉNDEZ MARTÍNEZ ORCAR YAIR
  • 2. RELACIONES ANIDADAS. El modelo relacional anidado es una extensión del modelo relacional en la que los dominios pueden ser atómicos o de relación. Por tanto, el valor de las tuplas de los atributos puede ser una relación, y las relaciones pueden guardarse en otras relaciones. Los objetos complejos, por tanto, pueden representarse mediante una única tupla de las relaciones anidadas. Si se consideran las tuplas de las relaciones anidadas como elementos de datos, se tiene una correspondencia uno a uno entre los elementos de datos y los objetos de la vista de la base de datos del usuario. Un dominio es atómico si los elementos del mismo se consideran unidades indivisibles.
  • 3. Las relaciones anidadas se ilustran mediante Un ejemplo extraído de una biblioteca. Considérese que para cada libro se almacena la información siguiente: Título del libro Lista de autores Editorial Lista de palabras clave Puede verse que, si se define una relación para la información anterior, varios de los dominios serán no atómicos.
  • 4. Autores. Un libro puede tener varios autores. No obstante, puede que se desee hallar todos los documentos entre cuyos autores estuviera Santos. Por tanto, hay interés en una parte del elemento del dominio «conjunto de autores». Palabras clave. Si se guarda un conjunto de palabras clave de cada documento se espera poder recuperar todos los documentos cuyas claves incluyan una o varias de las palabras clave especificadas. Por tanto, se considera que el dominio de la lista de palabras clave no es atómico. Editorial. A diferencia de palabras clave y autores, editorial no tiene un dominio de tipo conjunto. Sin embargo, se puede considerar que editorial consiste en los subcamposnombre y sucursal. Esta manera de considerarlo hace que el dominio de editorial no sea atómico.
  • 5. TIPOS COMPLEJOS Las relaciones anidadas son sólo un ejemplo de las extensiones del modelo relacional básico. Otros tipos de datos no atómicos, como los registros anidados, también se han mostrado útiles. El modelo de datos orientado a objetos ha creado la necesidad de características como la herencia y las referencias a los objetos.
  • 6. Los sistemas de tipos complejos y la programación orientada a objetos permiten que los conceptos del modelo E-R, como la identidad de las entidades, los atributos multivalorados y la generalización y la especialización, se representen directamente sin que haga falta una compleja traducción al modelo relacional.
  • 7. HERENCIA La herencia puede hallarse en el nivel de los tipos o en el nivel de las tablas. En primer lugar se considerará la herencia de los tipos y después en el nivel de las tablas. HERENCIA DE TIPOS Supóngase que se dispone de la siguiente definición de tipos para las personas: createtypePersona (nombre varchar(20), dirección varchar(20))
  • 8. Puede que se desee guardar en la base de datos más información sobre las personas que sean estudiantes y sobre las que sean profesores. Dado que los estudiantes y los profesores también son personas, se puede utilizar la herencia para definir los tipos estudiante y profesor. createtypeEstudiante underPersona (curso varchar(20), departamento varchar(20)) createtypeProfesor underPersona (sueldo integer, departamento varchar(20))
  • 9. Tanto Estudiante como Profesor heredan los atributos de Persona, es decir, nombre y dirección. Estudiante y Profesor se denominan subtipos de Persona y ésta, a su vez, es un supertipo de Estudiante y de Profesor.   Los métodos de un tipo estructurado se heredan por sus subtipos, al igual que los atributos. Sin embargo, un subtipo puede redefinir el efecto de un método declarando de nuevo el método, usando overridingmethoden lugar de methoden la declaración del método.   Supóngase ahora que se desea guardar la información sobre los ayudantes, que son simultáneamente estudiantes y profesores, quizás incluso en departamentos diferentes.
  • 10. Por ejemplo, si el sistema de tipos permite la herencia múltiple, se puede definir un tipo para los ayudantes de la manera siguiente: createtypeAyudante underEstudiante, Profesor   Ayudante heredaría todos los atributos de Estudiante y de Profesor. Surge un problema, sin embargo, dado que los atributos nombre, dirección y departamento se hallan presentes en Estudiante y en Profesor. Los atributos nombre y dirección se heredan en realidad de un origen común, Persona. Así que no se provoca ningún conflicto al heredarlos de Estudiante y de Profesor. Sin embargo, el atributo departamento se define de manera separada en Estudiante y en Profesor.
  • 11. De hecho, los ayudantes pueden ser estudiantes de un departamento y profesores de otro. Para evitar un conflicto entre los dos ejemplares de departamento se les puede cambiar el nombre utilizando una instrucción as como se muestra en la siguiente definición del tipo Ayudante: createtypeAyudante underEstudiante with(departamento as dep-estudiante) Profesor with(departamento as dep-profesor)
  • 12. En SQL, como en la mayor parte de los lenguajes de programación, las entidades deben tener exactamente un tipo más específico. Es decir, cada valor debe estar asociado con un tipo específico, denominado tipo más específico, cuando se crea. Mediante la herencia también se asocia con cada uno de los supertipos de su tipo más específico.   Por ejemplo, supóngase que una entidad tiene el tipo Persona y el tipo Estudiante. Por tanto, el tipo más específico de la entidad es Estudiante, dado que Estudiante es un subtipo de Persona. Sin embargo, una entidad no puede tener los tipos Estudiante y Profesor, a menos que tenga un tipo, como Ayudante, que sea un subtipo de Profesor y de Estudiante.
  • 13. HERENCIA DE TABLAS Por ejemplo, supóngase que se define la tabla personas de la manera siguiente:   createtablepersona of Persona Se pueden definir entonces las tablas estudiantes y profesores como subtablasde persona: createtableestudiantes of Estudiante under persona create table profesoresof Profesor underpersona
  • 14. Los tipos de las subtablas deben ser subtipos del tipo de la tabla padre. Por tanto, cada atributo presente en persona debe estar también presente en las subtablas. Además, cuando se declaran estudiantes y profesores como subtablas de persona, cada tupla presente en estudiantes o profesores también están presentes implícitamente en persona. Así, si una consulta usa la tabla persona, encontrará no sólo las tuplas insertadas directamente en la tabla, sino también las tuplas insertadas en sus subtablasestudiantes y profesores. Sin embargo, sólo se puede acceder a los atributos que están presentes en persona.   createtableayudantes of Ayudante underestudiantes, profesores
  • 15. TIPOS DE REFERENCIA Los lenguajes orientados a objetos proporcionan la posibilidad de hacer referencia a los objetos. El atributo de un tipo puede ser una referencia a un objeto de un tipo especificado.   createtypeDepartamento( nombre varchar(20), director ref(Persona) scopepersona ) createtabledepartamentos of Departamento    Se puede omitir la declaración scopepersona de la declaración de tipos y en su lugar añadirla a la instrucción create table. create table departamentosof Departamento (director with options scope persona)
  • 16. Para inicializar un atributo referencia es necesario obtener el identificador de la tupla a la que se va a hacer referencia. Se puede obtener el valor del identificador de una tupla mediante una consulta. Así, para crear una tupla con el valor referencia, se puede crear en primer lugar la tupla con una referencia nula y después establecer la referencia: insertintodepartamentos values(‘Informática’, null) updatedepartamentos   set director = (select ref(p) from persona as p where nombre= ‘Juan’) wherenombre = ‘Informática’   Esta sintaxis para acceder al identificador de una tupla está basada en la sintaxis de Oracle.
  • 17. Este atributo, denominado atributo autorreferencial, se declara añadiendo la cláusula refisa la instrucción createtable.   create table persona of Persona ref is idosystem generated Donde ido es un nombre de atributo, no una palabra clave. La subconsulta anterior podría usar selectp.ido en lugar de selectref(p).   Una alternativa a los identificadores generados por el sistema es permitir a los usuarios generar identificadores. El tipo del atributo autorreferencial se debe especificar como parte de la definición de tipos de la tabla referenciada, y la definición de tabla debe especificar que la referencia la genera el usuario (usergenerated).
  • 18. createtypePersona (nombre varchar(20), dirección varchar(20)) ref using varchar(20) create table persona of Persona refisido usergenerated   Al insertar una tupla en persona se debe proporcionar un valor para el identificador:   insertintopersona values (‘01284567’, ‘Juan’, ‘Plaza Mayor, 1’) Ninguna otra tupla de persona o sus supertablas pueden tener el mismo identificador. Se puede entonces usar el valor del identificador al insertar una tupla en departamentos, sin necesitar una consulta separada para obtener el identificador. insertintodepartamentos values(‘Informática’, ‘01284567’) 
  • 19. Es posible incluso usar un valor existente de clave primaria como identificador, incluyendo la cláusula reffromen la definición de tipos: createtypePersona (nombre varchar(20) primarykey, dirección varchar(20)) ref from nombre create table persona of Persona refisido derived   Nótese que la definición de tabla debe especificar que la referencia es derivada y aún debe especificar un nombre de atributo autorreferencial. Al insertar una tupla en departamentos, se puede usar: insertintodepartamentos values(‘Informática’, ‘Juan’)
  • 20. CONSULTAS CON TIPOS COMPLEJOS En este apartado se presenta una extensión del lenguaje de consulta SQL para trabajar con los tipos complejos. Se puede comenzar por un ejemplo sencillo: averiguar el título y el nombre de la editorial de cada documento. La consulta siguiente lleva a cabo esa tarea: selecttítulo, editorial.nombre fromlibros   Obsérvese que se hace referencia al campo nombre del atributo compuesto editorial utilizando una notación con un punto.
  • 21. Expresiones de ruta Se puede usar la siguiente consulta para hallar los nombres y direcciones de los directores de todos los departamentos.   selectdirector–>nombre, director–>dirección fromdepartamentos   Una expresión como «director–>nombre» se denomina una expresión de ruta.   Dado que director es una referencia a una tupla de la tabla persona, el atributo nombre en la consulta anterior es el atributo nombre de la tupla de la tabla persona.   Se pueden usar las referencias para ocultar las operaciones reunión; en el ejemplo anterior, sin las referencias, el campo director de departamento se declararía como clave externa de la tabla persona. Para encontrar el nombre y dirección del director de un departamento se necesitaría una reunión explícita de las relaciones departamentos y persona. El uso de referencias simplifica considerablemente la consulta.
  • 22. Atributos de tipo colección Ahora se considera la forma de manejar los atributos de tipo colección. Los arraysson el único tipo colección soportado por SQL:1999, pero también se usa la misma sintaxis para los atributos de tipo relación. Una expresión que se evalúe a una colección puede aparecer en cualquier lugar en que aparezca un nombre de relación, tal como en la cláusula from, como ilustran los siguientes párrafos. Se usa la tabla libros que se definió anteriormente.  Si se desea hallar todos los documentos que tienen las palabras «base de datos» entre sus palabras clave se puede utilizar la consulta siguiente: selecttítulo fromlibros where«base de datos» in (unnest(lista-palabrasclave))   Obsérvese que se ha usado unnest(lista-palabras-clave) en una posición en la que SQL sin relaciones anidadas habría exigido una subexpresiónselect-fromwhere. Si se sabe que un libro en particular tiene tres autores, se podría escribir: select array-autores[1], array-autores[2], array-autores[3] fromlibros wheretítulo = ‘Fundamentos de bases de datos’
  • 23. ANIDAMIENTO Y DESANIDAMIENTO  La transformación de una relación anidada en una forma con menos (o sin) atributos de tipo relación se denomina desanidamiento. La relación libros tiene dos atributos, array-autores y lista-palabras-clave, que son colecciones, y otros dos, título y editorial, que no lo son. Supóngase que se desea convertir la relación en una sola relación plana, sin relaciones anidadas ni tipos estructurados como atributos. Se puede utilizar la siguiente consulta para llevar a cabo la tarea:   selecttítulo, A as autor, editorial.nombre as nombre-edit, editorial.sucursal as sucursal.edit, K as palabra-clave from librosas B, unnest(B.array-autores) as A, unnest(B.lista-palabras-clave) as K   La variable B de la cláusula fromse declara para que tome valores de libros. La variable A se declara para que tome valores de los autores en array-autores para el documento B y K se declara para que tome valores de las palabras clave de la lista-palabras-clave del mismo.
  • 24. El proceso inverso de transformar una relación 1FN en una relación anidada se denomina anidamiento. El anidamiento puede realizarse mediante una extensión de la agrupación en SQL. En el uso normal de la agrupación en SQL se crea (lógicamente) una relación multiconjunto temporal para cada grupo y se aplica una función de agregación a esa relación temporal. Devolviendo el multiconjunto en lugar de aplicar la función de agregación se puede crear una relación anidada. La consulta siguiente anida la relación en el atributo palabra-clave:   selecttítulo, autor, Editorial(nombre-edit, sucursal-edit) as editorial, set(palabra-clave) as lista-palabras-clave fromlibros-planos groupbytítulo, autor, editorial  
  • 25. Si se desea anidar también el atributo autor y volver a convertir, por tanto, la tabla libros-planos, en 1FN, en la tabla anidada libros mostrada en la Figura 9.1 se puede utilizar la consulta siguiente:   selecttítulo, set(autor) as array-autores, Editorial (nombre-edit, sucursal-edit) as editorial, set(palabra-clave) as lista-palabras-clave fromlibros-planos groupbytítulo, editoria
  • 26. COMPARACIÓN ENTRE LAS BASES DE DATOS ORIENTADAS A OBJETOSY LAS BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS Las extensiones persistentes de los lenguajes de programación y los sistemas relacionales orientados a objetos se han dirigido a mercados diferentes. La naturaleza declarativa y la limitada potencia (comparada con la de los lenguajes de programación) del lenguaje SQL proporcionan una buena protección de los datos respecto de los errores de programación y hace que las optimizaciones de alto nivel, como la reducción de E/S, resulten relativamente sencillas.
  • 27. Los sistemas relacionales orientados a objetos se dirigen a la simplificación de la realización de los modelos de datos y de las consultas mediante el uso de tipos de datos complejos. Las aplicaciones típicas incluyen el almacenamiento y la consulta de datos complejos, incluyendo los datos multimedia. Los lenguajes declarativos como SQL, sin embargo, imponen una reducción significativa del rendimiento a ciertos tipos de aplicaciones que se ejecutan principalmente en la memoria principal y realizan gran número de accesos a la base de datos. Los lenguajes de programación persistentes se dirigen a las aplicaciones de este tipo que tienen necesidad de elevados rendimientos.  
  • 28. Los puntos fuertes de los varios tipos de sistemas de bases de datos pueden resumirse de la manera siguiente:   • Sistemas relacionales: tipos de datos sencillos, lenguajes de consulta potentes, protección elevada. • Bases de datos orientadas a objetos basadas en lenguajes de programación persistentes: tipos de datos complejos, integración con los lenguajes de programación, elevado rendimiento. • Sistemas relacionales orientados a objetos: tipos de datos complejos, lenguajes de consulta potentes, protección elevada.