home

CONSEPTOS BASICOS DE BASE DE DATOS (SQL) Unidad I.  1. FUNDAMENTOS DE BASES DE DATOS El alumno determinará los requerimientos de información para establecer el alcance de la base de datos. 1.1. Conceptos básicos Identificar los Objetivos de los Sistemas de Base de Datos, Modelos de Base de Datos (relacional, jerárquico, orientado a objetos y de red), Terminología de Base de datos, Principios y Actores en BD. 1.2. Análisis de requerimientos de base de datos Identificar las técnicas de recolección de datos (observación, entrevista, cuestionarios), clasificación de datos y estructura básica de datos

Unidad II.

2. MODELO ENTIDAD-RELACIÓN (E-R) El alumno realizará el modelo E-R y el modelo Entidad Relación Extendido (EE-R) para diseñar un esquema de la base de datos, de acuerdo a los requerimientos establecidos. 2.1. Modelo de datos Entidad-Relación Describir los conceptos, función y representación de: - Entidades, Relaciones, Atributos (clasificación y conjuntos). - Restricciones de asignación (De entidad, Cordialidad, participación) y Claves. Identificar el modelo Entidad-Relación. 2.2. Modelo Entidad-Relación Extendido Describir los conceptos, función y representación de: - subclase - superclase - herencia - especialización – generalización. 1.1 conceptos básicos 1.-FUNDAMENTOS DE BASES DE DATOS. Una base de datos es un conjunto de información estructurada en //registros// y   Almacenada en un soporte electrónico legible desde un ordenador. Cada registró constituye una unidad autónoma de información que puede estar a su vez estructurada en diferentes //campos// o tipos de datos que se recogen en dicha base de datos. Por ejemplo, en un directorio de miembros de una asociación, un registro será la ficha completa de cada uno de los socios. En cada registro se recogerán determinados datos, como el nombre, la profesión, la dirección o el teléfono, cada uno de los cuáles constituye un campo.

Modelos de Base de Datos (Relacional, Jerárquico, Orientado a objetos y de Red), El modelo jerárquico. Estructura. Relaciones padre-hijo. Propiedades del esquema. Arboles. Estructura de almacenamiento. Tipos de acceso. Integridad y seguridad del modelo. Definición completa de una base de datos jerárquica. El modelo de red. Estructura. Registros. Campos y datos. Tipos y ocurrencias de sets. Limitantes de membrecía (de inserción, retención y ordenamiento). Representaciones de ocurrencias. Set singular. Set de miembros múltiples. Set recursivo. El modelo relacional. Conceptos básicos. Dominios, atributos, tulpas, relaciones, atributos llave, llaves foráneas. Algebra relacional. Operaciones. Cálculo relacional, Vistas. Esquema de base de datos relacional. Regla de unicidad. Regla de integridad referencial. Normalización. Modelo entidad-relación. Atributos y entidades. Valores y dominios de los atributos. Tipos de entidades. Atributos llave. Tipos de relación. Instancias de relaciones. Restricciones estructurales. Entidad débil. Representación del modelo mediante diagramas. Generalización y especialización. Agregación. Conversión de los diagramas en tablas. Diseño relacional. Requerimientos y análisis. Diseño conceptual. Esquema conceptual. Diseño lógico. Diseño físico e implantación. Problemas de redundancia. Valores nulos. Dependencias funcionales. Reglas de inferencia. Formas normales: primera, segunda, tercera, interpretación de la tercera forma normal, forma normal de Boyce-Codd. Proceso de normalización. Algoritmos de descomposición. Otros tipos de dependencias y formas normales. Dependencias multivaluadas. Modelos alternativos. Modelo orientado a objetos: tipos abstractos de datos, herencia, identidad de objetos, modelado de datos y estrategias de diseño, persistencia, métodos especiales de acceso, consideraciones de seguridad. Bases de datos heterogéneas: tecnología para interoperabilidad, esquemas, renombramiento, consultas, resolución de conflictos, optimización de consultas globales Bases de datos relacionales: Una base de datos relacional es una [|base de datos] que cumple con el [|modelo relacional], el cual es el modelo más utilizado en la actualidad para implementar bases de datos ya planificadas. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y a través de dichas conexiones relacionar los datos de ambas tablas, de ahí proviene su nombre: "Modelo Relacional". Una base de datos relacional es un conjunto de una o más tablas estructuradas en registros (líneas) y campos (columnas), que se vinculan entre sí por un campo en común, en ambos casos posee las mismas características como por ejemplo el nombre de campo, tipo y longitud; a este campo generalmente se le denomina ID, identificador o clave. A esta manera de construir [|bases de datos] se le denomina modelo relacional. Las bases de datos relacionales se basan en el uso de tablas (también se las llama relaciones). Las tablas se representan gráficamente como una estructura rectangular formada por filas y columnas. Cada columna almacena información sobre una propiedad determinada de la tabla (se le llama también atributo), nombre, DNI, apellidos, edad,....  Cada fila posee una ocurrencia o ejemplar de la instancia o relación representada por latabla (a las filas se las llama también tuplas).

Terminologíarelacional:


 * Tupla. Cada fila de la tabla (cada ejemplar que la tabla representa)
 * Atributo. Cada columna de la tabla
 * Grado. Número de atributos de la tabla
 * Cardinalidad. Número de tuplas de una tabla
 * Dominio. Conjunto válido de valores representables por un atributo

Tablas Las bases de datos relacionales se basan en el uso de tablas (también se las llama relaciones). Las tablas se representan gráficamente como una estructura rectangular formada por filas y columnas. Cada columna almacena información sobre una propiedad determinada de la tabla (se le llama también atributo), nombre, DNI, apellidos, edad,.... Cada fila posee una ocurrencia o ejemplar de la instancia o relación representada por la tabla (a las filas se las llama también duplas).

Tipos de tablas:

Dominios Los dominios suponen una gran mejora en este modelo ya que permiten especificar losPosibles valores válidos para un atributo. Cada dominio incorpora su nombre y una definición del mismo. Ejemplos de dominio: <span style="color: #0070c0; font-family: "Maiandra GD","sans-serif"; font-size: 16px;">􀂀 <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> Dirección: 50 caracteres <span style="color: #0070c0; font-family: "Maiandra GD","sans-serif"; font-size: 16px;">􀂀 <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> Nacionalidad: Español, Francés, Italiano,...  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los dominios pueden ser también compuestos a partir de otros (año, mes y día = fecha) <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">Claves
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Persistentes. Sólo pueden ser borradas por los usuarios:
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Base. Independientes, se crean indicando su estructura y sus ejemplares.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Vistas. Son tablas que sólo almacenan una definición de consulta, resultado dela cual se produce una tabla cuyos datos proceden de las bases o de otras vistase instantáneas. Si los datos de las tablas base cambian, los de la vista que utilizaesos datos también cambia.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Instantáneas. Son vistas (creadas de la misma forma) que sí que almacenanlos datos que muestra, además de la consulta que dio lugar a esa vista. Sólomodifican su resultado (actualizan los datos) siendo refrescadas por el sistema cada cierto tiempo.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Temporales. Son tablas que se eliminan automáticamente por el sistema. Puedenser de cualquiera de los tipos anterior

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Clave candidata <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Conjunto de atributos de una tabla que identifican unívocamente cada tupla de la tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Clave primaria <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Clave candidata que se escoge como identificador de las tuplas. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Clave alternativa <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cualquier clave candidata que no sea primaria <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Clave externa o secundaria <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Atributo de una tabla relacionado con una clave de otra tabla.

Bases de datos jerárquicas: En este modelo los datos se organizan en una forma similar a un árbol (visto al revés), en donde un nodo padre de información puede tener varios hijos. El nodo que no tiene padres es llamado raíz, y a los nodos que no tienen hijos se los conoce como hojas. Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento. Una de las principales limitaciones de este modelo es su incapacidad de representar eficientemente la redundancia de datos

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">Bases de datos orientadas a objetos:

Este modelo, bastante reciente, y propio de los modelos informáticos orientados a objetos, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). Una base de datos orientada a objetos es una base de datos que incorpora todos los conceptos importantes del paradigma de objetos: Encapsulación - Propiedad que permite ocultar la información al resto de los objetos, impidiendo así accesos incorrectos o conflictos. Herencia - Propiedad a través de la cual los objetos heredan comportamiento dentro de una jerarquía de clases. Polimorfismo - Propiedad de una operación mediante la cual puede ser aplicada a distintos tipos de objetos. En bases de datos orientadas a objetos, los usuarios pueden definir operaciones sobre los datos como parte de la definición de la base de datos. Una operación (llamada función) se especifica en dos partes. La interfaz (o signatura) de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos (o parámetros). La implementación (o método) de la operación se especifica separadamente y puede modificarse sin afectar la interfaz. Los programas de aplicación de los usuarios pueden operar sobre los datos invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la forma en la que se han implementado. Esto podría denominarse independencia entre programas y operaciones. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">Base de datos de red Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerárquico). Fue una gran mejora con respecto al modelo jerárquico, ya que ofrecía una solución eficiente al problema de redundancia de datos; pero, aun así, la dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores más que por usuarios finales.

Componentes de bases de Datos terminológicas: Como hemos visto en el primer curso del Módulo de terminología (Principios básicos), los traductores suelen tener en el "concepto" la entidad en la que basan sus bases de datos terminológicas. En otras palabras, utilizan una perspectiva orientada a conceptos (onomasiológica). Al diseñar bases de datos terminológicas, hay dos componentes que hay que tener en cuenta especialmente: 1. Elementos de los datos terminológicos 2. Las categorías de los datos terminológicos __ Los elementos de los datos terminológicos __ son las unidades más pequeñas con significado propio. De acuerdo con las normas ISO, un elemento de datos puede ser definido como "la porción de un registro más pequeña identificable utilizada para describir o representar datos terminológicos o lexicográficos". Una clase de elementos de datos terminológicos del mismo tipo se conoce como categoría de datos terminológicos. La ISO __ La categoría de datos __ se define como un "tipo de elemento de datos terminológicos/lexicográficos definido unívocamente, utilizado para describir datos terminológicos o lexicográficos". En relación a unas bases de datos terminológicas, esto significa que las categorías de datos vienen implementadas como campos en las bases de datos, p.ej. GÉNERO, y que la especificación o contenido de un campo es un elemento de datos, p.ej. MASCULINO y FEMENINO (elementos de datos en la categoríade datos "GÉNERO"). Actores sobre bases de datos Los actores o personas relacionadas a las bases de datos son: * Administrador de bases de datos (ABD). * Diseñador de bases de datos. * Usuario final: es aquella persona cuyo trabajo requiere acceder a la base de datos ya sea para consultarla, actualizarla y/o generar informes. * Analista de sistemas y programador de aplicaciones. 1.2. Análisis de requerimientos de base de datos Identificar las técnicas de recolección de datos (observación, entrevista, cuestionarios), clasificación de datos y estructura básica de datos Análisis de requerimientos de base de datos * Consiste en especificar lo que se requiere que haga el sistema o la aplicación. * Permite que las personas observen los elementos lógicos separados de los componentes físicos. Después de lo cual se podrá desarrollar un modelo físico eficiente para la situación donde será utilizado. Técnicas de Recolección de Datos La recolección de [|__datos__] se refiere al uso de una gran diversidad de [|__técnicas__] y [|__herramientas__] que pueden ser utilizadas por el analista para desarrollar los [|__sistemas__] de [|__información__], los cuales pueden ser la [|__entrevistas__] , la [|__encuesta__] , el [|__cuestionario__] , la [|__observación__] , el [|__diagrama de flujo__] y el [|__diccionario__] de datos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Recabar datos mediante la Entrevista <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La entrevista es una forma de conversación, no de interrogación, al analizar las características de los sistemas con personal seleccionado cuidadosamente por sus conocimientos sobre el sistema, los analistas pueden conocer datos que no están disponibles en ningún otra forma <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La estructura de la entrevista varía. Si el objetivo de la entrevista radica en adquirir información general, es conveniente elaborar una serie de pregunta sin estructura, con una sesión de preguntas y respuesta libres <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las entrevistas estructuradas utilizan pregunta estandarizada. El formato de respuestas para las preguntas pueden ser abierto o cerrado; las preguntas para respuestas abierta permiten a los entrevistados dar cualquier respuesta que parezca apropiado. Pueden contestar por completo con sus propias palabras. Con las preguntas para respuesta cerradas se proporcionan al usuario un conjunto de respuesta que se pueda seleccionar. Todas las personas que respondes se basan en un mismo conjunto de posibles respuestas. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los analistas también deben dividir el tiempo entre desarrollar preguntas para entrevistas y analizar respuesta. La entrevista no estructurada no requiere menos tiempos de preparación, porque no necesita tener por anticipado las palabras precisas de las preguntas. Analizar las respuestas después de la entrevista lleva más tiempo que con la entrevista estructuradas. El mayor costo radica en la preparación, administración y análisis de las entrevistas estructuradas para pregunta cerradas <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para los analistas los cuestionarios pueden ser la única forma posible de relacionarse con un gran número de personas para conocer varios aspectos del sistema. Cuando se llevan a cabo largos estudios en varios departamentos, se puede distribuir los cuestionarios a todas las personas apropiadas para recabar hechos en relación al sistema. En mayor parte de los casos, el analista no verá a los que responde; no obstante, también esto es una ventaja porque aplican muchas entrevista ayuda a asegurar que el interpelado cuenta con mayor anonimato y puedan darse respuestas más honesta (y menos respuestas pre hechas o estereotipadas). También las preguntas estandarizadas pueden proporcionar datos más confiables. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El desarrollo y distribución de los cuestionarios; por lo tanto, el tiempo invertido en esto debe utilizarse en una forma inteligente. También es importante el formato y contenido de las preguntas en la recopilación de hechos significativos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Existen dos formas de cuestionarios para recabar datos: //cuestionarios abiertos y cerrados//, y se aplican dependiendo de si los analistas conocen de antemano todas las posibles respuestas de las preguntas y pueden incluirlas. Con frecuencia se utilizan ambas formas en los estudios de sistemas. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Clasificación y estructura básica de Datos <span style="font-family: "Calibri","sans-serif"; font-size: 21.33px;">. Clasificación de datos El Reglamento de medidas de seguridad establece que los datos de carácter personal recogidos y tratados en ficheros, informatizados o manuales, pueden clasificarse en tres niveles: básico, medio y alto, atendiendo a la mayor o menor necesidad de garantizar la confidencialidad y la integridad de la información. Estos son los datos que corresponden a cada uno de esos tres niveles, de acuerdo con las definiciones especificadas en el propio Reglamento: • Nivel Básico: Todos los ficheros que contengan datos de carácter personal deberán adoptar las medidas de seguridad calificadas como de nivel básico. • Nivel Medio: Los ficheros que contengan datos relativos a la comisión de infracciones administrativas o penales, Hacienda Pública, servicios financieros y aquellos ficheros cuyo funcionamiento se rija por el artículo 28 de la Ley Orgánica 5/1992, deberán reunir, además de las medidas de nivel básico, las calificadas como de nivel medio. Cuando los ficheros contengan un conjunto de datos de carácter personal suficientes que permitan obtener una evaluación de la personalidad del individuo deberán garantizar las medidas de nivel medio. • Nivel Alto: Los ficheros que contengan datos de ideología, religión, creencias, origen racial, salud o vida sexual así como los que contengan datos recabados para fines policiales sin consentimiento de las personas afectadas deberán reunir, además de las medidas de nivel básico y medio, las calificadas como de nivel alto. Estructura básica de datos v <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">Datos Los datos son símbolos que describen condiciones, hechos, situaciones o valores. Los datos se caracterizan por no contener ninguna información. Un dato puede significar un número, una letra, un signo ortográfico o cualquier símbolo que represente una cantidad, una medida, una palabra o una descripción. La importancia de los datos está en su capacidad de asociarse dentro de un contexto para convertirse en información. Por si mismos los datos no tienen capacidad de comunicar un significado y por tanto no pueden afectar el comportamiento de quien los recibe. Para ser útiles, los datos deben convertirse en información para ofrecer un significado, conocimiento, ideas o conclusiones. v <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Información La información es un conjunto organizado de datos procesados, que constituyen un mensaje que cambia el estado de conocimiento del sujeto o sistema que recibe dicho mensaje. v <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Archivos Un archivo o fichero informático es un conjunto de bits almacenados en un dispositivo periférico. Un archivo es identificado por un nombre y la descripción de la carpeta o directorio que lo contiene. Los archivos informáticos se llaman así porque son los equivalentes digitales de los archivos en tarjetas, papel o microfichas del entorno de oficina tradicional. Los archivos informáticos facilitan una manera de organizar los recursos usados para almacenar...   2. MODELO ENTIDAD-RELACIÓN (E-R) El alumno realizará el modelo E-R y el modelo Entidad Relación Extendido (EE-R) para diseñar un esquema de la base de datos, de acuerdo a los requerimientos establecidos.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La entrevista: Las entrevistas se utilizan para recabar información en forma verbal, a través de preguntas que propone el analista. Quienes responden pueden ser gerentes o empleados, los cuales son usuarios actuales del sistema existente, usuarios potenciales del sistema propuesto o aquellos que proporcionarán datos o serán afectados por la aplicación propuesta. El analista puede entrevistar al personal en forma individual o en grupos algunos analistas prefieren este método a las otras técnicas que se estudiarán más adelante. Sin embargo, las entrevistas no siempre son la mejor fuente de datos de aplicación.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Preparación de la Entrevista
 * 1) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">1. Determinar la posición que ocupa de la organización el futuro entrevistado, sus responsabilidades básicas, actividades, etc. (Investigación).
 * 2) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">2. Preparar las preguntas que van a plantearse, y los documentos necesarios (Organización).
 * 3) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">3. Fijar un límite de tiempo y preparar la agenda para la entrevista. (Sicología).
 * 4) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">4. Elegir un lugar donde se puede conducir la entrevista con la mayor comodidad (Sicología).
 * 5) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">5. Hacer la cita con la debida anticipación (Planeación).
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Conducción de la Entrevista
 * 1) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">1. Explicar con toda amplitud el propósito y alcance del estudio (Honestidad).
 * 2) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">2. Explicar la función propietaria como analista y la función que se espera conferir al entrevistado. (Imparcialidad).
 * 3) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">3. Hacer preguntas específicas para obtener respuestas cuantitativas (Hechos).
 * 4) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">4. Evitar las preguntas que exijan opiniones interesadas, subjetividad y actitudes similares (habilidad).
 * 5) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">5. Evitar el cuchicheo y las frases carentes de sentido (Claridad).
 * 6) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">6. Ser cortés y comedio, absteniéndose de emitir juicios de valores. (Objetividad).
 * 7) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">7. Conservar el control de la entrevista, evitando las divagaciones y los comentarios al margen de la cuestión.
 * 8) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">8. Escuchar atentamente lo que se dice, guardándose de anticiparse a las respuestas (Comunicación).
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Secuela de la Entrevista
 * 1) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">1. Escribir los resultados (Documentación).
 * 2) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">2. Entregar una copia al entrevistado, solicitando su conformación, correcciones o adiciones. (Profesionalismo).
 * 3) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">3. Archivar los resultados de la entrevista para referencia y análisis posteriores (Documentación).
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Determinación del tipo de Entrevista
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La observación es una actividad realizada por un ser vivo (como un <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|ser humano] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">), que detecta y asimila la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|información] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de un <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|hecho] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, o el registro de los datos utilizando los sentidos como instrumentos principales. El término también puede referirse a cualquier <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|dato] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> recogido durante esta actividad.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Preparación para la observación
 * 1) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">1. Determinar y definir aquella que va a observarse.
 * 2) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">2. Estimular el tiempo necesario de observación.
 * 3) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">3. Obtener la autorización de la gerencia para llevar a cabo la observación.
 * 4) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">4. Explicar a las personas que van a ser observadas lo que se va a hacer y las razones para ello.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Conducción de la observación
 * 1) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">1. Familiarizarse con los componentes físicos del área inmediata de observación.
 * 2) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">2. Mientras se observa, medir el tiempo en forma periódica.
 * 3) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">3. Anotar lo que se observa lo más específicamente posible, evitando las generalidades y las descripciones vagas.
 * 4) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">4. Si se está en contacto con las personas observadas, es necesario abstenerse de hacer comentarios cualitativos o que impliquen un juicio de valores.
 * 5) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">5. Observar las reglas de cortesía y seguridad.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Secuela de la observación
 * 1) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">1. Documentar y organizar formalmente las notas, impresionistas, etc.
 * 2) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">2. Revisar los resultados y conclusiones junto con la persona observada, el supervisar inmediato y posiblemente otro de sistemas.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El cuestionario:Otra técnica útil para el analista en su progreso de investigación, consiste en observar a las personas cuando efectúan su trabajo. Como técnica de investigación, la observación tiene amplia aceptación científica. Los sociólogos, sicólogos e ingenieros industriales utilizan extensamente ésta técnica con el fin de estudiar a las personas en sus actividades de grupo y como miembros de la organización. El propósito de la organización es múltiple: permite al analista determinar que se está haciendo, como se está haciendo, quien lo hace, cuando se lleva a cabo, cuanto tiempo toma, dónde se hace y por qué se hace.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Recabación de datos mediante cuestionarios
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Selección de formas para cuestionarios

(A veces denominado por sus siglas, E-R "Entity relationship", o, "DER" Diagrama de Entidad Relación) es una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información así como sus interrelaciones y propiedades. 1. Se elabora el diagrama (o diagramas) entidad-relación. 2. Se completa el modelo con listas de atributos y una descripción de otras restricciones que no se pueden reflejar en el diagrama. 2.1. Modelo de datos Entidad-Relación Describir los conceptos, función y representación de: - Entidades, Relaciones, Atributos (clasificación y conjuntos). - Restricciones de asignación (De entidad, Cardinalidad, participación) y Claves. Identificar el modelo Entidad-Relación. Transformaciones de entidades fuertes En principio las entidades fuertes del modelo Entidad Relación son transformadas almodelo relacional siguiendo estas instrucciones: <span style="color: #0070c0; font-family: "Maiandra GD","sans-serif"; font-size: 16px;">􀂀 Entidades. Las entidades pasan a ser tablas <span style="color: #0070c0; font-family: "Maiandra GD","sans-serif"; font-size: 16px;">􀂀 Atributos. Los atributos pasan a ser columnas. <span style="color: #0070c0; font-family: "Maiandra GD","sans-serif"; font-size: 16px;">􀂀 Identificadores principales. Pasan a ser claves primarias <span style="color: #0070c0; font-family: "Maiandra GD","sans-serif"; font-size: 16px;">􀂀 Identificadores candidatos. Pasan a ser claves candidatas. Entidad Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, se diferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o una misma entidad. Algunos Ejemplos: Una persona. (Se diferencia de cualquier otra persona, incluso siendo gemelos). Un automóvil. (Aunque sean de la misma marca, el mismo modelo,..., tendrán atributos diferentes, por ejemplo, el número de bastidor). Una casa (Aunque sea exactamente igual a otra, aún se diferenciará en su dirección). Una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa, etc. (entidad concreta); o un objeto con existencia conceptual como: un puesto de trabajo, una asignatura de clases, un nombre, etc. (entidad abstracta). Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, la entidad Persona puede llevar consigo las características: Nombre, Apellido, Género, Estatura, Peso, Fecha de nacimiento, etc...   Describe cierta dependencia entre entidades o permite la asociación de las mismas. Es la asociación entre dos entidades referida a un nombre. Una relación es binaria, en el sentido que es siempre una asociación entre exactamente dos entidades, o entre una entidad y ella misma. Representación gráfica * Una relación se representa mediante una línea que une dos recuadros de entidades o recursivamente une un recuadro de entidad consigo misma. * Cada relación tiene dos extremos para cada uno de los cuales tiene - nombre, - grado\cardinalidad (cuántos -uno, muchos-), - opcionalidad (obligatorio u opcional). Ejemplo: Dadas dos entidades "Habitación 502" y "Mark Henry Johnson Mcfly Bogard", es posible relacionar que la   Habitación 502 se encuentra ocupada por el huésped de nombre Mark. Una relación tiene sentido al expresar las entidades que relaciona. En el ejemplo anterior, un huésped (entidad), se aloja (relación) en una habitación (entidad). Los atributos son las características que definen o identifican a una entidad. Estas pueden ser muchas, y el diseñador solo utiliza o implementa las que considere más relevantes. Los atributos son las propiedades que describen a cada entidad en un conjunto de entidades. En un conjunto de entidades, cada entidad tiene valores específicos asignados para cada uno de Sus atributos, de esta forma, es posible su identificación unívoca. Un atributo es cualquier detalle que sirve para calificar, identificar, clasificar, cuantificar o expresar el estado de una entidad; o cualquier descripción de una característica de importancia Un atributo puede ser un texto, un color, un dibujo, un sentimiento, etc., según se requiera. Ejemplos: A la colección de entidades «alumnos», con el siguiente conjunto de atributos en común, (id, nombre, edad, semestre), pertenecen las entidades: (1, Sofía, 38 años, 2) (2, Josefa, 19 años, 5) (3, Carlos, 20 años, 2) Cada una de las entidades pertenecientes a este conjunto se diferencia de las demás por el valor de sus atributos. Nótese que dos o más entidades diferentes pueden tener los mismos valores para algunos de sus atributos, pero nunca para todos. En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Por ejemplo, el atributo identificativo que distingue a un alumno de otro es su número de id. Para cada atributo, existe un dominio del mismo, este hace referencia al tipo de datos que será almacenado o a restricciones en los valores que el atributo puede tomar (cadenas de caracteres, números, solo dos letras, solo números mayores que cero, solo números enteros...). Cuando algún atributo correspondiente a una entidad no tiene un valor determinado, recibe el valor nulo, bien sea porque no se conoce, porque no existe o porque no se sabe nada al respecto del mismo. REPRECENTACION DE ATRIBUTOS Para representar un atributo hay que escribir su nombre en singular, en minúsculas y de forma opcional.
 * <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">ENTIDAD
 * <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">RELACION
 * <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">ATRIBUTOS

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.73px;">Conjunto de relaciones
Consiste en una colección, o conjunto, de relaciones de la misma naturaleza. Ejemplo: Dados los conjuntos de entidades "Habitación" y "Huésped", todas las relaciones de la forma habitación-huésped, permiten obtener la información de los huéspedes y sus respectivas habitaciones. La dependencia o asociación entre los conjuntos de entidades es llamada participación. En el ejemplo anterior los conjuntos de entidades "Habitación" y "Huésped" participan en el conjunto de relaciones habitación-huésped. Se llama grado del conjunto de relaciones a la cantidad de conjuntos de entidades participantes en la relación. Correspondencia de cardinalidades Dado un conjunto de relaciones en el que participan dos o más conjuntos de entidades, la correspondencia de cardinalidad indica el número de entidades con las que puede estar relacionada una entidad dada. Dado un conjunto de relaciones binarias y los conjuntos de entidades A y B, la correspondencia de cardinalidades puede ser: Cordialidad: Simplemente la forma en que se relacionan las Entidades, o expresa cuantas entidades se relacionan con otras entidades. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Uno a Uno: Una entidad de A se relaciona únicamente con una entidad en B y viceversa (ejemplo relación vehículo - matrícula: cada vehículo tiene una única matrícula, y cada matrícula está asociada a un único vehículo). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Uno a varios: Una entidad en A se relaciona con cero o muchas entidades en B. Pero una entidad en B se relaciona con una única entidad en A (ejemplo vendedor - ventas). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Varios a Uno: Una entidad en A se relaciona exclusivamente con una entidad en B. Pero una entidad en B se puede relacionar con 0 o muchas entidades en A (ejemplo empleado-centro de trabajo). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Varios a Varios: Una entidad en A se puede relacionar con 0 o muchas entidades en B y viceversa (ejemplo asociaciones- ciudadanos, donde muchos ciudadanos pueden pertenecer a una misma asociación, y cada ciudadano puede pertenecer a muchas asociaciones distintas).

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Representación gráfica <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">* Una relación se representa mediante una línea que une dos recuadros de entidades o recursivamente une un recuadro de entidad consigo misma. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">* Cada relación tiene dos extremos para cada uno de los cuales tiene <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">- nombre, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">- grado\cardinalidad (cuántos -uno, muchos-), <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">- opcionalidad (obligatorio u opcional)

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">Restricciones de participación
Dado un conjunto de relaciones R en el cual participa un conjunto de entidades A, dicha participación puede ser de dos tipos: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Total: Cuando cada entidad en A participa en al menos una relación de R.  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Parcial: Cuando al menos una entidad en A NO participa en alguna relación de R.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">Claves:
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Es un subconjunto del conjunto de atributos comunes en una colección de entidades, que permite identificar unívocamente cada una de las entidades pertenecientes a dicha colección. Asimismo, permiten distinguir entre sí las relaciones de un conjunto de relaciones. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Dentro de los conjuntos de entidades existen los siguientes tipos de claves: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los valores de los atributos de una clave, no pueden ser todos iguales para dos o más instancias. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para poder distinguir unívocamente las relaciones en un conjunto de relaciones R, se deben considerar dos casos: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Si el conjunto de relaciones, R, sobre las que se pretende determinar la clave primaria está compuesto de relaciones binarias, con los conjuntos de entidades participantes A y B, se consideran los siguientes casos, según sus cordialidades: Diagrama entidad-relación Anteriormente detallamos los conceptos relacionados al modelo ER, en esta sección profundizaremos encomo representarlos gráficamente. Cabe destacar que para todo proceso de modelado, siempre hay que tener en claro los conceptos, estos nos brindan conocimiento necesario y además fundamentan nuestro modelo almomento de presentarlo a terceros.Formalmente, los diagramas ER son un lenguaje gráfico para describir conceptos. Informalmente, son simplesdibujos o gráficos que describen información que trata un sistema de información y el software que loautomatiza .EntidadLas entidades son el fundamento del modelo entidad relación. Podemos adoptar como definición de entidadcualquier cosa o parte del mundo que es distinguible del resto. Por ejemplo, en un sistema bancario, laspersonas y las cuentas bancarias se podrían interpretar como entidades. Las entidades pueden representar entes concretos, como una persona o un avión, o abstractas, como por ejemplo un préstamo o una reserva.Se representan por medio de un rectángulo. AtributoSe representan mediante un círculo o elipse etiquetado mediante un nombre en su interior. Cuando un atributoes identificativo de la entidad se suele subrayar dicha etiqueta Asociación:conexión que se establece entreuna, dos o más entidades y se materializadisponiendo atributos específicos de lasentidades involucradas como una unidad aparte.Por ejemplo, un empleado de la empresa serelaciona con un departamento de la misma, a través del concepto “Adscrito a” y esta relaciónse materializa en un nuevo elemento del modelode datos que se forma a partir del código delempleado y el código del departamento.
 * Súper clave: Es un subconjunto de atributos que permite distinguir unívocamente cada una de las entidades de un conjunto de entidades. Si se añade un atributo al anterior subconjunto, el resultado seguirá siendo una súper clave.
 * Clave candidata: Dada una súper clave, si ésta deja de serlo quitando únicamente uno de los atributos que la componen, entonces ésta es una clave candidata.
 * Clave primaria: Es una clave candidata, elegida por el diseñador de la base de datos, para identificar unívocamente las entidades en un conjunto de entidades.
 * R NO tiene atributos asociados: En este caso, se usa como clave primaria de R la unión de las claves primarias de todos los conjuntos de entidades participantes.
 * R tiene atributos asociados: En este caso, se usa como clave primaria de R la unión de los atributos asociados y las claves primarias de todos los conjuntos de entidades participantes.
 * R es de muchos a uno de A a B entonces sólo se toma la clave primaria de A, como clave primaria de R.
 * R es de uno a muchos de A a B entonces se toma sólo la clave primaria de B, como clave primaria de R.
 * R es de uno a uno de A a B entonces se toma cualquiera de las dos claves primarias, como clave primaria de R.
 * R es de muchos a muchos de A a B entonces se toma la unión de los atributos que conforman las claves primarias de A y de B, como clave primaria de R.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">Relaciones
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Se representan mediante un rombo etiquetado en su interior con un verbo. Este rombo se debe unir mediante líneas con las entidades (rectángulos) que relaciona, para así saber cuál es la relación que lleva cada uno. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo de un Diagrama Entidad-Relación correspondiente a clientes y prestamos

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Diagrama entidad-relación <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Veremos ahora con mayor detalle los diagramas entidad-relación o diagramasE-R que se presentaron en el tema 1.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los diagramas E-R se representan usando los siguientes componentes:

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">2.2. Modelo Entidad-Relación Extendido Describir los conceptos, función y representación de: - subclase - superclase - herencia - especialización - generalización <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El Modelo Entidad-Relación Extendido incluye todos los conceptos del Entidad-Relación e incorpora los conceptos de Subclase y superclase con los conceptos asociados de Especialización y Generalización. Otro nuevo concepto incluido por el ERE es el de Categoría. Asociado a estos conceptos está el importante mecanismo de Herencia de atributos. Habrá que tener en cuenta que no existe una terminología estandarizada para estos conceptos, por lo que usaremos la más difundida.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En el modelo Entidad-Relación, una entidad agrupa un conjunto de ocurrencias de entidad del mismo tipo. En muchos casos, estas ocurrencias se pueden agrupar a su vez en otros subconjuntos que tienen un significado propio para los propósitos de la Base de Datos y, por tanto, deberían representarse de forma explícita. Por ejemplo, la entidad <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">EMPLEADO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> puede a su vez subdividirse en <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">SECRETARIA, INGENIERO, JEFE, TÉCNICO, ASALARIADO, SUBCONTRATADO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, etc. El conjunto de ocurrencias de entidad en cada una de estas entidades será un subconjunto de las ocurrencias de entidad de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">EMPLEADO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, ya que por ejemplo, un ingeniero también es un empleado. Llamaremos a cadauno de estos subconjuntos Subclases de la entidad <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">EMPLEADO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> y a <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">EMPLEADO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> una Superclase de cada uno de estos subconjuntos. Llamaremos a la relación existente entre las Superclases y las Subclases como relación Clase/Subclase. En el ejemplo anterior, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">EMPLEADO/SECRETARIA y EMPLEADO/TÉCNICO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> son dos relaciones Clase/Subclase. Hay que tener en cuenta que una ocurrencia de una Subclase representa el mismo objeto real que alguna correspondiente a su Superclase, por ejemplo la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">SECRETARIA <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> "Concha Leco" será también la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">EMPLEADO" <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> Concha Leco". Por tanto, la ocurrencia de Subclase es la misma que en la Superclase pero con un role específico. Una ocurrencia de Subclase no tienen sentido si no es a su vez ocurrencia de Superclase. Por otro lado, una ocurrencia de superclase puede ser a su vez ocurrencia de varias subclases o de ninguna. Por ejemplo, "Roberto Mate" como ocurrencia de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">EMPLEADO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">puede a su vez pertenecer a subclases <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">INGENIERO y ASALARIADO. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">Especialización <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un conjunto de entidades puede incluir subgrupos de entidades que son <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Similares entre sí. Cada subgrupo se diferencia en algo de los otros. Por ejemplo, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Considérese el conjunto de entidades persona con atributos nombre, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Calle y ciudad. Una persona puede clasificarse además como cliente o  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Empleado. Estos dos tipos de persona se describen mediante un conjunto <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">De atributos que incluyen los atributos del conjunto de entidades persona <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">y además otros posibles atributos adicionales. Por ejemplo, las entidades <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cliente pueden añadir el atributo id-cliente, mientras que las entidades <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Empleado podrían añadir id-empleado y sueldo. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El proceso de clasificación de subgrupos dentro de un conjunto de entidades <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Se denomina especialización. Se puede aplicar repetidamente la especialización <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para refinar el esquema de diseño. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En términos de un diagrama E-R, la especialización se representa mediante <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un componente triangular etiquetado ES (por ejemplo, un empleado  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">ES una persona. La relación ES se puede llamar también relación superclase subclase.   <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los conjuntos de entidades de nivel más alto y más bajo se representancomo conjuntos de entidades regulares, es decir, como rectángulos que contienen el nombre del conjunto de entidades.   <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">Generalización   <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para todos los propósitos prácticos, la generalización es una inversión Simple de la especialización. En términos del propio diagrama E-R no se Distingue entre especialización y generalización. La única diferencia es el Punto de vista usado al realizar el diseño o, en otros palabras, el punto de Partida y el objetivo final.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Subclases, Superclases y Especialización.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los atributos de los conjuntos de entidades de nivel más alto se diceQue son heredados por los conjuntos de entidades de nivel más bajo. En elEjemplo anterior, cliente y empleado heredan los atributos de persona.El resultado final de una generalización/especialización es: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una tabla es una unidad básica de almacenamiento de datos en una base de datosrelacional que contiene una determinada categoría de datos, como por ejemplo,empleados, clientes, etc.Las tablas organizan datos en columnas (llamadas campos) y filas (llamadasregistros). Cada campo contiene una parte de la información correspondiente a uncliente, como por ejemplo, el DNI del cliente. Cada registro contiene toda lainformación correspondiente a un cliente, incluyendo su DNI, el nombre de lacompañía, su dirección, etc. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los formularios son muy útiles a la hora de introducir o mostrar los datos de un registrodeterminado. Un formulario se puede usar para ver y editar información en la base dedatos, registro a registro pudiéndose crear un formulario colorido y distinto, pues setiene control sobre el tamaño y la presentación de todo el formulario <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.
 * <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">Herencia de atributos:
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un conjunto de entidades de nivel más alto con atributos y relacionesque se aplican a todos los conjuntos de entidades de nivel más bajo.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Conjuntos de entidades de nivel más bajo con características distintivasque se aplican solo en un conjunto de entidades particular.Las relaciones entre las superclases y las subclases pueden ser jerárquicas (Si se permite a una subclase derivar de una ´única superclase, de forma queúnicamente pueden formar un ´árbol) o reticulares (Si se permite herenciaMúltiple, es decir, una subclase puede derivar de varias superclases).
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Tablas
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Consultas: Esta utilidad permite seleccionar todos los registros de una base de datos que cumplanlas condiciones de las preguntas que se formulen. Microsoft Access recopila de una ovarias tablas los datos que corresponden a la pregunta formulada.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Formularios

UNIDAD III

3. MODELO RELACIONAL El alumno transformará un diagrama E-R o EE-R a un modelo relacional para realizar consultas.

3.1. Conceptos del modelo relacional Describir los conceptos, función y representación de: Dominios, atributos, tuplas y relaciones. Identificar las características de las relaciones y notación del modelo relacional.

3.2. Esquemas de bases de datos relacionales Describir el concepto de clave (primaria y foránea). Describir el procedimiento para realizar la transformación de los modelos E-R y EE-R a Modelo relacional.

3.3. Algebra Relacional Describir el procedimiento para realizar las Operaciones básicas (seleccionar, proyectar, renombrar). Describir el procedimiento para realizar las Operaciones adicionales (conjuntos, reunión, división ). MODELO RELACIONAL

El modelo relacional para la gestión de una base de datos es un modelo de datos basado en la lógica de predicados y en la teoría de conjuntos. Es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Su idea fundamental es el uso de «relaciones». Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tuplas__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">. Pese a que ésta es la teoría de las bases de datos relacionales creadas por Edgar Frank Codd, la mayoría de las veces se conceptualiza de una manera más fácil de imaginar, esto es, pensando en cada relación como si fuese una tabla que está compuesta por registros (cada fila de la tabla sería un registro o tupla), y columnas (también llamadas campos). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En este modelo todos los datos son almacenados en relaciones, y como cada relación es un conjunto de datos, el orden en el que éstos se almacenen no tiene relevancia (a diferencia de otros modelos como el jerárquico y el de red). Esto tiene la considerable ventaja de que es más fácil de entender y de utilizar por un usuario no experto. La información puede ser recuperada o almacenada por medio de consultas que ofrecen una amplia flexibilidad y poder para administrar la información. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este modelo considera la base de datos como una colección de relaciones. De manera simple, una relación representa una tabla que no es más que un conjunto de filas, cada fila es un conjunto de campos y cada campo representa un valor que interpretado describe el mundo real. Cada fila también se puede denominar tupla o registro y a cada columna también se le puede llamar campo o atributo. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el Álgebra relacional y el Cálculo relacional. El Álgebra relacional permite describir la forma de realizar una consulta, en cambio, el Cálculo relacional sólo indica lo que se desea devolver.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 18.73px;">Esquema
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un esquema es la definición de una estructura (generalmente relaciones o tablas de una base de datos), es decir, determina la identidad de la relación y qué tipo de información podrá ser almacenada dentro de ella; en otras palabras, el esquema son los metadatos de la relación. Todo esquema constará de:
 * Nombre de la relación (su identificador).
 * Nombre de los atributos (o campos) de la relación y sus dominios; el dominio de un atributo o campo define los valores permitidos para el mismo, es equivalente al tipo de dato por ejemplo carácter, integer, date, string, etc.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 18.73px;">Instancias
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una instancia de manera formal es la aplicación de un esquema a un conjunto finito de datos. En palabras no tan técnicas, se puede definir como el contenido de una tabla en un momento dado, pero también es válido referirnos a una instancia cuando trabajamos o mostramos únicamente un subconjunto de la información contenida en una relación o tabla, como por ejemplo:
 * Ciertos caracteres y números (una sola columna de una sola fila).
 * Algunas o todas las filas con todas o algunas columnas
 * Cada fila es una [|__tupla__] . El número de filas es llamado cardinalidad.
 * El número de columnas es llamado caridad o grado.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Base de datos relacional
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una base de datos relacional es un conjunto de una o más tablas estructuradas en registros (líneas) y campos (columnas), que se vinculan entre sí por un campo en común, en ambos casos posee las mismas características como por ejemplo el nombre de campo, tipo y longitud; a este campo generalmente se le denomina ID, identificador o clave. A esta manera de construir bases de datos se le denomina modelo relacional. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Estrictamente hablando el término se refiere a una colección específica de datos pero a menudo se le usa, en forma errónea como sinónimo del software usado para gestionar esa colección de datos. Ese software se conoce como SGBD (sistema gestor de base de datos) relacional o RDBMS (del inglés relational database managementsystem). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización de una base de datos, el cual es entendido como el proceso necesario para que una base de datos sea utilizada de manera óptima. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Entre las ventajas de este modelo están:
 * 1)  Garantiza herramientas para evitar la duplicidad de registros, a través de campos claves o llaves.
 * 2)  Garantiza la integridad referencial: Así al eliminar un registro elimina todos los registros relacionados dependientes.
 * 3)  Favorece la normalización por ser más comprensible y aplicable.
 * 4) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El concepto de relación:
 * 5) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Tuplas, atributos y dominios
 * 6) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">_ Atributo (A): Elemento susceptible de tomar valores
 * 7) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">(cada una de las columnas de la tabla).
 * 8) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">_ Dominio (Di): Conjunto de valores que puede tomar
 * 9) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">un atributo (se considera finito).
 * 10) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Tupla: Cada uno de los elementos que contiene una
 * 11) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">instancia de la relación (filas).

· <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Características

 * Una base de datos relacional se compone de varias tablas o relaciones.
 * No pueden existir dos tablas con el mismo nombre ni registro.
 * Cada tabla es a su vez un conjunto de registros (filas y columnas).
 * La relación entre una tabla padre y un hijo se lleva a cabo por medio de las claves primarias y ajenas (o foráneas).
 * Las claves primarias son la clave principal de un registro dentro de una tabla y éstas deben cumplir con la integridad de datos.
 * Las claves ajenas se colocan en la tabla hija, contienen el mismo valor que la clave primaria del registro padre; por medio de éstas se hacen las relaciones

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Elementos
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En una base de datos relacional, todos los datos se almacenan y se accede a ellos por medio de relaciones. Las relaciones que almacenan datos son llamadas "relaciones base" y su implementación es llamada "tabla". Otras relaciones no almacenan datos, pero son calculadas al aplicar operaciones relacionales. Estas relaciones son llamadas "relaciones derivadas" y su implementación es llamada "vista" o "consulta". Las relaciones derivadas son convenientes ya que expresan información de varias relaciones actuando como si fuera una sola.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Restricciones
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una restricción es una condición que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones restringen los datos que pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restricción o no. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizar mejor los datos. Las restricciones son muy discutidas junto con los conceptos relacionales.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Dominios
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores del atributo, puede ser considerado como una restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos los valores de este atributo deben de ser elementos del conjunto especificado". <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Distintos tipos de dominios son: enteros, cadenas de texto, fecha, no procedurales etc <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Clave única
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjunto de campos se llama clave única. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a clave primaria.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Clave primaria
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una clave primaria es una clave única elegida entre todas las candidatas que define unívocamente a todos los demás atributos de la tabla, para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto es por medio de claves foráneas. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave puede contener valores NULL.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Clave foránea
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una clave foránea es una referencia a una clave en otra tabla, determina la relación existente en dos tablas. Las claves foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados. Se permite que haya varios empleados en un mismo departamento, pero habrá uno y sólo un departamento por cada clave distinta de departamento en la tabla de empleados <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Clave índice
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las claves índices surgen con la necesidad de tener un acceso más rápido a los datos. Los índices pueden ser creados con cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando la clave índice. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento, cada una de ellas es óptima para cierta distribución de datos y tamaño de la relación. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, las claves índices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Procedimientos almacenados
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un procedimiento almacenado es código ejecutable que se asocia y se almacena con la base de datos. Los procedimientos almacenados usualmente recogen y personalizan operaciones comunes, como insertar un registro dentro de una tabla, recopilar información estadística, o encapsular cálculos complejos. Son frecuentemente usados por un API por seguridad o simplicidad. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los procedimientos almacenados no son parte del modelo relacional, pero todas las implementaciones comerciales los incluyen.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Estructura
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La base de datos se organiza en dos marcadas secciones; el esquema y los datos (o instancia). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El esquema es la definición de la estructura de la base de datos y principalmente almacena los siguientes datos: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el resultado de dicho proceso es un esquema que permite que la base de datos sea usada de manera óptima. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los datos o instancia es el contenido de la base de datos en un momento dado. Es en sí, el contenido de todos los registros.
 * El nombre de cada tabla
 * El nombre de cada columna
 * El tipo de dato de cada columna
 * La tabla a la que pertenece cada columna

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Definiendo claves foráneas
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las claves foráneas son definidas bajo el estandard SQL a través de la restricción FOREIGN KEY. La sintaxis para agregar tal restricción a una tabla existente es definida en SQL: 2003 según se muestra debajo. Si se omite la lista de columnas en la cláusula REFERENCES implica que la clave foránea tendrá que referenciar o relacionarse con la clave primaria de la tabla referenciada. ALTERTABLE ADD [CONSTRAINT<nombre restricción>] FOREIGNKEY (<expresión columna> [, <expresión columna>]...) REFERENCES [(<expresión columna> [, <expresión columna>]...)] [ONUPDATE<acción>] [ONDELETE<acción>];

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Definiendo claves primarias
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las claves primarias están definidas el estándar ANSI SQL, mediante la directiva PRIMARY KEY. La sintaxis para aplicar tal directiva a una tabla existente está definida en SQL: 2003 de esta manera: fotogenicamente ALTERTABLE<identificador_de_la_tabla> ADD[CONSTRAINT<identificador_de_la_directiva >] PRIMARYKEY(<nombre_de_columna>{,<nombre_de_columna>}...

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Definiendo claves únicas
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La definición de claves únicas es sintácticamente muy similar a la de clave primaria. ALTERTABLE<identificador_de_la_tabla> ADD[CONSTRAINT<identificador_de_la_directiva>] UNIQUE(<nombre_de_columna>{,<nombre_de_columna>}...) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">De la misma manera, las claves únicas pueden definirse como parte de la sentencia de SQL CREATE TABLE. CREATETABLEnombre_de_la_tabla(   id_col INT,    col2 CHARACTER VARYING(20),    cla_colSMALLINT,    ...    CONSTRAINTclave_únicaUNIQUE(cla_col),    ...    CREATETABLEnombre_de_la_tabla( id_col INT PRIMARY KEY, col2 CHARACTER VARYING(20), ...   cla_col SMALLINT UNIQUE, ...   Transformación del modelo entidad-relación al modelo relaciona l    Para transformar un modelo entidad-relación a modelo relacional seguiremos las siguientes reglas:
 * Toda entidad del modelo entidad-relación se transforma en una tabla.
 * Cualquier atributo de una entidad se transforma en un campo dentro la tabla, manteniendo las claves primarias.
 * Las relaciones N:M se transforman en una nueva tabla que tendrá como clave primaria la concatenación de los atributos clave de las entidades que relaciona.
 * En las relaciones 1:N se pueden tener dos casos:
 * Si la entidad que participa con cardinalidad máxima uno lo hace también con cardinalidad mínima uno, entonces se propaga el atributo de la entidad que tiene cardinalidad máxima 1 a la que tiene cardinalidad máxima N, desapareciendo el nombre de la relación. Si existen atributos en la relación éstos también se propagarán.
 * Si la entidad que participa con cardinalidad máxima uno lo hace también cardinalidad mínima cero, entonces se crea una nueva tabla formada por las claves de cada entidad y los atributos de la relación. La clave primaria de la nueva tabla será el identificador de la entidad que participa con cardinalidad máxima N.
 * En el caso de las relaciones 1:1 también pueden darse dos casos:
 * Si las entidades poseen cardinalidades (0,1), la relación se convierte en una tabla.
 * Si una de las entidades posee cardinalidad (0,1) y la otra (1,1), conviene propagar la clave de la entidad con cardinalidad (1,1) a la tabla resultante de la entidad con cardinalidad (0,1). Si ambas entidades poseen cardinalidades (1,1) se puede propagar la clave de cualquiera de ellas a la tabla resultante de la otra.
 * En el caso de las relaciones N-arias se aplica la misma regla que para las relaciones N:M
 * En el caso de las relaciones reflexivas supondremos que se trata de una relación binaria con la particularidad que las dos entidades son iguales y aplicaremos las reglas vistas en los puntos anteriores.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El álgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Tuplas
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tupla__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> se define como una función finita que asocia unívocamente los nombres de los atributos de una relación con los valores de una instanciación de la misma. En términos simplistas, es una fila de una tabla relacional.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Unión compatible
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una unión es compatible entre dos relaciones R, S, si ellas poseen el mismo grado y el dominio del iesimo elemento de la relación R es el mismo que el iesimo elemento de la relación S.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Grado (Aridad)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Número de atributos.

· <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">Básicas
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cada operador del álgebra acepta una o dos relaciones y retorna una relación como resultado. σ y Π son operadores unarios, el resto de los operadores son binarios. Las operaciones básicas del álgebra relacional son:

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Selección <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;"> (σ)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Permite seleccionar un subconjunto de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tuplas__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de una relación (R), todas aquellas que cumplan la(s) condición(es) P, esto es: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Selecciona todas las tuplas que contengan Gómez como apellido en la relación Alumnos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una condición puede ser una combinación booleana, donde se pueden usar operadores como:, , combinándolos con operadores , \le, \ge, =, \ne" o:spid="_x0000_i1062">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Proyección <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;"> (Π)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación, esto es: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">dondeson atributos de la relación R. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Selecciona los atributos Apellido, Semestre y Numero Control de la relación Alumnos, mostrados como un subconjunto de la relación Alumnos

=
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Producto cartesiano <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 18.66px;"> (x) ===== <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El producto cartesiano de dos relaciones se escribe como: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">y entrega una relación, cuyo esquema corresponde a una combinación de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de R seguidos por los de S.  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Muestra una nueva relación, cuyo esquema contiene cada una de las tuplas de la relación Alumnos junto con las tuplas de la relación Maestros, mostrando primero los atributos de la relación Alumnos seguidos por las tuplas de la relación Maestros.

=
<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Unión <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">( <span style="color: #ff0000; font-family: "Cambria Math","serif"; font-size: 18.66px;">∪ <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">) ===== <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La operación <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">retorna el conjunto de tuplas que están en R, o en S, o en ambas. R y S deben ser uniones compatibles.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Diferencia <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;"> (-)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La diferencia de dos relaciones, R y S denotada por: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">entrega todas aquellas tuplas que están en R, pero no en S. R y S deben ser uniones compatibles. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Estas operaciones son fundamentales en el sentido en que (1) todas las demás operaciones pueden ser expresadas como una combinación de éstas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda información.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">No básicas o Derivadas
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Entre los operadores no básicos tenemos:

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Intersección <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;"> (∩)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La intersección de dos relaciones se puede especificar en función de otros operadores básicos: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La intersección, como en Teoría de conjuntos, corresponde al conjunto de todas las <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tuplas__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> que están en R y en S, siendo R y S uniones compatibles <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.

=
<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Unión natural <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;"> ( <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Natural Join <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">)  ===== <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La operación unión natural en el álgebra relacional es la que permite reconstruir las tablas originales previas al proceso de normalización. Consiste en combinar las proyección, selección y producto cartesiano en una sola operación, donde la condición θ es la igualdad Clave Primaria = Clave Externa (o Foránea), y la proyección elimina la columna duplicada (clave externa). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Expresada en las operaciones básicas, queda <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una reunión theta (θ-Join) de dos relaciones es equivalente a:  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Donde la condición θes libre. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Si la condición θ es una igualdad se denomina Equi Join.

=
<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">[|__División__] <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;"> (/) ===== <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio de y en A y B, es el mismo. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El operador división A / B retorna todos los distintos valores de x tales que para todo valor y en B existe una tuplaen A.

=
<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">[|__Agrupación__] <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;"> (Ģ) ===== <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Permite agrupar conjuntos de valores en función de un campo determinado y hacer operaciones con otros campos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Por ejemplo: Ģ zum (puntos) as Total Equipo (PARTIDOS). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Suponga las relaciones o tablas:
 * Alumno ||
 * ID || NOMBRE || CIUDAD || EDAD ||
 * 01 || Pedro || Santiago || 14 ||
 * 11 || Juan || Buenos Aires || 18 ||
 * 21 || Diego || Lima || 12 ||
 * 31 || Rosita || Concepción || 15 ||
 * 41 || Manuel || Lima || 17 ||


 * Apoderado ||
 * ID || NOMBRE || FONO || ID_ALUMNO ||
 * 054 || Víctor || 654644 || 21 ||
 * 457 || José || 454654 || 11 ||
 * 354 || María || 997455 || 31 ||
 * 444 || Paz || 747423 || 01 ||


 * Curso ||
 * COD || NOMBRE || FECHA_INICIO || DURACION || VALOR ||
 * 01142 || Sicología || 13-01 || 15 || 3.000 ||
 * 02145 || Biología || 15-02 || 12 || 2.500 ||
 * 03547 || Matemáticas || 01-03 || 30 || 4.000 ||
 * 04578 || Música || 05-04 || 10 || 1.500 ||
 * 05478 || Física || 20-04 || 15 || 3.200 ||


 * inscrito ||
 * ID || ID_AL || COD ||
 * 1 || 01 || 05478 ||
 * 2 || 01 || 02145 ||
 * 3 || 11 || 03547 ||
 * 4 || 21 || 02145 ||
 * 5 || 41 || 03547 ||

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 14.66px;">INSERT
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 13.33px;">Forma básica
INSERT INTO tabla (columna1, [columna2,... ]) VALUES (valor1, [valor2,...])

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">UPDATE
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo
UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N';

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 24px;">DELETE
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Forma básica
SQL="DELETE FROM tabla WHERE columna1 = valor1"

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo
DELETE FROM My_table WHERE field2 = 'N' ;

Unidad 4 <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">4. DISEÑO DE BD RELACIONALES. <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">Es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de campos como la <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__informática__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;"> y la <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__electrónica__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos. <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">Existen <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__programas__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;"> denominados <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__sistemas gestores de bases de datos__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">, abreviado SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática. <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;"> 4.1. Restricciones de Integridad ( <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 10.66px;">de dominio, de unicidad y de integridad referencial). =<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad de datos = <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">El término integridad de datos se refiere a la corrección y completitud de los <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__datos__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;"> en una <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__base de datos__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">. Cuando los contenidos se modifican con sentencias INSERT, DELETE o UPDATE, la integridad de los datos almacenados puede perderse de muchas maneras diferentes. Pueden añadirse datos no válidos a la base de datos, tales como un pedido que especifica un producto no existente. <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">Pueden modificarse datos existentes tomando un valor incorrecto, como por ejemplo si se reasigna un vendedor a una oficina no existente. Los cambios en la base de datos pueden perderse debido a un error del sistema o a un fallo en el suministro de <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__energía__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">. Los cambios pueden ser aplicados parcialmente, como por ejemplo si se añade un pedido de un producto sin ajustar la cantidad disponible para vender. <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">Una de las funciones importantes de un <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__DBMS relacional__] <span style="color: #002060; font-family: "Calibri","sans-serif"; font-size: 16px;"> es preservar la integridad de sus datos almacenados en la mayor medida posible.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">Tipos de restricciones de integridad
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La exigencia de integridad de los datos garantiza la calidad de los datos de la base de datos. Por ejemplo, si se especifica para un empleado el valor de identificador de 123, la base de datos no debe permitir que ningún otro empleado tenga el mismo valor de identificador. Si tiene una columna employee_rating para la que se prevean valores entre 1 y 5, la base de datos no debe aceptar valores fuera de ese intervalo. Si en la tabla hay una columna dept_id en la que se almacena el número de departamento del empleado, la base de datos sólo debe permitir valores que correspondan a los números de departamento de la empresa. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Dos pasos importantes en el diseño de las tablas son la identificación de valores válidos para una columna y la determinación de cómo forzar la integridad de los datos en la columna. La integridad de datos pertenece a una de las siguientes categorías:
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Datos Requeridos: establece que una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__columna__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> tenga un valor no NULL. Se define efectuando la declaración de una columna es NOT NULL cuando la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tabla__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> que contiene las columnas se crea por primera vez, como parte de la sentencia CREATE TABLE.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Chequeo de Validez: cuando se crea una tabla cada columna tiene un tipo de datos y el DBMS asegura que solamente los datos del tipo especificado sean ingresados en la tabla.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad de entidad: establece que la clave primaria de una tabla debe tener un valor único para cada <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__fila__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de la tabla; si no, la base de datos perderá su integridad. Se especifica en la sentencia CREATE TABLE. El DBMS comprueba automáticamente la unicidad del valor de la clave primaria con cada sentencia INSERT Y UPDATE. Un intento de insertar o actualizar una fila con un valor de la clave primaria ya existente fallará.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad referencial: asegura la integridad entre las llaves foráneas y primarias (relaciones padre/hijo). Existen cuatro actualizaciones de la base de datos que pueden corromper la integridad referencial:
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La inserción de una fila hijo se produce cuando no coincide la llave foránea con la llave primaria del padre.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La actualización en la llave foránea de la fila hijo, donde se produce una actualización en la clave ajena de la fila hijo con una sentencia UPDATE y la misma no coincide con ninguna llave primaria.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La supresión de una fila padre, con la que, si una fila padre -que tiene uno o más hijos- se suprime, las filas hijos quedarán huérfanas.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La actualización de la llave primaria de una fila padre, donde si en una fila padre, que tiene uno o más hijos se actualiza su llave primaria, las filas hijos quedarán huérfanas.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad de entidad
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad de dominio
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad referencial
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad definida por el usuario
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Integridad definida por el usuario
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">__Integridad de entidad__

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La integridad de entidad define una fila como entidad única para una tabla determinada. La integridad de entidad exige la integridad de las columnas de los identificadores o la clave principal de una tabla, mediante índices y restricciones UNIQUE, o restricciones PRIMARY KEY. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">__Integridad de dominio__

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La integridad de dominio viene dada por la validez de las entradas para una columna determinada. Puede exigir la integridad de dominio para restringir el tipo mediante tipos de datos, el formato mediante reglas y restricciones CHECK, o el intervalo de valores posibles mediante restricciones FOREIGN KEY, restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL y reglas. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">__Integridad referencial__

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La integridad referencial protege las relaciones definidas entre las tablas cuando se crean o se eliminan filas. En SQL Server la integridad referencial se basa en las relaciones entre claves externas y claves principales o entre claves externas y claves exclusivas, mediante restricciones FOREIGN KEY y CHECK. La integridad referencial garantiza que los valores de clave sean coherentes en las distintas tablas. Para conseguir esa coherencia, es preciso que no haya referencias a valores inexistentes y que, si cambia el valor de una clave, todas las referencias a ella se cambien en consecuencia en toda la base de datos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cuando se exige la integridad referencial, SQL Server impide a los usuarios: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Agregar o cambiar filas en una tabla relacionada si no hay ninguna fila asociada en la tabla principal. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cambiar valores en una tabla principal que crea filas huérfanas en una tabla relacionada. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Eliminar filas de una tabla principal cuando hay filas relacionadas coincidentes. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Por ejemplo, en las tablas Sales. Sales Order Detail y Production.Product de la base de datos AdventureWorks2008R2, la integridad referencial se basa en la relación entre la clave externa (ProductID) de la tabla Sales.SalesOrderDetail y la clave principal (ProductID) de la tabla Production.Product. Esta relación garantiza que un pedido de ventas no pueda nunca hacer referencia a un producto que no existe en la tabla Production.Product. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">__Integridad definida por el usuario__

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La integridad definida por el usuario permite definir reglas de empresa específicas que no pertenecen a ninguna otra categoría de integridad. Todas las categorías de integridad admiten la integridad definida por el usuario. Esto incluye todas las restricciones de nivel de columna y nivel de tabla en CREATE TABLE, procedimientos almacenados y desencadenadores <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">4.2. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 21.33px;">Normalización <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El proceso de normalización de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__bases de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__modelo entidad-relación__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> al <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__modelo relacional__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las bases de datos relacionales se normalizan para: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En el modelo relacional es frecuente llamar <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tabla__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Evitar la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__redundancia__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de los datos.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Evitar problemas de actualización de los datos en las tablas.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Proteger la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__integridad__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de los datos.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cada tabla debe tener su nombre único.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">No puede haber dos <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__filas__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> iguales. No se permiten los duplicados.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Todos los datos en una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__columna__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> deben ser del mismo tipo <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.73px;">Primera Forma Normal (1FN)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una tabla está en Primera Forma Normal si: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una tabla no puede tener múltiples valores en cada columna. Los datos son atómicos. (Si a cada valor de X le pertenece un valor de Y y viceversa) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Esta forma normal elimina los valores repetidos dentro de una BD
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La tabla contiene una llave primaria única.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La llave primaria no contiene atributos nulos.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">No debe existir variación en el número de columnas.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los Campos no llave deben identificarse por la llave (Dependencia Funcional)
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Debe Existir una independencia del orden tanto de las filas como de las columnas, es decir, si los datos cambian de orden no deben cambiar sus significados

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.73px;">Segunda Forma Normal (2FN)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. (Todos los atributos que no son clave principal deben depender únicamente de la clave principal). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En otras palabras podríamos decir que la segunda forma normal está basada en el concepto de dependencia completamente funcional. Una dependencia funcional es completamente funcional si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es que. Una dependencia funcional es una dependencia parcial si hay algunos atributos que pueden ser eliminados de X y la dependencia todavía se mantiene, esto es. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Por ejemplo {DNI, ID_PROYECTO} HORAS_TRABAJO (con el DNI de un empleado y el ID de un proyecto sabemos cuántas horas de trabajo por semana trabaja un empleado en dicho proyecto) es completamente dependiente dado que ni DNI HORAS_TRABAJO ni ID_PROYECTO HORAS_TRABAJO mantienen la dependencia. Sin embargo {DNI, ID_PROYECTO} NOMBRE_EMPLEADO es parcialmente dependiente dado que DNI NOMBRE_EMPLEADO mantiene la dependencia.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.73px;">Tercera Forma Normal (3FN)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La tabla se encuentra en 3FN si es 2FN y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de alguna clave de R, donde se mantiene X->Z y Z->Y. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Por ejemplo, la dependencia SSN->DMGRSSN es una dependencia transitiva en EMP_DEPT de la siguiente figura. Decimos que la dependencia de DMGRSSN el atributo clave SSN es transitiva vía DNUMBER porque las dependencias SSN→DNUMBER y DNUMBER→DMGRSSN son mantenidas, y DNUMBER no es un subconjunto de la clave de EMP_DEPT. Intuitivamente, podemos ver que la dependencia de DMGRSSN sobre DNUMBER es indeseable en EMP_DEPT dado que DNUMBER no es una clave de EMP_DEPT. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Formalmente, un esquema de relaciónestá en 3 Forma Normal <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Elmasri-Navathe__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__[2__]] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> si para toda dependencia funcional, se cumple al menos una de las siguientes condiciones: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Essúper llave o clave. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Es atributo primo de; esto es, si es miembro de alguna clave en. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Además el esquema debe cumplir necesariamente, con las condiciones de segunda forma norma <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La normalización o estandarización es la redacción y aprobación de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__normas__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> que se establecen para garantizar el acoplamiento de elementos construidos independientemente, así como garantizar el repuesto en caso de ser necesario, garantizar la calidad de los elementos fabricados, la seguridad de funcionamiento y trabajar con responsabilidad social. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La normalización es el proceso de elaborar, aplicar y mejorar las normas que se aplican a distintas actividades científicas, industriales o económicas con el fin de ordenarlas y mejorarlas. La asociación estadounidense para pruebas de materiales (ASTM) define la normalización como el proceso de formular y aplicar reglas para una aproximación ordenada a una actividad específica para el beneficio y con la cooperación de todos los involucrados. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Según la ISO (International OrganizationforStandarization) la normalización es la actividad que tiene por objeto establecer, ante problemas reales o potenciales, disposiciones destinadas a usos comunes y repetidos, con el fin de obtener un nivel de ordenamiento óptimo en un contexto dado, que puede ser tecnológico, político o económico. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La normalización persigue fundamentalmente tres objetivos: UNIDAD 5 <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">SISTEMA GESTOR DE BASES DE DATOS (SGBD <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> 5.1. Fundamentos de los SGBD. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Definir el concepto, características y tipos de SGBD. Identificar los principales SGBD. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">(Sistema de gestión de base de datos) o en inglés Data base management system (DBMS), es una agrupación de programas que sirven para definir, construir y manipular una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__base de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.* Definir una base de datos: consiste en especificar los <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tipos de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, estructuras y restricciones para los datos que se <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__almacenarán__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.* Construir una base de datos: es el proceso de almacenar los datos sobre algún medio de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__almacenamiento__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.* Manipular una base de datos: incluye funciones como <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__consulta__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, actualización, etc. de bases de datos.Si el sistema soporta bases de datos relacionales se llama <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__RDBMS__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> en inglés o SGBDRenespañol.Otras funciones de los SGBD* En la manipulación de una base de datos, los SGBD deben incluir un control de concurrencia, o sea, deben permitir a varios usuarios tener acceso "simultáneo" a la base de datos. Controlar la concurrencia implica que si varios usuarios acceden a la base de datos, la actualización de los datos se haga de forma controlada para que no haya problemas.* Un SGBD también debe encargase de cumplir las reglas de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__integridad__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> y <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__redundancias__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.* Otra función importante en un SGBD es su capacidad de realizar <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__copias de seguridad__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> y de recuperación de datos.* Restricción de accesos no autorizados.* Suministrar múltiples interfaces de usuario.* Representar relaciones complejas entre los datos.Clasificación de los SGBDEsta clasificación está basada en el <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__modelo de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> en que está basado el SGBD. Los modelos de datos más habituales son:* Relacional ( <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SGBDR__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">): representa a la base de datos como una colección de tablas. Estas bases de datos suelen utilizar SQL como lenguaje de consultas de alto nivel.* Orientado a objetos: define a la base de datos en términos de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__objetos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, sus propiedades y sus operaciones. Todos los objetos que tienen la misma estructura y comportamiento pertenecen a una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__clase__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> y las clases de organizan en jerarquías.* Objeto-relacional o relacional extendido: son los sistemas relacionales con características del orientado a objetos.* Jerárquico: representa los datos como estructuras jerárquicas de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__árbol__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.* En red o CODASYL DBTG.Un SGBD también puede clasificarse por el número de usuario a los que da servicio:* <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Mono usuario__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">* <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Multiusuario__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">También puede clasificarse según el número de sitios en los que está distribuida la base de datos:* Centralizado: la base de datos y el software SGBD están almacenados en un solo sitio (una sola computadora).* Distribuido ( <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SGBDD__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">): la base de datos y el software SGBD pueden estar distribuidos en múltiples sitios conectados por una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__red__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.Breve historia de los SGBDREl <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__modelo relacional__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> fue presentado en la década del 70, y a partir de ese momento comenzaron a desarrollarse múltiples sistemas para gestionar las bases de datos relacionales. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__IBM__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> fue una de las pioneras en el desarrollo de productos comerciales sobre SGBD relacionales; algunos de sus productos fueron el SQL/DS para los entornos DOS/VSE y VM/CMS, y el DB2 para el sistema operativo MVS en 1983.En tanto, INGRES fue otro SGBDR desarrollado por la Universidad de Berkeley a principios de los setenta. Luego se convirtió en comercial y comenzó a ser distribuido por Ingres Inc. y luego por ComputerAssociates.Otras marcas comerciales de SGBDR son <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Oracle__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de Oracle Inc., <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Sybase__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de Sybase Inc., RDB de Digital Equipment Corp. de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__COMPAQ__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, INFORMIX de Informix Inc. y UNIFY de Unify Inc.Además de los SGBDR mencionados, en los ochenta aparecen múltiples aplicaciones para PCs como ser RIM, RBASE 5000, PARADOX, OS/2 Data base Manager, DBase IV, XDB, WAT-COM SQL, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SQL Server__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> (de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Sybase Inc.__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">), <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SQL Server__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> (de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Microsoft__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">), <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Access__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, etc. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Seleccionar el SGBD de acuerdo a las necesidades del proyecto. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">5.2. Manipulación de una BD. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Identificar el entorno de desarrollo del SGBD. Identificar los procedimientos para manipular una base de datos empleando el SGBD. Manipulación de la base de datos (INSERT,UPDATE,DELETE ). Operaciones de actualización Borrado: se expresa igual que una consulta, pudiéndose borrar solamente tuplas enteras. Su forma es delete from r  where P  donde P representa una condición y r una relación. Una orden delete opera sobre una única relación, aunque puede contener un select anidado que use una relación de la cual se van a borrar las tuplas. Inserción: para insertar datos, o se especifica la tupla que se desea insertar o se formula una consulta cuyo resultado sea el conjunto de tuplas que se desee insertar. Para la inserción de una tupla, los valores se especifican en el mismo orden que los atributos de la relación, aunque SQL permite especificar también los atributos. Por ejemplo, Insert into cuenta (nombre-sucursal, número-cuenta, saldo) Valúes (“Navacerrada”,”C-9732”,240000) La inserción tras una consulta se realiza igual que la anterior, pero en vez de valúes se pone la consulta. Actualizaciones: update se utiliza para cambiar un valor dentro de una tupla, sin cambiar todos los valores de la misma. Por ejemplo, para pagar un interés de 5% a las cuentas con saldo menor que 2000000 pts. update cuenta set saldo = saldo * 1.05 where saldo <= 2000000 En general, la cláusula where puede contener cualquiera de las construcciones válidas para una cláusula where de un select, incluso instrucciones select anidadas. LENGUAJE DE DEFINICIÓN DE DATOS (LDD) El LDD de SQL permite la especificación no sólo de un conjunto de relaciones, sino también de alguna información relativa a esas relaciones, incluyendo: • el esquema de cada relación • el dominio de valores asociado a cada atributo • las ligaduras de integridad • el conjunto de índices que se deben mantener por cada relación • información de seguridad y autorización para cada relación • la estructura de almacenamiento físico de cada relación en el disco Estas funciones permiten definir y modificar el esquema de una base de datos y por tanto provocarán una modificación del catálogo del sistema, que contiene el esquema de la base de datos. Tipos de dominios en SQL: • char (n) es una cadena de caracteres de longitud fija n • varchar (n) es una cadena de caracteres de longitud variable, con un máximo de n • int es un número entero • smallint es un entero pequeño • numeric (p,d) es un número en coma flotante, con p dígitos (más el signo) y d que son la parte decimal • real, double precision son respectivamente, números en coma flotante y números en coma flotante en doble precisión • float (n) es un número en coma flotante, cuya precisión la especifica en usuario al menos de n dígitos • date es una fecha (aaaa, mm, dd) • time es la hora SQL proporciona además un tipo de datos llamado interval y permite realizar cálculos basados en fechas, horas e intervalos. A menudo es útil comparar valores de dominios compatibles. Esto se lleva a cabo transformando los dos valores a un mismo tipo de dominio, llamándose esta transformación coerción. SQL permite también incluir en la declaración de dominio de un atributo la especificación not null, prohibiendo la inserción de valores nulos. Not null se pone detrás del dominio. SQL permite la definición de nuevos dominios mediante create domain. MANIPULACIÓN DE ESQUEMAS EN SQL Para crear una nueva tabla se utiliza: CREATE TABLE nombre_tabla (<definición_atributo_1> [UNIQUE] [NOT NULL], (<definición_atributo_2> [UNIQUE] [NOT NULL], ………………… (<definición_atributo_n> [UNIQUE] [NOT NULL]); donde: • definición_atributo = nombre_atributo tipo_dato (tamaño) • UNIQUE: no se permiten valores duplicados en la columna • NOT NULL: no se permiten valores nulos en la columna Para borrar una relación se utiliza drop table, y la instrucción alter table se utiliza para añadir atributos a una relación existente (alter table r add A) y para borrar atributos se escribe alter table r drop A. Sistema de gestion de base de datos(sgbd)es una herramienta de sofware que permite la creación manipulación de base de datos. Está basado en un modelo de datos{un conjunto de conceptos y reglas que permite estructurar los datos restantes de la observación de la realidad de forma que queden representadas las tanto estáticas como dinámicas )
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Simplificación: se trata de reducir los modelos para quedarse únicamente con los más necesarios.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Unificación: para permitir el intercambio a nivel internacional.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Especificación: se persigue evitar errores de identificación creando un lenguaje claro y preciso.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">Características generales del SQL
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Es un lenguaje declarativo de "alto nivel" o "de no procedimiento", que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__registros__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, y no a registros individuales, permite una alta productividad en codificación y la orientación a objetos. De esta forma una sola sentencia puede equivaler a uno o más programas que se utilizarían en un lenguaje de bajo nivel orientado a registros.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.73px;">Optimización
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Como ya se dijo arriba, y suele ser común en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué es lo que se quiere y no cómo conseguirlo, por lo que una sentencia no establece explícitamente un orden de ejecución. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de su ejecución. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza la actualización de los datos. Dependiendo del uso de la aplicación, se priorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente en cada motor de base de datos y depende de muchos factores. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Existe una ampliación de SQL conocida como <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__FSQL__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> (Fusca SQL, SQL difuso) que permite el acceso a <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__bases de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> difusas, usando la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__lógica difusa__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">. Estelenguaje ha sido implementado a nivel experimental y está evolucionando rápidamente <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">Lenguaje de definición de datos (DDL)
<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El lenguaje de definición de datos (en inglés Data DefinitionLanguage, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Incluye órdenes para modificar, borrar o definir las tablas en las que se almacenan los datos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las tablas son la estructura básica <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__donde__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> se almacena la información en la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__base de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">. Dado que en la mayoría de los casos, no hay forma de que el <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__proveedor__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__base__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> sepa <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__con__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> antelación cuáles son sus necesidades de almacenamiento de datos, es probable que necesite <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__crear__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> tablas en la base de datos usted mismo. Muchas herramientas de base de datos le permiten crear tablas sin ingresar SQL, pero debido a que las tablas son los contenedores de toda la información, es importante incluir la sintaxis <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 13.33px;">CREATE TABLE <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">La sintaxis SQL para CREATE TABLE es: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 13.33px;">CREATE TABLE "nombre tabla"("columna 1" "tipo_de_datos_para_columna_1","columna 2" "tipo_de_datos_para_columna_2", <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una vez que se crea la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tabla__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> en la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__base de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, hay muchas ocasiones <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__donde__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> uno puede desear cambiar la estructura de la tabla. Los casos típicos incluyen los siguientes: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">- Agregar una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__columna__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> - Eliminar una columna - Cambiar el <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__nombre__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de una columna - Cambiar el tipo de datos para una columna <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Por favor note que lo anterior no es una lista exhaustiva. Hay otras instancias donde ALTER TABLE se utiliza para cambiar la estructura de la tabla, tales como cambiar la especificación de la clave primaria o agregar una restricción única para una columna <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">La sintaxis SQL para ALTER TABLE es <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 13.33px;">ALTER TABLE "nombre tabla"[modificar especificación]

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">A veces podemos decidir que necesitamos eliminar una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tabla__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> en la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__base de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> por alguna razón. De hecho, sería problemático si no podemos hacerlo ya que esto crearía una pesadilla de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__mantenimiento__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__para__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> DBA. Afortunadamente, SQL nos permite hacerlo, ya que podemos utilizar el comando <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 13.33px;">[|DROP] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 13.33px;"> TABLE.

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 13.33px;">La sintaxis para DROP TABLE es <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DROP TABLE "nombre tabla" <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">A veces deseamos eliminar los <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> en una tabla. Una forma de hacer esto es <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__con__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__DROP__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> TABLE, que vimos en la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__última sección__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> pero ¿Si deseamos simplemente deshacernos de los datos pero no de la tabla en sí? <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Para__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> esto, podemos utilizar el comando <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 12px;">TRUNCATE TABLE. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La sintaxis para <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 12px;">TRUNCATE TABLE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">es <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 12px;">TRUNCATE TABLE "nombre_tabla" <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">CREATE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este comando crea un objeto dentro de la base de datos. Puede ser una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tabla__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, [[Vista 'CAMPO 2' STRING  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">ELEMPLO (CREACION UNA FUNCION)   <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">CREATE OR REPLACE FUNCTION 'NOMBRE FUNCION'('PARAMETROS') <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">RETURNS 'TIPO RETORNO' AS <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">$BODY$ <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">BEGIN <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">'INSTRUCCIÓN SQL' <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">--por Ejemplo: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DELETE FROM con empleado WHERE id empleado = 'ANY' (ids); <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">END; <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">$BODY$ <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">LANGUAGE 'plpgsql'; <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 14.66px;">ALTER <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__campos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__trigger__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, etc.   <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">EJEMPLO (AGREGAR COLUMNA A UNA TABLA   <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">ALTERTABLE'TABLA_NOMBRE'( <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> ADD NUEVO_CAMPO INT UNSIGNED meel) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DROP <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este comando elimina un objeto de la base de datos. Puede ser una tabla, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__vista__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__índice__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__trigger__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">EJEMPLO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">ALTERTABLETABLA_NOMBRE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"></sourc <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">===TRUNCATE=== <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transacción. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">==== Ejemplo ==== <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"><SOURCElang="SQL"> <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">TRUNCATETABLETABLA_NOMBRE1  Lenguaje de manipulación de datos DML (Data Manipulation Language)  Definición <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DEFINICION <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un lenguaje de manipulación de datos (Data Manipulación Lenguaje, o DML en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERT <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">FORMA BASICA <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOtabla(columna1,[columna2,...])VALUES(valor1,[valor2,...]) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le será asignado el valor por omisión. Los valores especificados (o implícitos) por la sentencia INSERT deberán satisfacer todas las restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__fila__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> y se devuelve un error. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">EJEMPLO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOagenda_telefonica(nombre, numero)VALUES('Roberto Jeldrez',4886850); <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOtablaVALUES(valor1,[valor2,...]) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'): <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOagenda_telefonicaVALUES ('Roberto Jeldrez', 080473968); <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">FORMAS AVANZADAS <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERCIONES EN MULTIPLES FILAS <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una característica de SQL (desde SQL-92) es el uso de constructores de filas para insertar múltiples filas a la vez, con una sola sentencia SQL: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOtabla(columna1,[columna2,...]) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">VALUES(valor1a,[valor1b,...]),(value2a,[value2b,...]),... <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y H2. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la tabla 'agenda_telefonica'): <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOagenda_telefonicaVALUES('Roberto Fernández','4886850'),('Alejandro Sosa','4556550'); <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Que podía haber sido realizado por las sentencias <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOagenda_telefonicaVALUES('Roberto Fernández','4886850'); <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERTINTOagenda_telefonicaVALUES('Alejandro Sosa','4556550'); <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Notar que las sentencias separadas pueden tener semántica diferente (especialmente con respecto a los triggers), y puede tener diferente rendimiento que la sentencia de inserción múltiple. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para insertar varias filas en MS SQL puede utilizar esa construcción: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERT INTO phone_book <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">SELECT 'John Doe', '555-1212' <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">UNION ALL <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">SELECT 'Peter Doe', '555-2323'; <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con el estándar SQL ( <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SQL: 2003__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">), debido a la cláusula subselect incompleta. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para hacer lo mismo en Oracle se usa <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__DUAL TABLE__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, siempre que se trate de solo una simple fila: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERT INTO phone_book <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">SELECT 'John Doe', '555-1212' FROM DUAL <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">UNION ALL <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">SELECT 'Peter Doe','555-2323' FROM DUAL <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una implementación conforme al estándar de esta lógica se muestra el siguiente ejemplo, o como se muestra arriba (no aplica en Oracle): <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERT INTO phone_book <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">UNION ALL <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)

<span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Copia de filas de otras tablas <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un INSERT también puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningún procesamiento intermedio en la aplicación cliente. Un SUBSELECT se utiliza en lugar de la cláusula VALUES. El SUBSELECT puede contener <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__JOIN__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta. Lógicamente, el SELECT se evalúa antes que la operación INSERT esté iniciada. Un ejemplo se da a continuación. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERT INTO phone_book2 <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> SELECT * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">FROM phone_book <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">WHERE name IN ('John Doe', 'Peter Doe') <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una variación es necesaria cuando algunos de los datos de la tabla fuente se está insertando en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son iguales.) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERT INTO phone_book2 ( [name], [phoneNumber] ) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> SELECT [name], [phoneNumber] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">FROM phone_book <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">WHERE name IN ('John Doe', 'Peter Doe') <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la tabla donde los datos son insertados. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">UPDATE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">EJEMPLO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N'; <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DELETE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">FORMA BASICA <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">SQL="DELETE FROM tabla WHERE columna1 = valor1" <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Ejemplo <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DELETE FROM My_table WHERE field2 = 'N';

RECUPERACIÓN DE CLAVE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los diseñadores de base de datos que usan una clave suplente como la clave principal para cada tabla, se ejecutará en el ocasional escenario en el que es necesario recuperar automáticamente la base de datos, generando una clave primaria de una sentencia SQL INSERT para su uso en otras sentencias SQL. La mayoría de los sistemas no permiten sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar una solución en tales escenarios. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Implementaciones comunes incluyen: <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">SELECT* <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">FROM NEW TABLE(INSERTINTO phonebook <span class="kw12" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">VALUES <span class="br0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">( <span class="st0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">'Cristobal Jeldrez' <span class="sy0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span class="st0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">'0426.817.10.30' <span class="br0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">)) <span class="kw12" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">AS <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> tINSERTINTOphone_book <span class="kw12" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">VALUES <span class="br0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">( <span class="st0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">'Cristobal Jeldrez' <span class="sy0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span class="st0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">'0426.817.10.30' <span class="br0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">RETURNING phone_book_id <span class="kw12" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">INTO <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">v_pb_idSETNoCount <span class="kw12" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">ON <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">;INSERTINTOphone_book <span class="kw12" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">VALUES <span class="br0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">( <span class="st0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">'Cristobal Jeldrez' <span class="sy0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span class="st0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">'0426.817.10.30' <span class="br0" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">;SELECT @@ <span class="kw12" style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">IDENTITYAS <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> ID Disparadores <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Los <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__disparadores__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, también conocidos como desencadenantes (triggers en inglés) son definidos sobre la tabla en la que opera la sentencia INSERT, los desencadenantes son evaluados en el contexto de la operación. Desencadenantes BEFORE INSERT permiten la modificación de los valores que se insertará en la tabla. Desencadenantes AFTER INSERT no puede modificar los datos de ahora en adelante, pero se puede utilizar para iniciar acciones en otras tablas, por ejemplo para aplicar mecanismos de auditoría.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Utilizando un procedimiento almacenado especifico de base de datos que genera la clave suplente, realice la operación INSERT, y finalmente devuelve la clave generada.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Utilizando una sentencia <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SELECT__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> específica de base de datos, sobre una tabla temporal que contiene la última fila insertada. DB2 implementa esta característica de la siguiente manera:
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Utilizando una sentencia <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SELECT__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> después de la sentencia INSERT con función específica de base de datos, que devuelve la clave primaria generada por el registro insertado más recientemente.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Utilizando una combinación única de elementos del original SQL INSERT en una posterior sentencia <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SELECT__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Utilizando un <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__GUID__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> en la sentencia SQL INSERT y la recupera en una sentencia <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__SELECT__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Utilizando la función de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__PHP__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">mysql_insert_id de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__MySQL__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> después de la sentencia INSERT.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Utilizando un INSERT con la cláusula RETURNING para <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__Oracle__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, que sólo se puede utilizar dentro de un <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__PL/SQL__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> bloque, en el caso de <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__PostgreSQL__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> se puede usar también tanto con SQL como con PL/SQL.
 * <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En el caso de MS SQL se puede utilizar la siguiente instrucción:

UNIDAD 6 <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">6. LENGUAJE DE DEFINICIÓN DE DATOS (SQL-DDL) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El alumno construirá una BD utilizando el Lenguaje de Definición de Datos (DDL) para la creación y modificación de su esquema. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">6.1. Introducción a SQL. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Identificar el concepto y funcionalidad del SQL. Identificar las características de los lenguajes de DDL y DML. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El lenguaje de consulta estructurado o SQL (por sus siglas en <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__inglés__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">structured query language) es un <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__lenguaje declarativo__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de acceso a <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__bases de datos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> relacionales que permite especificar diversos tipos de operaciones en estas. Una de sus características es el manejo del <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__álgebra__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> y el <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__cálculo relacional__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> permitiendo efectuar <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__consultas__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> con el fin de recuperar -de una forma sencilla- <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__información__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> de interés de una base de datos, así como también hacer cambios sobre ella. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">Lenguaje de definición de datos (DDL) : <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Incluye órdenes para modificar, borrar o definir las tablas en las que se almacenan los datos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">CREATE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este comando crea un objeto dentro de la base de datos. Puede ser una <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__tabla__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">ALTER <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__campos__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;"> a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DROP <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Este comando elimina un objeto de la base de datos. Puede ser una tabla, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__vista__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__índice__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[|__trigger__] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER <span style="color: #0070c0; font-family: "Calibri","sans-serif";">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 18.66px;">LENGUAJE DE MANIPULACIÓN DE DATOS DML (DATA MANIPULATION LANGUAGE) <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">DEFINICION <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Un lenguaje de manipulación de datos (Data Manipulación Language, o DML en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">.

<span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">INSERT <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la tabla donde los datos son insertados. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">UPDATE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DELETE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">6.2. Creación del esquema de una BD. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Identificar las cláusulas y sintaxis del DDL para la creación de BD (crea base de datos, crea tabla, creación de índice, definición de restricciones, definición de llave primaria y foránea) y vistas. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Crear el esquema de una BD a través del Lenguaje SQL. TIPOS de DATOS de los atributos de las relaciones: <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Enteros de distintos tamaños: INTEGER o INT y SMALLINT. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Reales de distinta precisión: FLOAT (p), REAL, DOUBLE PRECISION, o el más <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Genérico DECIMAL (precisión, escala) (o NUMBER en Oracle), donde precisión=“número <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Total de dígitos” (de 1 a 38 en Oracle) y escala=“número de decimales” (de -84 a 127 en  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Oracle, con valor 0 por defecto). También admite DEC (p,e) o NUMERIC(p,e). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Caracteres: CHAR(n) o CHARACTER(n), n=longitud fija (por defecto n=1). También <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">VARCHAR(n), n=longitud máxima (Oracle aconseja usar VARCHAR2 con 4000 de máximo). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para cadenas muy largas usar LONG (máximo 2GB) o CLOB (Carácter Large OBject, máx. 4GB). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• NCHAR y NVARCHAR2 usan el juego de caracteres Nacional definido al crear la BD. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Cadenas de bits (para gráficos, sonidos, ficheros binarios...): BIT(n), n=longitud fija o  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">BIT VARYING(n), con n=longitud máxima. Por defecto n=1. En Oracle se prefiere <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Usar RAW (tamaño_fijo_máx_2000bytes) o LONG RAW (sin argumento y con un tamaño  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Máximo de 2GB). Últimamente Oracle aconseja usar LOB o BLOB (Binary Large OBject,  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Máximo 4GB), o también BFILE para almacenar la localización de un fichero binario. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Fecha y Hora: DATE (año, mes, día: YYYY-MM-DD). TIME (horas, minutos, segundos:  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">HH:MM:SS). TIMESTAMP incluye ambos (sinónimo a DATE en Oracle). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Se usan las funciones TO_CHAR y TO_DATE para convertir un dato de tipo fecha a  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Texto y viceversa. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Valor por defecto: Se asigna al atributo si no se especifica otro valor. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– DEFAULT <Valor> <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Restricciones para un Atributo: Son restricciones que afectan sólo a un  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Atributo particular. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Restricciones para la Tabla: Pueden afectar a uno o más atributos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Si una restricción involucra un único atributo, esta restricción puede escribirse <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Como restricción para ese atributo o al final, como restricción para la tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Si una restricción involucra varios atributos debe escribirse como restricción <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Para la tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Restricciones: Pueden tener un Nombre, que se escribe al principio, con el  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Formato: CONSTRAINT y un <Estado> que se verá después. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– El nombre es útil para referirse a la restricción (para borrarla, cambiar su estado...). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– Cuando se incumple una restricción, el SGBD debe dar un error indicando el nombre de  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Dicha restricción: Escoger un nombre adecuado es útil para saber el motivo del error. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Restricciones de Atributos (puede haber varias por cada uno): <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– NOT NULL <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Atributo que no admite valores NULL. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Es la única restricción que SÓLO puede ponerse como restricción de  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Atributo. Las demás pueden también ponerse como restricción de tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– PRIMARY KEY <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Clave o llave primaria (no admite NULL) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– UNIQUE <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Llave candidata. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– CHECK (<Condición>) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Comprueba que se cumple esa condición (si el atributo es no nulo). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– REFERENCES...  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• Llave externa (o foránea): Debe indicarse la tabla referenciada. Restricciones de Tabla: – PRIMARY KEY (<Atributos de la Llave Primaria>) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• La llave primaria puede estar formada por varios atributos. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– UNIQUE (<Llave Candidata o Secundaria>) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– CHECK (<Condición>) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• La condición puede estar formada por varios atributos, pero se interpretan <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Como los atributos de la misma fila. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">– FOREIGN KEY (<Llave Externa>) REFERENCES <Tabla>(<Atributos>) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[ON DELETE {CASCADE | SET NULL | SET DEFAULT}] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">[ON UPDATE {CASCADE | SET NULL | SET DEFAULT}] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Si se borra/actualiza <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La llave referenciada, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Se ponen los valores <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Que la referencian a su  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Valor por defecto. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Si se borra la llave <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Referenciada, se  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Borran las tuplas que <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La referencian <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Si se actualiza la  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Llave referenciada, se   <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Actualizan las tuplas <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Que la referencian <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Si se borra/actualiza <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">La llave referenciada, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Se ponen a NULL los <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Valores que la  <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Referencian (llave   <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Externa). <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">6.3.Modificación del esquema de una BD. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Identificar las cláusulas y sintaxis del DDL para la modificación de BD (alter y drop). <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Borrar Esquemas y Tablas: DROP <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">DROP TABLE <Nombre Tabla> [CASCADE | RESTRICT] <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">• CASCADE: Borra la tabla (y su contenido). Si hay referencias sobre ella <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">(Llaves externas en otras tablas), dichas restricciones son borradas. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Modificar el esquema de la BD mediante el Lenguaje SQL <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">. Unidad 7 <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">7. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">LENGUAJE DE MANIPULACIÓN DE DATOS (SQL-DML <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">) <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">El alumno realizará scripts utilizando el Lenguaje de Manipulación de Datos (DML) para la actualización y consulta de información <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">7.1. Consultas y vistas Identificar las cláusulas y sintaxis del DML para la generación de consultas, manejo de vistas y operaciones con los datos (select, view y funciones de agregado). Realizar consultas y vistas de una base de datos con SQL. Vistas <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">En el modelo de datos relacional la forma de guardar la información no es la mejor para ver los datos <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Una vista es una consulta, que refleja el contenido de una o más tablas, desde la que se puede acceder a los datos como si fuera una tabla. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Dos son las principales razones por las que podemos crear vistas. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">*Seguridad <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">nos pueden interesar que los usuarios tengan acceso a una parte de la información que hay en una tabla, pero no a toda la tabla. <span style="color: #ff0000; font-family: "Calibri","sans-serif"; font-size: 16px;">*Comodidad <span style="font-family: "Calibri","sans-serif"; font-size: 16px;">, <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">como hemos dicho el modelo relacional no es el más cómodo para visualizar los datos, lo que nos puede llevar a tener que escribir complejas sentencias SQL, tener una vista nos simplifica esta tarea. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Las vistas no tienen una copia física de los datos, son consultas a los datos que hay en las tablas, por lo que si actualizamos los datos de una vista, estamos actualizando realmente la tabla, y si actualizamos la tabla estos cambios serán visibles desde la vista. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Nota: No siempre podremos actualizar los datos de una vista, dependerá de la complejidad de la misma (dependerá de si el conjunto de resultados tiene acceso a la clave principal de la tabla o no), y del gestor de base de datos. No todos los gestores de bases de datos permiten actualizar vistas, ORACLE, por ejemplo, no lo permite, mientras que SQL Server sí. <span style="color: #0070c0; font-family: "Calibri","sans-serif"; font-size: 16px;">Creación de vistas. Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a la vista y una sentencia SQL SELECT válida. ||  CREATE VIEW AS (<sentencia_select>); Ejemplo: Crear una vista sobre nuestra tabla alquileres, en la que se nos muestre el nombre y apellidos del cliente en lugar de su código. ||  CREATE VIEW v alquileres AS ( SELECT nombre, apellidos, matricula FROM tAlquileres, tClientes WHERE ( tAlquileres.codigo_cliente = tClientes.codigo ) ) Si queremos, modificar la definición de nuestra vista podemos utilizar la sentencia ALTER VIEW, de forma muy parecida a como lo hacíamos con las tablas. En este caso queremos añadir los campos fx_alquiler y fx_devolucion a la vista. || ALTER VIEW vAlquileres AS ( SELECT nombre, apellidos, matricula, fx_alquiler, fx_devolucion FROM tAlquileres, tClientes WHERE ( tAlquileres.codigo_cliente = tClientes.codigo ) ) Por último podemos eliminar la vista a través de la sentencia DROP VIEW. Para eliminar la vista que hemos creado anteriormente se uitlizaría: ||  DROP VIEW vAlquileres;