Está en la página 1de 405

Base de Datos

LIC. EN INFORMÁTICA Y TECNOLOGÍAS


C O M P U TA C I O N A L E S
5º SEMESTRE
Profesor

 M.I.T.C. Jorge Eduardo Macías Luévano


 Cubículo: Edificio 26
 e-mail: eduardo.maciasl@edu.uaa.mx, colocar en
el asunto BDLITC:<asunto>

M.I.T.C. Jorge Eduardo 2


Macías Luévano
Objetivo General

 Al terminar el semestre, el alumno habrá aprendido


a crear modelos de datos Entidad-Relación a partir
de los requerimientos de información de un usuario,
interpretando las reglas del negocio en un modelo de
datos, que transforme las estructuras de datos
lógicas en estructuras de datos físicas aplicables a un
sistema de administración de base de datos
relacional; realizándolo de manera creativa y con
calidad.
Programa

Unidad Objetivo
Introducción a los Conocerá los conceptos básicos de Bases de Datos,
Sistemas de Identificará la arquitectura de los sistemas de base de datos,
Base de Datos Comprenderá la estructura de niveles de una base de datos,
Aprenderá las tareas o responsabilidades de un DBA
Modelo Conocerá los elementos que conforman el modelo de base de
Relacional datos relacional, Comprenderá su significado
Modelación de Identificará las diferentes metodologías de modelación de
Bases de Datos bases de datos con que puede trabajar, Conocerá de manera
profunda la modelación E-R, Complementará los conocimientos
obtenidos en la unidad anterior y llevará a la práctica la
modelación de una base de datos real.
Normalización Aprenderá los conceptos relativos a la normalización de una
base de datos, Será capaz de aplicar estos conceptos en
normalización práctica
Programa

Unidad Objetivo
Algebra y Cálculo Aprenderá los conceptos relacionados con el lenguaje de
Relacional consulta formal conocido como álgebra relacional y cálculo
relacional, Aplicará los mismos para realizar consultas
prácticas a una base de datos
Lenguajes de Aprenderá Las características generales de los lenguajes de
Manipulación de bases de datos, Aprenderá los comandos de los lenguajes de
Bases de Datos consulta comerciales SQL, Será capaz de manipular una base
Relacionales de datos utilizando SQL en la práctica para resolver consultas
reales, Aprenderá los comandos de los lenguajes de consulta
comerciales QBE, Será capaz de manipular una base de datos
utilizando QBE en la práctica para resolver consultas reales
Bibliografía

 BÁSICAS:
 Introducción a los sistemas de Bases de Datos, C. J. Date, Editorial Addison-Wesley,
Quinta edición
 Fundamentos de Bases de Datos, Henry F. Korth, Abraham Silberschatz, Mc. Graw-
Hill, 2a. Edición
 Fundamentals of Data Normalization, Alan F. Dutka, Howard H. Hanson, Addison
Wesley Publishing Company, 1989
 Database Modeling and Design The Entity-Relationship Approach, Toby J. Teorey,
Morgan Kaufmann Publishers, Inc., Quinta Edición
 Diapositivas del Profesor

 COMPLEMENTARIAS:
 Procesamiento de Bases de Datos, Fundamentos, Diseño e Instrumentación, David
M. Kroenke,Prentice-Hall
 Diseño de Bases de Datos, Gio Wiederhold, Mc. Graw-Hill, 2a. Edición
 Introducción a las Bases de Datos, Gyo., Editorial Prentice-Hall.
 Diseño de Bases de Datos Relacionales, Adoración de Miguel Castaño, Mario Piattini
Velthuis, Esperanza Marcos Martínez, Edit. Alfaomega. RA-M
Políticas del Curso

 Entrada a clase: tolerancia de 15 min, esto es si la


clase inicia a las 11:00 hrs., a las 11:15 se cierra la
puerta y ya no entra nadie más; aplica tanto para
alumnos como para el profesor.
 Una vez iniciada la clase, no salir y entrar al salón.
 Teléfonos Celulares:
 Prohibido su uso en exámenes, si un alumno lo usa en el
examen se le recogerá el examen.
 En clase ponerlo en modo vibrar y no contestar en clase, si por
alguna razón debe contestar deberá salir del salón.

M.I.T.C. Jorge Eduardo 7


Macías Luévano
Políticas

 Copia:
 En exámenes parciales:
 1ra. vez: Cero en ese examen.
 2da. vez: Anular curso por fraude.

 Examen final: Anular curso por fraude.


 Tareas: como no entregadas.
 Trabajo final: como no entregado y calificación de 0.

M.I.T.C. Jorge Eduardo 8


Macías Luévano
Políticas

 Evaluación:
Modo
Presencia
Primer Parcial 20%
Segundo Parcial 20%
Examen Final 25%
Proyecto Final 25%
Tareas y Actividades 10%

 Nota: para tener derecho al examen final es


necesario:
 Asistir por lo menos al 80% de las sesiones programadas.
 El proyecto final es requisito de examen final. La entrega debe ser
completa. Proyecto final será definido de acuerdo al profesor.

M.I.T.C. Jorge Eduardo 9


Macías Luévano
Políticas

 Fechas de Exámenes:

Examen Aplicación Reportar Resultados


Parcial 1 12 a 19 de Septiembre 2022 23 de Septiembre 2022
Parcial 2 24 a 28 de Octubre de 2022 4 de Noviembre 2022
Final 28/Noviembre a 3 de Enero 2023
9/Diciembre 2022
Trabajo Final

 Desarrollar un Sistema de Información y la base de


datos correspondiente; documentando:
 Descripción general del problema que se ha de resolver.
 Modelación de la Base de Datos.
 Normalización de Tablas, mínimo 3FN.
 Programación de la solución.
 Equipo de 3 o 4 integrantes.
 Fecha de entrega 22 de Noviembre de 2022

M.I.T.C. Jorge Eduardo 11


Macías Luévano
Unidad 1: Introducción a los
Sistemas de Base de Datos

OBJETIVOS:
1 . E N T E N D E R E L C O N C E P T O D E D AT O E
INFORMACIÓN.
2. CONOCERÁ LOS CONCEPTOS BÁSICOS DE BASES
D E D AT O S .
3. IDENTIFICARÁ LA ARQUITECTURA DE LOS
S I S T E M A S D E B A S E D E D AT O S
4. COMPRENDERÁ LA ESTRUCTURA DE NIVELES DE
U N A B A S E D E D AT O S .
5 . A P R E N D E R Á L A S TA R E A S O
RESPONSABILIDADES DE UN DBA
Introducción a los Sistemas de
Base de Datos
1 . C O N C EP T O S G EN ER A L ES D E U N S I S T EM A
DE BASE DE DATOS
1.1 Concepto de Dato e Información
1.2 Dato vs Información
1.3 Características que debe cumplir la Información.
1.4 ¿Qué es un Sistema de Base de Datos?
1.5 Diferencias entre sistemas de Archivos y Bases de Datos.
1.7 Objetivos de los Sistemas de Base de Datos.
1.8 Niveles de un Sistema de Base de Datos.
Concepto de Dato e Información

 Los términos Dato e Información, generalmente los


usamos indistintamente.
 Confundimos el termino Información con Dato.
 Lo cual es incorrecto ya que son completamente
diferentes, aunque se complementa uno del otro, ya
que la Información se compone de datos.
 Es común escuchar expresiones como:
 Necesito más datos para tomar la decisión.
 Lo correcto es: Necesito más información para tomar
la decisión
Definición de Dato

 Dato:
 Son símbolos de lenguajes, matemáticos u otros que se usan
para representar personas, objetos, eventos o conceptos.
 Reflejan hechos recogidos en la organización y que están
todavía sin procesar.
 Es un elemento que por si solo no significa algo o no aporta
información.
Definición de Dato

 Dato:
 Son realidades concretas en su estado primario, por ejemplo:
 nombre de una persona: Ana, Luis
 número telefónico: 449-123-45-89
 puesto en el organigrama: Director TI
 Color: Blanco
 etc.

 Ejemplos de Datos:
 Director, 449-134-1111, Tecnologías de Información, Ana Laura
Macías.
 10, 3er, blanco, automóvil, mesa, banco, silla, teléfono, etc.
Definición de Información

 Información:
 Es el resultado de la modelación, formateo, organización o
conversión de datos, en un modo que incremente el nivel de
conocimiento para el receptor.
 Conjunto de datos organizados que tienen un significado para
el interesado.
 Datos organizados de tal modo que adquieren un valor
adicional más allá del propio.

 Actualmente la información es uno de los recursos más


importantes de una organización.
 Quien tiene la información adecuada en tiempo y forma;
tiene el poder.
Ejemplos

 Datos:
 Gerente, 449-134-1111, Tecnologías de Información, Ana Laura
Macías.
 10, 3er, blanco, automóvil, mesa, banco, silla, teléfono.
 30%, Bimestre, Ventas.
 Base de Datos, Jorge Eduardo Macías Luévano, ISC
 Información
 En el 3er piso del edificio blanco trabajan 10 personas.
 Las ventas incrementaron en un 30% con respecto al bimestre
anterior.
 Ana Laura Macías es la Gerente de Tecnologías de Información y
su teléfono celular es 449-134-1111.
 Jorge Eduardo Macías Luévano es el Profesor de la materia de
Base de Datos para ISC.
Dato Vs. Información

 El dato es objetivo y la información es subjetiva.


 Dato: Calificación = 7
 Información: Juan obtuvo una calificación de 7, es una buena
calificación.
 La información se produce a partir de los datos.
 Según como se organicen los datos, pueden generar
diferente información.
 Ana Laura Macías es la Directora de Tecnologías de
Información y su teléfono celular es 449-134-1111.
 El teléfono 449-134-1111 pertenece al Director de TI.
Proceso para convertir Datos en Información

 Para convertir los datos en información se requiere de un


proceso o serie de tareas relacionadas entre si y ejecutadas
lógicamente, para producir un resultado definido.
 El proceso para definir relaciones entre datos requiere de
conocimiento.
 El conocimiento es la apreciación y comprensión de un
conjunto de información y de la utilidad que se puede
extraer de ella
Proceso de Transformación
(aplicación de
Dato conocimientos Información
para seleccionar, organizar
y manipular los datos
Proceso para convertir Datos en Información

Información:
Juan Durán es
alumno de la
Proceso de Transformación: materia de Base
Datos:
Políticas de calificación de la de Datos y sus
Base de
materia de Base de datos: 2 calificaciones
Datos
Exámenes Parciales, 1 son: ExP1=8,
Juan Durán,
Examen Fina, Tareas, 1 ExP2= 7, ExFin=
8, 7, 9, 7, 8, Proyecto Final, condicionado 9, Tareas=7,
90% al % de asistencia a clases. ProyFin=8; y
tuvo una
asistencia a
clases del 90%
Proceso para convertir Datos en Información

En la mayoría de las ocasiones, la información generada en un proceso se


convierte en Datos de otro Proceso de conversión a Información.

Datos:
Juan Durán Proceso de Transformación:
Promedio=(ExP1*0.15)+(ExP Información:
ExP1=8
2*0.15)+(ExFin*0.3)+(ProyFin Calificación Final
ExP2=7
*0.3)+(Tareas*0.1) de Juan Durán de
ExFin=9 Si Asist >= 80 Entonces la materia Base
Tareas=7 Califin=Promedio de Datos es 8.05
ProyFin=8 SiNo Califin=0
Asist=90%
Características que debe cumplir la Información

 Exacta:
 Debe ser precisa y libre de errores.
 Puede generarse información inexacta porque se insertan datos
inexactos en el proceso de transformación.
 Ejemplo:
 Información Inexacta: La calificación de Juan Díaz esta entre 5 y 7.
 Información Exacta: La calificación de Juan Díaz es de 6.67

 Completa:
 Debe contener todos los datos o hechos importantes.
 Ejemplo:
 Información Incompleta: La calificación es 6.
 Información Completa: La calificación de Juan Díaz es de 6
Características que debe cumplir la Información

 Económica:
 Los costos de producción de la información deben ser menor que
los beneficios proporcionados a la organización.
 Ejemplo:
 Sistema esiima:
 Costos:
• Inversión inicial de desarrollo e implementación
• Mantener en Operación y Mantenimiento.
 Beneficios:
• Mucho menor uso de papel
• Ahorro en sueldos y disminuir personal.
• Servicio de 24/7
• Disminuir tiempos y costos de traslados
• Tener información en línea.
• Contar con información necesaria y en tiempo para toma de
decisiones.
Características que debe cumplir la Información

 Confiable:
 Se debe garantizar la calidad de los datos utilizados, así como de las
fuentes de información.
 Ejemplo:
 No confiable: rumores, radio pasillo, publicaciones de algún evento y que no
muestran las fuentes.
 Confiable: publicaciones de eventos que muestran claramente las
fuentes de donde se obtuvo esa información, información obtenida de un
sistema de información bien alimentado y operado, datos estadísticos o
históricos.
 Flexible:
 La información debe ser flexible; la misma información, mostrada de
diferente manera, debe servir a diferentes usuarios.
 Ejemplo:
 Reporte de Inventarios por Almacén y Reporte de inventarios Global, ambos
reportes muestran la existencia de cada producto, solo que el por Almacén
muestra la existencia de cada producto en cada almacén, y el Global
muestra la existencia total en la organización de cada producto.
Características que debe cumplir la Información

 Pertinente:
 Debe ser adecuada y oportuna para el tomador de decisiones o para el sujeto
objetivo.
 La información debe ser la que la persona necesita para tomar la decisión o
aumentar su conocimiento, ni más ni menos.
 Ejemplo:
 Información Pertinente para el director de ventas: El total de ventas del día,
solo necesita el monto total de ventas.
 No pertinente: el reporte de todas las notas de venta del día.
 Simple:
 Debe ser simple, no debe ser compleja; orientada al usuario objetivo; el exceso
de información puede crear sobrecarga de información.
 Ejemplo:
 Información Simple: Para un vendedor: el precio de venta de un producto y
existencia.
 Información No Simple: Para un vendedor: toda la información de costo, gastos
de compra, formula para obtener el precio de venta; y toda la información de
compras, ventas, devoluciones a proveedores y devoluciones de clientes para
obtener la existencia actual del producto.
Características que debe cumplir la Información

 Oportuna:
 Debe tener acceso a ella la persona que la necesita, justo cuando la
requiere o necesite.
 Ejemplo:
 Oportuna: Para un vendedor acceder al precio de venta y existencia de un
producto, cuando el cliente se lo pide.
 No Oportuna: Para un vendedor acceder al precio de venta y existencia de
un producto después de que el cliente se fue.
 Verificable:
 Debe ser verificable, saber que es correcta.
 Se debe poder verificar en base a los datos que originan esa
información.
 Ejemplo:
 Verificable: Juan Díaz tiene un promedio general de 8.7, y muestra el
documento oficial del Kardex de calificaciones de la universidad.
 No Verificable: Andrés López dice que tiene promedio de 10, pero no existe
ningún documento oficial que lo pruebe.
Características que debe cumplir la Información

 Accesible:
 Debe ser de fácil acceso para los interesados.
 Ejemplo:
 Accesible: Alumno acceda a Información de su Kardex mediante
istema esiima.
 No Accesible: Alumno debe realizar un proceso muy largo y
complicado para tener acceso a la información del Kardex.
 Segura:
 Debe estar protegida contra el acceso de usuarios no autorizados.
 Ejemplo:
 Segura: Alumno tenga acceso a información del esiima, se debe
tener un usuario y contraseña, lo cual le da acceso solo a la
información correspondiente al alumno con ese usuario y
contraseña.
 No Segura: Alumno tenga acceso a toda la información de todos los
alumnos en el esiima.
Características que debe cumplir la Información

 Nivel de Detalle:
 Debe presentar el nivel de detalle que requiere el usuario objetivo,
y la presentación y formato adecuado, para que resulte sencilla y
fácil de manejar.
 Libre de Influencia:
 No debe tener influencia de ningún tipo.
 La información se debe de generar a partir de los datos de entrada
al proceso de generación de información, y la información no se
debe de alterar de acuerdo a conveniencia de alguien.
 Cuantificable:
 Se debe poder cuantificar que tanto sirve.
 Finalidad:
 Para que se va a utilizar.
Características que debe cumplir la Información

 Estas características estarán presentes en la


información en mayor o menor grado, dependiendo del
tipo de información y del uso que le vaya a dar a la
información el tomador de decisiones.
 Por ejemplo:
 En investigación de mercado es aceptable cierto grado de
inexactitud y parcialidad, pero la oportunidad es esencial.
 En la información financiera de la organización es importante la
exactitud, verificabilidad e integridad.
Actividad 1

 Realizar la Actividad 1 que se encuentra en el Aula


Virtual.
Valor de la Información

 La información debe ser de valor para el o los tomadores de


decisión de la organización.
 Este valor generalmente se cuantifica en dinero, o en acciones
oportunas que permitan una mejor convivencia entre
individuos y/o medio ambiente.
 Por ejemplo:
 Un sistema de información tiene un costo de $20,000.00 USD, pero con
la información y controles que genera se reducen costos por $30,000.00
USD y se aumentan las ventas por $50,000.00 USD.

 Un sistema de información que lleva el registro del crecimiento urbano


de una ciudad, crecimiento poblacional, uso y problemática de rutas del
servicio público de transporte, uso y problemática de servicios públicos,
electricidad, agua, etc.; tiene un costo de $10’000,000.00; en teoría no
va a reducir costos ni aumentar las ventas de un gobierno, pero ayuda a
tomar decisiones de como mejorar todos estos servicios.
Tipos de Información

 Informal:
 No esta basada en datos formales.
 Son las opiniones, juicios, intuición, experiencias personales,
corazonadas, rumores, sexto sentido, etc.
 Es necesaria para complementar la información formal.
 Se excluye del dominio de los sistemas de información
organizacionales.
 Ejemplo:
 Creo que va a llover porque le duele la rodilla a mi abuelo.
 La gasolina ya va a costar $10 el litro, porque se inauguró la nueva
refinería.
 Van a cambiar al Director de Finanzas, lo escuche en la cafetería.
 Según el estudio de mercadotecnia y de simulación la mejor opción
para poner la nueva tienda es en el sitio A, pero el propietario dice que
le late más el sitio B.
Tipos de Información
 Formal:
 Es el principal producto que produce un Sistema de Información.
 Incluye:
 Reportes o Consultas
 Reporte de Ventas
 Reporte del Incidencias del personal
 Políticas de la Organización
 Reporte de Ventas por debajo de la utilidad deseada.
 Manual de Reglamentos y Políticas de la organización.
 Procedimientos de la Organización
 Manual de procesos
 Avances de Orden de producción.
 Estado de cuenta de Clientes
 Requerimientos de planeación
 Estadísticas de Ventas o Ordenes de producción por fechas.
 Plan estratégico
 Presupuesto anual.
 Etc.
Ciclo de Vida de los Datos
¿Que es un Sistema de Base de Datos?

 Definición de Base de Datos:


 Se puede definir como una colección de datos
interrelacionados y almacenados en conjunto, sin
redundancias perjudiciales o innecesarias; su finalidad es
servir a una o más aplicaciones, de la mejor manera posible;
los datos se almacenan de modo que resulten independientes
de los programas que los usan; se emplean métodos muy bien
determinados para incluir datos nuevos, modificar o extraer
datos almacenados.
 Es un gran repositorio de datos, donde la organización guarda
todos los datos procesados y sin procesar, que reúne, y a la cual
acuden diversos usuarios para recupera estos datos.
¿Que es un Sistema de Base de Datos?

 Definición de Sistema de Base de Datos:


 Es un sistema repositorio de registros de datos, cuyo propósito
es mantener actualizada la información de una organización y
tener disponible, esa información, en base a la demanda de los
usuarios que la necesiten para la toma de decisiones.
 Es una colección de archivos interrelacionados y un conjunto
de programas que permitan a los usuarios acceder y modificar
estos archivos.
 Consta de 4 componentes principales:
 Datos (Base de Datos)
 Hardware
 Software (Aplicaciones y SMBD)
 Usuarios
Componentes de un Sistema de BD
Sistema de Administración de
Base de Datos (DBMS)

Base de Datos

Aplicaciones Usuario Final


Introducción a los Sistemas de
BD

1.5 DIFERENCIAS ENTRE SISTEMAS DE


ARCHIVOS Y BASE DE DATOS
Sistema de Archivos

 Dato:
 Son símbolos de lenguajes, matemáticos u otros que se usan
para representar personas, objetos, eventos o conceptos.
 449-123-54-45

 Registro:
 Es un conjunto de datos, asociados a una persona, objeto,
evento o concepto de interés.
 Ejemplo: Registro de datos contacto proveedor:

Nombre Teléfono Celular Email Empresa


Sistema de Archivos

 Archivo:
 Colección de todas las ocurrencias de un tipo de registro
(lógico) determinado.
 Estos archivos son del sistema operativo.
 Ejemplo: Archivo Datos contacto proveedor

Juan López 4409104578 4491236544 juan@uaa.mx UAA


Martha Rodríguez 4499125478 4498754156 marta@isea.gob ISEA

Silvia Pérez 4499136547 4492354698 sdiaz@tachis.com Tachi-S


Sistema de Archivos

 Tipos de Archivos:
 Texto o Secuenciales
 Binario o Aleatorios
 Indexado

 Ejemplo de como funcionan los archivos, en


aplicaciones o Sistemas de Información:
 Los datos permanentes se almacenan en uno o varios archivos.
 Existen varios programas que se utilizan para dar de alta,
consultar, modificar o eliminar estos datos.
 La estructura de cada archivo se debe especificar en cada
programa de software que lo utilice.
 No se aplica ninguna regla de base de datos.
Sistema de Archivos

 Ejemplo: Sistemas en un consultorio médico, donde


cada subsistema o módulo tiene sus propios archivos
 Sistema Historial Médico: permite almacenar, actualizar y
consultar el historial médico de un paciente.
 Datos a manejar:
 Nombre, Dirección, teléfono, celular, edad, sexo, fecha consulta,
peso, talla, padecimiento, diagnóstico, tratamiento.
 Archivos que se utilizan:
 HistorialMed(Nombre, Dirección, Teléfono, Celular, Edad,
Sexo, Fecha, Peso, Talla, Padecimiento, Diagnóstico,
Tratamiento)
Sistema de Archivos

 Ejemplo: Sistemas en un consultorio médico, donde


cada subsistema o módulo tiene sus propios archivos
 Sistema Agenda de citas: permita verificar horas y fechas
disponibles para una cita, registrar, consultar y cancelar citas.
 Datos a manejar:
 Nombre, teléfono, celular, fecha y hora de la cita.

 Archivos que se utilizan:


 Citas(Nombre, Teléfono, Celular, Fecha, Hora)
Sistema de Archivos

 Ejemplo: Sistemas en un consultorio médico, donde


cada subsistema o módulo tiene sus propios archivos
 Sistema de facturación:
 Datos a manejar:
 Nombre, RFC, Domicilio, teléfono, correo electrónico, folio,
fecha, cantidad, concepto de la venta, precio unitario, subtotal,
impuestos, total.
 Archivos que se utilizan:
 Factura(Nombre, RFC, Domicilio, Telefono, Celular, Email,
Folio, Fecha, Cantidad, Producto, PrecioUnitario, Subtotal,
Impuesto, Total)
Archivo ExpedienteMed del sistema Historial Médico
Nombr Direccion Tel Cel Ed Se Fecha Pe Talla Padecimi Diagnosti Tratamiento
e ad xo so ento co
Luis Nieto 123, 449916 449987 34 M 15/06/21 78 1.75 Dolor Gastritis Melox: tomar
Pérez Centro, Ags 7898 8787 estomacal cada 12 hrs.
Pablo Madero 345, 445897 445987 40 M 26/07/22 89 1.81 Falta Amibiasis Desparasitar
Ruiz Centro, Zac 5825 4561 Apetito
Luis Nieto 123, 449916 449987 35 M 28/07/22 80 1.75 5 días Influenza Desenfriol
Pérez Centro, Ags 7898 8787 gripe invernal cada 12 hrs.

Archivo Agenda del sistema de Agenda Médica


Nombre Tel Cel Fecha Hora

Luis Pérez 4499167898 4499878787 15/06/2021 18:00


Pablo Ruiz 4458975825 4459874561 26/07/2022 17:30
Luis Pérez 4499167898 4499878787 28/07/2022 19:00

Archivo Factura del sistema Facturación


Nom RFC Direccion Tel email Folio Fecha Cant Concepto Precio Subtot Imp Total
bre

Luis PEDL Nieto 123, 449916 lperez@gm 101 15/06/21 1 Consulta 500.00 500.00 80.00 580.00
Pérez 70112 Centro, 7898 ail.com Médica
8TR5 Ags, Ags

Luis PEDL Nieto 123, 449916 lperez@gm 101 28/07/22 1 Consulta 800.00 800.00 128.00 928.00
Pérez 70112 Centro, 7898 ail.com Médica
8TR5 Ags, Ags
Sistema de Archivos

 Mantener la información mediante un sistema de archivos


tiene los siguientes inconvenientes:
 Redundancia de datos
 Existe una gran cantidad de datos duplicados, en un mismo archivo
o en diferentes archvios.
 Ejemplo: En el archivo ExpedienteMed los datos Nombre,
Dirección, Teléfono, Celular y Sexo se repiten cada vez que un
paciente va a consulta médica.

Archivo ExpedienteMed del sistema Historial Médico


Nombr Direccion Tel Cel Ed Se Fecha Pe Talla Padecimi Diagnostic Tratamiento
e ad xo so ento o
Luis Nieto 123, 449916 449987 34 M 15/06/21 78 1.75 Dolor Gastritis Melox: tomar
Pérez Centro, Ags 7898 8787 estomacal cada 12 hrs.
Pablo Madero 345, 445897 445987 40 M 26/07/22 89 1.81 Falta Amibiasis Desparasitar
Ruiz Centro, Zac 5825 4561 Apetito
Luis Nieto 123, 449916 449987 35 M 28/07/22 80 1.75 5 días Influenza Desenfriol
Pérez Centro, Ags 7898 8787 gripe invernal cada 12 hrs.
Sistema de Archivos

 Mantener la información mediante un sistema de archivos


tiene los siguientes inconvenientes:
 Inconsistencia de datos:
 Al haber redundancia de datos, esto ocasiona que las diversas
copias de los datos de un mismo ente no coincidan y por lo tanto
nos genere Inconsistencia de Datos.
 Ejemplo: Archivo ExpedienteMed, si algún paciente que ya tiene
varias consultas médicas, por ende varios registros en el archivo
ExpedienteMed, y en varias de ellas ha cambiado su número de
celular o su domicilio, al querer consultar esos datos nos puede
dar el celular o domicilio anterior, lo cual no es correcto, o nos
puede dar los diferentes celulares y/o domicilios.
Archivo ExpedienteMed del sistema Historial Médico
Nombr Direccion Tel Cel Ed Se Fecha Pe Talla Padecimi Diagnosti Tratamiento
e ad xo so ento co
Luis Nieto 123, 449916 449987 34 M 15/06/21 78 1.75 Dolor Gastritis Melox: tomar
Pérez Centro, Ags 7898 8787 estomacal cada 12 hrs.
Pablo Madero 345, 445897 445987 40 M 26/07/22 89 1.81 Falta Amibiasis Desparasitar
Ruiz Centro, Zac 5825 4561 Apetito
Luis Nieto 123, 449916 449234 35 M 28/07/22 80 1.75 5 días Influenza Desenfriol
Pérez Centro, Ags 7898 0987 gripe invernal cada 12 hrs.

Archivo Agenda del sistema de Agenda Médica


Nombre Tel Cel Fecha Hora

Luis Pérez 4499167898 4499878787 15/06/2021 18:00


Pablo Ruiz 4458975825 4459874561 26/07/2022 17:30
Luis Pérez 4499167898 4492340987 28/07/2022 19:00

Archivo Factura del sistema Facturación


Nom RFC Direccion Tel email Folio Fecha Cant Concepto Precio Subtot Imp Total
bre

Luis PEDL Nieto 123, 449916 lperez@gm 101 15/06/21 1 Consulta 500.00 500.00 80.00 580.00
Pérez 70112 Centro, 7898 ail.com Médica
8TR5 Ags, Ags

Luis PEDL Nieto 123, 449916 lperez@gm 101 28/07/22 1 Consulta 800.00 800.00 128.00 928.00
Pérez 70112 Centro, 7898 ail.com Médica
8TR5 Ags, Ags
Sistema de Archivos

 Mantener la información mediante un sistema de


archivos tiene los siguientes inconvenientes:
 Dificultad en el acceso a los datos.
 Si se desea una consulta nueva, que no existe en el sistema actual,
se debe desarrollar un programa de software nuevo o modificar el
sistema actual para realizar dicha consulta.
 Se debe conocer la estructura exacta del o los archivos, la cual si no
esta documentado se debe verificar en el código de los programas
que manejan ese archivo.
 Ejemplo: Obtener todos los pacientes que tienen el mismo
diagnóstico, este reporte o consulta no lo tiene el sistema actual
por lo que se debe desarrollar un programa nuevo de software o
modificar el sistema actual para cumplir con esta consulta.
Sistema de Archivos

 Mantener la información mediante un sistema de archivos


tiene los siguientes inconvenientes:
 Aislamiento de datos
 Cada aplicación tienen sus propios archivos, con sus propias
estructuras, y sus propios tipos de archivos.
 Por lo tanto no todos los usuarios tienen acceso a toda la
información.
 Ejemplo: El Médico quiere saber cuales pacientes que hicieron cita
si acudieron a consulta.
 Como son dos sistemas diferentes, este reporte se tiene que realizar
manualmente, sacar el reporte de las consultas por la fecha solicitada, y
sacar el reporte de las citas realizadas en esa misma fecha, y hacer la
relación manualmente; la otra opción es desarrollar un programa de
software nuevo que realice este reporte, para lo cual se debe saber la
estructura y tipo de cada uno de los archivos, lo cual si no esta
documentado se van a tener varios problemas.
Sistema de Archivos

 Mantener la información mediante un sistema de


archivos tiene los siguientes inconvenientes:
 Sin estándares en los datos.
 Ya que cada aplicación maneja sus propios archivos, y aun cuando
esas aplicaciones las haya desarrollado la misma persono o equipo
de desarrollo, los tipos de los datos de los campos de los registros
de esos archivos no siguen un estándar bien definido.
 Ejemplo: el campo Fecha puede tener diferente tipo en los tres
archivos de los sistemas del consultorio médico, en el archivo
ExpedienteMed puede ser del tipo Date, y en los archivos Agenda y
Factura puede ser de tipo Varchar o String.
Sistema de Archivos

 Mantener la información mediante un sistema de


archivos tiene los siguientes inconvenientes:
 Problemas de Seguridad en los datos
 Seguridad en los datos:
 Que no todos los usuarios tengan acceso a todos los datos.
 Que los datos solo puedan modificarse por medio de las aplicaciones
dueñas de esos datos.
 Que los archivos no se puedan borrar o copiar por personal no
autorizado.
 Enlos archivos tradicionales no se tiene la certeza de que
estén seguros, ya que los puedo borrar o copiar sin ninguna
restricción, o si conozco la estructura y ubicación del archivo
puedo hacer un programa de software para modificarlo.
Sistema de Archivos

 Mantener la información mediante un sistema de archivos


tiene los siguientes inconvenientes:
 Problemas de Integridad
 Integridad: Que los datos almacenados estén correctos o con los
valores correctos.
 Los valores de los datos almacenados deben cumplir ciertos tipos de
restricciones de consistencia; asegurando, así, que los datos
almacenados son los correctos.
 Para cumplir con la integridad de los datos los programadores
realizan el código para verificar el cumplimiento de las restricciones
de consistencia, el problema se presenta cuando estas restricciones
cambian o aumentan una vez terminado el sistema de software.
 La redundancia e inconsistencia de datos generan el problema de
integridad, los archivos tradicionales normalmente adolecen de estos
tres problemas.
 Ejemplo: el valor para el campo Sexo solo debe ser F o M, lo cual se
debe validar por programación, en archivos tradicionales.
Sistema de Archivos

 Mantener la información mediante un sistema de


archivos tiene los siguientes inconvenientes:
 Conflicto de requerimientos
 Al cubrir los requerimientos individuales de los usuarios de cada
aplicación se puede caer en conflictos entre lo que necesita cada
usuario; ocasionando redundancia e inconsistencia de datos,
problemas de integridad y de seguridad.
 Ejemplo: En el sistema del expediente médico, la secretaria es
quien da de alta o modifica los datos generales del paciente, pero
como esto esta junto con los datos de la consulta médica, puede
ver, también, los datos de las consultas médicas del paciente lo
cual no es correcto.
Sistema de Base de Datos

 En un sistema de Base de Datos:


 Los datos se almacenan en un archivo, para el sistema operativo, el
cual esta subdividido en tablas.
 Este Archivo y su contenido es administrado por una aplicación
llamada Sistema Manejador de Base de Datos (SMBD o DBMS); pe:
Oracle, SQL Server, DBII, Firebird, MySQL, etc.
 La estructura de las tablas se especifica en el SMBD
 Los diferentes programas o aplicaciones que requieran acceder,
modificar o agregar datos a la base de datos, solo deben especifica la
apertura de la base de datos, los nombres de las tablas y campos a
utilizar.
 La base de datos se centraliza en un solo lugar, y sirve para varias
aplicaciones.
 Acceso a los datos mediante SQL, para consultas que no existen.
Sistema de Base de Datos

 Mantener la información mediante un sistema de


Base de Datos tiene las siguientes ventajas:
 Redundancia de datos Mínima
 En la base de datos, bien diseñada y normalizada, la redundancia
de datos (duplicidad) es mínima.
 Mejorando el rendimiento y almacenamiento.
Tabla Paciente de la BD SisMed
ID Nombre Direccion Tel Cel EdoCiv Edad Sex RFC email
Cte
1 Luis Pérez Nieto 123, Centro, Ags 4499167 4499878 Soltero 34 M PEDL701128 lperez@gmail.c
898 787 TR5 om
2 Pablo Ruiz Madero 345, Centro, 4458975 4459874 Casado 40 M
Zac 825 561

Tabla Agenda de la
BD SisMed Tabla ExpMed de la BD SisMed

IDC Fecha Hora ID Fecha Peso Talla Padecimiento Diagnostico Tratamiento


te Cte
1 15/06/2018 18:00 1 15/06/2018 78 1.75 Dolor estomacal Gastritis Melox: tomar
cada 12 hrs.
2 16/07/2019 17:30
2 16/07/2019 89 1.81 Falta Apetito Amibiasis Desparasitar
1 10/08/2019 19:00
1 10/08/2019 78 1.75 5 días gripe Influenza Desenfriol cada
invernal 12 hrs.

Tabla Factura de la BD SisMed


IDCte Folio Fecha Cant Concepto Precio Subtot Imp Total

1 101 15/06/18 1 Consulta Médica 500.00 500.00 80.00 580.00

1 102 10/08/19 1 Consulta Médica 800.00 800.00 128.00 928.00


Sistema de Base de Datos

 Mantener la información mediante un sistema de Base


de Datos tiene las siguientes ventajas:
 No existe Inconsistencia de datos
 Ya que al reducir o eliminar la redundancia de datos también se
elimina la inconsistencia de datos.
 Ejemplo: al cambiar un paciente su número de celular o domicilio esto
se hace en un solo lugar, la tabla de Paciente.
 Facilidad en el acceso a los datos
 Si se desea una consulta nueva, que no existe en el sistema actual, se
puede realizar mediante el lenguaje SQL del Sistema Manejador de
Base de Datos (SMBD), con apoyo del Administrador de la Base de
Datos (DBA).
 Ejemplo: Obtener todos los pacientes que tienen el mismo
diagnóstico, este reporte o consulta no lo tiene el sistema actual por lo
que se puede obtener mediante una consulta con SQL.
Sistema de Base de Datos

 Mantener la información mediante un sistema de


Base de Datos tiene las siguientes ventajas:
 Compartir datos
 Se puede diseñar una sola base de datos para la organización, que
cumpla con todos los requerimientos para todas las aplicaciones, y
que compartan datos sin ningún problema.
 Ejemplo: en el sistema del consultorio médico se tendría una sola
base de datos para los tres sistemas, y comparten la tabla de
Paciente.
Sistema de Base de Datos

 Mantener la información mediante un sistema de


Base de Datos tiene las siguientes ventajas:
 Con estándares en los datos
 Al realizar el diseño de la base datos y crearla en base a un SMBD,
se estandarizan los tipos de datos, tamaños a lo que maneja el
SMBD.
 Si hay varios campos iguales que aparecen en diferentes tablas, se
estandarizan al mismo tipo y tamaño.
 Seguridad en los datos
 Los SMBD manejan dos niveles de seguridad para acceder y
utilizar una base de datos:
 Primer nivel: Usuario y Contraseña para ingresar al SMBD.
 Segundo nivel: Privilegios para utilizar la base de datos.
Sistema de Base de Datos

 Mantener la información mediante un sistema de


Base de Datos tiene las siguientes ventajas:
 Integridad en los datos
 Con las bases de datos muchas de las validaciones para la
integridad de los datos se definen al momento de definir las tablas
y los campos de las mismas, y al momento de guardar un dato en
la base de datos, el SMBD verifica si el campo donde se va a
guardarse el dato cuenta con alguna restricción, si es así el SMBD
verifica que el dato cumpla esa restricción.
 Ejemplo: el valor para el campo Sexo solo debe ser F o M, para lo
cual se puede definir esta restricción directamente en la base de
datos.
Sistema de Base de Datos

 Mantener la información mediante un sistema de


Base de Datos tiene las siguientes ventajas:
 Balance de conflicto de requerimientos.
 Se define y diseña una base de datos que cubra todos los
requerimientos de la empresa, y por lo tanto que sea utilizada por
todas los sistemas de la empresa, por lo que se reduce
considerablemente los conflictos de requerimientos.
 Independencia de Datos
 Al utilizar Bases de Datos, la estructura de las tablas, y la base de
datos es independiente a los programas de software, ya que la
definición y cambios de la estructura de las tablas de la base de
datos se realiza en el SMBD, y en los programas de software solo
es necesario conocer los nombres de las tablas y campos a utilizar.
Sistemas de Base de Datos vs. Sistemas de Archivos

Sistemas de Base de Datos Sistemas de Archivos


Mínima Redundancia de Datos Redundancia de Datos
No Inconsistencia de Datos Inconsistencia de Datos
Facilidad de Acceso de Datos Dificultad en el Acceso de Datos
Compartir Datos Aislamiento de Datos
Con Estándares en Datos Sin Estándares en Datos
Seguridad en Datos Inseguridad en Datos
Integridad de Datos Problemas de Integridad de datos
Balance de Conflicto de Requerimientos Conflicto de Requerimientos
Independencia de Datos Dependencia de los Datos
Introducción a los Sistemas de
BD

1.3 OBJETIVOS DE LOS SISTEMAS DE


BASE DE DATOS
Objetivo Principal de los Sistemas de BD

 El objetivo principal de un sistema de Base de Datos


es proporcionar a los usuarios finales una visión
abstracta de los datos, escondiendo detalles de cómo
se almacenan y mantienen los datos dentro de la BD.
 Entendiendo por usuario: desarrolladores de
sistemas y usuarios finales.
Objetivos de los Sistemas de BD

 Independencia lógica y física de los datos.


 Se refiere a la capacidad de modificar una definición de
esquema en un nivel de la arquitectura sin que esta
modificación afecte al nivel inmediatamente superior.
 El conjunto de datos contenidos en la base debe ser única
y estar integrada por los mismos datos.
 Acceso concurrente por parte de múltiples
usuarios
 Las bases de datos pretenden servir al conjunto de de la
organización, manejando los datos como otro recurso.
Por lo tanto, las bases de datos han de atender a múltiples
usuarios y a diferentes aplicaciones. En contraposición a
los sistemas de ficheros, en donde cada fichero atiende a
determinada aplicación.
Objetivos de los Sistemas de BD

 Redundancia mínima.
 La redundancia de datos debe ser controlada, de forma
que no exista duplicidad de datos innecesarias.
 Que la redundancia física, convenientes muchas veces a
fin de responder a objetivos de eficiencia, sean tratadas
por el mismo sistema, de modo que no puedan
producirse inconsistencias.
 Se trata de usar la base de datos como repositorio común
de datos para distintas aplicaciones.
 Un dato se actualizará lógicamente por el usuario en
forma única, y el sistema se preocupará de cambiar
físicamente todos aquellos campos en los que el dato
estuviese repetido en caso de existir redundancia física
(redundancia controlada).
Objetivos de los Sistemas de BD

 Distribución espacial de los datos.


 Los datos pueden encontrarse en otra habitación, otro edificio
e incluso otro país, el usuario no tiene por qué preocuparse de
la localización espacial de los datos a los que accede.
 Integridad de los datos.
 Se refiere a las medidas de seguridad que impiden que se
introduzcan datos erróneos.
 Esto puede suceder tanto por motivos físicos (defectos de
hardware, actualización incompleta debido a causas externas),
como de operación (introducción de datos incoherentes).
 Consultas complejas optimizadas.
 Que se pueda realizar consultas complejas a los datos en la BD,
y que sea de manera rápida.
Objetivos de los Sistemas de BD

 Seguridad de acceso y auditoría.


 Se refiere al derecho de acceso a los datos contenidos en la base por parte de
personas y organismos.
 El sistema de auditoría mantiene el control de acceso a la base, con el objeto de
saber qué o quién realizó una determinada modificación y en qué momento. Por
ejemplo un profesor quiere cambiar una calificación por alguna omisión, el
sistema de la base le permitirá hacer el cambio pero quedara el registro del día y
el motivo del cambio, esto lo checan los jefes de academia y observan si el
profesor le ayuda al alumno o realizan su trabajo adecuadamente.
 Respaldo y recuperación.
 Se refiere a la capacidad de un sistema de base de datos de recuperar su estado
en un momento previo a la pérdida de datos.
 Acceso a través de lenguajes de programación estándar.
 Se refiere a la posibilidad ya mencionada de acceder a los datos de una
base mediante lenguajes de programación ajenos al sistema de base de datos. en
pocas palabras son los programas o software con los que se mandaran llamar y
diseñar los datos que aparecerán en la pantalla.
Introducción a los Sistemas de
BD

1.4 COMPONENTES DE UNA BASE DE


DATOS
Componentes de una BD

 Datos:
 Los datos almacenados en la base de datos; y la estructura que tienen.

 Hardware:
 Son los los servidores (computadora) y dispositivos de almacenamiento
secundario, donde esta físicamente la base de datos: discos duros,
unidades de cinta, etc.;.
 Software:
 Es el software que permite la comunicación entre el usuario y la base de
datos, como se encuentra físicamente.
 A este software se le conoce como Sistema Manejador de Base de Datos
(SMBD) y los sistemas de software.
 Usuarios:
 Son quienes acceden a la base de datos y son de 3 tipos:
1. Programadores de Aplicaciones.
2. Usuarios Finales.
3. Administrador de la Base de datos (DBA)
Componentes de un Sistema de BD
Sistema de Administración de
Base de Datos (DBMS)

Base de Datos

Aplicaciones Usuario Final


Introducción a los Sistemas de
BD

1.5 NIVELES DE UN SISTEMA DE BASE


DE DATOS
Niveles del Sistema de BD

 También conocido como niveles de abstracción de


los datos o de la base de datos.
 Los Niveles del Sistema de BD son tres:
 Nivel Externo o Esquema Externo o Estructura Lógica del
Usuario
 Nivel Conceptual o Esquema Conceptual o Estructura Lógica
Global
 Nivel Interno o Esquema Interno o Estructura Física
Niveles del Sistema de BD

 Nivel Interno o Esquema Interno o Estructura Física:


 Es el nivel más bajo de abstracción, describe cómo se almacenan
realmente los datos.
 Se describen en detalles las estructuras de datos complejas de bajo
nivel. Es definido por el SMBD.
 Es el que se acerca más al almacenamiento físico.
 Nivel Conceptual o Esquema Conceptual o Estructura
Lógica Global:
 Es el siguiente nivel más alto de abstracción, describe qué datos se
almacenan en la base de datos y la relación entre esos datos.
 La base de datos se describe en estructuras (tablas) relativamente
simples.
 Sirve de intermediario entre el nivel Físico y Externo.
 El Administrador de Base de Datos (DBA) es el usuario de este nivel.
Niveles del Sistema de BD

 Nivel Externo o Esquema Externo o Estructura


Lógica del Usuario:
 Es el nivel más alto de abstracción, describe solo parte de la
base de datos completa.
 Es el más cercano al usuario final.
 Es la forma como el usuario final ve la información que
necesita de la BD.
 Los usuarios de este nivel son los programadores de
aplicaciones, usuarios de sistemas de información y DBA.
Niveles del Sistema de BD
Nombre del empleado
Nombre del empleado
Nivel Externo No. de seguro social del empleado
Dirección del empleado
Dirección del empleado
Salario anual del empleado

Usuario
Nivel Conceptual Empleado Departamento

Nombre Dirección Salario

No. de seguro social


DBA
Nombre: VarChar(60)
No_Reg_Soc: Int(9) unique
Nivel Interno Departamento: VarChar(6)
Direccion: VarChar(51)
Salario: Float(9,2)
Introducción a los Sistemas de
BD

2. ARQUITECTURA DE UN SISTEMA DE
BASE DE DATOS
Arquitectura ANSI-SPARC

 American National Standards Institute, Standards


Planning And Requirements Committee (ANSI-SPARC).
 Esta arquitectura es un estándar de diseño abstracto para
un Sistema Manejador de BD (SMBD) propuesto por
primera vez en 1975.
 Los SMBD actuales se basan en esta arquitectura.
 Esta arquitectura se divide en 3 niveles:
 Nivel Interno: Más cercano al almacenamiento físico
 Nivel Conceptual: Sirve de comunicación entre el nivel Interno y
Externo.
 Nivel Externo: Más cercano a los usuarios; vistas de los datos para
cada usuario individual.
Niveles de la Arquitectura de BD

(C.J. Date Edición 4)


Nivel Externo

 Es el más cercano al usuario. Un usuario puede ser tanto


un usuario final, así como un programador y el DBA.
 Son vistas para cada usuario individual.
 Un usuario individual se interesa solo en una porción de
la BD, la cual se le presente mediante una vista externa
de la BD, por ejemplo:
 Reporte de Alumnos en riesgo de darlos de baja.
 Cada usuario tiene un lenguaje a su disposición:
 Programadores: Java, C++, C#, etc.
 Usuario final: Query Lenguages, Reporteadores, etc.
 Lo importante de estos lenguajes es que cuenten con sub-lenguaje de
manejo de datos (DSL).
Nivel Externo

 Cada vista externa es definida mediante un Esquema


Externo, el cual consta de registros externos que
forman la vista externa; y es escrito usando DDL.
 Ejemplo: ID_Alumno: Int(7); Nombre_Alumno:Varchar(60);
 Ejemplo de vista externa:

Id Alumno Nombre del Alumno


123456 Luis Alberto Díaz Sánchez
123485 Juan Luis Pérez Ochoa
Nivel Conceptual

 La vista conceptual es la representación de toda los


datos contenidos en la BD; en una forma abstracta
en comparación con la forma en que se almacena
físicamente.
 Es un poco diferente a como la ve un usuario final.
 La vista conceptual consiste de múltiples ocurrencias
de varios tipos de registros conceptuales.
 Se define mediante el Esquema Conceptual, el cual
esta compuesto de Registros Conceptuales.
Nivel Conceptual
Nivel Interno

 Es una representación de bajo nivel de toda la base


de datos.
 Las vistas internas son descritas mediante el
esquema interno.
 El esquema interno:
 Describe los tipos de los campos que componen los diferentes
registros, que su vez, componen los diferentes archivos de
datos de la BD.
 Define índices que existen.
 Como son representados los registros almacenados.
 Cual es la secuencia física que siguen los registros
almacenados.
Arquitectura Relacional

 Base de Datos Relacional:


 Es una base de datos donde el usuario la percibe como una
colección de tablas.
 Considere las siguientes tablas:

Id_Alum Nom_Alum Estatus


1 Juan A
Id_Carr Nom_Carr Sem
2 Sandra A
LITC Lic. En Inf. y T. C. 9
11 Martha B
ISC Ing. en SC 10
13 Luis A
IEC Ing. en Electrónica 10
14 Pedro B
ICI Ing. en Comp. Inteligente 10
Tabla o Entidad: Alumno
Id_Alum Nom_Alum Estatus
Tabla o Entidad: Carrera
1 Juan A
Id_Carr Nom_Carr Sem
2 Sandra A
LITC Lic. En Inf. y T. C. 9
11 Martha B
ISC Ing. en SC 10
13 Luis A IEC Ing. en Electrónica 10
14 Pedro B ICI Ing. en Comp. Inteligente 10

Id_Alum Id_Carr
1 LITC
2 ISC
11 ISC Tabla o Relación:
Alumno_Carrera
13 IEC
Introducción a los Sistemas de
BD

3. ADMINISTRADOR DE BASE DE
DATOS
(DBA)
DBA

 El DBA es la persona o grupo de personas que son


responsables del control total del sistema de base de
datos.
Nivel Conceptual Empleado Departamento

Nombre Dirección Salario

No. de seguro social


DBA
Nombre: VarChar(60)
No_Reg_Soc: Int(9) unique
Nivel Interno Departamento: VarChar(6)
Direccion: VarChar(51)
Salario: Float(9,2)
Responsabilidades del DBA

 Decidir que datos contendrá la BD:


 Que entidades o tablas son de interés a la organización, y que datos
contendrán esas entidades.
 Decidir la estructura de almacenamiento y estrategia de
acceso:
 Define como los datos serán representados en la BD
 Define el mapeo asociado entre los niveles Interno y Conceptual.
 Colaborar con Usuarios:
 Para asegurar que los datos y/o información que requieren los
usuarios este disponible, en la BD.
 Ayudar a los usuarios a escribir o definir los esquemas o vistas
externas necesarias
Responsabilidades del DBA

 Definir validaciones de seguridad e integridad:


 Esta validación se define en el esquema Conceptual.
 Esta validación es de suma importancia.

 Definir estrategias para respaldo y recuperación:


 El DBA debe definir e implementar una estrategia adecuada de
respaldos; y de recuperación en caso de ser necesario.
 Monitorear el desempeño y respuesta a los cambios
de requerimientos.
 El DBA es el responsable de que el sistema de BD tenga el
desempeño adecuado a las necesidades de la organización.
 Así como hacer los ajustes necesarios, en el sistema de BD,
cuando hay cambios en los requerimientos.
Unidad 2: Modelo Relacional

OBJETIVOS:
1. CONOCERÁ LOS ELEMENTOS QUE CONFORMAN EL
MODELO DE BASE DE DATOS RELACIONAL
2. COMPRENDERÁ SU SIGNIFICADO
Modelo Relacional

2 . 1 . R E PA S O D E T EO R Í A D E
CONJUNTOS
Teoría de Conjuntos

 Conjunto: Colección abstracta de objetos que


tienen alguna característica en común.
 A=Conjunto Alumnos
 M=Conjunto Materias
A AM

 A cada objeto de la colección se le llama elemento o


miembro del conjunto
 Teoría de Conjuntos: es una rama de la lógica
matemática que estudia las propiedades y relaciones
de los conjuntos.
Teoría de Conjuntos

 Tipos de Conjuntos:
 Conjunto Universal: Todo lo que tiene que ver con el
problema.
 Alumnos de la UAA
 Conjunto Finito: Tiene un número determinado de
miembros.
 Alumnos de la carrera de ISC de la UAA
 Conjunto Infinito: Tiene un número indeterminado de
miembros.
 Números Reales
 Conjunto Vacío: No contiene elementos.
 Alumnos que están inscritos al mismo tiempo en las carreras de
ISC, LITC e ICI.
Teoría de Conjuntos

 Características de los Conjuntos:


 Membresía: cuando un objeto es miembro o pertenece a un
conjunto.
 Ejemplo: El número 7 es miembro del Conjunto de números
impares.
 Subconjuntos: Cuando se toma a una parte de los miembros
de un conjunto.
 Ejemplo: {1, 3, 5} es subconjunto de los números impares.
Teoría de Conjuntos

 Operaciones con Conjuntos:


 Unión: La unión de los conjuntos A y B, es el conjunto
formado por los elementos que pertenecen al conjunto A o al
conjunto B.

 Intersección: Dado los conjuntos A y B, el conjunto de los


elementos comunes a los dos conjuntos, A y B, se le llama
Intersección de A y B.

Teoría de Conjuntos

 Operaciones con Conjuntos (Continuación):


 Diferencia: La diferencia de A y B es el conjunto de los
elementos de A que no están en B.
A- B ={x / x Î A; x Ï B}

 Complemento: El complemento de un conjunto respecto al


universo U, es el conjunto de elementos de U que no
pertenecen a A.
A' ={x / x Î U ; x Ï A}
Teoría de Conjuntos Ejercicio

 Se tiene el conjunto universo U={Alumnos de la UAA}


 Se tienen los conjuntos:
 A={Alumnos de ISC}
 B={Alumnos de LITC}
 C={Alumnos de ICI}
 Con estos conjuntos realizar las operaciones de conjuntos
(Unión, Intersección, Diferencia y Complemento)
necesarias para obtener:
 D={Todos los alumnos de las carreras del área de T.I.}
 E={Los alumnos de las carreras del área de T.I. que están inscritos a la
materia de Base de Datos}
 F={Los alumnos de la carrera de LITC que no están inscritos a la
materia de Base de Datos}
 G={Los alumnos de la UAA que no son de carrearas del área de T.I.}
Modelo Relacional

2.2. BASE DE DATOS


RELACIONALES
Base de Datos Relacionales

 Una Base de Datos Relacional consiste en un conjunto de tablas, cada


una de ellas con nombre exclusivo.
 Cada tabla consta de columnas y renglones.
 La terminología relacional es: Relación, Atributo, Dominio, Tupla y
Llave primaria.

Llave Primaria

Atributo

Relación
Tuplas
Base de Datos Relacional

Termino Formal Termino Informal


Equivalente
Relación Tabla
Tupla Registro
Atributo Columna o Campo
Llave primaria Identificador único
Dominio Conjunto de valores aceptados
Atributo

 Atributo: es una característica de un objeto del cual nos


interesa guardar información.
 Objeto Alumno
 Atributos o Características:
 Nombre
 Dirección
 Teléfono
 Padres o Tutores
 Correo electrónico.
 ID
 Carrera
 Sexo
 Fecha de Nacimiento.
Atributo

 Los atributos en la base de datos son las columnas de


las tablas, y cada atributo toma su valor de un
Dominio en particular.
Atributos
Dominio

 La unidad más pequeña de información, en un


modelo relacional, es el valor individual de un dato.
 Ejemplo:
 ID_Alum = 148371
 Nombre_Alum= José Manuel Díaz López
 Estatus = A

 Estos valores se consideran atómicos, esto es que no se pueden


descomponer en más datos, en cuanto al modelo concierne.
Dominio

 Un Dominio es un conjunto de valores del mismo


tipo, de los cuales un atributo toma su valor.
 Por ejemplo:
 El Dominio de ID_Alum son los valores numéricos enteros
mayores a 0
 El Dominio de Nombre_Alum: son valores alfabéticos que
representan nombres de personas.
 El Dominio de Estatus: son solo los valores A y B.
Dominio

 Puede haber valores en el Dominio, de un atributo, que


aun no aparecen como valor del atributo.
 Los Dominios son conceptos primarios de la naturaleza.
 Números enteros
 Números reales
 Caracteres
 Valores alfanuméricos
 Etc.
 Por lo general los dominios:
 no están explícitamente almacenados en la BD, como un conjunto de
valores.
 son especificados como parte de la definición de la BD
Dominio

 Dominios simples:
 Son los que sus valores son totalmente atómicos.
 ID, Sexo, Teléfono, Edad, Código Postal
 Dominios compuestos:
 Son aquellos cuyos valores son resultado de producto
cartesiano de dos o más Dominios Simples.
 Fecha_Nacimiento: es el resultado del producto cartesiano de los
dominios “Días_del_Mes” y “Mes” y “Año”
 Domicilio: resultado del producto cartesiano de los dominios;
Calle, Número exterior, Número interior, Colonia, Municipio y
Estado.
Tuplas

 Una Tupla corresponde a un renglón de la Relación o


Tabla.
 La siguiente es la Relación/Tabla Alumnos.

 Una tupla de esta tabla es: {2, Sandra, A}


Relación

 Definición: Una Relación en los dominios D1, D2,…,


Dn consiste en encabezados de columnas y cuerpo.
 El encabezado de columnas consiste en un conjunto
compuesto de atributos A1, A2,…, An; donde cada atributo Ai
corresponde exactamente a uno de los dominios Di.
 El cuerpo consiste de un conjunto de Tuplas que cambian con
el tiempo, donde cada tupla consta de pares de atributo-valor
(Ai:vi), donde vi es un valor en el dominio Di asociado al
atributo Ai. Ejemplo: (id_alum:2, Nom_alum:Sandra,
Estatus:A)
Relación

 Dada la siguiente Relación o Tabla Alumnos.

Encabezado de Columnas o Conjunto de Atributos

Cuerpo o Conjunto de
Tuplas; compuestas de
pares Atributo-Valor
(ID_Alum, 1),
(Nom_Alum, Juan),
(Estatus, A)
Llaves

 Una Relación es un conjunto de tuplas.


 Todas las tuplas de una Relación deben ser distintas,
esto es que no puede haber dos o más tuplas que
tengan la misma combinación de valores para todos
los atributos.
Id_Alum Nom_Alum Estatus
1 Juan A
2 Sandra A
11 Martha B
13 Luis A
14 Juan A
Llaves

 Debe haber una forma de identificar de forma única


a una tupla de las demás, esto se logra mediante las
Llaves.
 Existen diferentes tipos de llaves:
 Superllaves
 Llave Primaria
 Llave candidata
 Llave Foránea
Llaves

 Superllaves:
 SubConjuntos de atributos que identifican de forma única a una
tupla, dentro de una relación.
 Ejemplo: (ID_Alum+Nom_Alum+Estatus),
(ID_Alum+Nom_Alum), (Id_Alum)
SuperLLaves

Id_Alum Nom_Alum Estatus


1 Juan A
2 Sandra A
11 Martha B
13 Luis A
14 Juan A
Llaves

 Llave Primaria:
 Es un conjunto mínimo de atributos de una relación que
identifican de manera única a una tupla.
 Es una superllave mínima, sin redundancia.
 Ejemplo: En la Relación/Tabla Alumno la Llave Primaria es
ID_Alum
 Llave candidata:
 Combinación de uno o más atributos que pueden actuar como
llave primaria.
 Ejemplo: En la Relación/Tabla Alumno las Llaves Candidatos
son ID_Alum, (ID_Alum, Nombre_Alum)
Llaves

 Llaves foráneas:
 Es el conjunto de atributos en una Tabla/Relación, que es el resultado de
la asociación dos o más Tablas/Relaciones; donde este conjunto de
atributos representa a la llave primaria de las tablas asociadas.
 Ejemplo: La asociación entre las tablas Alumno y Carrera

Llave Foránea
Alumno Carrera
Id_Al Nom_Al Estat Carre Id_Carr Nom_Carr Sem
um um us ra LITC Lic. En Inf. y T. C. 9
1 Juan A LITC ISC Ing. en SC 9
2 Sandra A ISC IEC Ing. en Electrónica 10
11 Martha B LITC ICI Ing. en Comp. Inteligente 10
13 Luis A ISC
14 Pedro B ICI
Restricciones del Modelo Relacional

 Restricciones de Dominio
 Restricciones de Llave
 Restricciones de Integridad
 De Entidades

 De integridad referencial
Restricciones del Modelo Relacional

 Restricciones de Dominio
 Las restricciones de dominio especifican que el valor de cada
atributo Ai debe ser un valor atómico del dominio Di, para ese
atributo.
 Por ejemplo: Los valores del atributo ID_Alum deben estar
dentro del dominio de valore numéricos enteros mayores a
cero.
 Restricciones de Llave.
 No puede haber dos tuplas, en una misma Relación, iguales.
 Debe haber un conjunto de atributos que permita diferenciar
una tupla de todas las demás.
 Por ejemplo: en la Relación Alumno el ID_Alum es un atributo
que funge como llave, ya que permite diferenciar a cada tupla.
Restricciones del Modelo Relacional

 Restricción de Integridad:
 La restricción de Integridad de entidades establece que ningún
valor de una llave primaria puede ser nulo.
 Por ejemplo: En la Relación Alumno los valores de atributo
ID_Alum no pueden ser nulos, por se este atributo la llave
primaria.
 La restricción de Integridad Referencial indica que: “una
tupla, en una relación A, que haga referencia a otra relación
B, deberá referirse a una tupla existente en la relación B”.
Restricciones del Integridad Referencial

Alumno Carrera
Id_A Nom_Alum Esta Carrera Id_Carr Nom_Carr Se
lum tus m
1 Juan A LITC LITC Lic. En Inf. y T. C. 9
2 Sandra A IEC ISC Ing. en SC 10
11 Martha B ISC IEC Ing. en Electrónica 10
13 Luis A ISC ICI Ing. en Comp. 10
14 Pedro B LITC Inteligente
19 Laura A MITC Maestría en Info y TC 4
Restricción de Integridad Referencial
Ejemplo: Sistema Control de Llantas
31

 Una empresa de autotransporte de carga, desea


llevar el control, registro y contar con información
de todas las llantas que tiene en almacén e
instaladas en las diferentes unidades con que
cuenta, ya que por no tener este control e
información esta teniendo muchas perdidas por
accidentes al tronarse las llantas de las unidades
en los viajes, o por comprar llantas que no le dan el
rendimiento requerido.
 Al tener este control e información disminuirán
sus costos y podrán ser más competitivos.

M.C. Jorge E. Macías L.


Ejemplo: Sistema Control de Llantas

 La información que les gustaría tener es:


 Que llantas tiene instaladas cada unidad.
 Cual el la profundidad actual, en mm, de cada llanta instalada
en las diferentes unidades.
 Cuales llantas ya se deben cambiar, por tener una profundidad,
en mm, mínima operativamente.
 Cuales llantas son las que les da mejor rendimiento en
Km/mm.
 Cuales llantas ya están vulcanizadas y cuantas vulcanizadas
llevan.
 Si es necesario cambiar alguna llanta por que no va a soportar
el kilometraje del viaje que va a realizar la unidad.
Ejemplo: Sistema Control de Llantas
33

 La información que nos proporcionaron y obtuvimos


observando las unidades y almacén fue la siguiente:
 Una Unidad tiene instaladas varias llantas; la cantidad de llantas
depende de la unidad (tracto camión son 10 instaladas y 2 de refacción,
plataformas y cajas son 8 y 2 de refacción, autos son 4 y 1 de refacción)
 Cada vez que una Unidad entra a patio proveniente de un viaje se
realiza la revisión de llantas; registrando número de unidad,
kilometraje de la unidad, para cada llanta número de llanta,
profundidad en mm., la posición, quien realizó la medición, Operador.
 Cada Unidad tiene asignada un Operador.
 De cada Unidad se cuenta con: Número de unidad, Marca, Modelo,
año, fecha de compra, kilometraje inicial, kilometraje acumulado.
 Del Operador se cuenta con: Nombre, dirección, teléfono, sexo, edad,
estado civil, número de licencia de conducir, fecha de caducidad de
licencia, fecha de vencimiento examen médico, ID_personal

M.C. Jorge E. Macías L.


Ejemplo: Sistema Control de Llantas
34

 Los datos que se registran de las llantas al comprarlas son:


número de llanta, marca, modelo, tamaño del ring, milímetros de
profundidad actual, kilómetros que debe rendir según fabricante,
costo, kilometraje recorrido, cantidad de vulcanizadas que
soporta, cantidad de vulcanizadas actuales, rendimiento actual
en km/mm.
 Cuando se requiere se realiza el cambio de una o más llantas a
una unidad; de este evento se registra: Número de Unidad, fecha
del cambio, kilometraje actual de la unidad, número de llanta a
instalar, número de llanta a quitar, motivo del cambio; quien
realizó el cambio.
 Cuando se vulcaniza una llanta se registra: kilometraje recorrido
y profundidad en mm al momento de enviarse a vulcanizado,
número de llanta, fecha.
Ejemplo
35

 Identificar posibles Relaciones o Tablas:


 Operador

 Unidad

 Llanta

 Medición

 Cambio de Llanta
 Vulcanizado
Ejemplo
36

 Atributos de Relaciones o Tablas:


 Operador(Nombre, dirección, teléfono, sexo, edad, estado
civil, número de licencia de conducir, fecha de caducidad
de licencia, fecha de vencimiento examen médico,
ID_personal)
 Unidad(Número Unidad, Marca, Modelo, Año, Fecha
Compra, Kilometraje Inicial, Kilometraje Acumulado)
 Llanta(Número Llanta, Marca, Modelo, Tamaño Ring,
Milímetros Nueva, Kilometraje a Rendir, Kilometraje
recorrido, Vulcanizadas Soporta, Vulcanizadas Actuales,
Rendimiento actual)
Ejemplo
37

 Atributos de Relaciones o Tablas:


 Medición(Folio, Fecha, Número Unidad, Operador,
Kilometraje Unidad, Persona que realizó la medición,
Número Llanta, Posición, Profundidad en mm.,
Observación Llanta (estos cuatro datos se toman por cada
una de las llantas que trae la unidad))
 Cambio de Llanta(Folio, Número Unidad, Número Llanta
a quitar, Causa cambio, Número Llanta a poner,
kilometraje, profundidad Llanta a poner, profundidad
llanta a quitar, Personal que realizó el cambio)
 Vulcanizado(Número Llanta, Profundidad, Kilometraje
recorrido, fecha)
Unidad 3: Normalización

OBJETIVOS:
1APRENDERÁ LOS CONCEPTOS RELATIVOS A LA
NORMALIZACIÓN DE UNA BASE DE DATOS
SERÁ CAPAZ DE APLICAR ESTOS CONCEPTOS EN
NORMALIZACIÓN PRÁCTICA
Normalización

— Vale la pena recordar que el ciclo de vida clásico es


secuencial, pero que en la práctica el desarrollo de
sistemas es iterativo. Usualmente es necesario
regresar y revisar el trabajo hecho previamente.
— Los primeros modelos de datos generados (“primeros
borradores”) requerirán subsecuentes revisiones, por
medio del método conocido como normalización
— El objetivo de la normalización (o análisis relacional)
es disminuir la redundancia de datos y
asegurarse que el modelo de datos es tan flexible como
sea posible, en preparación para su implementación.
Normalización

— La Normalización es una técnica desarrollada para


obtener estructuras de datos eficientes, y mejorar el
diseño lógico de la Base de Datos.
— La Normalización es un proceso en el que un
conjunto de relaciones/tablas es reemplazado por
otro conjunto de relaciones/tablas, con una
estructura más simple y regular.
Anomalías de Altas, Bajas y Cambios

— El no tener una Base de Datos bien diseñada y con


una estructura de datos eficiente, resultado de la
normalización, puede ocasionar problemas al
momento de insertar o dar de alta nuevas
tuplas/registros, al momento de modificar o eliminar
tuplas/registros.
Anomalías de Altas, Bajas y Cambios

— Anomalía de Alta o Inserción:


÷ Una base de datos que no este normalizada, y por ende mal
diseñada, puede ocasionar problemas al momento de querer
insertar algún nuevo dato o tupla completa.
÷ Por ejemplo si se quisiera tener los datos de los clientes
potenciales, esto es que no nos han comprado aun, y tenemos la
siguiente tabla, no lo podríamos hacer porque para que podamos
dar de alta a un cliente nos tiene que comprar algo.
No RFC Direccio Tel email Fol Fecha FolFi Sell Sell C Concept Precio Subto Imp Total
mbr n io sc o oP a o t
e AC nt
Luis PED Nieto 44991 lperez@ 101 15/06/ 1234 32 25 1 Asesoría 50,000 50,000 8,000 58,000.
Pére L70 123, 67898 gmail.co 18 5678 procesos .00 .00 .00 00
z 112 Centro, m 9
8TR Ags, Ags
5
Luis PED Nieto 44991 lperez@ 102 10/08/ 1234 32 25 1 Consultor 800,00 800,00 128,0 928,00
Pére L70 123, 67898 gmail.co 19 5678 ía 0.00 0.00 00.00 0.00
z 112 Centro, m 9
8TR Ags, Ags
5
Anomalías de Altas, Bajas y Cambios

— Anomalía de Baja:
÷ Una base de datos que no este normalizada, y por ende bien
diseñada, puede ocasionar problemas de perdida de información
al momento de borrar una tupla/registro.
÷ Por ejemplo al borrar la factura con folio 102 perdemos los datos
del cliente Luis Díaz.

No RFC Direccio Tel email Fol Fecha FolFi Sell Sell C Concept Precio Subto Imp Total
mbr n io sc o oP a o t
e AC nt
Luis PED Nieto 44991 lperez@ 101 15/06/ 1234 32 25 1 Asesoría 50,000 50,000 8,000 58,000.
Pére L70 123, 67898 gmail.co 18 5678 procesos .00 .00 .00 00
z 112 Centro, m 9
8TR Ags, Ags
5
Luis DID Rincón 44991 ldiaz@g 102 10/08/ 1234 32 25 1 Consultor 800,00 800,00 128,0 928,00
Díaz L70 123, San 67757 mail.co 19 5678 ía 0.00 0.00 00.00 0.00
112 Marcos, m 9
8TR Ags, Ags
5
Anomalías de Altas, Bajas y Cambios

— Anomalía de Cambios o actualización:


÷ Una base de datos que no este normalizada, y por ende bien
diseñada, puede ocasionar problemas al momento de querer
actualizar dato, por los problemas de repetición de datos en
diferentes tuplas.
÷ Por ejemplo si se quisiera actualizar el teléfono del cliente Luis
Pérez, esto implica actualizarlo en todas la tuplas de la tabla
siguiente, con alguna que se omita, nos genera inconsistencia de
datos.
No RFC Direccio Tel email Fol Fecha FolFi Sell Sell C Concept Precio Subto Imp Total
mbr n io sc o oP a o t
e AC nt
Luis PED Nieto 44991 lperez@ 101 15/06/ 1234 32 25 1 Asesoría 50,000 50,000 8,000 58,000.
Pére L70 123, 67898 gmail.co 18 5678 procesos .00 .00 .00 00
z 112 Centro, m 9
8TR Ags, Ags
5
Luis PED Nieto 44991 lperez@ 102 10/08/ 1234 32 25 1 Consultor 800,00 800,00 128,0 928,00
Pére L70 123, 67898 gmail.co 19 5678 ía 0.00 0.00 00.00 0.00
z 112 Centro, m 9
8TR Ags, Ags
5
Primera forma Normal (1NF)

— Una Tabla esta en primera forma normal si y solo si


todos sus atributos son atómicos.
— Factura(Folio, Fecha, Cliente, Cantidad, Producto,
Precio_Unitario, Importe, Subtotal, Impuesto, Total)
— Cliente representa los datos fiscales del cliente por lo
tanto es un atributo no atómico, lo que se hace cliente se
descompone en todos los atributos que componen los
datos fiscales del cliente:
— Factura(Folio, Fecha, RFC, Nombre, Calle, NumExt,
NumInt, Colonio, Municipio, Estado, País, C.P. ,
Cantidad, Producto, Precio_Unitario, Importe, Subtotal,
Impuesto, Total)
— Factura(Folio, Fecha, RFC, Nombre, Calle, NumExt,
NumInt, Colonio, Municipio, Estado, País, C.P. ,
Cantidad, Producto, Precio_Unitario, Importe,
Subtotal, Impuesto, Total)
— Llave Primaria: Folio
Segunda Forma Normal (2NF)

— Se dice que una tabla está en segunda forma normal, si


y solo si:
¡ La tabla ya está en primera forma normal, y
¡ Si cada atributo “no-llave” depende completamente
de la llave primaria.
÷ Es decir, se deben eliminar las “dependencias
parciales”
÷ Dependencia Parcial: cuando uno o más atributos “no-llave”
dependen de una parte de la llave primaria.
÷ Esto significa, en la práctica, que solo las tablas que tienen
llaves combinadas, necesitan analizarse, ya que éstas son las
únicas en donde un atributo “no-llave” puede depender de
solo una parte de la llave.
÷ Esto es, cada atributo debe depender de TODA la llave
compuesta y no solo de una de sus partes.
Segunda forma normal
#Prof #Materia Nombre Ubicación Horario
Materia Asesoría

871111 EC123 Econ 1 GT 15 Lun 2.30 NOTA: Se debe tener muy


en cuenta que, a menos
871111 EC345 Econ 3 DF 34 Mie 3.30
que el diseñador tenga un
871111 FIN234 Finan 2 DF 56 Vie 4.30 conocimiento profundo del
significado de los datos,
892345 PRO111 Prog 1 GT 15 Mar 4.40 entonces decisiones como
las de abajo no podrían
892345 DBS213 Dbase 2 DF 34 Jue 1.30
realizarse
etc

1. Deben revisarse todos los atributos “no-llave” (nombre_materia, ubicación y


Horario_asesoría)
2. Nombre-Materia, depende solamente de #Materia. Esto significa que solamente se
requiere saber el número de la materia para saber el nombre de la misma
3. Ubicación de la materia depende también solo de #Materia
4. Horario de asesoría depende tanto de #materia, como de #profesor. Esto es porque más
de un profesor podría dar una materia. 11
Segunda forma normal

PROFESOR-MATERIA1 MATERIA

#Prof #Materia Horario #Materia Nombre Ubicació


Asesoría Materia n
871111 EC123 Lun 2.30 EC123 Econ 1 GT 15
871111 EC345 Mie 3.30 EC345 Econ 3 DF 34
871111 FIN234 Vie 4.30 FIN234 Finan 2 DF 56
892345 PRO111 Mar 4.40 PRO111 Prog 1 GT 15
892345 DBS213 Jue 1.30 DBS213 Dbase 2 DF 34

Se crea una nueva tabla, para la parte de la llave


(#materia) de la cual dependen otros atributos no-llave

12
— En un consultorio médico nos están pidiendo un sistema
que lleve el registro y control de los datos e información
generada en cada una de las consultas médicas; la
información que se genera de cada consulta médica son:
¡ Fecha de la consulta
¡ Paciente
¡ Temperatura del paciente
¡ Peso
¡ Talla
¡ Síntomas o Padecimiento
¡ Estudios químicos y/o de imagenología
¡ Diagnóstico
¡ Tratamiento
— Un paciente puede ir a consulta varias veces en
diferentes días.
Normalización

— Se definió la siguiente tabla inicialmente:


¡ ConsultaMed(Fecha, Paciente, Temperatura, Peso, Talla, Padecimiento,
Estudios, Diagnóstico, Tratamiento)
— El Médico nos indicó que del paciente le interesan su nombre,
sexo, estado civil, edad, descripción del trabajo, dirección,
teléfonos, correo electrónico, curp, si cuenta con seguro médico,
compañía aseguradora.
— De los estudios pueden ser tanto químicos como de
imagenología, en la misma consulta médica; y requiere guardar
el tipo de estudio (químico o imagen) subtipo y descripción del
estudio.
— Del tratamiento desea tener el nombre comercial y genérico del
medicamento, y la forma de administración o instrucciones.
— El médico desea poder consultar las consultas médicas de un
paciente en particular, por fecha de la consulta médica o por
diagnóstico.
Normalización

— Determine si la tabla ConsultaMed esta en primera forma


normal (1NF)
— ConsultaMed(Fecha, Paciente, Temperatura, Peso, Talla,
Padecimiento, Estudios, Diagnóstico, Tratamiento)
— ConsultaMed(Fecha, Nombre, Sexo, Estado civil, Edad,
Descripción del trabajo, Dirección, Teléfono, celular,
Correo electrónico, Curp, cuenta con seguro médico,
Compañía aseguradora, Temperatura, Peso, Talla,
Padecimiento, TipoEstudio, SubTipoEstudio,
DescripcionEstudio, Diagnóstico, NombreGen_Med,
NomComer_Med, Intrucciones)
Normalización

— Determine si la tabla ConsultaMed esta en Segunda


Forma Normal (2NF), si no es así realice el proceso
para dejarla en Segunda Forma Normal.
— ConsultaMed(Fecha, Nombre, Sexo, Estado civil,
Edad, Descripción del trabajo, Dirección, Teléfono,
Celular, Correo electrónico, Curp, cuenta con seguro
médico, Compañía aseguradora, Temperatura, Peso,
Talla, Padecimiento, TipoEstudio, SubTipoEstudio,
DescripcionEstudio, Diagnóstico, NomGen_Med,
NomComer_Med, instrucciones)
Normalización

— ConsultaMed(Fecha, Curp, Temperatura, Peso,


Talla, Padecimiento, TipoEstudio, SubTipoEstudio,
DescripcionEstudio, Diagnóstico, NomGen_Med,
NomComer_Med, instrucciones)
— Paciente(Curp, Nombre, Sexo, Estado civil, Edad,
Descripción del Trabajo, Dirección, Teléfono,
Celular, Correo electrónico, cuenta con seguro
médico, Compañía aseguradora)
Tercera forma normal

— Se dice que una tabla está en tercera forma normal, si:


¡ Ya se encuentra en segunda forma normal, y
¡ Todos los atributos “no-llave” dependen completamente de la llave y
no de otro atributo “no-llave” (dependencias transitivas)
¡ Dependencia transitiva: cuando un atributo “no-llave” depende
completamente de otro atributo “no-llave”; esto es que si tenemos la
tabla T1 y en ella el atributo Ai, que no pertenece a la llave, y existen
otros atributos Ax, Ay y Az que dependen completamente del Ai,
entonces tenemos una dependencia transitiva, de los atributos Ax, Ay
y Az con el atributo Ai.
¡ Para solucionarlo y dejar la tabla T1 en 3NF se hace lo siguiente:
÷ Se crea la tabla T2 con los atributos Ai, Ax, Ay y Az; se pone como llave primaria
al atributo Ai, de la tabla T2.
÷ En la tabla T1 se quitan los atributos Ax, Ay y Az; y el atributo Ai se pone como
llave foranea en la tabla T1.

18
Tercera forma normal
PROFESOR

#Prof Nombre #Oficina Teléfono • Si el Teléfono solamente pertenece a


una oficina, entonces, Teléfono es
871111 Nasher BS12 8976 completamente dependiente de
#oficina
892345 Flogem FT23 6766
• Por lo tanto tenemos un dependencia
transitiva de #Oficina sobre Teléfono

PROFESOR OFICINA
#Prof Nombre #Oficina #Oficina Teléfono

871111 Nasher BS12 BS12 8976

892345 Flogem FT23 FT23 6766

• Se crea la tabla OFICINA con los atributos #Oficina y Teléfono, que son los atributos
con la dependencia transitiva, se quita el atributo Teléfono de la tabla Profesor, y el
atributo #Oficina se convierte en la llave de la tabla “Oficina”
• El atributo #Oficina se queda en la tabla Profesor, para mantener la relación con la
tabla oficina. Este atributo #Oficina se queda como una “llave-foránea” 19
Normalización

— Determine si la tabla ConsultaMed y Paciente están en Tercera


Forma Normal (3NF), si no es así realice el proceso para dejarlas en
Tercera Forma Normal.
— ConsultaMed(Fecha, Curp, Temperatura, Peso, Talla,
Padecimiento, TipoEstudio, SubTipoEstudio, DescripcionEstudio,
Diagnóstico, NomGen_Med, NomComer_Med, instrucciones)
— Paciente(Curp, Nombre, Sexo, Estado civil, Edad, Descripción del
Trabajo, Dirección, Teléfonos, Correo electrónico, cuenta con
seguro médico, Compañía aseguradora)
— En la tabla ConsultaMed el atributo Nombre genérico del
medicamento es determinado por el atributo Nombre comercial del
medicamento, por lo tanto tenemos una dependencia transitiva,
para resolverlo creamos la tabla Medicamento con los atributos
Nombre comercial del medicamento y Nombre genérico del
medicamento; y quitamos el atributo Nombre genérico del
medicamento de la tabla ConsultaMed.
Normalización

— Al aplicar el proceso de 3NF a la tabla ConsultaMed se


genero la tabla Medicamento, y ambas quedaron en 3NF;
la tabla Paciente esta en 3NF.
— Las tablas quedan en 3NF como:
— ConsultaMed(Fecha, Curp, Temperatura, Peso, Talla,
Padecimiento, Estudios, Diagnóstico, Nombre comercial
del Medicamento, Forma de administrar o instrucciones)
— Paciente(Curp, Nombre, Sexo, Estado civil, Edad,
Descripción del Trabajo, Dirección, Teléfonos, Correo
electrónico, Si cuenta con seguro médico, Compañía
aseguradora)
— Medicamento(Nombre comercial del Medicamento,
Nombre genérico del medicamento)
Forma Normal de Boyce-Codd (BCNF)

— Se dice que una Entidad/Tabla esta en BCNF, si y solo si,


cada determinante es una llave candidata.
— En otras palabras que todos los atributos ”no llave”, de
una Entidad/Tabla, dependen unicamente de las llaves
candidatas de esa Entidad/Tabla.
— Ejemplo:
Factura(Folio, Fecha, RFC_cte, Curp_cte, Nom_cte,
Calle_cte, NoExt_cte, Col_cte, Mpio_cte, Edo_cte,
CP_cte, Pais_cte, Subtotal, Impuesto, Total, FolioFiscal)
Detalle_Fact(Folio, Cantidad, Codigo_prod, Nom_prod,
Precio_prod, Importe)
Forma Normal de Boyce-Codd (BCNF)

Entidad Factura no esta en 3NF ni en BCNF por:


Folio->Fecha
Folio->RFC_cte
Folio->Subtotal
Folio->Impuesto
Folio->Total
RFC_cte->Nombre_cte
RFC_cte->Calle_cte
RFC_cte->NoExt_cte
RFC_cte->Col_cte
RFC_cte->Mpio_cte
RFC_cte->Edo_cte
RFC_cte->CP_cte
RFC_cte->Pais_cte
RFC_cte->Curp_cte
Forma Normal de Boyce-Codd (BCNF)

Entonces se crea una nueva entidad Cliente


Cliente(RFC_cte, Curp_cte, Nom_cte, Calle_cte,
NoExt_cte, Col_cte, Mpio_cte, Edo_cte, CP_cte, Pais_cte)

CódigoPostal(CP_cte, Mpio_cte, Edo_cte)


Cliente(RFC_cte, Curp_cte, Nom_cte, Calle_cte,
NoExt_cte, Col_cte, CP_cte, Pais_cte)

Y Factura queda:
Factura(Folio, Fecha, RFC_cte, Subtotal, Impuesto, Total,
FolioFiscal)
Normalización

— ¿Estas tablas están en BCNF?


— ConsultaMed(Fecha, Curp, Temperatura, Peso, Talla,
Padecimiento, Estudios, Diagnóstico, Nombre comercial
del Medicamento, Forma de administrar o instrucciones)
— Paciente(Curp, Nombre, Sexo, Estado civil, Edad,
Descripción del Trabajo, Dirección, Teléfonos, Correo
electrónico, Si cuenta con seguro médico, Compañía
aseguradora, RFC)
— Medicamento(Nombre comercial del Medicamento,
Nombre genérico del medicamento)
— Las tres están en BCNF, porque todos sus atributos no-
llave dependen de las llave-candidatas.
Cuarta Forma Norma (4NF)

— Se dice que una Entidad/Tabla esta en Cuarta Forma


Normal (4NF) si y solo si no existen Dependencias
Multivaluadas.
— Dependencia Multivaluada si el atributo A determina
al atributo B, puede haber varias tuplas/registros con
el mismo valor de A pero diferentes valores de B.
Cuarta Forma Norma (4NF)
— Ejemplo:
Cliente(RFC_cte, Nom_cte, Calle_cte, NoExt_cte, Col_cte, Mpio_cte,
Edo_cte, País_cte, Tel_cte, Celular, email)
¿Que pasa si el cliente tiene varios domicilios y en cada domicilio un teléfono
diferente?
Tenemos un dependencia multivaluada, ya que para el mismo valor de
RFC_cte, se tienen varios valores diferentes de los atributos: Calle_cte,
NoExt_cte, Col_cte, Mpio_cte, Edo_cte, Pais_cte, Tel_cte
RFC_cte Nom Calle_cte NoExt Col_cte Mpio_cte Edo_ País_cte Tel_cte Celular email
_cte _cte cte

SAG900215 SER AV. 1234 PANOR AGUASCA AGS MÉXICO 4499964 4491237 compras
UC4 VAL CONSTITU AMA LIENTES 512 896 @serval.
CION com

SAG900215 SER 1er. Anillo 325 OLIVAR AGUASCA AGS MÉXICO 4499966 4491237 compras
UC4 VAL Nte ES LIENTES 958 896 @serval.
com

SAG900215 SER BLV. 452 BORRE LORETO ZAC MÉXICO 4969625 4491237 compras
UC4 VAL LORETO GO 487 896 @serval.
com
Cuarta Forma Norma (4NF)

Esto se resuelve creando una nueva Tabla Direccion_Cte con los campos
multivaluados y la llave primaria de Cliente:
Cliente(RFC_cte, Nom_cte, Celular, email)
Dirección_Cte(RFC_cte, Calle_cte, NoExt_cte, Col_cte, Mpio_cte,
Edo_cte, Pais_cte, Tel_cte)
Cliente
RFC_cte Nom_cte Celular email

SAG900215UC4 SERVAL 4491237896 compras@serval.


com
Dirección_Cte
RFC_cte Calle_cte NoExt_c Col_cte Mpio_cte Edo_ País_cte Tel_cte
te cte

SAG900215UC4 AV. 1234 PANORAMA AGUASCALI AGS MÉXICO 4499964


CONSTITUCION ENTES 512

SAG900215UC4 1er. Anillo Nte 325 OLIVARES AGUASCALI AGS MÉXICO 4499966
ENTES 958
SAG900215UC4 BLV. LORETO 452 BORREGO LORETO ZAC MÉXICO 4969625
487
Normalización

— ¿Estas tablas están en 4NF?


— Si el tratamiento se compone de varios medicamentos y
su respectivo tratamiento, entonces tenemos una
Dependencia Multivaluada en la tabla ConsultaMed.
— ConsultaMed(Fecha, Curp, Temperatura, Peso, Talla,
Padecimiento, Estudios, Diagnóstico, Nombre comercial
del Medicamento, Forma de administrar o instrucciones)
— Paciente(Curp, Nombre, Sexo, Estado civil, Edad,
Descripción del Trabajo, Dirección, Teléfonos, Correo
electrónico, Si cuenta con seguro médico, Compañía
aseguradora, RFC)
— Medicamento(Nombre comercial del Medicamento,
Nombre genérico del medicamento)
Normalización

— Se resuelve creando una tabla Tratamiento:


— Tratamiento(Fecha, Curp, Nombre comercial del
Medicamento, Forma de administrar o instrucciones)
— ConsultaMed(Fecha, Curp, Temperatura, Peso, Talla,
Padecimiento, Estudios, Diagnóstico)
— Paciente(Curp, Nombre, Sexo, Estado civil, Edad,
Descripción del Trabajo, Dirección, Teléfonos, Correo
electrónico, Si cuenta con seguro médico, Compañía
aseguradora, RFC)
— Medicamento(Nombre comercial del Medicamento,
Nombre genérico del medicamento)
Quinta Forma Normal (5NF)

— Una tabla esta en quinta forma normal (5NF) si y


solo si:
¡ Esta en 4NF.
¡ Que esa tabla no puede escindirse, o dividir, en más tablas
sin perder información.
¡ Cada dependencia de unión, en la tabla, es implementada
por las llaves candidatas.
— La quinta forma normal se refiere a dependencias
que son extrañas. Tiene que ver con tablas que
pueden dividirse en subtablas, pero que no
pueden reconstruirse.
Quinta Forma Normal (5NF)

— Supongamos que tenemos una tabla que describe la


siguiente declaración:
¡ Un vendedor vende ciertos productos de ciertas empresas.
¡ La siguiente tabla contiene el vendedor, los productos que
vende, y la empresa que fabrica esos productos.
¡ La llave primaria se compone de los tres atributos: Vendedor,
Empresa y Producto.
¡ Por lo tanto esta en 3NF, y en 4NF.
¡ ¿Estará en 5NF?
Quinta Forma Normal (5NF)

Vendedor Empresa Producto • Si el vendedor V1 trabaja para


V1 E1 Aspiradora las empresas E1 y E2
entonces debe poder vender
V1 E1 Panera
todos los productos que
V1 E2 Tijeras de Podar fabrican las empresas E1 y
V1 E2 Aspiradora E2, lo cual con esta tabla,
como, esta no es posible
V2 E2 Panera hacerlo, se tendrían que
V2 E2 Base de agregar los registros
sombrilla correspondientes, y esto para
V2 E2 Aspiradora todos los vendedores lo cual
nos generaría mucha
V3 E2 Telescopio redundancia.
V3 E1 Aspiradora • Pero la podemos dividir en
V3 E1 Lámpara las siguientes tablas:

V3 E3 Corbatero
Quinta Forma Normal (5NF)

Tabla Vendedor-Producto Tabla Vendedor-Empresa


Vendedor Producto
Vendedo Empresa
V1 Aspiradora r Tabla Empresa-Producto
V1 Panera V1 E1 Empresa Producto
V1 Tijera de podar V1 E2 E1 Aspiradora
V2 Aspiradora V2 E3 E1 Panera
V2 Panera V3 E1 E1 Lámpara
V2 Base de sombrilla V3 E2 E2 Tijeras de podar
V3 Telescopio V3 E3 E2 Aspiradora
V3 Aspiradora E2 Panera
V3 Lámpara E2 Base de
sombrilla
V3 Corbatero
E2 Telescopio
E3 Corbatero
Quinta Forma Normal (5NF)

— Con esta división se elimina redundancia y se pude


obtener la consulta de que si un vendedor trabaja
para las empresas E1 y E2, entonces debe poder
vender todos los productos que fabrican esas dos
empresas.
— El problema es que al hacer las uniones de estas tres
tablas nos da una tabla completamente diferente a la
original.
Vendedor Empresa Producto
V1 E1 Aspiradora
V1 E1 Panera
V1 E1 Lámpara
V1 E2 Tijeras de podar
V1 E2 Aspiradora
V1 E2 Panera
V1 E2 Base de sombrilla
V1 E2 Telescopio
V2 E2 Tijeras de podar
V2 E2 Aspiradora
V2 E2 Panera
V2 E2 Base de sombrilla
V2 E2 Telescopio
V3 E1 Aspiradora
V3 E1 Panera
V3 E1 Lámpara
V3 E2 Tijeras de podar
V3 E2 Aspiradora
V3 E2 Panera
V3 E2 Base de sombrilla
V3 E2 Telescopio
Forma Normal de Dominio/Llave (DKNF)

— Una tabla esta en DKNF si y solo si:


¡ Tiene restricciones de dominio y restricciones de Llave.

— Restricción de Dominio:
¡ Especifica los valores permitidos para un determinado atributo.
¡ La restricción de dominio se debería de tener para todos los atributos de
una tabla, en la práctica esto no es posible al 100%, pero en los atributos
que si se pueda se debe especificar.
¡ Estas restricciones de dominio se deben poder especificar en la
definición de la tabla, de preferencia, o por medio de programación.
— Restricción de Llave:
¡ Especifica cual es el conjunto mínimo de atributos que identifican
únicamente a una fila de la tabla (Llave primaria)
¡ Este conjunto de atributos debe identificar de forma única a cada fila o
registro de la tabla, y estos atributos deberán tener restricción de
dominio.
Forma Normal de Dominio/Llave (DKNF)

— Al tener una tabla en DKNF se evitan anomalías


permanentes en la base de datos, tales como:
¡ Tener valores no deseados en atributos o que no forman parte del
dominio del atributo, y por consecuencia tener información
basura.
— Ejemplo:
¡ Paciente(CURP, Nombre, Edad, FechaIngreso, Sexo, Calle,
NoExt, NoInt, Colonia, CP, Municipio, Estado, Tel, Cel, Email)
¡ Restricciones de Llave:
÷ El atributo CURP, es un buen candidato para ser llave primaria, ya
que es único para cada paciente.
Forma Normal de Dominio/Llave (DKNF)

— Ejemplo:
¡ Paciente(CURP, Nombre, Edad, FechaIngreso, Sexo, Calle, NoExt,
NoInt, Colonia, CP, Municipio, Estado, Tel, Cel, Email)
¡ Restricciones de Dominio:
÷ CURP: Valores de AAAA010101AAAAAA00 a ZZZZ991231ZZZZZZ99
÷ Sexo: Valores: M o F
÷ Fecha Ingreso: 01/01/1900 a 31/12/2999
÷ Edad: 1 a 120
÷ Nombre: valores alfabéticos.
÷ CP: Valores numéricos enteros de 00000 a 99999
÷ Tel y Cel: valor numérico entero de 10 dígitos
÷ Municipio: Todos los nombres de los municipios de México.
÷ Estado: Todos los nombre de los estados de México: Aguascalientes a
Zacatecas.
÷ En el caso de Estado y Municipio es complicado manejar esas
restricciones de dominio y lo que se hace se crea una tabla para Estado y
otra para Municipio.
— Ejemplo:
¡ Estado(ID_Edo, Nombre_Edo)
¡ Municipio(ID_Mpio, Nombre_Mpio, ID_Edo)
¡ Paciente(CURP, Nombre, Edad, FechaIngreso, Sexo, Calle,
NoExt, NoInt, Colonia, CP, ID_Mpio, ID_Edo, Tel, Cel, Email)
Formas normales

— 1NF: Solo atributos atómicos (No hay atributos multivaluados)


— 2NF: Dependencias parciales. Cada atributo no-llave depende completamente
de la llave. Solo considerar para tablas con llaves combinadas
— 3NF: Dependencias transitivas. No hay atributos no-llave, que dependan de
otros atributos no-llave.
— BCNF: Una relación R esta en BCNF si y solo si cada determinante es una llave
candidato.
— 4FN: Dependencias de valores múltiples.
— 5NF: Una tabla esta en quinta forma normal (5NF) si y solo si esta en 4NF y
cada dependencia de unión, en la tabla, es implementada por las llaves
candidatas. La quinta forma normal se refiere a dependencias que son
extrañas. Tiene que ver con tablas que pueden dividirse en subtablas, pero que
no pueden reconstruirse.
— DKNF: (Forma Normal Llave de Dominio) Requiere que cada llave identifica
únicamente a cada registro o línea en una tabla. A domain is the set of
permissible values for an attribute

41
Unidad 4: Modelación de Bases
de Datos

OBJETIVOS:
1. IDENTIFICARÁ LAS DIFERENTES METODOLOGÍAS DE
MODELACIÓN DE BASES DE DATOS CON QUE PUEDE
TRABAJAR
2. CONOCERÁ DE MANERA PROFUNDA LA MODELACIÓN E-R
3. COMPLEMENTARÁ LOS CONOCIMIENTOS OBTENIDOS EN
LA UNIDAD ANTERIOR Y LLEVARÁ A LA PRÁCTICA LA
MODELACIÓN DE UNA BASE DE DATOS REAL
MODELO Y MODELACIÓN
Modelo

— Es una representación estructurada (abstracta o


física) de un sistema, que intenta reflejar su
comportamiento.
— Nunca refleja al 100% al sistema real.
— A mayor precisión del modelo, mayor costo de
desarrollo.
Modelos

— Los MODELOS cumplen con un grupo de


características:
¡ Constituyen una reproducción que esquematiza la
realidad.
¡ Debe ser operativo y más fácil de estudiar.
¡ Puede agrupar en un mismo fenómeno varios
modelos y viceversa en un mismo modelo varios
fenómenos.
¡ Sus variables, relaciones y constantes del modelo se
interpretan a partir de una teoría científica.
¡ Representa a la realidad en un determinado
porcentaje, a mayor porcentaje mayor costo.
MODELO
TEÓRICO
MODELO
Representa a
C La realidad
A
R
Estructura relaciones y
A
C propiedades fundamentales
de la realidad TRANSFOR-
T
E MACIÓN DE
R Utiliza símbolos que LA
I representan cualidades REALIDAD
S
T Proporciona explicaciones
I
C
A Guía para hipótesis teóricas
S
Modelación

— La modelación es la reproducción de determinadas


propiedades y relaciones del objeto investigado en
otro objeto especialmente creado (modelo) con el fin
de su estudio detallado.” Sheptulín, 1983
— La Modelación es un proceso de abstracción.
Principios de la Modelación

— Deducción por analogía:


¡ SEMEJANZA CON EL ORIGINAL
¡ Se pretende establecer semejanzas entre ciertas facetas,
cualidades y componentes del objeto real y el modelado.
— Consistencia lógica:
¡ Sustentado en leyes de la ciencia del objeto de
investigación
¡ Asegura estabilidad, solidez y fundamentación científica a los
elementos teóricos que sustentan el modelo.
Principios de la Modelación

— Enfoque sistémico:
¡ Relaciones y estructura
¡ Posibilita revelar las cualidades resultantes del objeto de
investigación, mediante las relaciones que se tienen que dar
entre los componentes del modelo.
— Simplicidad y Asequibilidad:
¡ Sin perder el valor y el carácter científico, el modelo debe ser
comprensible, funcional y operativo.
MODELO DE DATOS
Modelado de Datos

— Un modelo de datos es un conjunto de conceptos que


pueden ser usados para describir-diseñar la estructura de
una Base de Datos.
— Con el concepto de “estructura” de una BD nos referimos
a los tipos de datos, las relaciones, las restricciones que
deben cumplirse, y las operaciones de manipulación de
los datos (agregado, borrado, modificación y
recuperación de los datos de la base).
— En un enfoque más amplio, un modelo de datos permite
describir los elementos que intervienen en una realidad o
en un problema dado y la forma en que se relacionan
dichos elementos entre sí.
Modelado de Datos

— Podemos decir entonces, que los objetivos del diseño


de base de datos son:
¡ Representar los datos que requieren las principales áreas de
aplicación u operación y los grupos de usuarios, y representar
las relaciones entre dichos datos.
¡ Proporcionar un modelo de datos que soporte las
transacciones que se vayan a realizar sobre los datos.
¡ Especificar un esquema que alcance las prestaciones
requeridas para el sistema.
Tipos de Modelado de Base de Datos

— Clasificación en base el nivel de abstracción:


¡ Modelo/Diseño Conceptual.
¡ Modelo/Diseño Lógico.
¡ Modelo/Diseño Físico.
Modelado de BD
Modelo de Datos Conceptual
Es aquel que describe las estructuras de datos y restricciones de integridad.
Se utiliza durante la etapa de análisis de un problema dado y está orientado a
representar los elementos que intervienen y sus relaciones.
Modelo de Datos Lógico

Se centran en las operaciones y se implementan en algún manejador de


base de datos (DBMS).
Modelo de Datos Físico

Son estructuras de datos a bajo nivel implementadas dentro del propio


DBMS.
Modelado Entidad-Relación
Modelo Entidad-Relación (E-R)

— Propuesto por Peter Chen en 1976

— Este modelo se base en una percepción del mundo


real que consta de una colección de objetos básicos
llamados entidades, las relaciones entre ellas y los
atributos que las describen.
Modelo Entidad-Relación (E-R)
— Entidad:
¡ Un objeto concreto o abstracto, que existe y es distinguible de los demás, y acerca
del cual nos interesa guardar información.
¡ Objeto Concreto: Personas o Cosas
¡ Objeto Abstracto: Eventos o Hechos que ocurren en un momento dado.
¡ Ejemplo:
÷ Objetos en concreto:
¢ Alumno Pedro Torres
¢ Carrera Ingeniero en Sistemas Computacionales
¢ Materia Base de Datos
÷ Objetos Abstractos:
¢ Prácticas Profesionales en Softtek
¢ Reinscripción al nuevo semestre
¢ Solicitud de Extraordinario.
¡ Contraejemplo:
÷ 20 años
÷ 9 semestres
÷ 8 créditos
÷ 300 hrs.
Modelo Entidad-Relación (E-R)

— Conjunto de Entidades:
¡ Grupo de entidades del mismo tipo que comparten las mismas
propiedades o atributos.
¡ Ejemplo:
Entidad Conjunto de Entidades
Alumno Juan Pérez Alumnos de la UAA
Carrera ISC Carreras de la UAA
Base de Datos Materias impartidas en la UAA
Práctica profesional de Juan Pérez Prácticas profesionales de la UAA

¡ Por cuestión de simplicidad, en el curso al conjunto de


entidades se les llamara Entidad
÷ Por ejemplo en lugar de decir Conjunto de entidades Alumnos de
la UAA, diremos la Entidad Alumno de la UAA
Modelo Entidad-Relación (E-R)

— Atributos:
¡ Describe propiedades o características que posee cada miembro de
un conjunto de entidades
¡ Ejemplo:
÷ Atributos para Conjunto de Entidades Alumno:
¢ Nombre del Alumno
¢ Edad
¢ Fecha Nacimiento
¢ Domicilio
¢ Teléfono
¢ Correo electrónico
¢ Sexo
¢ CURP
¢ ID
Modelo Entidad-Relación (E-R)

— Relación:
¡ Es la asociación entre dos o más entidades.
¡ Ejemplo:

Entidad 1 Relación Entidad 2


Alumno Esta inscrito en Carrera
Juan Pérez Esta inscrito en ISC
Materia Es parte de Carrera
Base de Datos Es parte de ISC
Modelo Entidad-Relación (E-R)

— Relación:
¡ Tipos de Relaciones:
÷ Binarias:
¢ Cuando dos conjuntos de entidades se relacionan entre si, son las
más comunes.
¢ Ejemplo: Alumno – Esta inscrito en – Carrera
÷ Unaria:
¢ Cuando existe una relación entre entidades del mismo conjunto de
entidades
¢ Ejemplo: Empleado – Es jefe de – Empleado
÷ N-aria:
¢ Cuando tres o más conjuntos de entidades están relacionadas entre
si.
¢ Ejemplo: Proveedor – Suministra – Proyecto
¢ Proveedor – Suministra – Producto
¢ Producto - Suministra - Proyecto
Modelado Entidad-Relación

CARDINALIDAD DE LAS
RELACIONES
Cardinalidad de las Relaciones

— Correspondencia de Cardinalidad:
¡ Expresa el número de entidades, de un conjunto de
entidades A, que pueden estar asociadas con entidades de
otros conjuntos de entidades, vía un conjunto de relaciones.
¡ Tipos:
÷ Relación Uno a Uno 1:1
÷ Relación Uno a Muchos 1:N
÷ Relación Muchos a Muchos M:N
Cardinalidad de las Relaciones

— Relación Uno a Uno (1:1):


¡ Una entidad en A se asocia con a lo sumo una entidad en B,
y una entidad en B se asocia con a lo sumo una entidad en A
A B

A1 B1

A2 B2

A3 B3

A4 B4
Cardinalidad de las Relaciones

— Relación Uno a varios (1:N):


¡ Una entidad en A se asocia con cualquier número de entidades
en B (ninguna o varias). Una entidad en B, sin embargo, se
puede asociar con a lo sumo una entidad en A

A B
A1 B1

A2 B2

A3 B3

A4 B4
B5
Cardinalidad de las Relaciones

— Relación Varios a varios (M:N):


¡ Una entidad en A se asocia con cualquier número de entidades
(ninguna o varias) en B, y una entidad en B se asocia con
cualquier número de entidades (ninguna o varias) en A

A B
A1 B1

A2 B2

A3 B3

A4 B4
B5
Cardinalidad de las Relaciones

— Relaciones sobre las entidades:


¡ Relaciones Unarias:
÷ Una entidad en A se asocia con otra entidad en A, aplicando
cualquiera de las cadinalidades vistas.
¡ Relaciones Binarias:
÷ Una entidad en A se asocia con otra entidad en B, aplicando
cualquiera de las cadinalidades vistas.
¡ Relaciones N-arias:
÷ Una entidad en A se asocia con otra entidad en B, y tanto la
entidad de A como la de B se asocian con una entidad de C ,
aplicando cualquiera de las cardinalidades vistas.
Cardinalidad de las Relaciones

— La correspondencia de cardinalidades apropiada


para un conjunto de relaciones particular depende
obviamente de la situación del mundo real que el
conjunto de relaciones modela.
Modelado Entidad-Relación

SIMBOLOGÍA DE
REPRESENTACIÓN Y
NOTACIONES
Simbología de Chen

— Entidades:
¡ Entidad Fuerte: Se puede definir por sus propios atributos,
tiene llave primaria
Nombre_Entidad

¡ Entidad Débil: No se puede definir por sus propios atributos


una llave primaria.

Nombre_Entidad
Simbología de Chen

— Atributos:
Atributo2
Atributo1

Nombre_Entidad
Simbología de Chen

— Relación:
¡ El nombre de la relación debe mostrar la acción de la relación,
generalmente es un verbo.

Nombre
de
Relación
Ejemplo

N Perte 1
Alumno Carrera
nece
Diagrama E-R

RELACIONES 1 : 1
• Para cada entidad del conjunto de entidades E1 existe a lo más una entidad en
el conjunto de entidades E2 que está asociada a ella, y viceversa.

Administra
1 1
Gerente División

• Cada Gerente Administra una y sólo una Divición.

• Cada División es administrada por uno y sólo un Gerente.


Diagrama E-R

RELACIONES 1: muchos

• Para cada entidad del conjunto de entidades E1 puede haber una o mas
entidades asociadas en el conjunto de entidades E2.

1 N
Cliente Tiene Factura

• Cada CLIENTE tiene una o más FACTURAS.

• Cada FACTURA está a nombre de un solo CLIENTE

• Lado 1: “Padre”; Lado N: “Hermanos”


Diagrama E-R

RELACIONES muchos : muchos

• No hay restricción entre el número de entidades de un conjunto asociadas


con una entidad en el otro.

Suministra
M N
Proveedor Producto

• Cada Proveedor suministra uno o más PRODUCTOS

• Cada PRODUCTO es suministrado por uno o más Proveedores.


Diagrama E-R

Conjuntos de entidades con más de un conjunto de relaciones:

Trabaja en

N
M
Empleado Proyecto

1 N

Administra
Diagrama E-R

Atributos de la relación
EJEMPLO: CALIFICACION de un estudiante en un CURSO

Calificación
# matrícula

Nombre
# curso
Dirección
Nombre

Estudiante M N Curso

Registra
Para simplificar la nomenclatura.

• Diremos: “prestado es una relación entre la entidad LIBRO y la entidad


PROFESOR”.

• En lugar de: “prestado es un conjunto de relaciones entre el conjunto de entidades


LIBRO y el conjunto de entidades PROFESOR”

• Y “Juan es una instancia de PROFESOR”

• En lugar de “La entidad cuya llave es Juan” pertenece al conjunto de entidades


PROFESOR.
¿Qué es una entidad? ¿Qué es una relación?

• Lo que para un analista es una entidad, para otro podría ser una
relación. Esto es particularmente cierto para entidades que pueden ser
EVENTOS, tales como VENTAS.
¿Qué es una entidad? ¿Qué es una relación?

VENTA como entidad


1 N N 1
Vendedor Venta Cliente

Realiza Tiene

VENTA como relación


M N
Vendedor Cliente

Realiza
Venta
Ejemplo de un diagrama E - R

Conjunto de entidades
Matricula

Nombre

Estudiante Carrera
N Dirección Atributos
Toma Teléfono

Ciudad
M
Curso Número
N
Materia

Dominio
Ofrecido
en (1..7)
Edificio
1
Lugar Salón
Ejercicio de lectura de un diagrama E - R

Edita
1
Editorial Librería
1
Publica n
Subscrito n
n n Compra
Cliente Revista
m m
1 Libro
Tiene
n m

Números
1
Consta
n
m n Escrito por
Editor Artículos
Revisa n
Escrito por
m
Autor
n
Entidad Fuerte

— Fuerte: Su llave la identifica en forma única entre todas las


instancias de la entidad

— Ejemplo:

Revista ISBN
Entidad Débil

— Débil: Una entidad es débil con respecto a una cierta relación 1:n, si su
llave la identifica en forma única entre sus hermanas únicamente.
— Ejemplo: Entidad Número, la cual continen los diferentes números de
cada una de las revistas.
¡ Revista “Software Guru” ° Número 1,2,3,..............
¡ Revista “Hola” ° Número 1,2,3,4,............

Número
ISBN 1 N
Revista Número
No. Páginas
Ejercicio

— En un instituto de investigación, donde se realizan varios experimentos,


cuenta con varios laboratorios, y existen varios científicos encargados de
los diferentes experimentos y laboratorios; se desea contar con una base
de datos que almacene todos datos e información relacionada con los
experimentos, científicos y laboratorios. El Director de este instituto no
comento lo siguiente:
¡ En cada laboratorio hay varios científicos.
¡ Cada científico tiene asignado a varios asistentes, cada asistente trabaja para
un solo científico.
¡ Cada asistente realiza varios experimentos.
¡ Hay experimentos que requieren de varios asistentes.
¡ Para cada experimento se registra un número de experimento, la fecha de inicio,
fecha de termino y una descripción textual del resultado.
¡ De cada laboratorio se registra el nombre, ubicación y especialidades.
¡ De cada cientifico y asistente se registra su ID, nombre, especialidad, dirección,
teléfono y correo, y en que experimentos esta trabajando.
Ejercicio

— Se desean poder obtener la siguiente información:


¡ Consultar los laboratorios con que se cuenta.
¡ Que científicos están en cada laboratorio.
¡ Quienes son los asistentes de un científico.
¡ Consultar la información de un experimento.
¡ Cuales son los experimentos que está realizando un
asistente.
¡ Cuales son los experimentos a cargo de un científico.
Relación opcional

• La existencia de una entidad en una relación puede ser


obligatoria (mandatory) u opcional, es decir, algunas veces dos
conjuntos de entidades pueden estar relacionados, pero no en
todas sus ocurrencias.
Ejemplo

EMPLEADO Y PROYECTO

• Un empleado puede estar asignado:


¡ a un proyecto
¡ a algunos proyectos o
¡ a ninguno.

Mientras que un proyecto puede estar autorizado, pero no tener aún empleados asignados.

asignado
N M

Empleado Proyecto
Ejemplo

EDITOR Y REVISTAS

• Una editorial puede publicar

* Cero

* Una o varias revistas,

* Pero cada revista debe ser publicada por exactamente un editor.

1 N
Editorial Revista
Ejemplo

— Relaciones Unaria:
¡ Un empleado es jefe de uno o más empleados.
¡ Un empleado solo tiene un Jefe

Es Jefe

Empleado
1
Ejemplo

— Relaciones N-aria:
¡ Un profesor imparte uno o más cursos.
¡ Un curso es impartido por un profesor y se le imparte a varios alumnos.
¡ Un curso lo imparten diferentes profesores a grupos diferentes de
alumnos.
¡ A un alumno se le imparten varios cursos por un profesor para cada
curso

Alumno
N

N N
Profesor Curso

Imparte
Simbología de Martin

— Entidades:

Entidad
Entidad
Atributo1
Atributo2
Atributo3
— Relaciones:
¡ 1a1

¡ 1aN

¡ MaN

¡ Opcionalidad
Adminstra
Gerente División

Trabaja
Empleado División

Escribe
Libro Autor

Realiza
Proyecto Empleado
Ejercicio

— En un instituto de investigación, donde se realizan varios experimentos,


cuenta con varios laboratorios, y existen varios científicos encargados de
los diferentes experimentos y laboratorios; se desea contar con una base
de datos que almacene todos datos e información relacionada con los
experimentos, científicos y laboratorios. El Director de este instituto no
comento lo siguiente:
¡ En cada laboratorio hay varios científicos.
¡ Cada científico tiene asignado a varios asistentes, cada asistente trabaja para
un solo científico.
¡ Cada asistente realiza varios experimentos.
¡ Hay experimentos que requieren de varios asistentes.
¡ Para cada experimento se registra un número de experimento, la fecha de inicio,
fecha termino y una descripción textual del resultado.
¡ De cada laboratorio se registra el nombre, ubicación y especialidades.
¡ De cada cientifico y asistente se registra su ID, nombre, especialidad, dirección,
teléfono y correo, y en que experimentos esta trabajando.
Ejercicio

— Se desean poder obtener la siguiente información:


¡ Consultar los laboratorios con que se cuenta.
¡ Que científicos están en cada laboratorio.
¡ Quienes son los asistentes de un científico.
¡ Consultar la información de un experimento.
¡ Cuales son los experimentos que está realizando un
asistente.
¡ Cuales son los experimentos a cargo de un científico.
Transformación del Modelo
E-R a un conjunto de tablas
Transformar Modelo E-R a Tablas

— Por cada Entidad, definir una tabla, con los atributos


de la Entidad como campos de la tabla.
— Para cada relación uno a muchos, agregar a la
tabla de la Entidad del lado “muchos” los atributos
o campos que conforman la llave primaria de la
Entidad en el lado “uno”.
Transformar Modelo E-R a Tablas

Edita
1 N
Editorial Libro

Tabla Editorial
ID_Ed Nombre_Ed

Tabla Libro
ISBN Titulo Tema Edición Costo Precio ID_Ed
Transformar Modelo E-R a Tablas

— Por cada relación uno a uno, agregar a cualquiera


de las dos tablas, de las Entidades, el conjunto de
atributos o campos correspondientes a la llave
primaria de la Entidad del otro lado de la relación:
Transformar Modelo E-R a Tablas

Administra
1 1
Gerente División

Opción 1: Tabla Gerente


ID_Gerente Nombre Teléfono Oficina

Tabla División
ID_Div Nombre_Div ID_Gerente

Opción 2: Tabla Gerente


ID_Gerent Nombre Teléfono Oficina ID_Div
e Tabla División
ID_Div Nombre_Div
Transformar Modelo E-R a Tablas

— Cada relación de muchos a muchos se transforma


en una tabla adicional, cuyos campos
corresponden a las llaves primarias de las
entidades asociadas y los atributos que tenga la
relación.
Transformar Modelo E-R a Tablas

Escribe
M N
Autor Libro

Tabla Autor
ID_Aut Nombre_Aut
Tabla Libro
ISBN Titulo Tema Edición Costo Precio ID_Ed

Tabla Autor-Libro

ID_Aut ISBN
Diagrama E-R

Atributos de la relación
EJEMPLO: CALIFICACION de un estudiante en un CURSO

Calificación
# matrícula

Nombre
# curso
Dirección
Nombre

Estudiante M N Curso

Registra
Tabla Estudiante
Matricula Nombre Direccion

Tabla Curso
#Curso Nombre

Tabla EstudianteCurso

Matricula #Curso Calificacion


Transformar Modelo E-R a Tablas

— Si realizamos correctamente el modelo Entidad-


Relación, y realizamos correctamente la
transformación a tablas, a partir del modelo E-R; las
tablas resultantes estarán mínimo en Tercera Forma
Normal (3NF) y máximo en Cuarta Forma Normal
(4NF)
Condiciones de Integridad
Condiciones de Integridad

— Condiciones de Integridad mejor conocido como


Restricciones de Integridad.

— Restricciones de Integridad:
¡ Proporciona un medio de asegurar que los cambios que se
hacen en la base de datos, por usuarios autorizados, no
resulten en una perdida de la consistencia de datos.
Condiciones de Integridad

— Integridad:
¡ Se refiere a que los datos contenidos en la base de datos estén
correctos.
¡ La verificación de la integridad se realiza:
÷ Generalmente por medio de programación
÷ O el sistema de información se encarga de la validación, al
recolectar los datos
÷ O en algunos casos se pueden validar desde la base de datos.
Condiciones de Integridad

— Tipos de Restricciones de Integridad:


¡ Declaración de Llaves
¡ Cardinalidad de la relación
¡ Participación Mínima/Máxima
¡ Restricciones de los Dominios
¡ Integridad Referencial
Restricción de Integridad-Declaración de Llaves

— Definiciones de tipos de llaves:


¡ Superllave:
÷ Conjunto de atributos que identifican de forma única a una entidad, de un
conjunto de entidades.
¡ Llave Candidata:
÷ Superllaves mínimas, esto es conjunto mínimo de atributos que identifican a
una entidad de forma única, de un conjunto de entidades.
¡ Llave Primaria:
÷ Una de las llaves candidatas que es seleccionada por el diseñador de BD, como
el medio principal para identificar entidades.
¡ Llave Alternativa:
÷ Las otras llaves candidatas que no se definieron como llaves primarias.
¡ Llave Externa:
÷ Llaves que conectan tuplas o entidades entre conjuntos diferentes de
entidades.
÷ Son el conjunto de atributos que representa la llave primaria del otro conjunto
de entidades.
Restricción de Integridad-Declaración de Llaves

— Los valores de las llaves primaria no pueden ser nulos y


deben ser únicos.
— Los valores de las llaves externas no pueden ser nulos,
cuando la relación es fuerte.
Edita
1 N
Editorial Libro

En este caso la llave externa, en la tabla libro, no puede ser nulo, ya que no puede
haber libros sin editorial; y la relación es fuerte del lado de la Editorial.
Instalada
1 N
Unidad Llanta

En este caso la llave externa, en la tabla Llanta, si puede ser nulo, ya que puede
haber llantas sin asignar a una unidad; y la relación es débil del lado de la Unidad.
Restricciones de Integridad

— Cardinalidad de la Relación
¡ Los tipos de relación deben ser:
÷1a1
÷1aN
÷MaN

— Participación Mínima/Máxima
¡ La cantidad mínima y máxima de entidades del conjunto A que
deben estar relacionadas con entidades del conjunto B esta
dada por la Cardinalidad de la Relación, y si es obligatoria u
opcional la relación.
Instalada
1 4..20
Unidad Llanta
Restricciones de Integridad

— Restricciones de Dominio
¡ Las restricciones de dominio especifican que el valor de cada
atributo Ai debe ser un valor atómico del dominio Di, para ese
atributo.
¡ Las restricciones de dominio es una de las formas más
comunes de restricciones de integridad.
¡ Se pueden restringir los valores que puede tener el dominio de
un atributo, y por lo tanto restringir los posibles valores del
atributo correspondiente.
÷ Ejemplo:
¢ Atributo Sexo solo puede tener los valores “F” y “M”
¢ Atributo Calificación solo puede tomar valores numéricos
enteros entre 0 y 10.
Restricciones de Integridad

— Integridad Referencial:
¡ A menudo se desea asegurar que un valor que aparece en
una relación/tabla para un conjunto de atributos
determinado, aparezca también en otra relación/tablas para
un cierto conjunto de atributos. Esta condición se
denomina integridad referencial.
¡ Sean r1 (R1 ) y r2 (R2 ) dos relaciones/tablas con las claves
1 1 2 2

primarias K1 y K2 , respectivamente. Se dice que un


2

subconjunto α de R2 es una clave externa que hace


2

referencia a K1 de la relación/tabla r1 si se exige que para


1 1

cada t2 de r2 exista una tupla/registro t1 de r1 tal que t1 [K1 ]


2 1 1 1 1

= t2 [α2]. Las exigencias de este tipo se denominan


2

restricciones de integridad referencial


Restricciones de Integridad

— Integridad Referencial:
¡ Esta condición de integridad busca, en lo posible, que no
existan tuplas colgantes.
÷ Tupla Colgante: Cuando en una relación 1 a N entre dos conjuntos
de entidades A y B; donde A es el conjunto dominante(1) y B el
subordinado(N), y por lo tanto la llave primaria de A es llave
foránea de B; existen tuplas/registros en B que no están
relacionadas con ninguna tupla/registro en A o que tienen un
valor en la llave foránea que no coincide con algún valor de la llave
primaria de las tuplas/registros de A.
÷ Ejemplo: Relación de Editorial y Libro, no puede haber libros sin
editorial.

Edita
1 N
Editorial Libro
Restricciones de Integridad

— Integridad Referencial, al modificar la BD.


¡ Insertar:
÷ Al insertar una nueva tupla en Libro, se debe verificar que exista la
tupla en Editorial, con la cual se va a relacionar.
÷ Si esta validación no se realiza se generan tuplas colgantes.
÷ Ejemplo: Al dar de alta el libro Proceso Unificado de Desarrollo
de Software, de la editorial Prentice Hall:
¢ Si la editorial Prentice Hall no existe, entonces el sistema no
debe permitir dar de alta el libro, y se debe dar de alta primero
la editorial Prentice Hall, y luego dar de alta el libro Proceso
Unificado de Desarrollo de Software. De lo contrario se estará
violando la Integridad Referencial y se creará una tupla
colgante en Libro
Restricciones de Integridad

— Integridad Referencial, al modificar la BD.


¡ Borrar:
÷ Al borrar una tupla de Editorial, se debe verificar que no existan
tuplas en Libro relacionadas con la tupla de Editorial a borrar; si
existen tuplas en Libro relacionadas a la tupla en Editorial a
borrar entonces se pueden hacer dos cosas:
¢ No borrar la tupla de Editorial, recomendable.

¢ Borrar todas la tuplas de Libro, relacionadas a la tupla de


Editorial a borrar, al mismo tiempo que borra la tupla de
Editorial, pero esto puede ocasionar borrado en cascada y
perdida de datos o información.
Restricciones de Integridad

— Integridad Referencial, al modificar la BD.


¡ Actualizar, aquí se tienen dos casos:
÷ Si se actualiza una tupla en B, y con esta actualización se modifica
el valor de alguno de los atributos que forman la llave foránea, se
debe validar que este nuevo valor de llave foránea exista como
llave primaria en alguna tupla de A.
÷ Se actualiza una tupla en A, y se cambia el valor de alguno de los
atributos que forman la llave primaria, se debe actualizar los
valores de los atributos de las llaves foráneas de las tuplas
correspondientes en B.
Conceptos de Abstracción
Conceptos de Abstracción

— Especialización:
¡ Es el proceso de designación de subgrupos de entidades
dentro de un conjunto de entidades.
¡ En un conjunto de entidades puede existir un subconjunto
de entidades que tenga algunos atributos diferentes a los de
todo el grupo.
¡ En el modelo entidad relación, la especialización se
representa con un símbolo de triangulo en la relación; y
etiquetado como “ES”, y es una relación de superclase-
subclase.
Ejemplo: El personal de una línea aérea, donde hay pilotos
y sobrecargos, primero se identifica la Entidad Personal y
después se realiza la especialización
— Generalización:
¡ Es cuando a partir de un grupo de conjunto de entidades,
donde comparten atributos en común, se obtiene un grupo de
entidades que contenga estos grupos de entidades en común.
¡ En otras palabras a partir de varias clases se obtiene una
superclase.
¡ Es el diseño ascendente.
Ejemplo: El personal de una línea aérea, donde hay pilotos
y sobrecargos, primero se identifican las Entidades Piloto y
Personal_Vuelo, y después se realiza la generalización
Tips

— Si en la tabla A un valor de un atributo, de tipo alfanumérico,


aparece en varias tuplas/registros, de la tabla A, entonces se
recomienda crear una tabla con ese atributo y una llave
primaria nueva para esa tabla, y en la tabla original cambiar el
atributo original por el conjunto de atributos de la llave
primaria de la nueva tabla.
— Ejemplo:
¡ Unidad(Número, Marca, Modelo, Fecha_Fabricación, Fecha_Compra,
Km_inicial, Km_Acumulado, Costo, Capacidad_Carga)
¡ En los atributos Marca y Modelo, los diferentes valores que pueden
tomar se van a repetir en diferentes unidades; por lo tanto se crean las
tablas Marca y Modelo y la tabla Unidad queda:
¡ Marca(ID_Marca, Nombre_Marca)
¡ Modelo(ID_Modelo, Nombre_Modelo)
¡ Unidad(Número, ID_Marca, ID_Modelo, Fecha_Fabricación,
Fecha_Compra, Km_inicial, Km_Acumulado, Costo, Capacidad_Carga)
Relaciones N-arias

— Las interrelaciones de grado mayor de 2 son bastante


más difíciles de manejar que las binarias.
— Casi nunca se utilizan interrelaciones de grado igual
o superior a 4.
— Algunas veces es posible transformar una
interrelación ternaria a varias binarias (lo mismo
para n=4, 5, ...) que recogen la misma semántica.
Otras veces no es posible.
— La determinación de las cardinalidades mínimas y
máximas de cada entidad participante debe
realizarse con cuidado.
Relaciones Unarias

— Cuando existen relaciones entre entidades del mismo


conjunto de entidades.
— Ejemplo:

Es
Empleado
jefe

N
Cardinalidades Máximas y Mínimas

1 Ti 2..18
Automovil en Llantas
e

Un Automovil tiene mínimio 2 llantas y máximo 18 llantas


Pasos para construir un Modelo
E-R
Pasos para la Construcción de un Modelo E-R

1. Clasificar Entidades y Atributos.


1. Las Entidades poseen información descriptiva; los Atributos
no.
2. Si existen atributos que describen a un objeto, estos deben
ser una entidad.
3. Atributos multivaluados deben clasificarse como Entidades.
2. Establecer las relaciones entre las Entidades y su
cardinalidad (1:1, 1:N, M:N).
Pasos para la Construcción de un Modelo E-R

3. Revisar:
1. Cada Atributo este asociado a la Entidad que mejor describe.
2. Si existen atributos cuyos valores se repiten mucho, ver la
posibilidad de convertirlos en Entidades.
3. No hay relaciones redundantes.
4. Ningún atributo de una entidad coincide con la Llave
Primaria de otra Entidad, esto esconde una relación.
4. Verificar que el modelo satisface los
requerimientos.
Ejercicio

— Existen varios Laboratorios, de los cuales se desea


guardar número de laboratorio, nombre, dirección y
especialidad. En cada laboratorio hay varios
científicos, de cada cientifico se tiene su nombre,
número de empleado, especialidad, teléfono, e-mail.
Cada científico tiene asignado a muchos asistentes,
de cada asistente se guarda su nombre, número de
empleado, teléfono, e-mail; cada asistente trabaja
para un solo científico. Los asistentes realizan
experimentos. Hay experimentos que requieren de
varios asistentes. Para cada experimento se registra
un número de experimento, la fecha de inicio, fecha
de termino y una descripción textual del resultado.
Unidad 5: Algebra Relacional

5.1 APRENDERÁ LOS CONCEPTOS RELACIONADOS


CON EL LENGUAJE DE CONSULTA FORMAL
CONOCIDO COMO ÁLGEBRA RELACIONAL
5.2 APLICARÁ LOS MISMOS PARA REALIZAR
CONSULTAS PRÁCTICAS A UNA BASE DE DATOS
Algebra Relacional

— Algebra Relacional:
¡ Es un lenguaje de consulta procedimental.
¡ Consta de un conjunto de operaciones que toman como
entrada una o dos relaciones y producen como resultado una
nueva relación. (Relación=Tabla o Entidad)
¡ Consta de dos tipos de operaciones:
÷ Operaciones Tradicionales de Conjuntos.
÷ Operaciones Relacionales Especiales o Fundamentales.
Operaciones Tradicionales de
Conjuntos
Operaciones Tradicionales de Conjuntos

— Estas operaciones se aplican sobre dos operándos


(relaciones) y el resultado es una tercera relación.
— Las operaciones de este tipo son:
¡ Unión
¡ Intersección
¡ Diferencia
¡ Producto Cartesiano
¡ Para poder realizar esta operación se deben cumplir las siguientes
condiciones:
÷ Las relaciones A y B deben tener el mismo número de atributos.
÷ Los dominios de los atributos i-ésimos, de A y B, deben ser iguales
para toda i.
÷ Esto es las dos relaciones deben tener exactamente la misma
estructura.
Operaciones Tradicionales de Conjuntos

— Operación Unión (UNION, ∪ ):


¡ La unión de dos relaciones A y B, A UNION B, es el conjunto de
todas las tuplas t que pertenecen tanto a A como a B, o a ambas.
¡ Ejemplo: Suponga que A es la relación de todos los clientes que han
comprado el producto “MacBook Air 256”, y B son los clientes que
han comprado el producto “AppleTV”; entonces A UNION B da como
resultado una relación donde están todos los clientes que han
comprado uno u otro o ambos productos.

A B A ∪ B
Nom_cte Nom_cte Nom_cte
Juan Pérez
Juan Pérez Juan Pérez
Luis Díaz
Luis Díaz Ricardo López
Pedro Muñoz
Pedro Muñoz Pedro Muñoz
Ricardo López
Operaciones Tradicionales de Conjuntos

— Operación Intersección ∩ :
¡ La Intersección de dos relaciones A y B, A ∩ B, es el conjunto
de todas las tuplas t que pertenecen tanto a la relación A como
a la relación B.
¡ Ejemplo: A ∩ B

A B A∩ B
Nom_cte Nom_cte Nom_cte
Juan Pérez Juan Pérez Juan Pérez
Luis Díaz Ricardo López Pedro Muñoz
Pedro Muñoz Pedro Muñoz
Operaciones Tradicionales de Conjuntos

— Operación Diferencia:
¡ La diferencia entre dos relaciones A y B, A - B, es el conjunto
de todas las tuplas t que pertenecen a A pero no pertenecen a
B.
¡ Ejemplo: Siguiendo con el mismo ejemplo de los clientes:

A B A - B
Nom_cte Nom_cte Nom_cte
Juan Pérez Juan Pérez Luis Díaz
Luis Díaz Ricardo López
Pedro Muñoz Pedro Muñoz
Operaciones Tradicionales de Conjuntos

— Operación Producto Cartesiano Extendido:


¡ El Producto Cartesiano Extendido de dos relaciones A y B, A Times
B, es el conjunto de todas las tuplas t tal que t es la concatenación de
una tupla a que pertenece a A y una tupla b que pertenece a B. La
concatenación de la tupla a=(a1, a2,…, am) y la tupla b=(bm+1,
bm+2,…,bn) da como resultado a la tupla t=(a1, a2,…, am, bm+1,
bm+2, …, bn).
¡ Los nombres de las relaciones, A y B, deben ser diferentes.

¡ Ejemplo:
A Times B
Nom_cte Nom_prod
A B
Juan Pérez MacBook Air
Nom_cte Nom_prod
Juan Pérez iPhone5SE
Juan Pérez MacBook Air
Luis Díaz MacBook Air
Luis Díaz iPhone 5SE Luis Díaz iPhone 5SE
Pedro Muñoz Pedro Muñoz MacBook Air
Pedro Muñoz iPhone 5SE
Operaciones Relacionales
Especiales o Fundamentales
Operaciones Relacionales Especiales o Fundamentales

— Operación Seleccionar (Select)


¡ Esta operación sirve para seleccionar un subconjunto de
tuplas de una relación que satisface la condición de
selección.
¡ En algebra relacional la operación Selección se denota
como:
÷ σ <condición de selección> (<nombre de la relación>)
÷ La <condición de selección> es una operación
relacional (=, <>, <, <=, >, >=) en términos de los
atributos a utilizar, de la relación.
÷ La relación resultante tiene los mismos atributos que la
relación original.
Operaciones Relacionales Especiales o Fundamentales

— Operación Seleccionar (Select)


¡ σ <condición de selección> (<nombre de la relación>)
¡ Ejemplo dada la siguiente Relación:

Factura(Folio, Fecha, RFC_cte, Subtotal, Impuesto, Total)


¡ Si queremos obtener todas las facturas que pertenecen al
cliente con RFC=MALL701128A25, entonces realizamos la
siguiente operación de Select:
¡ σ RFC_cte=“MALL701128A25” (Factura);
¡ La relación resultante tiene los mismos atributos que la
relación original.
Operaciones Relacionales Especiales o Fundamentales

Factura
Folio Fecha RFC_cte Subtotal Impuesto Total
1 01/10/2018 SAC170724P4J 10,000.00 1,600.00 11,600.00
2 01/10/2018 MALL701128A25 5,000.00 800.00 5,800.00
3 10/10/2018 XAXX010101000 1,000.00 160.00 1,160.00
4 10/10/2018 MALL701128A25 2,000.00 320.00 2,320.00
5 10/10/2018 XAXX010101000 500.00 80.00 580.00
6 13/10/2018 MALL701128A25 10,000.00 1,600.00 11,600.00

σ RFC_cte=“MALL701128A25” (Factura)
Folio Fecha RFC_cte Subtotal Impuesto Total
2 01/10/2018 MALL701128A25 5,000.00 800.00 5,800.00
4 10/10/2018 MALL701128A25 2,000.00 320.00 2,320.00
6 13/10/2018 MALL701128A25 10,000.00 1,600.00 11,600.00
Operaciones Relacionales Especiales o Fundamentales

— La operación PROYECTAR (PROJECTION)


¡ La Proyección de la relación R sobre los atributos X, Y, …, Z; es el
conjunto de todas las tuplas (x,y,…,z), tal que una tupla t aparece
en R con X valor x, Y valor y, …, Z valor z.
¡ Esto es que la operación Proyectar obtiene una relación con todas
las tuplas de R pero solo con los atributos X, Y, …, Z y en el orden
especificado de los atributos.
¡ La sintaxis es la siguiente:
π <lista de atributos> (<nombre de la relación>)
¡ La relación resultante tiene solo los atributos especificados en
<lista de atributos>, y en el orden en que aparecen en esa
lista.
¡ La relación resultante elimina cualquier tupla repetida.
Operaciones Relacionales Especiales o Fundamentales

— Ejemplo dada las siguientes relaciones:


Factura(Folio, Fecha, RFC_cte, Subtotal, Impuesto,
Total)
— Queremos el Folio, RFC y Total de las facturas,
entonces hacemos una proyección sobre Factura

π Folio, RFC_cte, Total (Factura)


Operaciones Relacionales Especiales o Fundamentales
Factura
Folio Fecha RFC_cte Subtotal Impuesto Total
1 01/10/2018 SAC170724P4J 10,000.00 1,600.00 11,600.00
2 01/10/2018 MALL701128A25 5,000.00 800.00 5,800.00
3 10/10/2018 XAXX010101000 1,000.00 160.00 1,160.00
4 10/10/2018 MALL701128A25 2,000.00 320.00 2,320.00
5 10/10/2018 XAXX010101000 500.00 80.00 580.00
6 13/10/2018 MALL701128A25 10,000.00 1,600.00 11,600.00

Folio RFC_cte Total


1 SAC170724P4J 11,600.00
π Folio, RFC_cte, Total (Factura) 2 MALL701128A25 5,800.00
3 XAXX010101000 1,160.00
4 MALL701128A25 2,320.00
5 XAXX010101000 580.00
6 MALL701128A25 11,600.00
— Las operaciones, de algebra relacional, se pueden
utilizar anidadas:
¡ Se desea solo el nombre, rfc y municipio de todos los clientes
del municipio de Aguascalientes.
π Nom_cte, RFC_cte, Mpio_cte (σMpio_cte=“AGUASCALIENTES” (CLIENTE))
R1=σMpio_cte=“AGUASCALIENTES” (CLIENTE)
π Nom_cte, RFC_cte, Mpio_cte (R1)
Operaciones Relacionales Especiales o Fundamentales

— Operación REUNION (Join)


¡ La operación Join de la relación A en el atributo X con la
relación B en el atributo Y, es el conjunto de todas las tuplas t,
tal que t es la concatenación de una tupla a, perteneciente a A,
y una tupla b, perteneciente a B, y la operación a.X operador
b.Y es verdadera.
¡ Los atributos A.X y B.X deben tener el mismo dominio.
¡ Sintaxis:
A A.X operador B.X (B)
Operaciones Relacionales Especiales o Fundamentales

— Ejemplo:
¡ Se tienen las tablas o relaciones Cliente y Factura, y se desea
obtener una tabla o relación nueva con todos los datos del
cliente y todos los datos de las facturas que corresponden a
cada uno de esos clientes:
Cliente(RFC_cte, Nom_cte, CalleNoExt_cte, Col_cte,
Mpio_cte, Edo_cte, CP_cte, Pais_cte)
Factura(Folio, Fecha, RFC_cte, Subtotal, Impuesto, Total)

Factura Factura.RFC_cte = Cliente.RFC_cte (Cliente)


CLIENTE
RFC_cte Nom_cte Calle_cte NoExt Col_cte Mpio_cte Edo País_cte
_cte _cte

SAG900215UC4 SERVAL AV. 1234 PANORAMA AGUASCALIENTES AGS MÉXICO


CONSTITUCION

MALL701128A25 LUIS 1er. Anillo Nte 325 OLIVARES AGUASCALIENTES AGS MÉXICO
MARTINEZ
XAXX010101000 PÚBLICO MADERO 452 CENTRO AGUASCALIENTES AGS MÉXICO
GENERAL

FACTURA
Folio Fecha RFC_cte Subtotal Impuesto Total

1 01/10/2018 SAG900215UC4 10,000.00 1,600.00 11,600.00


2 01/10/2018 MALL701128A25 5,000.00 800.00 5,800.00
3 10/10/2018 XAXX010101000 1,000.00 160.00 1,160.00
4 10/10/2018 MALL701128A25 2,000.00 320.00 2,320.00
5 10/10/2018 XAXX010101000 500.00 80.00 580.00
6 13/10/2018 MALL701128A25 10,000.00 1,600.00 11,600.00
Factura Factura.RFC_cte = Cliente.RFC_cte (Cliente)
Fo Fecha RFC_cte Subtot Impue Total Nom_ Calle_ NoExt Col_ct Mpio_ Edo_c País_
lio al sto cte cte _cte e cte te cte
1 01/10/20 SAG900215 10,000 1,600. 11,600 SERV AV. 1234 PANO AGUA AGS MÉXI
18 UC4 .00 00 .00 AL CONS RAMA SCALI CO
TITUC ENTE
ION S
2 01/10/20 MALL701128 5,000. 800.00 5,800. LUIS 1er. 325 OLIVA AGUA AGS MÉXI
18 A25 00 00 MARTI Anillo RES SCALI CO
NEZ Nte ENTE
S
3 10/10/20 XAXX010101 1,000. 160.00 1,160. PÚBLI MADE 452 CENT AGUA AGS MÉXI
18 000 00 00 CO RO RO SCALI CO
GENE ENTE
RAL S
4 10/10/20 MALL701128 2,000. 320.00 2,320. LUIS 1er. 325 OLIVA AGUA AGS MÉXI
18 A25 00 00 MARTI Anillo RES SCALI CO
NEZ Nte ENTE
S
5 10/10/20 XAXX010101 500.00 80.00 580.00 PÚBLI MADE 452 CENT AGUA AGS MÉXI
18 000 CO RO RO SCALI CO
GENE ENTE
RAL S
6 13/10/20 MALL701128 10,000 1,600. 11,600 LUIS 1er. 325 OLIVA AGUA AGS MÉXI
18 A25 .00 00 .00 MARTI Anillo RES SCALI CO
NEZ Nte ENTE
S
Operaciones Relacionales Especiales o Fundamentales

— Operación División (DIVIDEDBY):


¡ El operador de División (÷) divide la relación A, dividendo, de
grado m+n, entre una relación B, divisor, de grado n, dando
como resultado una relación C de grado m.
¡ El atributo (m+i) de la relación A y el atributo i, donde i=1,
2,…, n, de la relación B deben estar en el mismo dominio.
¡ Los m atributos de la relación C tienen el mismo nombre que
los primeros m atributos de la relación A.
Operaciones Relacionales Especiales o Fundamentales

— Se quiere saber los clientes que compraron MacBook


Air y iPhone5SE.
— Se tienen las tablas Cliente-Prod y Producto

Cliente-Prod Producto Cliente-Prod ÷ Producto


Nom_cte Nom_prod Nom_prod Nom_cte
Juan Pérez MacBook Air ÷ MacBook Air Juan Pérez
Luis Macías Apple TV iPhone5SE Pedro Muñoz
Luis Díaz MacBook Air
Juan Pérez iPhone 5SE
Pedro Muñoz MacBook Air
Pedro Muñoz iPhone 5SE
Operadored Lógicos

— En la operación Select en la expresión relacional se


pueden utilizar los operadores lógicos AND y OR
para manejar varias expresiones relacionales.
— Ejemplo:
— Obtener las facturas cuyo RFC sea igual a
MALL701128A25 y el Total sea mayor o igual a
10,000.
— σ RFC_cte=“MALL701128A25” AND Total>=10000 (Factura)
Ejemplo

— Se tienen las siguientes tablas de una Base de Datos de un


sistema de ventas:
Cliente(Id_Cte, Nom_Cte, Calle_Cte, NoExt_Cte, NoInt_Cte,
CP_Cte, Id_Col, Id_Mpio, Id_Edo, RFC_Cte, Tel_Cte, Cel_Cte,
Email_Cte, Saldo_Cte, DiasCred_Cte, LimCred_Cte)
Colonia(Id_Col, Nom_Col)
Municipio(Id_Mpio, Nom_Mpio)
Estado(Id_Edo, Nom_Edo)
Producto(Id_Prod, Desc_Prod, Costo_Prod, Precio_Prod,
PorcIVA_Prod)
Factura(Folio_Fac, Fecha_Fac, Id_Cte, Descuento_Fac,
SubTotal_Fac, Impuesto_Fac, Total_Fac)
DetalleFac(Folio_Fac, Id_Prod, Cantidad_DF, PrecioU_DF,
PorcIVA_DF)
Ejemplo

— Obtenga todos los clientes cuyo Código Postal es


20100.
— Obtenga todas las facturas emitidas en el mes de
septiembre de 2022.
— Obtenga todas las facturas de los clientes cuyo código
postal es 20100, mostrando folio, fecha de la factura,
nombre del cliente, código postal y Total de la
factura.
— Obtenga todos los clientes que han comprado un
disco SSD de 480 GB, solo muestre el Id_Cte,
Nom_Cte y Desc_Prod
Ejercicio

— Obtener una lista de precios de productos;


mostrando el Id, Descripción y Precio de los
productos.
— Obtener todos los productos que se le han vendido a
cada cliente, mostrando id y nombre del cliente, id y
descripción del producto y la cantidad vendida al
cliente.
— Obtener todos los clientes del municipio de
AGUASCALIENTES.
Unidad 6: Lenguajes de Manipulación
de Base de Datos Relacionales

6.1 Características de los lenguajes de


manipulación de base de datos

6.2 SQL (Structured Query Language)

6.3 QBE (Query by Example)


Características de los Lenguajes
de Manipulación de BD
2
Características de los Lenguajes de
Manipulación de BD Relacionales
3

— Se basan en algebra relacional.


— Se crearon principalmente para realizar consultas,
directamente sobre la base de datos.
— Se pensaron en un principio para que los usuarios
finales pudieran realizar sus propios reportes.
— Se les conoció como lenguajes de cuarta generación
(4G).
— Actualmente son usados para manipular las bases de
datos por medio de instrucciones en los lenguajes de
programación o directamente en el sistema
manejador de base de datos (DBMS).
SQL (Structured Query
Lenguage)
4
SQL
5

— Antecedentes
— Consultas en SQL
¡ SELECT
— Instrucciones de actualización
¡ INSERT
¡ DELETE
¡ UPDATE
— Vistas en SQL
— Definición de datos
¡ CREATE
¡ DROP
¡ ALTER TABLE
Antecedentes de SQL
6

— Las operaciones de álgebra relacional resultan


imprescindibles para entender el tipo de operaciones que se
pueden efectuar sobre una base de datos.
— No obstante, son muy pocos los DMBS que se basan
directamente en el álgebra relacional.
— La razón es que las operaciones de A.R. se escriben en
forma de secuencias de operaciones. Esto ocasiona que el
usuario deba indicar como (es decir, en que orden) se deben
ejecutar las operaciones de consulta.
— La mayoría de los DBMS actuales cuentan con lenguajes de
alto nivel, de modo que el usuario solo tenga que especificar
cual es el resultado deseado, dejando al DBMS la
optimización y ejecución de la consulta.
Antecedentes
7

— El lenguaje SQL (Structured Query Language) se diseñó e


implementó en IBM research para un sistema experimental
de bases de datos relacionales, llamado system R

— Paulatinamente otros manejadores de bases de datos lo


incorporaron hasta que se logró una versión estándar en
1986 (ANSI, 86) llamada SQL1 y otra en 1992 (ANSI,92)
llamada SQL2. Se busca lograr una versión SQL3 que
incorpore los conceptos de orientación a objetos, entre
otros.
Consultas en SQL
8

— Antecedentes
— Consultas en SQL
¡ SELECT
÷ Consultas SQL básicas.
÷ Omisión de WHERE
÷ Uso de *
÷ Uso de DISTINCT (relaciones como conjuntos)
÷ Consultas anidadas
÷ Funciones EXISTS y UNIQUE
÷ Conjuntos explícitos y valores NULOS en SQL
÷ Cambios de nombre en los atributos y tablas reunidas
(JOIN)
÷ Funciones agregadas y agrupación (GROUP BY,
HAVING)
Consultas en SQL
9

— SQL tiene una instrucción básica para obtener


información de una base de datos: la instrucción
SELECT (seleccionar).
— Esta instrucción no es lo mismo que la operación
SELECCIONAR del álgebra relacional estudiada
anteriormente.
— La instrucción SELECT de SQL tiene muchas opciones y
matices, por lo que se presentarán sus características
gradualmente.
— Hay que indicar también que SQL permite que las tablas
puedan tener dos o más tuplas idénticas en sus
relaciones. Por tanto, en general, una tabla de SQL no
es un conjunto de tuplas propiamente dicho
Instrucción SELECT
10

— La forma básica de la instrucción SELECT consta de


tres cláusulas y se construye así:

SELECT <lista de atributos/*>


FROM <lista de tablas>
WHERE <condición>
Tablas de Ejemplo
Tabla: Cliente
RFC_Cte Nom_Cte CalleNoExt_Cte Col_Cte Mpio_Cte Edo_Cte CP_Cte Pais_Cte

XAXX010101000 Público en Conocido Centro Ags. Ags. 20000 México


General
MALL701128A25 Luis Martínez Rincón 322 San Marcos Ags. Ags. 20110 México

SAC170724P4J Servicios AC Julio Díaz Torre 255 Cd. Industrial Ags. Ags. 20245 México

Tabla: Factura
Folio Fecha RFC_cte Subtotal Impuesto Total
1 01/10/2018 SAC170724P4J 10,000.00 1,600.00 11,600.00
2 01/10/2018 MALL701128A25 5,000.00 800.00 5,800.00
3 10/10/2018 XAXX010101000 1,000.00 160.00 1,160.00
4 10/10/2018 MALL701128A25 2,000.00 320.00 2,320.00
5 10/10/2018 XAXX010101000 500.00 80.00 580.00
6 13/10/2018 MALL701128A25 10,000.00 1,600.00 11,600.00
Empleo de ‘*’
12

— Si queremos obtener los valores de todos los


atributos de las tuplas seleccionadas, no se tienen
que listar explícitamente en SQL; basta con
especificar un asterisco (‘*’), que significa todos
los atributos
— Consulta 1
¡ Obtener todos los atributos de las tuplas de los empleados cuyo jefe
es el empleado con ID=105

SELECT *
FROM EMPLEADO
WHERE IDEmp_Jefe=105
SELECT: usando * y sin Where
13

— Consulta 2:
¡ Obtener todos los clientes
SELECT *
FROM Cliente
— Consulta 3:
¡ Obtener todas las facturas

SELECT *
FROM Factura
SELECT: Usando Where
14

— Consulta 4:
¡ Obtener las factura del RFC = MALL701128A25
SELECT *
FROM Factura
WHERE RFC_Cte=‘MALL701128A25’
— Esta consulta es similar a la expresión de
álgebra relacional:
σ (RFC_Cte=‘MALL701128A25’) (Factura)
Empleo de ‘*’
15

— Consulta 5
¡ Obtener todos los atributos de los clientes y los atributos de sus
facturas
¡
SELECT *
FROM Cliente, Factura
WHERE Cliente.RFC_Cte=Factura.RFC_Cte

— Consulta 6
¡ Especificar el producto cruzado de las relaciones empleado y
productos

SELECT *
FROM EMPLEADO, Producto
SELECT delimitando atributos
16

— Consulta 7:
¡ Obtener la dirección del cliente cuyo nombre es ‘Luis
Martínez’
SELECT CalleNoExt_Cte, Col_Cte, Mpio_Cte, Edo_Cte
FROM Cliente
WHERE Nom_Cte=‘Luis Martínez’
— Esta consulta es similar a la expresión de
álgebra relacional:
π (CalleNoExt_Cte, Col_Cte, Mpio_Cte, Edo_Cte) σ
(Nom_Cte=‘Luis Martínez’)
(Cliente)
Tablas como conjuntos en SQL
17

— Como ya se ha mencionado, SQL no trata las relaciones, en


general, como conjuntos; puede haber tuplas repetidas en
una relación o en el resultado de una consulta. SQL no
elimina automáticamente las tuplas repetidas en los
resultados de las consultas, por las siguientes razones:
¡ La eliminación de duplicados es una operación costosa. Implica
un ordenamiento previo y luego la eliminación de duplicados.
¡ Es posible que el usuario desee ver las tuplas repetidas en el
resultado de una consulta
¡ Cuando se aplica una función agregada (suma, promedio, etc.)
en la mayoría de los casos no queremos eliminar los duplicados.
— Pero, si lo que queremos es eliminar las tuplas repetidas del
resultado de una consulta SQL, se puede utilizar la palabra
reservada DISTINCT en la cláusula SELECT para indicar que solo
deben conservarse tuplas distintas en el resultado
Tablas como conjuntos en SQL
18

— Por ejemplo, la siguiente consulta obtiene el salario de todos los empleados; si


varios de ellos tienen el mismo salario, el valor correspondiente aparecerá
varias veces en el resultado de la consulta
— Consulta 8

SELECT salario
FROM EMPLEADO

— Si solo nos interesan los valores de salarios distintos, querríamos que dichos
valores aparezcan una sola vez. Usando la palabra reservada DISTINCT, se
logra este objetivo:

SELECT DISTINCT salario


FROM EMPLEADO
SELECT usando DISTINCT
19

— Consulta 9:
¡ Obtener todos los RFC de la tabla Factura sin
duplicarlos
SELECT DISTINCT RFC_Cte
FROM Factura
— Esta consulta es similar a la expresión de
álgebra relacional:
π (CalleNoExt_Cte, Col_Cte, Mpio_Cte, Edo_Cte) σ
(Nom_Cte=‘Luis Martínez’)
(Cliente)
Instrucción SELECT: atributos ambiguos y
seudónimos
20

— En SQL se puede usar el mismo nombre para


dos (o más) atributos, siempre que éstos
pertenezcan a diferentes relaciones. Si tal es el
caso, y una consulta hace referencia a dos o
más atributos de mismo nombre, es necesario
calificar el nombre del atributo con el nombre de
la relación, con el fin de evitar la ambigüedad.
— Esto se hace anteponiendo el nombre de la
relación al nombre del atributo y separando los
dos con un punto.
Manejo de atributos ambiguos: ejemplo
21

— Consulta 10
¡ Mostrar el nombre del cliente, folio de factura, fecha, producto y
cantidad vendida.

SELECT Nom_Cte, Folio, Fecha, Descripcion, Cantidad


FROM Cliente, Factura, Movimiento, Producto
WHERE Cliente.RFC_Cte=Factura.RFC_Cte AND
Factura.Folio=Movimiento.Folio AND
Movimiento.Codigo=Producto.Codigo
Instrucción SELECT. Ejemplos
22

— Considere que tenemos las tablas:


¡ Cliente(RFC_Cte, Nom_Cte, CalleNoExt_Cte, Col_Cte,
Mpio_Cte, Edo_Cte, CP_Cte, Pais_Cte)
¡ Producto(Codigo, Descripcion, Precio, Marca, Existencia)
¡ Factura(Folio, Fecha, RFC_Cte, Subtotal, Impuesto, Total,
ID_Emp)
¡ Movimiento(Folio, Codigo, NoMov, Cantidad, Precio,
Descuento, PorcentajeImpuesto, Importe)
¡ Empleado(ID_Emp, Nombre, Dirección, Telefono, Correo,
IDEmp_Jefe, Puesto, NSS, Salario)
SELECT JOIN o Reunión
23

— Consulta 11
¡ Obtener el nombre y la dirección de todos los clientes que tienen
facturas:

SELECT Nom_Cte, CalleNoExt_Cte, Col_Cte, Mpio_Cte, Edo_Cte


FROM Cliente, Factura
WHERE Cliente.RFC_Cte=Factura.RFC_Cte

Esta consulta es similar a una secuencia SELECCIONAR – PROYECTAR-


REUNIÓN de álgebra relacional. En la cláusula WHERE, la condición
Cliente.RFC_Cte = Factura.RFC_Cte’ es una condición de reunión.
EN GENERAL, ES POSIBLE ESPECIFICAR CUALQUIER CANTIDAD
DE CONDICIONES DE SELECCIÓN Y REUNIÓN EN UNA SOLA
CONSULTA SQL
Si en las tablas que participan en la Reunión, existen atributos con el mismo
nombre solo deja uno de los dos atributos en el resultado.
Instrucción SELECT. Ejemplos
24

— Consulta 12
¡ Mostrar el nombre del cliente, folio de factura, fecha, producto y
cantidad vendida.

SELECT Nom_Cte, Folio, Fecha, Descripcion, Cantidad


FROM Cliente, Factura, Movimiento, Producto
WHERE Cliente.RFC_Cte=Factura.RFC_Cte AND
Factura.Folio=Movimiento.Folio AND
Movimiento.Codigo=Producto.Codigo

La condición de reunión Cliente.RFC_Cte=Factura.RFC_Cte relaciona a cada


Cliente con sus Facturas, en tanto que la condición de reunión
Factura.Folio=Movimiento.Folio relaciona las Facturas con sus Movimientos, y la
condición de reunión Movimiento.Codigo=Producto.Codigo relaciona los
movimientos con sus productos. Se pueden realizar tantas condiciones de
reunión como sean necesarias
Empleo de seudónimos
25

— Consulta 13
¡ También puede haber ambigüedad en consultas que hacen referencia
dos veces a la misma relación, como en el siguiente ejemplo:

SELECT E.NOMBRE, S.NOMBRE


FROM EMPLEADO E, EMPLEADO S
WHERE E.IDEmp_Jefe=S.ID_Emp

En este caso, se pueden declarar dos nombres de relación alternativos (E y S),


llamados seudónimos para la misma relación EMPLEADO. El seudónimo
puede seguir directamente al nombre de la relación o puede ir después de la
palabra reservada AS (como); por ejemplo: EMPLEADO AS E en la cláusula
FROM
En esta consulta se puede pensar en E y S como dos copias distintas de la
relación empleado. La primera, E, que representa a los empleados en el papel
de subordinados, y la segunda, S, en el papel de Jefes. Luego, se puede
aplicar una reunión a las dos copias. Obviamente, en realidad solo hay una
relación empleado y la condición de reunión reúne las tuplas consigo misma.
Este es un ejemplo de reunión recursiva de un nivel
Cláusulas WHERE no especificadas
26

— La omisión de la cláusula WHERE indica una selección


de tuplas incondicional; por tanto todas las tuplas de la
relación especificada en la cláusula FROM son aceptadas
y se seleccionan para el resultado de la consulta.
— Esto equivale a la condición WHERE TRUE, que significa
todas las filas de la tabla
— Si se especifica más de una relación en la cláusula
FROM y no hay una cláusula WHERE, se selecciona el
producto cruzado (es decir, cartesiano, de todas las
posibles combinaciones de tuplas) de esas relaciones
Tablas de Ejemplo
Tabla: Cliente
RFC_Cte Nom_Cte CalleNoExt_Cte Col_Cte Mpio_Cte Edo_Cte CP_Cte Pais_Cte

XAXX010101000 Público en Conocido Centro Ags. Ags. 20000 México


General
MALL701128A25 Luis Martínez Rincón 322 San Marcos Ags. Ags. 20110 México

SAC170724P4J Servicios AC Julio Díaz Torre 255 Cd. Industrial Ags. Ags. 20245 México

Tabla: Factura
Folio Fecha RFC_cte Subtotal Impuesto Total
1 01/10/2018 SAC170724P4J 10,000.00 1,600.00 11,600.00
2 01/10/2018 MALL701128A25 5,000.00 800.00 5,800.00
3 10/10/2018 XAXX010101000 1,000.00 160.00 1,160.00
4 10/10/2018 MALL701128A25 2,000.00 320.00 2,320.00
5 10/10/2018 XAXX010101000 500.00 80.00 580.00
6 13/10/2018 MALL701128A25 10,000.00 1,600.00 11,600.00
Cláusulas WHERE no especificadas
28

— Consulta 13
¡ Seleccionar todos los RFC de Cliente

SELECT RFC
FROM Cliente

— Consulta 14
¡ Seleccionar todas las combinaciones de Folio de Factura y
Nombre del cliente

SELECT Folio, Nom_Cte


FROM Factura, Cliente
Cláusulas WHERE no especificadas
Folio Nom_Cte
1 Público en General
SELECT Folio, Nom_Cte
2 Público en General
FROM Factura, Cliente
3 Público en General
4 Público en General
5 Público en General
6 Público en General
1 Luis Martínez
2 Luis Martínez
3 Luis Martínez
4 Luis Martínez
5 Luis Martínez
6 Luis Martínez
1 Servicios AC
2 Servicios AC
3 Servicios AC
4 Servicios AC
5 Servicios AC
6 Servicios AC
Instrucción SELECT. Ejemplos
30

— Considere que tenemos las tablas:


¡ Cliente(RFC_Cte, Nom_Cte, CalleNoExt_Cte, Col_Cte,
Mpio_Cte, Edo_Cte, CP_Cte, Pais_Cte)
¡ Producto(Codigo, Descripcion, Precio, Marca, Existencia)
¡ Factura(Folio, Fecha, RFC_Cte, Subtotal, Impuesto, Total,
ID_Emp)
¡ Movimiento(Folio, Codigo, NoMov, Cantidad, Precio,
Descuento, PorcentajeImpuesto, Importe)
¡ Empleado(ID_Emp, Nombre, Dirección, Telefono, Correo,
IDEmp_Jefe, Puesto, NSS, Salario)
Consultas anidadas
31

— En algunas consultas suele ser necesario obtener


valores de la base de datos, para usarlos como
valores de comparación.
— Una manera de formular tales consultas es mediante
consultas anidadas, que son consultas SELECT
completas, dentro de la cláusula WHERE de otra
consulta, la cual se denomina consulta exterior.
Consultas anidadas
32

— Consulta 16
¡ Consultar las diferentes marcas, de productos, que se han vendido en el
rango de fechas 01/10/2022 al 31/10/2022

SELECT DISTINCT Marca


FROM Producto
WHERE Marca IN (SELECT Marca
FROM Factura, Movimiento, Producto
WHERE Factura.Folio=Movimiento.Folio AND Movimiento.Codigo=Producto.Codigo
AND (’01/10/2022’<=Fecha AND Fecha<=‘31/10/2022))
Consultas anidadas
33

— El operador IN también puede comparar una tupla de valores entre


paréntesis con un conjunto de tuplas compatibles con la unión. Por
ejemplo, la siguiente consulta (Consulta 17):

SELECT DISTINCT Folio


FROM Movimiento
WHERE (Codigo, Precio) IN (SELECT Codigo, Precio
FROM Factura, Movimiento
WHERE Factura.Folio=Movimiento.Folio
AND Fecha = “13/10/2019”)

Seleccionará los Folios de Facturas que vendieron los mismos


productos al mismo precio en el día 13/10/2019
Operadores para consultas anidadas
34

— Además del operador IN podemos usar otros


operadores de comparación para comparar un valor
individual v (por lo regular un nombre de atributo) con
un conjunto V (por lo regular una consulta anidada)
¡ Los operadores ANY o SOME son equivalentes a IN
(devuelven TRUE si el valor de v es igual a algún valor del
conjunto V)
¡ Otros valores que se pueden combinar con ANY (o SOME)
son >, >=, <, <= y <>.
¡ También es posible combinar la palabra reservada ALL
(todas) con uno de esos operadores.
Operadores para consultas anidadas
35

— La condición (v > ALL V) devuelve TRUE si el valor de v es


mayor que todos los valores del conjunto V.
— Un ejemplo es la siguiente consulta (Consulta 18), que
devuelve los nombres de los empleados cuyo salario es mayor
que el de todos los empleados cuyo puesto es Vendedor.

SELECT NOMBRE
FROM EMPLEADO
WHERE SALARIO > ALL (SELECT SALARIO FROM EMPLEADO
WHERE Puesto = “Vendedor”)
Ambigüedad en consultas anidadas
36

— En general, podemos tener varios niveles de consultas


anidadas. Y una vez más nos enfrentamos a posibles
ambigüedades en los atributos, si es que hay atributos con
el mismo nombre:
¡ uno en una relación listada en la cláusula FROM de la consulta
exterior y,
¡ el otro listado en la cláusula FROM de la consulta anidada o
interior
— La regla es que una referencia a un atributo no
calificado se refiere a la relación declarada en la
consulta anidada más interior.
— Esto se ilustra en la siguiente consulta:
Ambigüedad en consultas anidadas
37

— Consulta 19
Empleado(ID_Emp, Nombre, ApellidoP, ApellidoM, , Sexo, Dirección,
Telefono, Correo, IDEmp_Jefe, Puesto, NSS, Salario)
Dependiente(NSS, Nombre, AppellidoP, ApellidoM, , Sexo, Direccion,
Telefono, Correo, ID_Emp)
¡Obtener el nombre de todos los empleados que tienen un
dependiente con el mismo nombre de pila y sexo que el del empleado
SELECT E.NOMBRE, E.APELLIDOP
FROM EMPLEADO E
WHERE E.ID_Emp IN (SELECT ID_Emp
FROM DEPENDIENTE D
WHERE ID_Emp=E.ID_Emp AND
E.NOMBRE=NOMBRE AND SEXO=E.SEXO)
Más sobre consultas anidadas
38

— Siempre que una condición en la cláusula WHERE de una consulta


anidada hace referencia a un atributo de una relación declarada en
la consulta exterior, se dice que las dos consultas están
correlacionadas.
— Esto se entiende mejor si se piensa que la consulta anidada se
evalúa una sola vez para cada tupla en la consulta exterior.

— Por ejemplo, se puede visualizar la consulta anterior como sigue:


¡ para cada tupla EMPLEADO evaluar la consulta anidada, que
obtiene los valores de ID_Emp de todas las tuplas dependiente
con los mismos ID_Emp, sexo y nombre de pila que la tupla
EMPLEADO;
¡ si el valor de ID_Emp de la tupla EMPLEADO está en el
resultado de la consulta anidada, entonces seleccionar esa tupla
empleado.
Las función EXISTS en SQL
39

— La función EXISTS, sirve para comprobar si el resultado de


una consulta anidada correlacionada tiene al menos una
tupla. Por ejemplo: (consulta 20)

SELECT E.NOMBRE, E.APELLIDOP


FROM EMPLEADO AS E
WHERE EXISTS (SELECT *
FROM DEPENDIENTE
WHERE E.ID_Emp=ID_Emp AND SEXO=E.SEXO
AND E.NOMBRE=NOMBRE)
Explicación
40

— La cláusula EXISTS (y NOT EXISTS) casi siempre se usan junto con


una consulta anidada correlacionada.
— En la consulta anterior, la consulta anidada hace referencia a los
atributos ID_Emp, NOMBREP Y SEXO de la relación EMPLEADO
en la consulta exterior.
— Se puede visualizar la consulta exterior así:
¡ Para cada tupla Empleado, evaluar la consulta anidada, que
devuelve todas las tuplas DEPENDIENTE con los mismos
números de seguro social, sexo y nombre de pila que la tupla
EMPLEADO; si existe por lo menos una tupla en el resultado de
la consulta anidada, seleccionar esa tupla EMPLEADO.
— En general, EXISTS devuelve TRUE si hay por lo menos una tupla
en el resultado de una consulta Q y devuelve FALSE en caso
contrario
— Existe otra función de SQL (UNIQUE) que devuelve TRUE si no hay
tuplas repetidas en el resultado de una consulta Q; en caso
contrario, devuelve FALSE
Cláusula NOT EXISTS
41

— El empleo de la cláusula NOT EXISTS se puede ilustrar como sigue:


¡ Consulta 21. Obtener los nombres de los empleados que no
tienen dependientes.
SELECT NOMBRE, APELLIDOP
FROM EMPLEADO E
WHERE NOT EXISTS (SELECT *
FROM DEPENDIENTE
WHERE E.ID_Emp=ID_Emp)

Para cada tupla EMPLEADO, la consulta anidada selecciona todas las tuplas
DEPENDIENTE cuyos valores de ID_Emp coincidan con el valor ID_Emp de
EMPLEADO; si el resultado de la consulta está vacío, significa que no hay
dependientes relacionados con el empleado, así que se selecciona esa
tupla empleado y devolvemos su nombre y apellido.
Combinaciones de consultas anidadas
42

— Consulta 22. Listar los nombres de los directores que tienen por lo
menos un dependiente.

SELECT NOMBRE, APELLIDOP


FROM EMPLEADO E
WHERE EXISTS (SELECT *
FROM DEPENDIENTE
WHERE E.ID_Emp=ID_Emp)
AND
EXISTS (SELECT *
FROM Empleado
WHERE IDEmp_Jefe is NULL)
Explicación
43

— En la consulta anterior se especifican dos consultas


anidadas correlacionadas: la primera selecciona todas las
tuplas DEPENDIENTE relacionadas con un EMPLEADO, y
la segunda selecciona todas las tuplas EMPLEADO que
no tienen jefe.

— Si existen por lo menos una de las primeras y por lo menos


una de las segundas, seleccionaremos la tupla empleado y
se devolverán sus valores de NOMBREP y APELLIDO
Conjuntos explícitos en SQL
44

— También es posible usar un conjunto de valores explícitos en una


cláusula WHERE, en vez de una consulta anidada. En SQL, los
conjuntos de este tipo se encierran entre paréntesis.
— Consulta 23. Obtener todos los dependientes de los empleados cuyos
ID_Emp son 123 o 987.

SELECT DISTINCT Nombre, ApellidoP


FROM Dependiente
WHERE ID_Emp IN (123, 987)
Valores nulos en SQL
45

— En SQL las consultas pueden comprobar si un valor es NULL, ya sea


que falte, no esté definido o no sea aplicable. Sin embargo, en vez de
usar el operador = ó ≠ para comparar un atributo con NULL, SQL usa
IS (es) o IS NOT (no es). La razón es que SQL considera que cada
valor nulo es distinto de los demás valores nulos, por lo que la
comparación de igualdad no es apropiada
— Consulta 24. Obtener el nombre y el apellido de todos los empleados
que no tienen Jefe.

SELECT NOMBRE, APELLIDOP


FROM EMPLEADO
WHERE IDEmp_Jefe IS NULL
Ejercicio
47
Ejercicio: Realizar las siguientes Consultas
48

— Obtener todas las facturas del mes de octubre del


2022.
— Obtener todos los productos de la marca APPLE.
— Obtener una lista de precios de todos los productos,
en la lista solo debe aparecer el Código, Descripción
y Precio Unitario del Producto.
— Obtener todos los productos que se vendieron en los
meses de septiembre y octubre del 2022, mostrando:
código y descripción del producto, y la fecha de su
venta.
Cambio de nombre de los atributos
49

— Es posible cambiar el nombre de los atributos que aparezcan en el


resultado de una consulta, si se añade el calificador AS seguido del
nuevo nombre. Así pues, la construcción AS servirá para declarar
SEUDÓNIMOS tanto de atributos como de relaciones.
¡ Por ejemplo, la siguiente consulta muestra como modificar
ligeramente la consulta 3 Mostrar el nombre del cliente, folio de
factura, fecha, producto y cantidad vendida; poniendo
pseudonimos en los atributos.

SELECT Nom_Cte AS NOMBRE, Folio, Fecha, Descripcion AS


PRODUCTO, Cantidad
FROM Cliente, Factura, Movimiento, Producto
WHERE Cliente.RFC_Cte=Factura.RFC_Cte AND
Factura.Folio=Movimiento.Folio AND
Movimiento.Codigo=Producto.Codigo
Reunión de tablas
50

— El concepto de tabla reunida (o relación reunida)


se incorporó a SQL2 para que los usuarios
pudieran especificar una tabla resultante de una
operación de reunión en la cláusula FROM de
una consulta.
— Probablemente sea más fácil comprender este tipo
de construcciones, en vez de mezclar todas las
condiciones de selección y de reunión en la
cláusula WHERE.
Reunión de tablas
51

— Por ejemplo, considerar la consulta, que obtiene el nombre y la dirección


de todos los clientes que tienen facturas, expedidas, el 13/10/2019
— Para algunos usuarios, podría ser más fácil especificar primero la
reunión de las relaciones Cliente y Factura, y luego seleccionar las
tuplas y los atributos deseados. Esto podría especificarse como:

SELECT Nom_Cte, CalleNoExt_Cte, Col_Cte, Mpio_Cte, Edo_Cte


FROM (Cliente INNER JOIN Factura ON
Cliente.RFC_Cte=Factura.RFC_Cte)
WHERE Factura.Fecha=“13/10/2019”

La cláusula FROM contiene una sola tabla reunida. Los atributos de dicha
tabla son todos los atributos de la primera tabla Cliente, seguidos de
todos los atributos de la segunda, Factura.
52
Ejercicio: Realizar las siguientes Consultas
53

— Obtener todas las facturas del mes de octubre del


2022, cambie el encabezado de cada columna por
nombres normales en lugar de los nombres de los
atributos.
— Obtener todos los productos de la marca APPLE,
cabiar los nombres de los atributos por nombres
normales, en los encabezados de las columnas.
— Obtener una lista de precios de todos los productos,
en la lista solo debe aparecer el Código, Descripción
y Precio Unitario del Producto.
Ejercicio: Realizar las siguientes Consultas
54

— Obtener todos los productos que se vendieron en los


meses de septiembre y octubre del 2022, mostrando:
código y descripción del producto, y la fecha de su
venta, utilizar JOIN.
— Obtener todas las facturas del Cliente cuyo RFC es
SAG160825TM2, mostrando RFC y Nombre del
Cliente; Folio, Fecha emisión y Total de la factura;
Cantidad, Descripción del Producto y Precio
Unitario.
SQL Operadores de Comparación Adicionales
55

— Son operadores adicionales a los operadores


relacionlaes que se pueden utilizar en la clausula
WHERE.
¡ BETWEEN
¡ LIKE
SQL Operadores de Comparación Adicionales
56

— Operador BETWEEN:
¡ Se utiliza en la clausual WHERE del SELECT, INSERT,
DELETE y UPDATE.
¡ Sintaxis: <expresión> BETWEEN Valor1 AND Valor2
÷ Donde:
¢ <expresión> es el valor a comparar.

¢ Valor1 y Valor2 son el límite inferior y el límite superior,


respectivamente, del rango de valores dentro de los cuales la
<expresión> se compara.
¡ BETWEEN regrese un VERDADERO si la <experesión> esta
dentro del rango especificado por Valor1 y Valor2, en caso
contrario regresa un FALSO.
57
SQL Operadores de Comparación Adicionales
58

— Obtener todas las facturas cuyo total este en el rango


de 30,000 a 50,000.

SELECT *
FROM Factura
WHERE Total_F BETWEEN 30000 AND 50000

— Obtener todas las facturas del mes de Octubre 2022


SELECT *
FROM Factura
WHERE FechaCrea_F BETWEEN 01/10/2022 AND 31/10/2022
SQL Operadores de Comparación Adicionales
59

— Operador LIKE:
¡ Se utiliza en la clausual WHERE del SELECT, INSERT, DELETE y
UPDATE.
¡ Sintaxis: <expresión> LIKE <patrón>
÷ Donde:
¢ <expresión>: es una expresión string, que se va a comparar.
¢ <patrón>: es una expresión string que contiene patrones de coincidencia con
caracteres comodín, los cuales pueden ser:
• % Permite hacer coincidencia con cualquier string de cualquier longitud
• _ Permite hacer coincidencia con un carácter en la posicion donde se pone.
• [lista de caracteres] permite hacer coincidencia con los caracteres que están
dentro de los corchetes.
• [^lista de caracteres] permite hacer coincidencia con cualquier caracter que
no están dentro de los corchetes.
SQL Operadores de Comparación Adicionales
60

— Obtener todas los clientes que tengan el apellido


LOPEZ.
SELECT *
FROM Cliente
WHERE Nombre_Cte LIKE ‘%LOPEZ%’
— Obtener todas clientes cuyo primer nombre es
PEDRO.
SELECT *
FROM Cliente
WHERE Nombre_Cte LIKE ‘PEDRO%’
61

— Obtener todos los clientes cuyo código postal


empieza con 20 y termina con 00
SELECT *
FROM Cliente
WHERE CP_Cte LIKE ‘20_00’
— Obtener todos clientes cuyo apellido sea MARTINEZ
o MARTÍNEZ
SELECT *
FROM Cliente
WHERE Nom_Cte LIKE ‘%MART[I,Í]NEZ%’
Funciones agregadas
62

— La agrupación y la agregación son características


necesarias en muchas aplicaciones de bases de datos,
por lo que SQL cuenta con funciones que incorporan
estos conceptos.
— La agrupación es una serie de funciones integradas:
¡ COUNT (contar)
¡ SUM (sumar)
¡ MAX (máximo)
¡ MIN (mínimo)
¡ AVG (promedio)
Funciones agregadas
63

— La función COUNT Regresa la cantidad de tuplas o


valores especificados en una consulta.
— Las funciones SUM, MAX, MIN y AVG se aplican a
un conjunto o multiconjunto de valores numéricos, y
devuelven, respectivamente, la suma, el valor
máximo, el valor mínimo y el promedio (la media) de
esos valores.
— Estas funciones se pueden usar en la cláusula SELECT
o en una cláusula HAVING (vista más adelante).
Instrucción SELECT. Ejemplos
64

— Considere que tenemos las tablas:


¡ Cliente(RFC_Cte, Nom_Cte, CalleNoExt_Cte, Col_Cte,
Mpio_Cte, Edo_Cte, CP_Cte, Pais_Cte)
¡ Producto(Codigo, Descripcion, Precio, Marca, Existencia)
¡ Factura(Folio, Fecha, RFC_Cte, Subtotal, Impuesto, Total,
ID_Emp)
¡ Movimiento(Folio, Codigo, NoMov, Cantidad, Precio,
Descuento, PorcentajeImpuesto, Importe)
¡ Empleado(ID_Emp, Nombre, Dirección, Telefono, Correo,
IDEmp_Jefe, Puesto, NSS, Salario)
SQL Función COUNT
65

— Sintaxis:
¡ COUNT(expresión)
÷ Donde: expresión puede ser un *, el nombre de un atributo o una expresión
como tal.
— Ejemplo: Obtener el total de clientes de la compañía; y la cantidad de
facturas realizadas por el vendedor Jonathan Alba

SELECT COUNT (*)


FROM Cliente

SELECT COUNT (*)


FROM (Factura JOIN Empleado ON Factura.ID_Emp=Empleado.ID_Emp)
WHERE Empleado.NOMBRE=‘Jonathan Alba’

Aquí el asterisco (*) se refiere a las tuplas, así que COUNT devuelve el número
de filas en el resultado de la consulta.
SQL Función COUNT
66

— También se puede usar la función COUNT para contar los valores de


una columna en vez de las tuplas, como en la consulta 23

SELECT COUNT (DISTINCT SALARIO)


FROM EMPLEADO

Esta consulta nos regresa el número de valores de salario distintos de


la relación empleados.

Hay que observar que, si escribimos COUNT(SALARIO) en lugar de


COUNT (DISTINCT SALARIO), obtendremos el mismo resultado
que con COUNT (*), porque, obviamente, no se eliminan los
duplicados.
Funciones agregadas
67

— Obtener la suma de los salarios de los empleados, el salario


máximo, el salario mínimo y el salario medio.

SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO),


AVG(SALARIO)
FROM EMPLEADO

Si se quieren obtener los valores de las funciones anteriores, para digamos, el


departamento de ventas, podemos escribir la siguiente Consulta, donde la
cláusula WHERE restringe las tuplas empleado a los empleados que tengan
el puesto ‘Vendedor’

SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO),


AVG(SALARIO)
FROM EMPLEADO
WHERE Puesto=‘Vendedor’
Funciones agregadas, en consultas anidadas
correlacionadas
68

— Los ejemplos anteriores muestran como aplicar


funciones para obtener un valor sinóptico de la
base de datos.
— En algunos casos puede ser que se necesiten
funciones para seleccionar tuplas específicas.
— En tales casos se especifica una consulta anidada
correlacionada con la función deseada y se usa
esa consulta en la cláusula WHERE de una
consulta exterior.
Funciones agregadas, en consultas anidadas
correlacionadas
69

— Por ejemplo, para obtener los nombres de todos los empleados


que tienen dos o más dependientes económicos, se puede
escribir la siguiente consulta:

SELECT APELLIDOP, NOMBRE


FROM EMPLEADO
WHERE (SELECT COUNT (*)
FROM DEPENDIENTE
WHERE EMPLEADO.ID_Emp=ID_Emp) >= 2
Agrupaciones (GROUP BY)
70

— En muchas ocasiones nos interesará aplicar las funciones


agregadas a subgrupos de tuplas de una relación, con
base en los valores de algunos atributos.
— Tal sería la situación si quisiéramos conocer el salario
medio de los trabajadores de cada departamento o el
número de empleados que trabajan en cada proyecto.
— En estos casos, se necesitan agrupar las tuplas que
tienen el mismo valor para ciertos atributos, llamados
atributos de agrupación y aplicar la función de manera
independiente a cada uno de estos grupos.
— SQL cuenta con la cláusula GROUP BY (agrupar por) para
este fin.
Agrupaciones (GROUP BY)
71

— La cláusula GROUP BY especifica los atributos de agrupación, que


también deberán aparecer en la cláusula SELECT, para que el valor que
resulte de aplicar cada función a un grupo de tuplas aparezca junto con el
valor de los atributos de agrupación.
— Consulta 25. Obtener por cada jefe cuantos empleados son sus
subordinados y cual es su salario promedio

SELECT IDEmp_Jefe, COUNT (*), AVG (SALARIO)


FROM EMPLEADO
GROUP BY IDEmp_Jefe

En esta consulta, las tuplas de empleado se dividen en grupos, y cada uno de


ellos tiene el mismo valor en el atributo de agrupación IDEmp_Jefe. Las
funciones COUNT y AVG se aplican a cada uno de los grupos de tuplas
Agrupaciones (GROUP BY)
72

— Consulta 25. Para cada Cliente obtener el Folio, Fecha y Total de


todas sus facturas.

SELECT Nom_Cte, C.RFC_Cte, Folio, Fecha, Total


FROM Cliente C, Factura F
WHERE C.RFC_Cte = F.RFC_Cte
GROUP BY C.RFC_Cte

Esta consulta muestra como se puede usar una condición de reunión


junto con GROUP BY. En este caso, la agrupación de funciones se
aplican después de la reunión de las dos relaciones.
Agrupaciones condicionales (HAVING)
73

— Habrá ocasiones en las que querremos obtener valores


de funciones, solo para grupos que satisfagan ciertas
condiciones.
— SQL cuenta con la cláusula HAVING (que tenga), la cual
puede aparecer junto con la cláusula GROUP BY.
— HAVING especifica una condición en términos del grupo
de tuplas asociado a cada valor de los atributos de la
agrupación; solo los grupos que satisfagan la
condición entrarán en el resultado de la consulta
Agrupaciones condicionales (HAVING)
74

— Consulta 26. Para cada cliente obtener su nombre, rfc y cantidad de


facturas, que tinen, pero solo de aquellos que tengan más de 2
facturas.

SELECT Nom_Cte, C.RFC_Cte, COUNT(*)


FROM Cliente C, Factura F
WHERE C.RFC_Cte = F.RFC_Cte
GROUP BY C.RFC_Cte
HAVING COUNT (*) > 2

Hay que notar que, mientras las condiciones de selección de la cláusula


WHERE limitan las tuplas a las que se aplican las funciones, la
cláusula HAVING limita grupos enteros
Orden de ejecución (WHERE y HAVING)
75

— Consulta 27. Por ejemplo suponer que se desea contar el número TOTAL
de facturas de cada cliente que cuenten con mas de dos facturas, cuyo
monto es mayor o igual a $50,000.00. Opción 1

SELECT Nom_Cte, C.RFC_Cte, COUNT(*)


FROM Cliente C, Factura F
WHERE C.RFC_Cte = F.RFC_Cte AND Total >= 50000
GROUP BY C.RFC_Cte
HAVING COUNT (*) > 2

LA REGLA ES QUE LA CLÁUSULA WHERE SE EJECUTA PRIMERO, PARA


SELECCIONAR TUPLAS INDIVIDUALES; LA CLÁUSULA HAVING SE
APLICA DESPUÉS, PARA SELECCIONAR GRUPOS INDIVIDUALES DE
TUPLAS
Orden de ejecución (WHERE y HAVING)
76

— Consulta 28. Por ejemplo suponer que se desea contar el número


TOTAL de facturas de cada cliente que cuenten con mas de dos
facturas, cuyo monto es mayor a $50,000.00. Opción 2

SELECT Nom_Cte, C.RFC_Cte, COUNT(*)


FROM Cliente C, Factura F
WHERE C.RFC_Cte = F.RFC_Cte AND Total >= 50000 AND
F.RFC_Cte IN (SELECT RFC_Cte
FROM Factura
GROUP BY RFC_Cte
HAVING COUNT(*) > 2)
GROUP BY C.RFC_Cte
Revisión de la instrucción SELECT
77

— Una consulta en SQL puede constar de un máximo de seis


cláusulas, pero solo son obligadas las dos primeras, SELECT y
FROM. Las cláusulas se especifican en el siguiente orden:

SELECT <lista de atributos>


FROM <lista de tablas>
[WHERE <condición>]
[GROUP BY <atributo(s) de agrupación>]
[HAVING <condición de agrupación>]
[ORDER BY <lista de atributos>]
Instrucción SELECT. Ejemplos
78

— Considere que tenemos las tablas:


¡ Cliente(RFC_Cte, Nom_Cte, CalleNoExt_Cte, Col_Cte,
Mpio_Cte, Edo_Cte, CP_Cte, Pais_Cte)
¡ Producto(Codigo, Descripcion, Precio, Marca, Existencia)
¡ Factura(Folio, Fecha, RFC_Cte, Subtotal, Impuesto, Total,
ID_Emp)
¡ Movimiento(Folio, Codigo, NoMov, Cantidad, Precio,
Descuento, PorcentajeImpuesto, Importe)
¡ Empleado(ID_Emp, Nombre, Dirección, Telefono, Correo,
IDEmp_Jefe, Puesto, NSS, Salario)
Ordenamiento (ORDER BY)
79

— Clausula ORDER BY:


¡ Ordena el resultado de la consulta ascendente o desendentemente con respecto
a la expresión, generalmente un atributo, indicada.
¡ Sintaxis: ORDER BY <expresión> [ASC/DESC]
÷ Donde:
¢ Expresión es el atributo sobre el cual se va a realizar el ordenamiento, y debe ser
parte de las epresiones en la clausula SELECT
¢ ASC indica que el ordenamiento es Ascendente, es el ordenamiento por defalult.

¢ DESC indica que el ordenamiento es descendente.

¡ Ejemplo: Obtener la lista de los nombres de todos los clientes ordenados


alfabeticamente:
SELECT Nom_Cte
FROM Cliente
ORDER BY Nom_Cte
Ordenamiento (ORDER BY)
80

— Obtener todas las facturas, mostrando Folio, Fecha,


RFC_Cte y Total, ordenadas Descendentemente con
respecto a la Fecha
SELECT Folio, Fecha, RFC_Cte, Total
FROM Factura
ORDER BY Fecha DESC
Ordenamiento (ORDER BY)
81

— Para cada cliente obtener su nombre, rfc y cantidad de facturas, que


tinen, pero solo de aquellos que tengan más de 2 facturas, ordenados
ascendentemente con respecto a la cantidad de facturas.

SELECT Nom_Cte, C.RFC_Cte, COUNT(*)


FROM Cliente C, Factura F
WHERE C.RFC_Cte = F.RFC_Cte
GROUP BY C.RFC_Cte
HAVING COUNT (*) > 2
ORDER BY COUNT(*)
Ordenamiento (ORDER BY)
82

— Ordenar por más de un atributo:


— Para cada cliente obtener su nombre, rfc y cantidad de facturas, que
tinen, pero solo de aquellos que tengan más de 2 facturas, ordenados
ascendentemente con respecto al nombre del cliente y
descendentemente con respecto a la cantidad de facturas.

SELECT Nom_Cte, C.RFC_Cte, COUNT(*)


FROM Cliente C, Factura F
WHERE C.RFC_Cte = F.RFC_Cte
GROUP BY C.RFC_Cte
HAVING COUNT (*) > 2
ORDER BY Nom_Cte, COUNT(*) DESC
Análisis de las instrucciones SQL
83

— En general, hay muchas maneras de especificar la misma consulta en SQL.


Esta flexibilidad ofrece ventajas y desventajas.
— Ventajas:
¡ El usuario puede escoger la técnica que le resulte más cómoda para
especificar una consulta
— Desventajas:
¡ Esta misma flexibilidad puede confundir al usuario, quien quizás no sepa
cual técnica usar para especificar ciertos tipos de consultas
¡ Puede ser más eficiente especificar una consulta de un modo que de
otro. (en general, es preferible escribir las consultas con el mínimo nivel
de anidamiento y de ordenamiento implícito posible)
— En condiciones ideales el DBMS debe ser capaz de ejecutar cualquier
consulta de la misma manera, sin importar como se haya especificado.
Pero en la práctica hay que estar concientes de que algunas construcciones
tienen un costo de procesamiento mas elevado que otros.
¡ Por ejemplo, una condición de reunión especificada en términos de
campos para los cuales no existen índices, puede ser bastante costosa
si se especifica para relaciones grandes. Por lo tanto, se recomienda
crear los índices antes de especificar una consulta así.
Administración de la
información

Conceptos básicos de SQL


Instrucciones de actualización
SQL
85

— Instrucciones de actualización
¡ INSERT
¡ DELETE
¡ UPDATE
— Vistas en SQL
— Definición de datos
¡ CREATE
¡ DROP
¡ ALTER TABLE
La instrucción INSERT
86

— En su forma más simple, INSERT sirve para añadir una sola


tupla a una relación. Debemos especificar el nombre de la
relación y una lista de valores para la tupla. En este forma,
debe cuidarse que los valores de los atributos, se listen en el
mismo orden en el que existen en la tabla. Por ejemplo:

INSERT INTO EMPLEADO


VALUES ('Ricardo','C','Martínez','653298653',’30-DIC-52’,
'Olmo 98, Cedros, MX','M',37000,'987654321',4)
La instrucción INSERT
87

— Una segunda forma de la instrucción INSERT permite al usuario


especificar explícitamente los nombres de los atributos que
corresponden a los valores de la orden INSERT. En este caso, los
atributos con valores NULL o default, se pueden omitir
— Por ejemplo, para introducir una tupla para un nuevo empleado del que
solo conocemos los atributos NOMPREP, APELLIDO y NSS, se puede
usar:
INSERT INTO EMPLEADO (NOMBREP, APELLIDO, NSS)
VALUES ('Ricardo','Martínez','653298653')

Los atributos no especificados reciben el valor por omisión o NULL y los


valores se listan en el mismo orden en que aparecen los atributos de la
instrucción INSERT misma.
La instrucción INSERT
88

— Un DBMS con una implementación completa de SQL debería imponer


todas las restricciones de integridad del modelo relacional. Sin
embargo, algunos no las implementan todas (con fines de eficiencia).
En estos casos, (por ejemplo, la integridad referencial) es el usuario el
que debería estar conciente de imponerlas.
— Por ejemplo, la siguiente instrucción viola la restricción de integridad
referencial:

INSERT INTO EMPLEADO (NOMBREP, APELLIDO, NSS, ND)


VALUES ('Roberto','Huerta','980760540', 2)

— La siguiente inserción viola la restricción de integridad de entidades:

INSERT INTO EMPLEADO (NOMBREP, APELLIDO, NSS, ND)


VALUES ('Roberto','Huerta',null,1)
La instrucción INSERT
89

— Una variación de la instrucción INSERT inserta múltiples tuplas en una relación


al tiempo que crea la relación y la carga con el resultado de una consulta. Por
ejemplo:

CREATE TABLE INFO_DEPTOS (NOMBRE_DEPTO VARCHAR(15),


NUM_DE_EMPS INTEGER,
SAL_TOTAL INTEGER);
INSERT INTO INFO_DEPTOS (NOMBRE_DEPTO, NUM_DE_EMPS,
SAL_TOTAL)
SELECT NOMBRED, COUNT (*), SUM(SALARIO)
FROM DEPARTAMENTO,EMPLEADO
WHERE NÚMEROD=ND
GROUP BY NOMBRED;
La instrucción DELETE
90

— La orden DELETE elimina tuplas de una


relación. Cuenta con una cláusula WHERE,
similar a las de las consultas SELECT, para
seleccionar las tuplas que se van a eliminar.
— Las tuplas se eliminan explícitamente de una
sola tabla a la vez. Sin embargo, la eliminación
puede propagarse a tuplas de otras relaciones si
tal acción se especifica en las restricciones de
integridad referencial del DDL
La instrucción DELETE
91

— Dependiendo del número de tuplas


seleccionadas por la condición de la cláusula
WHERE, una sola instrucción DELETE puede
eliminar cero, una o varias tuplas.
— La omisión de la cláusula WHERE indica que se
deben de eliminar todas las tuplas de la relación,
aunque la tabla permanecerá en la base de
datos, como una tabla vacía.
— Para eliminar completamente una tabla, se usa
la instrucción DROP TABLE
La instrucción DELETE
92

— Por ejemplo, las instrucciones DELETE siguientes eliminarán cero, una, cuatro
y todas las tuplas, respectivamente de la relación EMPLEADO.

DELETE FROM EMPLEADO


WHERE APELLIDO='Bojórquez'

DELETE FROM EMPLEADO


WHERE NSS='123456789‘

DELETE FROM EMPLEADO


WHERE ND IN (SELECT NÚMEROD
FROM DEPARTAMENTO
WHERE NOMBRED='Investigación')

DELETE FROM EMPLEADO


La instrucción UPDATE
93

— La orden UPDATE sirve para modificar los valores


de los atributos en una o más tuplas
seleccionadas.
— Al igual que en la instrucción DELETE, una
cláusula WHERE selecciona de una sola relación
las tuplas que se van a modificar.
— Sin embargo, la modificación de una clave
primaria puede propagarse a los valores de
clave foránea de tuplas de otras relaciones si
tal acción se especifica en las restricciones de
integridad referencial.
La instrucción UPDATE
94

— Una cláusula SET adicional especifica los atributos que se


modificarán y sus nuevos valores. Por ejemplo:

UPDATE PROYECTO
SET LUGARP='Belén', NÚMD=5
WHERE NÚMEROP=10
La instrucción UPDATE
95

— Es posible modificar varias tuplas con una sola orden UPDATE.


— Un ejemplo sería otorgar a todos los empleados del departamento de
investigación un aumento salarial del 10%. En esta solicitud, el valor
modificado de SALARIO depende del valor original de SALARIO en
cada tupla, por lo que se necesitan dos referencias al atributo
SALARIO.
UPDATE EMPLEADO
SET SALARIO = SALARIO*1.1
WHERE ND=10
UPDATE EMPLEADO
SET SALARIO = SALARIO * 1.1
WHERE ND IN (SELECT NÚMEROD
FROM DEPARTAMENTO
WHERE NOMBRED='Investigación')
Administración de la
información

Conceptos básicos de SQL


Definición de bases de datos y tablas
Creación de una base de datos
97

— La orden CREATE DATABASE sirve para una base de datos. Se crea


el ‘cascarón’ dentro del cual se irán llenando las tablas que la
componen.
— Esta instrucción contiene muchas cláusulas que pueden servir para,
entre otras cosas
¡ Indicar en cual disco se creará la base de datos
¡ Indicar en cuantos archivos físicos se guardará la base de datos.
¡ Indicar el tamaño inicial físico en Mbytes (aunque se pueden usar los sufijos
Gb y Tb)
¡ Señalar el tamaño de los ‘incrementos’ de la base de datos.
¡ Especificar el nombre y la ubicación del archivo de la bitácora de la base de
datos.
¡ Etc.
— Sintaxis: CREATE DATABASE <Nombre_BaseDatos>
— Es mejor crearla mediante el helper del SMBD.
Creación de una tabla
98

— La orden CREATE TABLE sirve para especificar una nueva


relación, dándole un nombre y especificando sus atributos
y sus restricciones.
— Sintaxis: CREATE TABLE <Nombre_Tabla> (Campo1
Tipo(tamaño) [Indice1], …, Campon Tipo(tamaño)
[Indicen])
— Ejemplo:
¡ CREATE TABLE Alumno (Matricula Int IndicePrim PRIMARY,
Nombre Varchar(80), Calle Varchar(80), NoExt Varchar(10), NoInt
Varchar(10), Colonia Varchar(30), Ciudad Varchar(30), CodigoPostal
Varchar(8), Pais Varchar(50), Telefono Varchar(14), RFC
Varchar(17), CURP Varchar(22))
Eliminación de una tabla / base de datos
99

— Si ya no se necesita un esquema completo, se puede usar la


orden DROP DATABASE. Hay dos opciones en la forma de
desechar: CASCADE (propagar) o RESTRICT (restringir).
— Por ejemplo, si se quiere borrar toda la base de datos compañía,
junto con todas sus tablas y demás elementos, se utiliza la
instrucción como sigue:
DROP DATABASE compañía CASCADE

— Si se elige la opción RESTRICT, la base de datos se desechará,


SOLO SINO CONTIENE ELEMENTOS. En caso contrario, la
orden de desechar no se ejecutará
Eliminación de una tabla / base de datos
100

— Si ya no se necesita una tabla de una base de datos, ésta


puede eliminarse con la orden DROP TABLE. Por ejemplo:

DROP TABLE DEPENDIENTE CASCADE

— Si se utiliza la orden RESTRICT en lugar de CASCADE, la


tabla se desechará SOLAMENTE si no se hace referencia a
ella en ninguna restricción (por ejemplo, en las definiciones de
claves foráneas de otra relación) o en una vista.
— NOTA (Sin embargo, este comportamiento puede variar,
de un manejador a otro. Por ejemplo SQL Server exige
que se eliminen primero las referencias o las tablas a las
que se hacen referencia, ANTES de borrar la tabla)
La instrucción ALTER TABLE
101

— La definición de una tabla base se puede modificar


mediante la orden ALTER TABLE.
— Las posibles acciones a alterar incluyen:
¡ La adición o modificación de una columna
¡ la modificación de la definición de una columna
¡ La adición o eliminación de restricciones de la tabla.
La instrucción ALTER TABLE
102

— Por ejemplo, si se le quiere añadir un atributo a la tabla


empleado, para saber los puestos de los empleados, se
podría escribir:

ALTER TABLE EMPLEADO ADD PUESTO VARCHAR(25)

— Posteriormente, faltará introducir valores para el atributo


recién creado. Esto puede hacerse especificando una
cláusula DEFAULT o usando la instrucción UPDATE. Si no se
especifica la cláusula por omisión, el nuevo atributo tendrá
NULL en todas las tuplas, inmediatamente después de
ejecutarse la instrucción. Por tanto, la restricción NOT NULL
no está permitida en este caso.
La instrucción ALTER TABLE
103

— También es posible alterar la definición de una columna


desechando una cláusula por omisión existente o definiendo una
nueva cláusula de este tipo. Por ejemplo:

ALTER TABLE DEPARTAMENTO ALTER NSSGTE DROP DEFAULT

ALTER TABLE DEPARTAMENTO ALTER NSSGTE SET DEFAULT


‘333445555’
CONSTRAINT
104

— CONSTRAINT permite indicar que atributos son


llaves primaria o llaves secundarias.
— CONSTRAINT nombre {PRIMARY KEY (primario1[,
primario2 [, ...]]) | UNIQUE (único1[, único2 [, ...]])
| FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES
tabla externa [(campo externo1 [,campo externo2 [,
...]])]}
Administración de la
información

Conceptos básicos de SQL


Vistas en SQL
Vistas en SQL
106

— Concepto de vista en SQL. En la terminología


de SQL, una vista es una tabla derivada de otras
tablas.
— Las vistas no necesariamente existen en forma
física: se les considera tablas virtuales, en
contraste con las tablas base cuyas tuplas se
almacenan realmente en la base de datos.
— Esto limita las operaciones de actualización que
se le pueden hacer a las vistas, pero no implica
limitaciones para consultar estas últimas.
Vistas en SQL
107
— Se puede considerar a una vista como una forma de
especificar una tabla a la que tendremos que referirnos
con frecuencia, aunque tal vez no tenga existencia
física.
— Por ejemplo, es posible que emitamos consultas con
frecuencia para obtener el nombre de un empleado y los
nombres de los proyectos en los que trabaja. En vez de
tener que especificar la reunión de las tablas
EMPLEADO, TRABAJA_EN Y PROYECTO cada vez
que se emite una consulta así, podemos definir una vista
que sea el resultado de dichas reuniones y que por tanto,
incluya los atributos que deseamos obtener con
frecuencia.
— En este caso, a las tablas EMPLEADO, TRABAJA_EN y
PROYECTO, se les llama tablas de definición de la
vista.
Especificación de vistas en SQL
108

— La orden para especificar una vista es CREATE VIEW


(crear vista). La vista recibe un nombre de tabla (virtual),
una lista de nombres de atributos y una consulta para
especificar el contenido de la vista.

— Si ninguno de los atributos de la vista es el resultado de


aplicar funciones u operaciones aritméticas no tendremos
que especificar nombres de atributos para la vista, pues
serán los mismos que los nombres de los atributos de
las tablas de definición.
Especificación de vistas en SQL
109

— Las siguientes vistas crean tablas virtuales:

CREATE VIEW TRABAJA_EN1


AS SELECT NOMBREP, APELLIDO, NOMBREPR, HORAS
FROM EMPLEADO, PROYECTO, TRABAJA_EN
WHERE NSS=NSSE AND NÚMP=NÚMEROP

CREATE VIEW INFO_DEPTO (NOMBRE_DEPTO, NÚM_DE_EMPS,


SAL_TOTAL)
AS SELECT NOMBRED, COUNT (*), SUM (SALARIO)
FROM DEPARTAMENTO, EMPLEADO
WHERE NÚMEROD=ND
GROUP BY NOMBRED
Consultas sobre vistas
110

— Podemos especificar consultas SQL en términos de las vistas


creadas, de la misma manera que especificamos consultas
sobre tablas reales. Por ejemplo:

SELECT NOMBREP, NOMBREPR, APELLIDO


FROM TRABAJA_EN1
WHERE NOMBREPR='ProductoX'
Actualización de vistas
111

— Las vistas siempre están actualizadas; si modificamos las


tuplas de las tablas base sobre las que se define la vista, ésta
reflejará automáticamente los cambios.
— Por tanto, una vista no se crea en el momento de definirla,
sino más bien en el momento en que se especifica una
consulta sobre la propia vista.
— Es responsabilidad del DBMS (y no del usuario) asegurarse
que la vista esté actualizada.
— Si ya no se necesita una vista, se puede usar la orden DROP
VIEW (desechar vista) para deshacernos de ella. Por
ejemplo:

DROP VIEW TRABAJA_EN1


DROP VIEW INFO_DEPTO
Administración de la
información

EJERCICIOS DE SQL
Esquema de una base de datos relacional
EMPLEADO
NOMBREP INIC APELLIDO NSS FECHAN DIRECCION SEXO SALARIO NSSSUPER ND

DEPARTAMENTO
NOMBRED NÚMEROD NSSGTE FECHAINICGTE

LUGARES_DEPTOS
NUMEROD LUGARD
Esquema de la base de datos
PROYECTO relacional COMPAÑÍA; las
NOMBREP NÚMEROP LUGARP NÚMEROD claves primarias están
subrayadas
TRABAJA_EN
NSSE NÚMP HORAS

DEPENDIENTE
NSSE NOMBRE DEPENDIENTE SEXO FECHAN PARENTESCO

113
Ejercicios SQL
114
a. Obtenga los nombres de todos los empleados del departamento 5 que trabajan
más de 10 horas por semana en el proyecto “ProductoX”
b. Cite los nombres de todos los empleados que tienen un dependiente con el
mismo nombre de pila que ellos
c. Encuentre los nombres de todos los empleados supervisados directamente por
‘Federico Vizcarra’
d. Para cada proyecto, cite el nombre del proyecto y el total de horas que trabajan
todos los empleados en ese proyecto
e. Obtenga los nombres de todos los empleados que trabajan en cada uno de los
proyectos
f. Obtenga los nombres de todos los empleados que no trabajan en ningún proyecto
g. Para cada departamento, obtenga el nombre del departamento y el salario medio
de todos los empleados que trabajan en él
h. Obtenga el salario medio de todos los empleados de sexo femenino.
i. Encuentre los nombres y direcciones de todos los empleados que trabajan en, por
lo menos, un proyecto situado en higueras, pero cuyo departamento no está
ubicado ahí.
j. Prepare una lista con los apellidos de todos los gerentes de departamento que no
tienen dependientes.

También podría gustarte