Base Datos I

De Computacion

Quiero compartir la importancia de esta materia, para las personas que profesionalmente se quieran desempeñar en la línea del software, es una introducción realizada por Suzie Allard y traducida por Pablo Rogina.

“¿Cuánta información hay en el mundo?”

De acuerdo a Michael Lesk, quien abordó esta pregunta en su paper del mismo nombre de 1997, la enorme cantidad de datos tomaría varios miles de millones de gigabytes o varios miles de petabytes de almacenamiento [1]. La tecnología de las modernas bases de datos provee los medios para almacenar, administrar y acceder a semejantes cantidades de información. Sin embargo, las bases de datos no son un fenómeno nuevo. De hecho, Herman Hollerith mecanizó el almacenamiento del Censo de EE.UU. de 1890 en lo que de alguna forma se considera la primera base de datos significativa

“computarizada” [2].

Hoy, la importancia e impacto de las bases de datos es incuestionable a medida que organizaciones gubernamentales, instituciones académicas, y entidades comerciales crean y mantienen importantes bases de datos que contienen toda clase de información desde documentos de texto en lenguaje natural, tablas estadísticas, datos financieros y objetos multimediales hasta datos de naturaleza técnica y científica. Muchas bases de datos están compuestas de metadatos, lo cual significa que los registros guardan “datos acerca de los datos” tales como información acerca del tamaño y carácter de otra base de datos en lugar de ser la fuente primaria de contenido tal como nombre y domicilio de una persona. Las tecnologías de bases de datos, incluyendo métodos de arquitectura y acceso, se están desarrollando rápidamente para mantenerse al día con esta demanda de mecanismos de administración de la información. Los diseñadores y administradores de bases de datos enfrentan muchos desafíos que reflejan la complejidad del floreciente entorno de la información. Las tecnologías de bases de datos deben manejar masivas cantidades de datos, extraer información útil desde estos repositorios, y tener la habilidad para reflejar las relaciones entre los datos mantenidos en diferentes bases de datos. Además de la arquitectura y sistema deben proveer integridad, recuperación, concurrencia, y seguridad.

Para responder a estos desafíos, los tres modelos fundamentales de bases de datos (jerárquico, red y relacional) [3], han servido como la base para desarrollar modelos de datos más potentes y flexibles, tales como los modelos relacional extendido y el relacional de objetos [4]. Un esquema de datos y una arquitectura bien definida aseguran almacenamiento de datos lógico y eficiente lo cual incrementa la capacidad de la base de datos y extiende las capacidades de los lenguajes de consulta y otros métodos de acceso. Además, la minería de datos crea información útil al identificar datos relacionados dentro de los vastos almacenamientos [5]. Los investigadores ahora luchan con las complejidades de los temas relacionales y la interoperabilidad [6]. Por ejemplo los investigadores son capaces ahora de usar metadatos de manera más eficiente para la diseminación mejorada de datos. Los investigadores son capaces también de usar estrategias federadas para bases de datos distribuidas [7].

¡

Unase a nosotros a medida que Crossroads explora el fascinante mundo de las bases de datos

!

Referencias

1 Lesk, M. “How much information is there in the world?” http://www.lesk.com/mlesk/ksg97/ksg.html

2 Schneider, G.M. and Gersting, J.L. An invitation to computer science, 2nd ed. PWS Publishing , Pacific Grove, CA., 1998.

3 Encyclopaedia Brittanica. “database”. http://www.britannica.com/bcom/eb/article/8/0,5716,29888+1+29424,00.html

4 O’Neill, P. and O’Neil E. Databases: principles, programming and performance. 2nd ed., Morgan Kaufman Publishers, San Francisco, CA., 2000.

5 Weiss, S. and Indurkhya, N. (contributor). Predictive data mining: A practical guide. Morgan Kaufman Publishers, LOC, 1997.

6 Payette, S., Blanchi, C. and Lagoze, C., “Interoperability for digital objects and repositories”. D-Lib Magazine 5(5): http://www.dlib.org/dlib/may99/payette/05payette.html

7 Mechanized Reasoning Group, Dipartimento di Informatica e Studi Aziendali Universit degli Studi, “Federated Databases”, http://mrg.cs.unitn.it/~mrg/distributed-intelligence/research-topics/fdb.html

Suzie Allard (slalla0@pop.uky.edu) es una estudiante de doctorado y Presidential Fellow en la Universidad de Kentucky, donde sus intereses de investigación se enfocan en bibliotecas digitales y administración del conocimiento. Actualmente es miembro del Grupo de Interés Especial en Bibliotecas Digitales de la Sociedad Norteamericana de Ciencias de la Información y Tecnología.

Tabla de contenidos



[editar] Objetivos Generales

  • Dotar al participante del marco conceptual, técnico y metodológico en diseño y desarrollo de sistemas de bases de datos relacionales normalizados.


[editar] Objetivos Especificos

1. Conocer los elementos conceptuales de las bases de datos y los sistemas de gestión de base de datos, sus componentes, personal implicado, historia y usos comunes.

2. Diferenciar los componentes, servicios, funciones y lenguajes involucrados en el entorno de base de datos.

3. Utilizar el modelo de datos relacional para representar datos.

4. Construir consultas a través del álgebra relacional, cálculo relacional de tuplas y cálculo relacional de dominios

5. Utilizar el SQL para operaciones de extracción y manipulación de información a través de las sentencias SELECT, INSERT, UPDATE y DELETE.

6. Utilizar el SQL para definir tablas, reglas de integridad referencial y medidas de seguridad a través de las instrucciones de definición de datos.

7. Realizar consultas mediante ejemplos, QBE – Quero by example – utiliando Microsoft Office Access

8. Aprender conceptos técnicos de las posibilidades que las bases de datos comerciales Office Access y Oracle dan a los desarrolladores de sistemas de gestión de bases de datos.

9. Adquirir los conocimientos técnicos para planear, diseñar y administrar bases de datos

10. Diferenciar las características de varias técnicas de determinación de hechos para aplicarlas adecuadamente durante cada etapa del ciclo de desarrollo del sistema de base de datos.

11. Identificar y resolver diseños de base de datos a través del modelo entidad relación.

12. Utilizar la especialización/generalización, agregación y composición para el desarrollo de modelos entidad – relación avanzados.

13. Llevar a cabo procesos de normalización de datos a través de la aplicación de la primera, segunda y tercera formas normales.

14. Identificar mediante reglas de inferencia el conjunto de todas las dependencias funcionales de una relación y normalizar utilizando además de las tres primeras formas normales, las formas Boyce-Codd, cuarta y quinta formas normales.


[editar] Bibliografia

Texto Básico:

  • Connolly, Thomas M. Begg, Carolyn. Sistemas de bases de datos: un enfoque práctico para diseño, implementación y gestión. 4ta edición. Pearson Addison Wesley. Madrid, España. ISBN 84-7829-075-3. 2005.

Bibliografía complementaria:

  • Date, C. J., Introducción a los Sistemas de Bases de Datos, Volúmen I, quinta edición, Editorial Addisson Wesley Longman, México 1998, ISBN: 968-444-220-3.

  • Date, C.J.; Darwen, H. “A Guide to the SQL Standard”. Pearson Educación de México, 2001 4th edition. Addison-Wesley, 1996.
  • De Miguel, A; Piattini, Mario; Marcos, Esperanza. “Diseño de Bases de Datos Relacionales”. Madrid, Ra-Ma, 2000.

  • De Miguel, A.; Piattini, M. “Fundamentos y Modelos de bases de datos”. 2a edición. RA-MA, 1999.
  • Garcia-Molina, H.; Ullman J.D.; Widom, J. “Database Systems. The complete book”. Prentice Hall, 2002.
  • Silberschatz, Abraham, Korth, Henry F.. y Sudarshan, S., Fundamentos de Bases de Datos, tercera edición, Editorial McGraw Hill, España 1998, ISBN: 0-07-044756-X.

  • Ullman, Jeffrey y Widom, Jennifer, Introducción a los Sistemas de Bases de Datos. Editorial Prentice Hall, México 1999, ISBN: 970-17-0256-5.

[editar] Desarrollo del Aprendizaje

[editar] Capitulo 1: Introduccion a las Bases de Datos



[editar] Datos Generales:

Texto BaseConnolly, Tohomas. Begg, Carolyn. Sistemas de bases de datos: un enfoque práctico para diseño, implementación y gestión. 4ta edición. Pearson Addison Wesley. Madrid, España. 2005
Capítulo1. Introducción a las bases de datos
Páginas3 – 30
Horas de estudio empleadas para el desarrollo del contenido4 horas

[editar] Propositos:


El propósito de este capítulo es introducir en el conocimiento de las bases de datos, su historia, usos, evolución de los esquemas de bases de datos, diferenciar el significado de los términos base de datos de sistema de gestión de base de datos (SGBD), las funciones típicas, componentes principales, personal implicado en los SGBD

[editar] Conceptos Clave:


  • Sistema basado en archivos:

    Una colección de programas de aplicación que realiza diversos servicios para los usuarios finales, como por ejemplo la producción de informes. Cada programa define y gestiona sus propios datos.

  • La base de datos:

    Una colección compartida de datos lógicamente relacionados, junto con una descripción de estos datos, que están diseñados para satisfacer las necesidades de información de una organización.

  • Sistema de gestión de base de datos (SGBD)

    Un sistema software que permita a los usuarios definir, crear, mantener y controlar el acceso a la base de datos.

  • Programa de aplicación:

    Un programa informático que interactúa con la base de datos emitiendo las apropiadas solicitudes (normalmente una instrucción SQL) dirigidas al SGBD.


[editar] Esquema de Estudio:


A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que cada estudiante estima que necesita tutoría y realizar anotaciones personales.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
1.1 Introducción En este apartado se describen los usos que tienen actualmente las bases de datos. Piense en al menos dos usos adicionales que tienen o podrían tener las bases de datos actualmente.
1.2. Sistemas tradicionales basados en archivos Se describe la organización de datos basada en archivos, es importante conocer la estructura para diferenciarlos del SGBD, actualmente están obsoletos, pero es importante su conocimiento

Adicionalmente, se mencionan las limitaciones de la técnica basada en archivos.

Responda las cuestiones que están propuestas después del segundo párrafo del apartado 1.2.1.

Piense en al menos una consecuencia derivada de las limitaciones de los sistemas basados en archivos.

1.3. Sistema de base de datos En este capítulo se explica la forma de solucionar los inconvenientes de los sistemas basados en archivos.

Se explican algunos conceptos importantes de base de datos, en el apartado 1.3.1. La explicación avanza hacia lo que es un sistema de gestión de base de datos (SGBD), conceptos y componentes.

Basado en el apartado 1.3.1 elaborar una lista de términos y sus definiciones, relacionados con una base de datos. Ejemplo: entidad, atributo, etc.

En relación al apartado 1.3.2, revisar cuales son los productos comerciales de sistemas de gestión de base de dato, ubicar la dirección web; ejemplo Oracle en www.oracle.com Basado en el apartado 1.3.4 elaborar un diagrama en el que se explique la relación de componentes de un SGBD, diferente a la figura 1.8.

1.4. Papeles en un entorno de base de datos. De forma general se explican los distintos roles implicados en un SGBD: administración, diseño, desarrollo y uso. Tomando la información del tema 1.4, elaborar un cuadro sinóptico de los roles que existen en un SGBD y dos tareas asociadas.
1.5. Historia de los sistemas de gestión de base de datos El tema da una explicación general de la evolución de los sistemas de datos: la estructura jerárquica, en red y el modelo relación propuesto en 1970, por el doctor E.F. Codd y finaliza con los planteamientos de bases de datos orientadas a objetos. Repasar lo conceptos: DDL, DML, DCL, esquema de base de datos.

Buscar en la web, cual fue la propuesta de E.F. Codd.

1.6. Ventajas y desventajas de los SGBD Detalladamente se analizan los pros y contras de los SGBD. Realizar una lectura comprensiva del aparatado 1.6, pensar en las ventajas y desventajas que usted como profesional tendría que enfrentar en una aplicación de base de datos.


[editar] Capitulo 2: El entorno de la base de datos


[editar] Datos Generales:

Texto BaseConnolly, Tohomas. Begg, Carolyn. Sistemas de bases de datos: un enfoque práctico para diseño, implementación y gestión. 4ta edición. Pearson Addison Wesley. Madrid, España. 2005
Capítulo2. El entorno de la base de datos
Páginas31 – 59
Horas de estudio empleadas para el desarrollo del contenido4 horas

[editar] Propositos:


El propósito de este capítulo es desarrollar el aprendizaje y discusión en relación a los niveles de la arquitectura de base de datos: externo, conceptual e interno; el significado de la independencia de datos lógica y física; distinguir entre lenguaje de definición de datos y un lenguaje de manipulación (DDL y DML); reconocer la importancia del modelado conceptual; los servicios y funciones de un SGBD; utilidad de un catálogo del sistema; las ventajas de la arquitectura cliente servidor en relación a un SGBD; la función y usos de los monitores de procesamiento de transacciones.

[editar] Conceptos Clave:



  • Arquitectura en tres niveles de ANSI-SPARC:

    Esta arquitectura tiene un nivel externo que interactúa con el usuario, el nivel conceptual, el nivel interno que está en relación con la organización física de los daos.

  • Nivel externo:

    La vista que los usuarios tienen de la base de daos. Este nivel describe la parte de la base de datos que es relevante para cada usuario.

  • Nivel conceptual:

    La vista comunitaria de la base de datos. Este nivel describe qué datos están almacenados en la base de datos y las relaciones existentes entre los mismos.

  • Nivel interno:

    Representación física de la base de datos en la computadora. Este nivel describe cómo están almacenados los datos en la base de datos.

  • Independencia lógica de los datos:

    El concepto de independencia lógica de los datos hace referencia a la inmunidad de los esquemas externos a las modificaciones que s efectúan en el esquema conceptual.

  • Independencia física de los datos:

    El concepto de independencia física de los datos hace referencia a la inmunidad de esquema conceptual a los cambio que se efectúen en el esquema interno.

  • Lenguaje de definición de datos - DDL:

    Un lenguaje que permite al DBA o al usuario describir y nombrar las entidades, atributos y relaciones requeridas por la aplicación, junto con cualquier restricción asociada de integridad y seguridad.

  • El lenguaje de manipulación de datos – DML:

    Un lenguaje que proporciona un conjunto de operadores para permitir las manipulaciones básicas de los datos contenidos en la base de datos.

  • DML procedimental:

    UN lenguaje que permite al usuario decirle al sistema qué datos necesita y cuál es la forma exacta de extraerlos

  • DML no procedimental:

    Un lenguaje que permite al usuario indicar qué datos necesita, en lugar de cómo hay que extraerlos.

  • Modelo de datos:

    Una colección integrada de conceptos para describir y manipular datos, las relaciones existentes entre los mismos y las restricciones aplicables a los datos, todo ello dentro de una organización.

  • Funciones de un SGBD:

    Un SGBD debe proporcionar: 1, a los usuarios la capacidad de almacenar, extraer y actualizar los datos de la base de datos; 2, un catalogo en el que se almacenen las descripciones de los elementos de datos y que sea accesible por parte de los usuarios; 3, un mecanismo que garantice que se lleven a cabo todas las actualizaciones correspondientes a una determinada transacción, o que no se lleve a cabo ninguna; 4, un mecanismo para garantizar que la base de datos se actualice correctamente cuando haya múltiples usuarios actualizando de manera concurrente la base de datos; 5, un mecanismo para recuperar la base de datos en caso de que ésta resulte dañada de alguna forma; 6, un mecanismo para garantizar que sólo los usuarios autorizados puedan acceder a la base de datos; 7, capacidad para poder integrarse con software de comunicaciones; 8, un medio de garantizar que tanto los datos de la base de datos como los cambios efectuados en los mismos se adecuen a ciertas reglas; 9, las funcionalidades para permitir que los programas sean independientes de la estructura real de la base de datos; 10, una serie de servicios de utilidad.

  • Monitor TPI:

    Un programa que controla la transferencia de datos entre clientes y servidores para proporcionar un entorno coherente, particularmente para el procesamiento de transacciones en línea (OLTP, online transaction processing)

  • Modelo de datos:De acuerdo a [Ullman1999]:

``Un modelo de datos es un sistema formal y abstracto que permite describir los datos de acuerdo con reglas y convenios predefinidos. Es formal pues los objetos del sistema se manipulan siguiendo reglas perfectamente definidas y utilizando exclusivamente los operadores definidos en el sistema, independientemente de lo que estos objetos y operadores puedan significar.’’

  • Según Codd, en [Silberschatz]:``Un modelo de datos es una combinación de tres componentes:
1) una colección de estructuras de datos (los bloques constructores de cualquier base de datos que conforman el modelo);

2) una colección de operadores o reglas de inferencia, los cuales pueden ser aplicados a cualquier instancia de los tipos de datos listados en (1), para consultar o derivar datos de cualquier parte de estas estructuras en cualquier combinación deseada;

3) una colección de reglas generales de integridad, las cuales explícita o implícitamente definen un conjunto de estados consistentes --estas reglas algunas veces son expresadas como reglas de insertar-actualizar-borrar.’’

Un modelo de datos puede ser usado de las siguientes maneras:

i) como una herramienta para especificar los tipos de datos y la organización de los mismos que son permisibles en una base de datos específica;

ii) como una base para el desarrollo de una metodología general de diseño para las bases de datos;

iii) como una base para el desarrollo de familias de lenguajes de alto nivel para manipulación de consultas (querys) y datos;

iv) como el elemento clave en el diseño de la arquitectura de un manejador de bases de datos.

El primer modelo de datos desarrollado con toda la formalidad que esto implica fue el modelo relacional, en 1969, mucho antes incluso que los modelos jerárquicos y de red. A pesar de que los sistemas jerárquicos y de red como software para manejar bases de datos son previos al modelo relacional, no fue sino hasta 1973 que los modelos de tales sistemas fueron definidos, apenas unos cuantos años antes de que estos sistemas empezaran a caer en desuso.

[editar] Esquema de Estudio:


A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que cada estudiante estima que necesita tutoría y realizar anotaciones personales.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
2.1 La arquitectura en tres niveles de ANSI-SPARC Se describen los tres niveles diferentes mediante los cuales pueden describirse los elementos de datos, estos niveles forman una arquitectura en tres niveles que comprende un nivel externo, otro conceptual y otro interno.

El nivel externo es la forma como los usuarios perciben los datos; el nivel interno es la forma en que el SGBD y el sistema operativo perciben los datos; y el nivel conceptual, es el que proporciona tanto la correspondencia como la necesaria independencia entre los niveles externo e interno.

Repasar las razones por las que la separación en tres niveles resulta conveniente.

Hacer un listado de las cosas que se ocupa cada nivel (revisar puntos 2.1.1, 2.1.2, y 2.1.3)

Tomando como base la figura 2.2., elaborar un ejemplo de la diferencia entre los tres niveles para un esquema de almacenamiento de datos.

En base al punto 2.1.5, independencia de datos, explicar los cambios que se podrían hacer en los tres niveles y cómo podría afectar estos cambios al resto de niveles.

2.2 Lenguajes de base de datos. En este apartado se revisan el lenguaje de definición de datos (DDL), el lenguaje de manipulación de datos (DML) y Lenguajes de cuarta generación. ¿Por qué se habla de sublenguaje de datos?

Explicar que es el catalogo del sistema, el diccionario de datos y directorio de datos.

Consulte el significado y uso de SQL en las bases de datos.

Consultar cuales son las instrucciones DML que permiten realizar las operaciones de manipulación de datos en SQL.

Señalar cuales son las diferencias entre lenguajes procedimentales y no procedimentales.

Revisar lo que comprenden los lenguajes de cuarta generación, y buscar ejemplos de generadores de formularios, informes, gráficos y aplicaciones.

2.3 Modelo de datos y modelo conceptual Los modelos de datos comprenden tres componentes: una parte estructural, compuesta por un conjunto de reglas que son las que definen cómo pueden construirse as base de datos; una parte manipulativa, que define los tipos de operaciones

que pueden realizarse sobre los datos; y un conjunto de restricciones de integridad, que garantiza la precisión de los datos.

Los modelos de datos que se presentan en este apartado son: basados en objetos, basado en registros y físicos.

Revisar los puntos 2.3.1, 2.3.2, 2.3.3 interesa que se adquiera un conocimiento general de los tipos de modelos; en el transcurso de los siguientes capítulos nos concentraremos en el modelo relacional.
2.4 Funciones de un SGBD En el apartado se presentan los servicios que todo SGBD debe proporcionar:

1. Almacenamiento, extracción y actualización de datos

2. Un catálogo accesible por el usuario

3. Soporte de transacciones

4. Servicios de control de concurrencia

5. Servicios de recuperación

6. Servicios de autorización

7. Soporte para la tramitación de datos

8. Servicios de integridad

9. Servicios para mejorar la independencia de los datos

10. Servicios de utilidad

Para reforzar el aprendizaje se recomienda elaborar un cuadro resumen de las funcionalidades que deben tener cada servicio que se presenta en este apartado.
2.5 Componentes de un SGBD UN SGBD está estructurado en diversos componente software (o módulos), a cada uno de los cuales se les asigna una operación, en la figura 2.8 se muestran los componentes principales de un SGBD. Una actividad recomendable es consultar la arquitectura de SGDB o DBMS (Database Management Systems) comerciales, por ejemplo Oracle. Puede buscar en google “arquitectura de la instancia Oracle”, si no la encuentra consulte al tutor de este curso.
2.6 Arquitecturas de SGBD multiusuario El apartado 2.6, explica varias arquitecturas de sistemas de gestión de bases de datos: teleprocesamiento, arquitectura de servidor de archivos, arquitectura cliente-servidor tradicional en dos niveles, arquitectura cliente-servidor en tres niveles, monitores de procesamiento de transacciones. La actividad que se recomienda es explicar los usos que usted en empresas que se le puede dar a cada arquitectura de acuerdo a las especificaciones anotadas en el punto 2.6.


[editar] Capitulo 3: El modelo relacional y los lenguajes relacionales



[editar] Datos Generales:

Texto BaseConnolly, Tohomas. Begg, Carolyn. Sistemas de bases de datos: un enfoque práctico para diseño, implementación y gestión. 4ta edición. Pearson Addison Wesley. Madrid, España. 2005
Capítulo3. El entorno relacional y los lenguaje relacionales
Páginas63 – 78
Horas de estudio empleadas para el desarrollo del contenido8 horas

[editar] Propositos:


El propósito de este capítulo es conocer los orígenes del modelo relacional, su terminología, la manera como se utilizan las tablas en el modelo relacional para representar datos; la conexión entre las relaciones matemáticas y las relaciones usadas en el modelo relacional así como sus propiedades; se avanzará en el conocimiento para identificar claves candidatas, principales, alternativas y externas; se discutirá la integridad de las entidades y la entidad referencial y otras generalidades en torno al propósito y las ventajas de las vistas en los sistemas relacionales.

[editar] Conceptos Clave:


  • Estructura de datos relaciones:

Imagen:Estructuradedatosrelacionales.jpg

Imagen:Estructuradedatosrelacionales1.jpg

  • Esquema de relación:Una relación denominada definida por un conjunto de parejas de atributos y nombres de dominios.
  • Esquema de la base de datos relacional:Un conjunto de esquemas de relación, cada uno de con un nombre distinto.

Claves relacionales

Imagen:Clavesrelacionales.jpg


  • Valores nulos:

    Un valor nulo (NULL) representa un valor para un atributo que es actualmente desconocido o no aplicables para esta tupla; un valor nulo no es un cero, o un espacio, sino que es un valor desconocido.

  • Integridad de entidad:En una relación base ningún atributo de una clave principal puede ser nulo.
  • Integridad referencial:

    Si hay clave externa en una relación, el valor de la clave externa debe corresponderse con el valor de una clave candidata de alguna tupla en su relación de origen o el valor de la clave externa debe ser completamente nulo.

  • Restricciones generales:

    Son reglas adicionales especificadas por los usuarios o administradores de la base de datos que definen algún aspecto de la organización.

  • Relación base:

    Una relación nominada correspondiente a una entidad del esquema conceptual y cuyas tuplas están almacenadas físicamente en un base de datos.

  • Vista:

    El resultado dinámico de una o más operaciones relacionales que operan sobre las relaciones base para producir otra relación. Una vista es una relación virtual que no tiene por qué existir necesariamente en la base de datos, sino que puede producirse cuando se solicite por parte de un usuario concreto, generándose en el momento de la solicitud.

[editar] Esquema de Estudio:


A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que cada estudiante estima que necesita tutoría y realizar anotaciones personales.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
3.1. Breve historia del modelo relacional. Se presentan algunos datos con respecto al modelo relacional que arranca con el artículo publicado por Codd en 1970. Elaborar un resumen de aspectos importantes, fechas, autores, artículos.
3.2. Terminología En este capítulo se presenta la terminología básica del modelo relacional, los concepto matemáticos sobre los que reposa el modelo; las propiedades de las relaciones; las claves relacionales y se presenta un ejemplo en relación al caso de estudio de DreamHome. En forma análoga a la figura 3.1, represente los elementos del modelo relación en un esquema de tablas que usted diseñe.

Elabore una tabla, similar a la figura 3.2, de los dominios que se requerirán para una relación Persona (cedula, nombres, apellidos, dirección, sexo, teléfono, provincia, ciudad, estado civil, profesión)

Repase los conceptos matemáticos de las relaciones matemáticas, puede asumir los conjuntos D1= {1,2,3,5,7,11} y D2 = {13,17}

Busque en Internet o cualquier otro recursos bibliográfico un ejemplo de base de datos relaciona compuesta, similar a la presentada en el punto 3.2.6, y señale cuales son las claves relacionales que usted puede determinar.

3.3. restricciones de integridad. En esta sección se exponen los fundamentos de las restricciones de integridad relacionales; se exponen las distintas restricciones que existen: restricciones de dominio, reglas de integridad, integridad de entidad e integridad referencial, así como las restricciones generales. Una vez haya encontrado un ejemplo de base de datos analice si se cumplen las restricciones de integridad relacionales.


[editar] Capitulo 4: Algebra Relacional y Calculo Relacional


[editar] Datos Generales:

Texto BaseConnolly, Tohomas. Begg, Carolyn. Sistemas de bases de datos: un enfoque práctico para diseño, implementación y gestión. 4ta edición. Pearson Addison Wesley. Madrid, España. 2005
Capítulo4. Algebra relacional y cálculo relacional
Páginas79 – 100
Horas de estudio empleadas para el desarrollo del contenido8 horas

[editar] Propositos:


El propósito de este capítulo es dar conocimiento a los participantes de la manera para construir consultas en álgebra relacional, cálculo relacional de triplas, cálculo relacional de dominios; además se adquirirá habilidades en la manipulación de datos a través de las estructuras de DML:

[editar] Conceptos Clave:


  • Algebra relacional:

    El Algebra relacional es un lenguaje de consulta procedural. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación, por lo tanto, es posible anidar y combinar operadores. Hay ocho operadores en el álgebra relacional que construyen relaciones y manipulan datos, estos son:

Imagen:Tablaoperadoresdelalgebrarelacional.jpg

Las operaciones de proyección, producto, unión, diferencia, y selección son llamadas primitivas, puesto que las otras tres se pueden definir en términos de estas.

Se hace necesario en este punto incluir un modelo de datos de ejemplo en el cual trabajar para generar ejemplos de comandos y operadores. Para este efecto se incluye un modelo básico de administración de RadioTaxis. El Gráfico que se presenta a continuación representa el Modelo conceptual (Modelo Lógico) o Diagrama de Entidad-Relación:


Imagen:Esquemaderelacion.jpg

Los Esquemas de relaciones que se pueden construir a partir de este modelo son los siguientes:

Dueño {rut, nombre, teléfono, dirección, vigencia}

Chofer {rut, nombre, teléfono, dirección, fecha_licencia_desde, fecha_licencia_hasta, vigencia}

Vale {correlativo, hora_desde, hora_hasta, metraje_total, tarifa_total}

Móvil {patente, rut_dueño, rut_chofer, marca, modelo, año}

Viaje {correlativo_vale, patente_movil, Hora_Desde, hora_hasta, origen, destino, tarifa, metraje}

Selección.

El operador de selección opta por tuplas que satisfagan cierto predicado, se utiliza la letra griega sigma minúscula (σ) para señalar la selección. El predicado aparece como subíndice de σ. La Relación que constituye el argumento se da entre paréntesis después de la σ.

Proyección.

La operación de proyección permite quitar ciertos atributos de la relación, esta operación es unaria, copiando su relación base dada como argumento y quitando ciertas columnas, La proyección se señala con la letra griega pi mayúscula (π). Como subíndice de π se coloca una lista de todos los atributos que se desea aparezcan en el resultado. La relación argumento se escribe después de π entre paréntesis.

Producto.

En álgebra relacional el producto de dos relaciones A y B es:

A Veces B o A X B

Produce el conjunto de todas las tuplas t tales que t es el encadenamiento de una tupla a perteneciente a A y de una b que pertenece a B. se utiliza el símbolo X para representar el producto.


Ejemplos:
Dueño × Movil
Movil × Chofer
Unión.
En álgebra relacional la unión de dos relaciones compatibles1 A y B es:
A UNION B o A ∪ B

Produce el conjunto de todas las tuplas que pertenecen ya sea a A o a B o a Ambas. Al igual que en teoría de conjuntos el símbolo ∪ representa aquí la unión de dos relaciones.

1. Relaciones Compatibles: En el álgebra relacional la compatibilidad se aplica a las operaciones de Unión, Intersección y Diferencia. Cada operación requiere dos relaciones que deben ser compatibles, esto significa que deben ser del mismo grado, n, y el i-ésimo atributo de cada una (i= 1, 2...n) se debe basar en el mismo dominio.

Intersección.

En álgebra relacional la intersección de dos relaciones compatibles A y B

A INTERSECCION B o A ∩ B

Produce el conjunto de todas las tuplas pertenecientes a A y B. Al igual que en teoría de conjuntos el símbolo ∩ representa aquí la intersección entre dos relaciones.

Diferencia

En álgebra relacional la diferencia entre dos relaciones compatibles A y B
A MENOS B o A – B
Produce el conjunto de todas las tuplas t que pertenecen a A y no pertenecen a B.

Join o Reunión

 :En álgebra relacional el JOIN entre el atributo X de la relación A con el atributo Y de la relación B produce el conjunto de todas las tuplas t tal que t es el encadenamiento de una tupla a perteneciente a A y una tupla b perteneciente a B que cumplen con el predicado “A.X comp B.Y es verdadero” (siendo comp un operador relacional y los atributos A.X y B.Y pertenecientes al mismo dominio). Si el operador relacional “comp” es “=” entonces el conjunto resultante es un EQUI-JOIN. Si se quita uno de éstos (usando una proyección) entonces el resultado es un JOIN-NATURAL.

División

En álgebra relacional el operador de división divide la relación A con grado m + n por la relación B entregando como resultado una relación con grado m. El atributo m + i de A y el atributo i de B deben estar definidos dentro del mismo dominio. Así el resultado de

A DIVIDIDO POR B o A / B

produce la relación C con un sólo atributo X, tal que cada valor de x de C.X aparece como un valor de A.X, y el par de valores (x, y) aparece en A para todos los valores y que aparecen en B.

  • Cálculo relacional de tuplas.:

    El cálculo relacional de tuplas describe la información deseada sin dar un procedimiento específico para obtenerla. Las consultas en el cálculo relacional de tuplas se expresan como

{ t | P(t)},

es decir, son el conjunto de tuplas t tales que se cumple el predicado P para cada t. Siguiendo la misma notación, se utiliza t[A] para el valor de la tupla t en el atributo A.

Si sólo se desea obtener un atributo de la tupla, se utiliza el constructor “Existe” de la lógica matemática. Así, si lo que se desea es el Nombre de los dueños de taxis que estén vigentes:

“Conjunto de todas las tuplas t tales que existe una tupla s en la relación Dueño para la que los valores de t y de s son iguales en el atributo Nombre y el valor de s para el atributo vigencia = ‘S’ “.

La variable de tupla t se define sólo en el atributo Nombre, puesto que éste es el único atributo para el que se especifica una condición para t. Así, el resultado es una relación sobre (Nombre).

Si lo que se desea es obtener las tarifas de todos los viajes que ha efectuado todos los móviles de marca “chevrolet”, la consulta requiere de dos cláusulas “Existe” conectadas por el operador de conjunción lógica “y”.

Que se lee como el conjunto de todas las tuplas(tarifa) correspondientes a los viajes que han hecho todos los móviles de marca “chevrolet”. Considérese ahora la consulta “obtener todos los RUT de los dueños de móviles, cuyos móviles no hayan efectuado nunca un viaje”:

que ocupa la cláusula “Existe” para exigir que el dueño posea un móvil y la cláusula “no existe” para eliminar a aquellos móviles que tengan viajes realizados.

La consulta que se presenta a continuación utiliza la implicación, la fórmula “P implica Q” significa que “si P es verdad entonces Q debe ser verdad”, se introduce el constructor “para todo”. Se desea Selecciona todos los autos a cuyos choferes les caduca la licencia el “01/01/1999”.

Que es equivalente al ejemplo dado en la diferencia del álgebra relacional

Definición Formal.

Una expresión del cálculo relacional de tuplas es de la forma:

{t|P(t)} donde P es una fórmula. En una fórmula pueden aparecer varias variables de tuplas. Se dice que una variable de tupla es una variable libre a menos que este cuantificada por un ∃ o por un ∀ que entonces se dice variable ligada.

Una fórmula en el cálculo relacional de tuplas se compone de átomos. Un átomo tiene una de las siguientes formas:

  • s ⊂ r, donde s es una variable de tupla y r es una relación. No se permite la operación ⊆.
  • s[x] Θ u[y], donde s y u son variables de tuplas, x e y son atributos sobre los que están definidos s y u respectivamente, y Θ es un operador de comparación (<, <=, =, <>, >, >=). Se requiere que los atributos x e y tengan dominios cuyos miembros puedan compararse por medio de Θ.

  • s[x] Θ c, donde s es una variable de tupla, x es una atributo sobre el que s esta definida, Θ es un operador de comparación, y c es una constante en el dominio del atributo x.

Ahora bien, Las fórmulas se construyen a partir de átomos usando las siguientes reglas:

1. Un átomo es una fórmula.
2. Si P1 es una fórmula, entonces también lo son ¬P1 y (P1).
3. Si P1 y P2 son fórmulas, entonces también lo son P1∨P2, P1∧P2 y P1⇒P2.
4. Si P1(s) es una fórmula que contiene una variable de tupla libre s y r es una relación, entonces:
∃ s ⊂ r (P1(s)) y ∀ s ⊂ r (P1(s))

También son fórmulas.

Seguridad de expresiones.

Una expresión del cálculo relacional de tuplas puede generar relaciones infinitas. Si por ejemplo se utiliza la construcción {t | ¬(t ⊂ Dueño)} hay infinitas tuplas de personas que no son dueños de algún móvil, de hecho la mayoría de estas tuplas ni siquiera pertenecen a la base de datos.

Para ayudar a definir las ligaduras del cálculo relacional de tuplas se introduce el concepto de dominio de fórmulas. De forma intuitiva, el dominio de la fórmula P (dom(p)) es el conjunto de todos los valores a los que P hace referencia. Esto incluye a todos los valores mencionados en P como todos los valores que aparezcan en las relaciones referenciadas por P.

Se dice que una expresión {t|P(t)} es segura si todos los valores que aparecen en el resultado son valores del dominio de P.

Potencia expresiva de los lenguajes.

El cálculo relacional de tuplas restringido a expresiones seguras es equivalente en potencia expresiva al álgebra relacional. Por lo tanto, para cada expresión del álgebra relacional hay una expresión equivalente en el cálculo relacional de tuplas y viceversa. La demostración de este hecho queda fuera de los alcances de este trabajo, una prueba formal de la equivalencia entre el cálculo relacional de tuplas y el álgebra relacional propuesta por E.F. Codd se puede encontrar en [Codd71].

[editar] Esquema de Estudio:


A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que cada estudiante estima que necesita tutoría y realizar anotaciones personales.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
4.1. El algebra relacional El algebra relaciona es un lenguaje teórico con operaciones que se aplican a una o más relaciones, con el fin de definir otra relación sin modificar las relaciones originales.

El álgebra relacional es un lenguaje de manipulación de una relación (o conjunto) cada vez, en la que todas las tuplas, posiblemente obtenidas a través de varias relaciones, se manifiestan mediante una instrucción, sin que existan bucles.

Las operaciones de selección y proyección son operaciones unarias, ya que operan sobre una única relación. Las otras operaciones se aplican a parejas de relaciones y se denominan, por tanto, operaciones binarias

Tomando como base la Figura 4.1, de la ilustración que muestra la función de las operaciones del álgebra relacional, estudiar gráficamente lo que significa cada operación; las regiones sombreadas son la información que se obtendrá como resultado de aplicar la operación.

Repasar el resumen del apartado 4.1.6 pensando en los problemas de obtención de datos que se pueden resolver con cada operación señalada.

Selección Operación unaria. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Seleccionar los empleados que tienen un salario entre 15.000 y 20.000 y que son de sexo femenino.
Proyección Operación unaria. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Presentar una lista de empleados con solamente con códigos y salario.
Unión Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Mostrar el número de clientes que hayan visto una propiedad o se hayan registrado.
Diferencia Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome Mostrar cuales es el personal de staff que no tiene registros con clientes.
Intersección Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Presentar el personal de staff que ha realizado registros.
Producto Cartesiano Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Revistar si el producto cartesiano 4.7 y 4.8 contiene todas las posibles combinaciones.
Combinación Theta Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Describir la tabla resultante del ejemplo 4.7
Combinación natural Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. ¿Cuál es el requerimiento que se debe cumplir para obtener un producto natural?
Semicombinación Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Enumerar los detalles completos de todo los que clientes han visitado propiedades y opinan que la propiedad es demasiado pequena (“too small”)
División Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Señale un ejemplo de aplicación de esta operación, tomando como base el esquema de base de datos de la figura 3.3
Operaciones de agregación Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Obtenga el promedio, máximo, mínimo número de habitaciones que tienen las propiedades para la renta.
Operaciones de agrupamiento Operaciones de conjuntos. Los datos están en la figura 3.3 Instancia de la base de datos de DreamHome. Obtenga el promedio, máximo, mínimo número de habitaciones que tienen las propiedades para la renta, agrupado por ciudad
4.1. El cálculo relacional En las expresiones del álgebra relacional siempre se especifica de forma explícita un cierto orden y por tanto una estrategia, En el cálculo relacional no existe una descripción.

Las consultas de cálculo relacional especifican qué hay que extraer, en lugar de cómo extraerlo.

Leer el apartado, cualquier inquietud, exponerla en el foro del Entorno Virtual de Aprendizaje
Cálculo relacional de tuplas En el cálculo relacional de tuplas, lo que nos interesa es localizar las tuplas para las que un cierto predicado sea verdadero.

Una variables tupla toma sus valores en una determinada relación.

Seleccionar los ejemplos 4.14 de cálculo relacional de tuplas y transformarlos a álgebra relacional. ¿Qué le resulta más sencillo?
Cálculo relacional de dominios En el cálculo relacional de dominios, las variables toman sus valores de dominios de atributos, en lugar de tomarlos de tuplas de alguna relación. Seleccionar los ejemplos 4.14 de cálculo relacional de tuplas y resolverlos con cálculo relacional de dominios ¿Qué le resulta más sencillo?


[editar] Capitulo 5: Manipulacion de Datos



[editar] Datos Generales:

Texto BaseConnolly, Tohomas. Begg, Carolyn. Sistemas de bases de datos: un enfoque práctico para diseño, implementación y gestión. 4ta edición. Pearson Addison Wesley. Madrid, España. 2005
Capítulo5. Manipulación de datos
Páginas101 – 140
Horas de estudio empleadas para el desarrollo del contenido8 horas

[editar] Propositos:


El propósito de este capítulo es introducir en el conocimiento del SQL (Structured Query Language) y nos centraremos en la manera de construir instrucciones SQL con las cláusulas WHERE, ORDER BY, Funciones de agregación, cláusula GROUP BY, subconsultas; y Se aprenderá a realizar actualizaciones en la base de datos mediante las instrucciones de DML: Insert, Update y Delete.

[editar] Conceptos Clave:


  • El Lenguaje SQL:

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

IBM desarrolló un nuevo prototipo llamado System R en 1977. System R implementó un amplio subconjunto de SEQUEL/2 (now SQL) y un número de cambios que se le hicieron a (now SQL) durante el proyecto. System R se instaló en un número de puestos de usuario, tanto internos en IBM como en algunos clientes seleccionados. Gracias al éxito y aceptación de System R en los mismos, IBM inició el desarrollo de productos comerciales que implementaban el lenguaje SQL basado en la tecnología System R.

Durante los años siguientes, IBM y bastantes otros vendedores anunciaron productos SQL tales como SQL/DS (IBM), DB2 (IBM), ORACLE (Oracle Corp.), DG/SQL (Data General Corp.), y SYBASE (Sybase Inc.).

SQL es también un estándar oficial hoy. En 1982, la American National Standards Institute (ANSI) encargó a su Comité de Bases de Datos X3H2 el desarrollo de una propuesta de lenguaje relacional estándar. Esta propuesta fue ratificada en 1986 y consistía básicamente en el dialecto de IBM de SQL. En 1987, este estándar ANSI fue también aceptado por la Organización Internacional de Estandarización (ISO). Esta versión estándar original de SQL recibió informalmente el nombre de “SQL/86”. En 1989, el estándar original fue extendido, y recibió el nuevo nombre, también informal, de “SQL/89”. También en 1989 se desarrolló un estándar relacionado llamado Database Language Embedded SQL (ESQL).

Los comités ISO y ANSI han estado trabajando durante muchos años en la definición de una versión muy ampliada del estándar original, llamado informalmente SQL2 o SQL/92. Esta versión se convirtió en un estándar ratificado durante 1992: International Standard ISO/IEC 9075:1992, Database Language SQL. SQL/92 es la versión a la que normalmente la gente se refiere cuando habla de «SQL estándar». Se da una descripción detallada de SQL/92 en Date and Darween, 1997. En el momento de escribir este documento, se está desarrollando un nuevo estándar denominado informalmente como SQL3. Se plantea hacer de SQL un lenguaje de alcance completo (e Turing-complete language), es decir, serán posibles todas las consultas computables, (por ejemplo consultas recursivas). Esta es una tarea muy compleja y por ello no se debe esperar la finalización del nuevo estándar antes de 1999.

  • La base de datos de proveedores y artículos:

    Como mencionamos antes, SQL es un lenguaje relacional. Esto quiere decir que se basa en el modelo de datos relacional publicado inicialmente por E.F.Codd en 1970. Daremos una descripción formal del modelo de datos relacional adelante, primero lo haremos desde un punto de vista más intuitivo.

Una base de datos relacional es una base de datos que se percibe por los usuarios como una colección de tablas (y nada más que tablas). Una tabla consiste en filas y columnas, en las que cada fila representa un registro, y cada columna representa un atributo del registro contenido en la tabla. La base de datos de proveedores y artículos, muestra un ejemplo de base de datos consistente en tres tablas.

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

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

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

La Base de Datos de Proveedores y Artículos

Imagen:Basededatpsdearticulosyproveedores.jpg

Las tablas PART y SUPPLIER se pueden ver como entidades y SELLS se puede ver como una relación entre un artículo particular y un proveedor particular. Como veremos más tarde, SQL opera en las tablas tal como han sido definidas, pero antes de ello estudiaremos la teoría del modelo relacional.

Como en el caso de los más modernos lenguajes relacionales, SQL está basado en el cálculo relacional de tuplas. Como resultado, toda consulta formulada utilizando el cálculo relacional de tuplas (o su equivalente, el álgebra relacional) se pude formular también utilizando SQL.

Hay, sin embargo, capacidades que van más allá del cálculo o del álgebra relaciona. Aquí tenemos una lista de algunas características proporcionadas por SQL que no forman parte del álgebra y cálculo relacionales:

  • Comandos para inserción, borrado o modificación de datos.
  • Capacidades aritméticas: En SQL es posible incluir operaciones aritméticas así como comparaciones, por ejemplo A < B + 3. Nótese que ni + ni otros operadores aritméticos aparecían en el álgebra relacional ni en cálculo relacional.

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

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

Instrucción de consultas: SELECT

El comando más usado en SQL es la instrucción SELECT, que se utiliza para recuperar datos. La sintaxis es:

SELECT [ALL|DISTINCT]
{ * | expr_1 [AS c_alias_1] [, ...
[, expr_k [AS c_alias_k]]]}
FROM table_name_1 [t_alias_1]
[, ... [, table_name_n [t_alias_n]]]
[WHERE condition]
[GROUP BY name_of_attr_i
[,... [, name_of_attr_j]] [HAVING condition]]
[{UNION [ALL] | INTERSECT | EXCEPT} SELECT ...]
[ORDER BY name_of_attr_i [ASC|DESC]
[, ... [, name_of_attr_j [ASC|DESC]]]];

Ilustraremos ahora la compleja sintaxis de la instrucción SELECT con varios ejemplos. Las tablas utilizadas para los ejemplos se definen en: la base de datos de proveedores y artículos

Select sencillas

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

Query sencilla con cualificación

Para recuperar todas las tuplas de la tabla PART donde el atributo PRICE es mayor que 10, formularemos la siguiente consulta:

SELECT * FROM PART
WHERE PRICE > 10;

y obtenemos la siguiente tabla:

             PNO |  PNAME      |  PRICE
            -----+-------------+-------- 
              3  |  Cerrojos   |   15
              4  |  Levas      |   25

Utilizando “*” en la instrucción SELECT solicitaremos todos los atributos de la tabla. Si queremos recuperar sólo los atributos PNAME y PRICE de la tabla PART utilizaremos la instrucción:

SELECT PNAME, PRICE
FROM PART
WHERE PRICE > 10;

En este caso el resultado es:

            PNAME      |  PRICE
           ------------+--------
            Cerrojos   |   15
            Levas      |   25

Nótese que la SELECT SQL corresponde a la “proyección” en álgebra relaciona, no a la “selección” (vea el capítulo anterior para más detalles).

Las cualificaciones en la clausula WHERE pueden también conectarse lógicamente utilizando las palabras claves OR, AND, y NOT:

SELECT PNAME, PRICE
FROM PART
WHERE PNAME = ‘Cerrojos’ AND
(PRICE = 0 OR PRICE < 15);

dará como resultado:

      PNAME      |  PRICE
     ------------+--------
      Cerrojos   |   15

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

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

y obtenemos:

        PNAME      |  DOUBLE
       ------------+---------
        Tornillos  |    20
        Tuercas    |    16
        Cerrojos   |    30

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

Enlaces - Joins

El siguiente ejemplo muestra como las joins (cruces) se realizan en SQL.

Para cruzar tres tablas SUPPLIER, PART y SELLS a través de sus atributos comunes, formularemos la siguiente instrucción:

SELECT S.SNAME, P.PNAME
FROM SUPPLIER S, PART P, SELLS SE
WHERE S.SNO = SE.SNO AND
P.PNO = SE.PNO;

y obtendremos la siguiente tabla como resultado:

      SNAME | PNAME
     -------+-------
      Smith | Tornillos
      Smith | Tuercas
      Jones | Leva 
      Adams | Tornillos
      Adams | Cerrojos
      Blake | Tuercas
      Blake | Cerrojos
      Blake | Levas

En la clausula FROM hemos introducido un alias al nombre para cada relación porque hay atributos con nombre común (SNO y PNO) en las relaciones. Ahora podemos distinguir entre los atributos con nombre común simplificando la adicción de un prefijo al nombre del atributo con el nombre del alias seguido de un punto. La join se calcula de la misma forma, tal como se muestra en una join interna (inner join). Primero el producto cartesiano: SUPPLIER × PART × SELLS Ahora seleccionamos únicamente aquellas tuplas que satisfagan las condiciones dadas en la clausula WHERE (es decir, los atributos con nombre común deben ser iguales). Finalmente eliminamos las columnas repetidas (S.SNAME, P.PNAME).

Operadores Agregados

SQL proporciona operadores agregados (como son AVG, COUNT, SUM, MIN, MAX) que toman el nombre de un atributo como argumento. El valor del operador agregado se calcula sobre todos los valores de la columna especificada en la tabla completa. Si se especifican grupos en la consulta, el cálculo se hace sólo sobre los valores de cada grupo (vean la siguiente sección).

Aggregates

Si queremos conocer el coste promedio de todos los artículos de la tabla PART, utilizaremos la siguiente consulta:

SELECT AVG(PRICE) AS AVG_PRICE
FROM PART;

El resultado es:

                       AVG_PRICE
                       -----------
                          14.5

Si queremos conocer cuantos artículos se recogen en la tabla PART, utilizaremos la instrucción:

SELECT COUNT(PNO)
FROM PART;

y obtendremos:

                          COUNT
                         -------
                            4

Agregación por Grupos

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

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

Agregados

Si queremos conocer cuántos artículos han sido vendidos por cada proveedor formularemos la consulta:

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


y obtendremos:

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

Demos ahora una mirada a lo que está ocurriendo aquí. Primero, la join de las tablas SUPPLIER y SELLS:

                 S.SNO | S.SNAME | SE.PNO
                -------+---------+--------
                   1   |  Smith  |   1
                   1   |  Smith  |   2
                   2   |  Jones  |   4
                   3   |  Adams  |   1
                   3   |  Adams  |   3
                   4   |  Blake  |   2
                   4   |  Blake  |   3
                   4   |  Blake  |   4

Ahora particionamos las tuplas en grupos reuniendo todas las tuplas que tiene el mismo atributo en S.SNO y S.SNAME:

                 S.SNO | S.SNAME | SE.PNO
                -------+---------+--------
                   1   |  Smith  |   1
                                 |   2
                --------------------------
                   2   |  Jones  |   4
                --------------------------
                   3   |  Adams  |   1
                                 |   3
                --------------------------
                   4   |  Blake  |   2
                                 |   3
                                 |   4

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

Having

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

Si queremos solamente los proveedores que venden más de un artículo, utilizaremos la consulta:

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

y obtendremos:

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

Subconsultas

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

Ejemplo Subselect

Si queremos conocer los artículos que tienen mayor precio que el artículo llamado ‘Tornillos’, utilizaremos la consulta:

SELECT *
FROM PART
WHERE PRICE > (SELECT PRICE FROM PART
WHERE PNAME=’Tornillos’);

El resultado será:

                  PNO |  PNAME      |  PRICE
                 -----+-------------+--------
                   3  |  Cerrojos   |   15
                   4  |  Levas      |   25

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

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

En nuestro ejemplo, obtendremos un resultado vacío, porque cada proveedor vende al menos un artículo. Nótese que utilizamos S.SNO de la SELECT externa en la clausula WHERE de la SELECT interna. Como hemos descrito antes, la subconsulta se evalúa para cada tupla de la consulta externa, es decir, el valor de S.SNO se toma siempre de la tupla actual de la SELECT externa.

Unión, Intersección, Excepción

Estas operaciones calculan la unión, la intersección y la diferencia de la teoría de conjuntos de las tuplas derivadas de dos subconsultas.

Ejemplo Union, Intersect, Except

La siguiente consulta es un ejemplo de UNION:

SELECT S.SNO, S.SNAME, S.CITY
FROM SUPPLIER S
WHERE S.SNAME = ‘Jones’
UNION
SELECT S.SNO, S.SNAME, S.CITY
FROM SUPPLIER S
WHERE S.SNAME = ‘Adams’;

Dará el resultado:

                    SNO | SNAME |  CITY
                   -----+-------+--------
                     2  | Jones | Paris
                     3  | Adams | Vienna

Aquí tenemos un ejemplo para INTERSECT:

SELECT S.SNO, S.SNAME, S.CITY
FROM SUPPLIER S
WHERE S.SNO > 1
INTERSECT
SELECT S.SNO, S.SNAME, S.CITY
FROM SUPPLIER S
WHERE S.SNO > 2;

que dará como resultado:

                    SNO | SNAME |  CITY
                   -----+-------+--------
                     2  | Jones | Paris

La única tupla devuelta por ambas partes de la consulta es la única que tiene $SNO=2$.

Finalmente, un ejemplo de EXCEPT:

SELECT S.SNO, S.SNAME, S.CITY
FROM SUPPLIER S
WHERE S.SNO > 1
EXCEPT
SELECT S.SNO, S.SNAME, S.CITY
FROM SUPPLIER S
WHERE S.SNO > 3;

que dará como resultado:

                    SNO | SNAME |  CITY
                   -----+-------+--------
                     2  | Jones | Paris
                     3  | Adams | Vienna


Actualizaciones de la base de datos

Insert Into

Una vez que se crea una tabla, puede ser llenada con tuplas mediante el comando INSERT INTO. La sintaxis es:

INSERT INTO table_name (name_of_attr_1
[, name_of_attr_2 [,...]])
VALUES (val_attr_1
[, val_attr_2 [, ...]]);

Continuaremos utilizando la base de datos de proveedores y artículos, para insertar la primera tupla en la relación SUPPLIER utilizamos la siguiente instrucción:

INSERT INTO SUPPLIER (SNO, SNAME, CITY)
VALUES (1, ‘Smith’, ‘London’);

Para insertar la primera tupla en la relación SELLS, utilizamos:

INSERT INTO SELLS (SNO, PNO)
VALUES (1, 1);

Update

Para cambiar uno o más valores de atributos de tuplas en una relación, se utiliza el comando UPDATE. La sintaxis es:

UPDATE table_name
SET name_of_attr_1 = value_1
[, ... [, name_of_attr_k = value_k]]
WHERE condition;

Para cambiar el valor del atributo PRICE en el artículo ‘Tornillos’ de la relación PART, utilizamos:

UPDATE PART
SET PRICE = 15
WHERE PNAME = ‘Tornillos’;

El nuevo valor del atributo PRICE de la tupla cuyo nombre es ‘Tornillos’ es ahora 15.

Delete

Para borrar una tupla de una tabla particular, utilizamos el comando DELETE FROM. La sintaxis es:

DELETE FROM table_name
WHERE condition;

Para borrar el proveedor llamado ‘Smith’ de la tabla SUPPLIER, utilizamos la siguiente instrucción:

DELETE FROM SUPPLIER
WHERE SNAME = ‘Smith’;

[editar] Esquema de Estudio:


A continuación se detallan los temas que se deben desarrollar, una descripción general del mismo, y un conjunto de actividades que se recomienda sean desarrolladas para una mejor asimilación de los conceptos. Se han dispuesto las tres columnas de la derecha para llevar un control personal del tiempo de dedicación a cada tema, marcar las actividades que cada estudiante estima que necesita tutoría y realizar anotaciones personales.

Tema a revisar Descripción del Contenido a revisar Actividades Recomendadas Planificación Personal del estudio (fecha) ¿Requiero Tutorial? Anotaciones
5.1. Introducción a SQL En este apartado se fundamenta el desarrollo histórico que ha tenido el SQL, se analiza la importancia, la estandarización de este sublenguaje Lectura del apartado 5.1. y hacer un resumen de los aspectos más relevantes.
5.2. Escritura de comandos SQL Recomendaciones para una buena escritura de SQL Estudiar las recomendaciones que se hacen.
5.3. Manipulación de Datos Se analizan la instrucción SELECT y sus cláusulas: WHERE para filtrar información, ORDER BY para hacer ordenamientos de datos y GROUP BY para agrupar datos, Así como funciones de agrupamiento.

La segunda parte tiene que ver con las instrucciones DML: INSERT, UPDATE, DELETE.

Revisar las consultas del texto base y las que se señalan en esta guía; interactuar vía campus virtual con el resto de compañeros; le propongo que plantee consultas “difíciles” para resolverlas juntos.



[editar] Capitulo 6: Definicion de Datos



[editar] Datos Generales:

Texto BaseConnolly, Tohomas. Begg, Carolyn. Sistemas de bases de datos: un enfoque práctico para diseño, implementación y gestión. 4ta edición. Pearson Addison Wesley. Madrid, España. 2005
Capítulo6 Definición de Datos
Páginas141 – 177
Horas de estudio empleadas para el desarrollo del contenido8 horas

[editar] Propositos:


El propósito de este capítulo es adquirir habilidades de definición de datos: tipos de datos soportados por el estándar SQL, mejoras en la integridad en SQL, la manera de definir restricciones de integridad utilizando SQL con instrucciones CREATE y ALTER, administración de vistas, administración de seguridad con GRANT y REVOKE.

[editar] Conceptos Clave:


  • Descripción de tipos de datos en Oracle:

Es conveniente conocer los tipos de datos concretos de una base de datos comercial, por ejemplo de Oracle, a continuación se detallas los tipos de datos que se utilizan en este producto:

VARCHAR2(size) Variable-length character data
CHAR(size) Fixed-length character data
NUMBER(p,s) Variable-length numeric data
DATE Date and time values
LONG Variable-length character data up to 2 gigabytes
CLOB Character data up to 4 gigabytes
RAW and LONG RAW Raw binary data
BLOB Binary data up to 4 gigabytes
BFILE Binary data stored in an external file; up to 4 gigabytes
ROWID Hexadecimal string representing the unique address of a row in its table
TIMESTAMP Date with fractional seconds
INTERVAL YEAR TO MONTH Stored as an interval of years and months
INTERVA DAY TO SECOND Stored as an interval of days to hours minutes and seconds
La especificación de estos tipos de datos Timestamp son:
TIMESTAMP[(fractional_seconds_precision)]
TIMESTAMP[(fractional_seconds_precision)]WITH TIME ZONE
TIMESTAMP[(fractional_seconds_precision)] WITH LOCAL TIME ZONE
INTERVAL YEAR [(year_precision)] TO MONTH
Ejemplos:
INTERVAL ‘312-2’ YEAR(3) TO MONTH
Indica un intervalo de 312 años y 2 meses
INTERVAL ‘312’ YEAR(3)
Indica un intervalo de 312 años y 0 meses
INTERVAL ‘300’ MONTH(3)
Indica un intervalo de 300 meses
  • Funciones en Oracle:
Imagen:Funcionesenoracle.jpg
Funciones de Caracter:
Imagen:Funcionesdecaracter.jpg
Function Result
LOWER(‘SQL Course’) sql course
UPPER(‘SQL Course’) SQL COURSE
INITCAP(‘SQL Course’) Sql Course
CONCAT(‘Hello’, ‘World’) HelloWorld
SUBSTR(‘HelloWorld’,1,5) Hello
LENGTH(‘HelloWorld’) 10
INSTR(‘HelloWorld’, ‘W’) 6
LPAD(salary,10,’*’) *****24000
RPAD(salary, 10, ‘*’) 24000*****
TRIM(‘H’ FROM ‘HelloWorld’) elloWorld
  • Funciones Numericas:
ROUND(45.926, 2) 45.93 Redondea a la cantidad especificada en el segundo argumento
TRUNC(45.926, 2) 45.92 Trunca las cifras en función de segundo parámetro
MOD(1600, 300) 100 Módulo de la división entera
Ejemplo de Round en Oracle
SELECT ROUND (45.923,2),ROUND(45.923,0),
ROUND(45.923,-1)
FROM DUAL;
ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
45.92 46 50
Ejemplo de TRUNC en Oracle
SELECT TRUNC (45.923,2),TRUNC(45.923,0),
TRUNC(45.923,-1)
FROM DUAL;
ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
45.92 45 0
  • Funciones de tipo fecha
MONTHS_BETWEEN Número de meses entre dos fechas-
ADD_MONTHS Agrega un mes calendario a la fecha
NEXT_DAY Siguiente día a partir de la fecha especificada
LAST_DAY Último día del mes
ROUND Redondeo de fecha
TRUNC Truncamiento de fecha
Ejemplos, se asume SYSDATE = ‘25-JUL-95’:
MONTHS_BETWEEN (‘01-SEP-95’,’11-JAN-94’) 19.6774194
ADD_MONTHS (‘11-JAN-94’,6) ‘11-JUL-94’
NEXT_DAY (‘01-SEP-95’,’FRIDAY’) ‘08-SEP-95’
LAST_DAY(‘01-FEB-95’) ‘28-FEB-95’
ROUND(SYSDATE,’MONTH’) 01-AUG-95
ROUND(SYSDATE ,’YEAR’) 01-JAN-96
TRUNC(SYSDATE ,’MONTH’) 01-JUL-95
TRUNC(SYSDATE ,’YEAR’) 01-JAN-95
NVL2 (expr1, expr2, expr3): Si primer argumento es nulo, se devuelve argumento dos, caso contrario tercer argumento.
NULLIF (expr1, expr2): la function devuelve nulo si los argumentos tienen el mismo valor.

COALESCE (expr1, expr2, ..., exprn): se evalúa el primer argumento, si es nulo, el segundo, si este también es nulo, se evalúa el resto de argumentos, hasta en encontrar un no nulo.

Función CASE
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END


Ejemplo:
SELECT last_name, job_id, salary,
CASE job_id WHEN ‘IT_PROG’ THEN 1.10*salary
WHEN ‘ST_CLERK’ THEN 1.15*salary
WHEN ‘SA_REP’ THEN 1.20*salary
ELSE salary END “REVISED_SALARY”
FROM employees;


Función DECODE
DECODE(col|expression, search1, result1
[, search2, result2,...,]
[, default])


Ejemplo:
SELECT last_name, job_id, salary,
DECODE(job_id, ‘IT_PROG’, 1.10*salary,
‘ST_CLERK’, 1.15*salary,
‘SA_REP’, 1.20*salary,
salary) REVISED_SALARY
FROM employees;
  • Definición de Datos
El lenguaje SQL incluye un conjunto de comandos para definición de datos.
  • Create Table

El comando fundamental para definir datos es el que crea una nueva relación (una nueva tabla). La sintaxis del comando CREATE TABLE es:

CREATE TABLE table_name
(name_of_attr_1 type_of_attr_1
[, name_of_attr_2 type_of_attr_2
[, ...]]);
Ejemplo creación de una tabla

Para crear las tablas definidas en la base de datos de proveedores y artículos, presentada en el capítulo anterior, se utilizaron las siguientes instrucciones de SQL:

CREATE TABLE SUPPLIER
(SNO INTEGER,
SNAME VARCHAR(20),
CITY VARCHAR(20));
CREATE TABLE PART
(PNO INTEGER,
PNAME VARCHAR(20),
PRICE DECIMAL(4 , 2));
CREATE TABLE SELLS
(SNO INTEGER,
PNO INTEGER);
  • Tipos de Datos en SQL

A continuación sigue una lista de algunos tipos de datos soportados por SQL:

  • INTEGER: entero binario con signo de palabra completa (31 bits de precisión).
  • SMALLINT: entero binario con signo de media palabra (15 bits de precisión).
  • DECIMAL (p[,q]): número decimal con signo de p dígitos de precisión, asumiendo q a la derecha para el punto decimal. (15 ≥ p ≥ qq ≥ 0). Si q se omite, se asume que vale 0.

  • FLOAT: numérico con signo de doble palabra y coma flotante.
  • CHAR(n): cadena de caracteres de longitud fija, de longitud n.
  • VARCHAR(n): cadena de caracteres de longitud variable, de longitud máxima n.
  • Create Index

Se utilizan los índices para acelerar el acceso a una relación. Si una relación R tiene un índice en el atributo A podremos recuperar todas la tuplas t que tienen t(A) = a en un tiempo aproximadamente proporcional al número de tales tuplas t más que en un tiempo proporcional al tamaño de R.

Para crear un índice en SQL se utiliza el comando CREATE INDEX. La sintaxis es:

CREATE INDEX index_name
ON table_name ( name_of_attribute );

Ejemplo Create Index

Para crear un índice llamado I sobre el atributo SNAME de la relación SUPPLIER, utilizaremos la siguiente instrucción:

CREATE INDEX I
ON SUPPLIER (SNAME);

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

  • Create View

Se puede ver una vista como una tabla virtual, es decir, una tabla que no existe físicamente en la base de datos, pero aparece al usuario como si existiese. Por contra, cuando hablamos de una tabla base, hay realmente un equivalente almacenado para cada fila en la tabla en algún sitio del almacenamiento físico.

Las vistas no tienen datos almacenados propios, distinguibles y físicamente almacenados. En su lugar, el sistema almacena la definición de la vista (es decir, las reglas para acceder a las tablas base físicamente almacenadas para materializar la vista) en algún lugar de los catálogos del sistema.

En SQL se utiliza el comando CREATE VIEW para definir una vista. La sintaxis es:

CREATE VIEW view_name
AS select_stmt

Donde select_stmt es una instrucción select válida, como se definió en la instrucción SELECT, capítulo anterior; Nótese que select_stmt no se ejecuta cuando se crea la vista. Simplemente se almacena en los catálogos del sistema y se ejecuta cada vez que se realiza una consulta contra la vista.

Sea la siguiente definición de una vista (utilizamos de nuevo las tablas de la base de datos de proveedores y artículos):

CREATE VIEW London_Suppliers
AS SELECT S.SNAME, P.PNAME
FROM SUPPLIER S, PART P, SELLS SE
WHERE S.SNO = SE.SNO AND
P.PNO = SE.PNO AND
S.CITY = ‘London’;

Ahora podemos utilizar esta relación virtual London_Suppliers como si se tratase de otra tabla base:

SELECT *
FROM London_Suppliers
WHERE P.PNAME = ‘Tornillos’;

Lo cual nos devolverá la siguiente tabla:

                      SNAME | PNAME
                     -------+----------
                      Smith | Tornillos

Para calcular este resultado, el sistema de base de datos ha realizado previamente un acceso oculto a las tablas de la base SUPPLIER, SELLS y PART. Hace esto ejecutando la consulta dada en la definición de la vista contra aquellas tablas base. Tras eso, las cualificaciones adicionales (dadas en la consulta contra la vista) se podrán aplicar para obtener la tabla resultante.

Drop Table, Drop Index, Drop View

Se utiliza el comando DROP TABLE para eliminar una tabla (incluyendo todas las tuplas almacenadas en ella):

DROP TABLE table_name;

Para eliminar la tabla SUPPLIER, utilizaremos la instrucción:

DROP TABLE SUPPLIER;

Se utiliza el comando DROP INDEX para eliminar un índice:

DROP INDEX index_name;

Finalmente, eliminaremos una vista dada utilizando el comando DROP VIEW:

DROP VIEW view_name;

Catálogo de Sistemas o Diccionario de Datos

En todo sistema de base de datos SQL se emplean catálogos de sistema para mantener el control de qué tablas, vistas, índices, etc están definidas en la base de datos. Estos catálogos del sistema se pueden investigar como si de cualquier otra relación normal se tratase. Por ejemplo, hay un catálogo utilizado para la definición de vistas. Este catálogo almacena la consulta de la definición de la vista. Siempre que se hace una consulta contra la vista, el sistema toma primero la consulta de definición de la vista del catálogo y materializa la vista antes de proceder con la consulta del usuario.

Ejemplos de Constraints de Integridad

Constraint de unicidad UNIQUE

CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
CONSTRAINT emp_email_uk UNIQUE(email));

Constraint de clave primaria PRIMARY KEY y de Obligatoriedad NOT NULL

CREATE TABLE departments(
department_id NUMBER(4),
department_name VARCHAR2(30) CONSTRAINT dept_name_nn NOT NULL,
manager_id NUMBER(6),
location_id NUMBER(4),
CONSTRAINT dept_id_pk PRIMARY KEY(department_id));

Constraint de clave foranea FOREIGN KEY

CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
department_id NUMBER(4),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id), CONSTRAINT emp_email_uk UNIQUE(email));

Constraint de chequeo CHECK

..., salary NUMBER(2) CONSTRAINT emp_salary_min CHECK (salary > 0),...

Modificación de constraints, sintaxis

ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);

Ejemplo:

ALTER TABLE employees
ADD CONSTRAINT emp_manager_fk
FOREIGN KEY(manager_id) REFERENCES employees(employee_id);

Para borrar un constraint

ALTER TABLE employees
DROP CONSTRAINT emp_manager_fk;

Para deshabilitar y habilitar una constraint:

ALTER TABLE employees
DISABLE CONSTRAINT emp_emp_id_pk CASCADE;
ALTER TABLE employees
ENABLE CONSTRAINT emp_emp_id_pk;

Se puede utilizar las cláusulas CASCADE CONSTRAINTS, para generar borrados en cascada:

ALTER TABLE test1
DROP (pk) CASCADE CONSTRAINTS;
ALTER TABLE test1
DROP (pk, fk, col1) CASCADE CONSTRAINTS;


Privilegios y Seguridad

Imagen:Privilegiosyseguridad.jpg

  • Creación de Usuarios
CREATE USER user IDENTIFIED BY password;
Ejemplo de creación de usuario:
CREATE USER scott IDENTIFIED BY tiger;
Para cambiar el password de un usuario se usa el commando ALTER USER, ejemplo:
ALTER USER scott IDENTIFIED BY lion;
  • Privilegios del sistema
GRANT privilege [, privilege...] TO user [, user| role, PUBLIC...];
Ejemplo:
GRANT create session, create table, create sequence, create view TO scott;
  • Privilegios