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

La actualidad más candente

Sql joins inner join self join outer joins
Sql joins inner join self join outer joinsSql joins inner join self join outer joins
Sql joins inner join self join outer joinsDeepthi Rachumallu
 
Prims & kruskal algorithms
Prims & kruskal algorithmsPrims & kruskal algorithms
Prims & kruskal algorithmsAyesha Tahir
 
Teoría básica de los semigrupos y grupos
Teoría básica de los semigrupos y gruposTeoría básica de los semigrupos y grupos
Teoría básica de los semigrupos y gruposLuis Talledo Yahuana
 
Advanced normalization - Bcnf
Advanced normalization - BcnfAdvanced normalization - Bcnf
Advanced normalization - Bcnflitpuvn
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםמורן אלקובי
 

La actualidad más candente (8)

Joins
Joins Joins
Joins
 
Sql joins inner join self join outer joins
Sql joins inner join self join outer joinsSql joins inner join self join outer joins
Sql joins inner join self join outer joins
 
Prims & kruskal algorithms
Prims & kruskal algorithmsPrims & kruskal algorithms
Prims & kruskal algorithms
 
Ensayo implementacion listas
Ensayo implementacion listasEnsayo implementacion listas
Ensayo implementacion listas
 
Teoría básica de los semigrupos y grupos
Teoría básica de los semigrupos y gruposTeoría básica de los semigrupos y grupos
Teoría básica de los semigrupos y grupos
 
Join sql
Join sqlJoin sql
Join sql
 
Advanced normalization - Bcnf
Advanced normalization - BcnfAdvanced normalization - Bcnf
Advanced normalization - Bcnf
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
 

Similar a Relaciones anidadas y herencia de tipos

Bases de datos orientado a objetos
Bases de datos orientado a objetosBases de datos orientado a objetos
Bases de datos orientado a objetosjorge220395
 
Bases de datos orientado a objetos Exponer
Bases de datos orientado a objetos ExponerBases de datos orientado a objetos Exponer
Bases de datos orientado a objetos Exponerjorge220395
 
Tarea de la unidad 7
Tarea de la unidad 7Tarea de la unidad 7
Tarea de la unidad 7Ramon Carenzo
 
Modelo Relacional Rozic
Modelo Relacional RozicModelo Relacional Rozic
Modelo Relacional RozicCarlos Arturo
 
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
 

Similar a Relaciones anidadas y herencia de tipos (20)

Bases de datos orientado a objetos
Bases de datos orientado a objetosBases de datos orientado a objetos
Bases de datos orientado a objetos
 
Bases de datos orientado a objetos Exponer
Bases de datos orientado a objetos ExponerBases de datos orientado a objetos Exponer
Bases de datos orientado a objetos Exponer
 
Tarea de la unidad 7
Tarea de la unidad 7Tarea de la unidad 7
Tarea de la unidad 7
 
Modelo Relacional Rozic
Modelo Relacional RozicModelo Relacional Rozic
Modelo Relacional Rozic
 
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.
 

Último

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 

Último (20)

La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 

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.