Está en la página 1de 137

GESTION DE BASES DE DATOS

BASE DE DATOS
Es un conjunto integrado de estructuras a través
de las que se almacena una colección lógica y
coherente de:
• Datos que tienen un significado para los
usuarios (datos de usuario).
• Datos que describen como se relacionan
esos datos de usuario y como deben ser
administrados (Metadatos).
Características de una Base de Datos

1. Independencia de los datos.


2. Acceso eficiente a los datos.
3. Integridad y seguridad de los datos.
4. Administración de los datos.
5. Acceso concurrente y recuperación en caso de
errores.
Sistema Gestor de Bases de Datos
Un Sistema Gestor de Base de Datos (SGDB) es
un software que permite la administración de
las estructuras que conforman la base de datos y
el acceso a los datos almacenados. Permiten la
manipulación de las bases de datos (creación,
mantenimiento y utilización).
Los SGBD deben cumplir con las cuatro propiedades
ACID (por sus siglas en inglés):
• Atomicidad (Atomicity). Es la propiedad que asegura
que una transacción sea terminada o revertida.
• Consistencia (Consistency): Esta propiedad asegura
que una transacción será realizada siempre que sea
posible terminarla.
• Aislamiento (Isolation): Las transacciones están
aisladas entre si, por lo tanto; no puede afectar
otras transacciones.
• Durabilidad (Durability): Después que una
transacción ha sido confirmada ella persiste.
Componentes del SGBD
• Metadatos o Diccionario de Datos (DD). Contiene el
esquema de la BD, los usuarios, los permisos de acceso,
entre otros. Usualmente nos referimos a ellos como datos
acerca de los datos. Almacena la información que permite
la traducción entre los 3 niveles de la Arquitectura
ANSI/SPARC.
• Procesador DDL. Compila y valida las instrucciones DDL
• Procesador DML. Compila y valida las instrucciones DML.
• Procesador del lenguaje de consulta. Interpreta las
sentencias de consulta y las convierte en sentencias DML.
Componentes del SGBD
• Optimizador de consultas: Define el plan de ejecución de
operaciones solicitadas por los usuarios, de tal manera
que se lleven a cabo de la manera más eficiente posible.
• Manejador de transacciones: Controla el acceso y la
concurrencia de operaciones.
• Manejador de almacenamiento tiene dos componentes:
– Manejador de archivos recupera desde disco los bloques que
contienen la información solicitada por una transacción.
– Manejador de buffer mantiene en memoria principal la
información más usada y decide cuando llevar a disco alguno
de sus bloques.
Componentes del SGBD
Ventajas de los SGBD
1. Reutilización de datos y programas
2. Control de redundancia
3. Estandarización
4. Consistencia
5. Es posible equilibrar las cargas de los requerimientos
6. Integridad
7. Seguridad
8. Rapidez de desarrollo
9. Mantenimiento y reingeniería: Permite realizar
cambios en la estructura de datos sin que esto
necesariamente represente un cambio en los
programas que los utilizan.
Desventajas de los SGBD
1. Tamaño
2. Susceptibilidad a fallas
3. Complejidad en la recuperación a fallas
4. Puede llegar a trabajar en forma “lenta”
debido a la cantidad de verificaciones que
debe hacer.
Arquitectura ANSI/SPARC
Arquitectura Cliente-Servidor
Arquitectura de tres capas
Modelo de Operaciones Distribuidas
Utilidades de los SGBD
• Cargar datos Almacenados
• Copia de seguridad
• La reorganización de las estructuras de base
de datos de archivo
• Monitoreo del rendimiento
Tendencias de los SGBD
• Sistemas para el soporte en la toma de decisiones (Data
Warehouse) y/o con capacidades deductivas y bases de
datos temporales.
• Manejar información multimedia: Imágenes, audio, videos.
• Bases de datos orientadas a objetos y objeto-relacionales.
• Manejar información georeferenciada: Sistemas de
Información Geográficos (SIG).
• Manejo de información documental: Motores de búsqueda,
sistemas para el manejo de documentos.
• Bases de datos nativas para XML
Modelo de datos
Modelos de datos
• Modelo de alto nivel (Modelo conceptual)

• Modelo de bajo nivel o modelo físico

• Modelo de implementación o de representación


Modelo conceptual
Representa la información de forma absolutamente
independiente al SGBD.
Modelo Entidad Relación. (MER)
Entidad es cualquier objeto que tenga un significado para el
usuario, que requiera ser recolectado y almacenado.
Relación: Una relación se da cuando una entidad (una
ocurrencia del conjunto de entidad) tiene una relación con otra.
Conjunto de entidades: Las entidades con los atributos básicos
se agrupan en un tipo o conjunto de entidad
Conjunto de relaciones: Las relaciones del mismo tipo se
agrupan en un conjunto de relación o tipo de relación.
Atributo: es una característica de una entidad
Atributo Simple

Atributo compuesto
Atributo de un solo valor
Atributo multivaluado

Atributo almacenado
Atributo derivado
Atributos Opcionales
Clave o restricción de unicidad: Para que un
atributo sea considerado un identificador
adecuado tiene que cumplir con los siguientes
requisitos:
• Deben distinguir a cada entidad o relación. Es
decir no puede haber dos entidades con el
mismo valor en el identificador.
• Todas las entidades deben tener el mismo
identificador.
• Un identificador puede ser una clave
compuesta.
Entidades fuertes y Débiles
La cardinalidad entre una entidad fuerte y una
débil será siempre de 1:N.
Relaciones Recursivas.
Las relaciones recursivas son aquellas que se
dan entre entidades del mismo tipo (o del
mismo conjunto de entidades).
Restricciones sobre el conjunto de relaciones:
• Cardinalidad mínima. Indica el mínimo de
asociaciones en las que aparecerá cada entidad.
Cuando la cardinalidad mínima sea de más de 1, se
usará el número 1.
• Cardinalidad máxima. Indica el número máximo de
relaciones en las que puede aparecer cada entidad.
Puede ser uno, un valor numérico mayor de uno o
muchos, representado generalmente por la letra N.
Atributos de conjunto de relación

Grados de relación
binaria
ternaria
n-arias
Ejemplo
Le contratan para hacer una BD que permita apoyar la gestión de un
sistema de ventas. La empresa necesita llevar un control de
proveedores, clientes, productos y ventas. Un proveedor tiene un
Registro Único Tributario (RUT), nombre, dirección, teléfono y página
web. Un cliente también tiene RUT, nombre, dirección, pero puede
tener varios teléfonos de contacto. La dirección se entiende por
calle, número, comuna y ciudad. Un producto tiene un id único,
nombre, precio actual, stock y nombre del proveedor. Además se
organizan en categorías, y cada producto va sólo en una categoría.
Una categoría tiene id, nombre y descripción. Por razones de
contabilidad, se debe registrar la información de cada venta con un
id, fecha, cliente, descuento y monto final. Además se debe guardar
el precio al momento de la venta, la cantidad vendida y el monto
total por el producto.
Ejercicio
Se desea diseñar una base de datos para almacenar y gestionar la información
empleada por una empresa de automóviles, teniendo en cuenta que a una
empresa de coches llegan clientes para comprar automóviles. De cada coche
interesa saber la matricula, modelo, marca y color. Un cliente puede comprar
varios coches en la empresa. Cuando un cliente compra un coche, se le hace
una ficha con la siguiente información: dui, nombre, apellidos, dirección y
teléfono .Los coches que se venden pueden ser nuevos o usados (de segunda
mano). De los coches nuevos interesa saber el número de unidades que hay.
De los coches viejos interesa el número de kilómetros que lleva recorridos. La
empresa también dispone de un taller en el que los mecánicos reparan los
coches que llevan los clientes. Un mecánico repara varios coches a lo largo del
día, y un coche puede ser reparado por varios mecanicos. Los mecánicos
tienen un dui, nombre, apellidos, fecha de contratación y salario. Se desea
guardar también la fecha en la que se repara cada vehículo y el número de
horas que se ha tardado en arreglar cada automóvil
Solución
Ejemplo
Crear un modelo conceptual a través del Modelo
ER para el diseño de una base de datos a partir de
dos hojas electrónicas. Una empresa de venta de
música lleva sus controles de existencias por cada
tienda de ventas a través de una hoja de cálculo,
además la hoja le sirve a los vendedores para
consultar los discos por nombre, artista y género,
y en caso de que sea necesario, los dependientes
pueden consultar el precio de venta del disco.
Ejercicio
Una empresa desea diseñar una base de datos para almacenar en ella toda
la información generada en cada uno de los proyectos que ésta realiza.
De cada uno de los proyectos realizados interesa almacenar el código,
descripción, cuantía del proyecto, fecha de inicio y fecha de fin. Los
proyectos son realizados por clientes de los que se desea guardar el código,
teléfono, domicilio y razón social.
Un cliente puede realizar varios proyectos, pero un solo proyecto es
realizado por un único cliente. En los proyectos participan colaboradores de
los que se dispone la siguiente información: nit, dui, nombre domicilio,
teléfono, banco y número de cuenta. Un colaborador puede participar en
varios proyectos. Los proyectos son realizados por uno o más
colaboradores. Un colaborador de proyecto puede recibir varios pagos. De
los pagos realizados se requiere guardar el número de pago, concepto,
cantidad y fecha de pago. También interesa almacenar los diferentes tipos
de pago que puede realizar la empresa. De cada uno de los tipos de pagos
se desea guardar el código y descripción. Un tipo de pago puede pertenecer
a varios pagos.
Modelo Lógico
Es el resultado del proceso de diseño lógico. Este
resultado es un esquema de base de datos
adaptado a las características específicas del
SGBD en el que se implementará el modelo
conceptual.
Los modelos lógicos proporcionan precisamente
una visión de la lógica de implementación del
modelo de datos
Relación
En el MR las bases de datos son concebidas como un
conjunto de relaciones. Esto hace que el concepto de
relación sea el más importante en este modelo.

las relaciones están compuestas de dos partes:


1. Atributos, que se refiere a cada propiedad de los
datos que se almacenan en la relación. Si representamos
a las relaciones como tablas, lon atributos concebidos
como columnas.
2. Tuplas, que se refiere a cada elemento de la relación.
Si representamos las relaciones como tablas, las tuplas
son concebidas como filas. Se corresponde con el
concepto de Registro, definido en el Modelo de Red.
Dominio
Un dominio define los posibles valores que
puede tomar un atributo. Es un conjunto finito
de valores del mismo tipo. Implícitamente, el
dominio se refiere también al tipo de dato que
se asignará al atributo.
Grado o Aridad
Indica el tamaño de la relación a partir del
número de sus atributos.
Cardinalidad
Número de tuplas de una relación.
Las características que una relación debe cumplir.
1. Las filas contienen datos de las entidades.
2. Las columnas representan los atributos de las
entidades.
3. Todas las entidades de una columna deben ser del
mismo tipo.
4. Cada columna en una relación debe tener un único
nombre.
5. Las celdas de una relación deben contener un único
valor.
6. El orden de las columnas no es relevante.
7. El orden de las filas no es relevante.
8. Dos filas no puede ser idénticas.
Clave de una relación
En general, una clave es una combinación de
uno o más atributos que son usados para
identificar una tupla en una relación.
Llave candidata
Una llave candidata es un conjunto de atributos
que identifican unívocamente cada tupla de la
relación. En otras palabras, son atributos cuyos
valores no se repiten en ninguna tupla de esa
relación.
Llave primaria
Es una llave candidata que se escoge como identificador de las
tuplas. Si la relación tiene más de una llave candidata, se escoge la
que mejor identifique a cada tupla en el contexto del modelo de
datos.
Llave alternativa
Es cualquier llave candidata que no sea primaria.
Llave sustituta
Es un atributo ficticio que es agregado a la relación para que sirva
como llave primaria.
Llave foráneas (externa, ajena o secundaria)
Es un atributo o combinación de atributos cuyos valores están
relacionados con atributos de otra relación. Esos atributos
provenientes de la otra relación (los foráneos) deben ser la llave
primaria de dicha relación.
Nulos
En los lenguajes de programación se utiliza el valor nulo
para denotar que un identificador (variable, objeto, etc.) no
tiene ningún contenido. En las bases de datos el significado
primario de nulo es el mismo que en los lenguajes de
programación. Sin embargo, un valor nulo puede tener
otros significados:
• En un atributo que es una llave foránea, el valor nulo
indica que la tupla no está vinculada con una tupla de
otra relación. Si es diferente de nulo, significa que el
vínculo si existe.
• En algunos casos, un valor nulo en un atributo indicará
que esa tupla no tiene dicho atributo.
Por ejemplo, un valor nulo en el atributo teléfono de una
relación persona indicará que la persona no tiene teléfono.
Una relación debe ser definida así:
R(A1, A2, ..., An)
Donde R es el nombre de la relación y la expresión
(A1, A2, ..., An) es lo que se denomina la cabecera de
la relación, el conjunto de atributos de la relación.

Y su notación relacional es
CLIENTE(clienteid, nombrecliente, direccion,
telefono)
Esquema de bases de datos
Es un conjunto S de los esquemas de relación
que pertenecen a la misma base de datos. S es
el nombre del esquema de base de datos
completa.
S = (R1, R2, ..., Rn)
Donde R1, R2, ..., Rn son los nombres de los
esquemas de relación individual dentro de la
base de datos S.
Restricciones
Las restricciones son condiciones que debe cumplir una
relación para que su estado sea válido.
• Restricción de Llave primaria
• Restricción de Integridad de entidad
• Restricciones de integridad referencial o llave foránea.
• Restricciones semánticas de Integridad
Estas restricciones pueden expresarse a través de:
– Restricciones de conjunto de valores (CHECK)
– Restricciones de unicidad (UNIQUE). Las restricciones de unicidad
están implícitas en las restricciones de integridad de la entidad. Sin
embargo, puede ser aplicada a otros atributos que no forman parte
de la llave primaria.
– Restricciones de obligatoriedad o no nulidad (NOT NULL). De igual
manera, las restricciones de no nulidad pueden ser aplicadas
cualquier otro atributo que no sean llave primaria.
Estado de una base de datos
El estado de una base de datos relacionales una unión
de todos los estados individuales de cada relación,
por lo tango cada vez que el estado de una relación es
modificada, se modifica el estado de la base de datos.
Las operaciones que permiten modificar del estado de
una relación, y por lo tanto de una base de datos son:
• Insertar una nueva tupla en una relación.
• Eliminar una tupla de una relación existente.
• Modificar un atributo de una tupla existente.
Posibles violaciones por cada operación
INSERTAR (INSERT). Puede violar una de las
restricciones siguientes:
1. Restricción de Dominio. Si uno de los valores de los
atributos proporcionados para la nueva tupla no es del
dominio atributo especificado.
2. Restricción de llave primaria. Si el valor de la llave primaria
en la nueva tupla ya existe en otra tupla en la relación.
3. Restricción de integridad referencial. Si un valor de llave
foránea en la nueva tupla es referenciada a un valor de clave
principal que no existe en la relación a la que se hace
referencia.
4. Restricción de integridad de entidad. Si el valor de llave
primaria es nula en la nueva tupla.
ELIMINAR(DELETE). Sólo puede violar la integridad
referencial:
Si el valor de llave primaria de la tupla que se va a
eliminar es referenciada desde otras tuplas en la base
de datos. Puede ser subsanada por varias acciones:
1. La opción RESTRICT: rechazar la supresión
2. La opción CASCADE: propagar el nuevo valor de llave
primaria en las claves externas de la referencia a las tuplas
3. Las opciones SET NULL: conjunto las llaves foráneas de la
referencia a las tuplas en NULL
Cada una de las opciones anteriores se debe especificar
durante el diseño de base de datos para cada
restricción de llave foránea.
LAS 12 REGLAS DE CODD
1. Información. Toda la información de la base de datos (metadatos) debe
estar representada explícitamente en el esquema lógico. Es decir, todos los
datos deben estar en las relaciones.
2. Acceso garantizado. Todo dato es accesible sin ambigüedad a partir del
valor de su llave y el nombre del atributo que contiene el dato.
3. Tratamiento sistemático de valores nulos. El SGBD el tratamiento
adecuado de los valores nulos. Los valores nulos deben interpretarse como la
ausencia del valor de un determinado atributo o que la información es
inaplicable.
4. Catálogo en línea basada en el modelo relacional. La forma en que se
debe acceder a los metadatos es la misma con la que se accede a los datos.
5. Sub lenguaje de datos completo. Un SGBD debe soportar al menos un
lenguaje relacional que:
1. Tenga una sintaxis lineal.
2. Puede ser utilizado de manera interactiva.
3. Soporte de operaciones de definición de datos, operaciones de manipulación de
datos, seguridad e integridad, y operaciones de de administración de transacciones.
6. Actualización. Todas las vistas que son teóricamente actualizables
deben ser actualizables por el sistema.
7. Inserciones, actualizaciones y eliminaciones de alto nivel. Debe
permitirse que cualquiera de estas operaciones se realice sobre
múltiples tuplas o relaciones.
8. Independencia física. La forma de acceder a los datos no varía
porque el esquema físico de la base de datos cambie.
9. Independencia lógica. Los cambios en las relaciones no deberá
implicar (obligatoriamente) un cambio en los programas.
10. Independencia de integridad. Las reglas de integridad deben
almacenarse en las bases de datos (en el diccionario de datos) y no
en los programas de aplicación.
11. Independencia de distribución. El sublenguaje de datos debe
permitir que sus instrucciones funcionen igualmente en una base de
datos centralizada que en una distribuida.
12. No subversión. Ninguno de los lenguajes o interfaces del SGBD
debe permitir que se violen las reglas relacionales anteriores.
Representación grafica
FACULTAD(CODIGO_FACULTAD, NOMBRE)

CARRERA(CODIGO_CARRERA, NOMBRE,
UNIDADES_VALORATIVAS, CODIGO_FACULTAD)
Conversión de MER a MR
Entidades fuertes
Las entidades fuertes del MER son
transformadas al MR siguiendo las siguientes
reglas:
– Las entidades son convertidas a tablas.
– La clave principal o identificador pasa a ser llave
primaria.
– Las claves candidatas se consideran llaves
candidatas.
Relación de Grado Superior
Relación de Grado Superior
Entidades Débiles
Normalización
En todos los casos, los problemas de diseño
pueden provenir de omisiones en el proceso de
análisis, errores de diseño o rediseño, o
simplemente porque hay algunos aspectos
estructurales en los datos que no han podido ser
detectados. El objetivo de la normalización es
eliminar estos problemas de diseño, que pueden
resumirse en:
1. Redundancia. Ocurre cuando hay datos que se
repetirán (o se repiten) innecesariamente en varias
tablas de la base de datos. Un dato (un atributo de
una tupla) de una tabla debe ser almacenado
únicamente en la tabla que sea necesaria. Esto
asegura que cualquier modificación que sea
necesaria a ese dato sea realizada una sola vez.
2. Ambigüedad. Cada tabla debe representar un
único objeto o relación del mundo real. Cuando no
está claro a qué objeto se refiere una tupla de una
tabla o puede hacer referencia a más de una tupla
de otra tabla, se dice que la tabla es ambigua.
3. Pérdida de restricciones de identidad.
Normalmente ocurre cuando no se han identificado
dependencias funcionales entre las tablas. Todos los
atributos que no puedan ser identificados por sí solos
deben depender únicamente de la llave primaria de la
tabla.
4. Anomalías en operaciones de modificación de
datos. Cada tabla deberá impedir anomalías en la
inserción, actualización o eliminación de datos. Esto
asegura la integridad y consistencia de los datos.
Formas Normales
Son etapas de la normalización que debe
cumplir un esquema de base de datos relacional
para que se considere como un diseño
adecuado.
1. Primera forma Normal (1FN)
2. Segunda Forma Normal (2FN)
3. Tercera Forma Normal (3FN)
4. FORMA NORMAL DE BOYCE-CODD (BCFN)
Primera forma normal (1FN)
Es la forma normal inherente al esquema
relacional. Una tabla se encuentra en 1FN si
impide que un atributo de una tupla pueda
tomar más de un valor.
Una tabla de datos como la que se muestra a
continuación, deberá ser transformada a una
tabla en la que cada celda contenga un único
valor.
Llevarlo a primera forma normal
SEGUNDA FORMA NORMAL (2FN)
Ocurre cuando una tabla esta en 1FN y además cada
atributo que no es llave tiene una dependencia
funcional completa respecto de cualquiera de las
llaves.
Dependencia funcional
Se dice que un conjunto de atributos Y depende de
otro conjunto de atributos X si para cada valor de X
hay un único valor posible para Y. Para denotar estas
características, Codd utilizó la lógica de predicados:
X→Y
El conjunto X del que depende funcionalmente
el conjunto Y se llama determinante. Al conjunto
Y se le llama implicado. Por lo tanto, la expresión
X → Y se puede leer: “X implica Y”.
Por ejemplo, los nombres y apellidos de un
empleado serán funcionalmente dependientes
del número de seguro social, puesto que el
nombre y apellidos de empleado no puede ser
obtenidos a partir de ningún otro atributo.
NUMERO_ISSS → (NOMBRE, APELLIDOS)
Dependencia funcional completa
Dependencia funcional completa
Un conjunto de atributos Y tiene una dependencia
funcional completa sobre otro conjunto de atributos X,
si Y tiene dependencia funcional de X y además no se
puede obtener un conjunto de atributos más pequeño
en X que consiga una dependencia funcional de Y.
La dependencia funcional completa se denota:
X⟹Y
Dependencia funcional elemental
Se produce cuando X e Y forman una dependencia
funcional completa y además Y es un único atributo.
Para que una tabla cumpla con la 2FN, toda llave
primaria debe ser determinante del resto de los
atributos en la tabla.
Si hay atributos que dependen únicamente de
una parte de la llave, entonces esa parte de la
llave y esos atributos, formarán una nueva tabla.
Retomando el ejercicio.
Resulta que se dividirá de la siguiente forma.
TERCERA FORMA NORMAL (3FN)
Ocurre cuando una tabla está en 2FN y además, no existen
dependencias funcionales transitivas en ningunos de los
atributos de la tabla.
Dependencia funcional transitiva
Se produce cuando en tres conjuntos de atributos X, Y y Z, Y
depende funcionalmente de X (X→Y), Z depende
funcionalmente de Y (Y→Z), y además X no depende
funcionalmente de Z (Y ↛ X). Entonces ocurre que X produce
una dependencia funcional transitiva sobre Z.
Esto se denota (X— → Z)
En otras palabras, la dependencia transitiva se da cuando existe
algún atributo que no es llave que es determinante de otro
atributo que no es llave.
Ejemplo Empresas socias de una compañia

Llevarlo a 1FN , 2FN, 3FN


2FN
Para comprobar si las tablas están en 3FN debemos
evaluar si hay dependencias funcionales transitivas.
Para la primera tabla.
no tiene dependencias funcionales transitivas,
puesto que tiene como llave primaria los dos
atributos que conforman la tabla
Para la segunda tabla: primero determinaremos cuál
es su llave primaria. Para ello es útil eliminar los
valores repetidos, dando como resultado la
siguiente tabla:
Es evidente que la llave primaria de la tabla debe ser el nombre de
la empresa (NOMBRE1), puesto que es el atributo que no se repite y
que no depende de ningún otro atributo.
Si observamos el atributo SIMBOLO, notaremos que depende de la
columna NOMBRE3, ya que se obtendrá siempre el mismo símbolo
cuando se especifique un NOMBRE3. De manera que, hay una
dependencia funcional transitiva en la que, el atributo SIMBOLO es
dependiente del NOMBRE3 y el NOMBRE3 depende del NOMBRE1.
La solución es separar los atributos que se ven
involucrados en la dependencia transitiva,
dejando siempre en la tabla original el atributo
que es determinante.
Forma Normal BCFN

La llave primaria sigue siendo el nombre de la empresa.


Los determinantes que podemos identificar es CODIGO, ya que siempre que
especifiquemos un código, nos devolverá los mismos valores para el
NOMBRE2 y NOMBRE3.
Sin embargo, el atributo CODIGO no puede ser considerado una llave
candidata, puesto que se repite en una ocasión. Por lo tanto, la tabla no está
en la FNBC (o BCFN). La solución es sacar los atributos implicados por el
determinante que no es llave, siempre dejando una copia del determinante
en la tabla original
4FN
Una tabla está en 4FN si toda dependencia multivaluada es una dependencia
funcional.
Dependencia multivaluada
Una dependencia multivaluada de X sobre Y , siendo X e Y atributos de la
misma tabla, ocurre cuando Y tiene un conjunto de valores bien definidos sobre
cualquier valor de X. Es decir, dado X sabremos los posibles valores que puede
tomar Y.
La definición anterior se refiere a que un atributo puede tomar múltiples
valores para el mismo determinante.
En términos del Modelo ER, esta anomalía ocurre cuando una relación de grado
superior es expresada a través de relaciones binarias sin que estas sean
equivalentes.
Supongamos que tenemos una hoja de cálculo de las notas de los estudiantes
inscritos en una asignatura, como se muestra a continuación:
Ejemplo
Segunda Forma Normal
Para llevarlas a 3FN Evaluar si hay Dependencia Funcional Transitiva
(3 conjunto de atributos X,Y,Z; Y depende funcionalmente de X(X.
Y), Z depende funcionalmente de Y (Z X), y ademas X no
depende Funcionalmente de Z), eso implica que X produce una
dependencia funcional transitiva de Z.
Llave primaria: CARNET y ASIGNATURA
Veremos ahora si existe algún determinante (que no sea parte de la
llave primaria) que nos permita obtener un atributo.
Los únicos atributos que pueden ser determinantes son CARRERA y
EVALUACION, sin embargo ninguno de ellos devuelve siempre los
mismos valores para un valor específico. Por lo tanto, podemos
decir que la tabla está en 3FN.
Lo mismo ocurre al evaluar si la tabla se encuentra en FNBC, ya que
no tiene otro determinante que no sea la llave primaria. Por lo
tanto, podemos asegurar que la tabla está en FNBC
Ahora evaluaremos si la tabla tiene dependencias multivaluadas.
Observemos que no es posible reducir la tabla porque no tiene
valores (tuplas) repetidas. Ya hemos definido como llave primaria
los atributos CARNET y ASIGNATURA. Al evaluar la tupla (BB0001,
MAT115) podemos observar que obtendremos dos filas. Sin
embargo, para los atributos EVALUACION y NOTA se devuelven
valores diferentes, por lo que la tabla si tiene una dependencias
funcional multivaluada.

La solución a este problema es sacar de la tabla los atributos


multivaluados. Sin embargo, los atributos multivaluados por sí
mismos no pueden constituir una tabla con identidad propia,
puesto que no tendrían llave primaria. La solución es sacar
también la llave primaria de la tabla. Las tablas resultantes serán
las siguientes
PROCESO
Supongamos que partimos de una sola tabla. Después de llevar
la tabla a una forma normal, diremos que todas las tablas
resultantes cumplen con esa forma normal.
Si partiéramos de más de una tabla, el proceso debe ser
aplicado a cada una de las tablas originales.
Conversión a la 1FN
1. Eliminar los grupos repetidos.
2. Identificar la llave primaria.
Conversión a la 2FN
1. Identificar la llave primaria
2. Identificar dependencias funcionales.
3. Separar los atributos implicados que no tengan dependencia
funcional completa respecto a una llave en tablas con sus
correspondientes determinantes, dejando en la tabla origen el
determinante como llave foránea.
Conversión a la 3FN
1. Identificar la llave primaria
2. Identificar determinantes que no sean la llave primaria
3. Identificar los atributos implicados.
4. Separar los atributos implicados que tengan dependencias
transitivas a una nueva tabla con su respectivo determinante,
dejando en la tabla origen el determinante como llave foránea.
Conversión a la BCFN
1. Identificar la llave primaria
2. Identificar los determinantes que no sean llave
3. Identificar los atributos implicados.
4. Separar los atributos implicados en las tablas con sus
correspondientes determinantes que no sean llave, dejando
en la tabla origen el determinante como llave foránea.
Conversión a la 4FN
1. Identificar la llave primaria
2. Identificar determinantes.
3. Si los determinantes violan las restricciones de
identidad, unir a la tabla un atributo o conjunto de
atributos de otra tabla que tenga relación, que
permita eliminar la violación de restricción de
entidad.
4. Si existen atributos que para el mismo valor del
determinante que devuelvan más de un valor,
Algebra Relacional
El álgebra relacional es uno de los dos conjuntos
de operaciones para la manipulación de datos
creados por Codd. Estas operaciones,
normalmente llamadas lenguajes de consulta
son:
1. Algebra relacional
2. Cálculo relacional
El álgebra relacional es un conjunto de
operaciones para la especificación de peticiones
de recuperación de datos. El resultado de una
recuperación es una nueva relación, que se ha
formado a partir de las operaciones realizadas a
una o más relaciones..

Estas nuevas relaciones que son producidas por


las operaciones del álgebra relacional pueden
posteriormente ser manipuladas por otras
operaciones del álgebra relacional.
Las operaciones del álgebra relacional se dividen en dos grupos:
Operaciones básicas. Operaciones que provienen de la teoría de
conjuntos utilizada por Codd para definir el modelo:
◦ Unión
◦ Intersección
◦ Diferencia
◦ Producto cartesiano
2. Operaciones derivadas. Operaciones creadas específicamente
para bases de datos relacionales:
◦ Renombrado
◦ División
◦ Selección
◦ Proyección
◦ Reunión (JOIN)
Todas estas operaciones son implementadas por
los SGBD que cumplen con el estándar SQL para
bases de datos relacionales. Este estándar, que ha
sufrido varias modificaciones a lo largo de los
años, ha sido reconocido por las organizaciones
internacionales de estándares ANSI e ISO. La
versión vigente del estándar es SQL-2011.
Unión (U)
Se denota por la expresión:
RՍS
Donde R y S son dos relaciones unión
comparables. Dos relaciones R(A1, A2, …, An) y
S(B1, B2, …, Bn) son unión comparables si ambas
tienen el mismo grado n y si se cumple que
dom(Ai) = dom (Bi).
El resultado de la unión es una nueva relación que
contiene las tuplas que están en R y en S,
eliminando aquellas tuplas repetidas.
Ejemplo
Supongamos que dos farmacias han utilizado el
mismo sistema informático para el registro y
control de sus ventas. Ahora, después de decidir
fusionarse, intentan generar información
integrada de ambas bases de datos.

cliente_farmacias_med Ս cliente_farmacias_sal
La implementación de esa operación en un
SGBD se realiza a través de la sentencia SELECT y
el operador UNION.

SELECT * FROM R UNION SELECT * FROM S


INTERSECCIÓN
Se denota por la expresión:
R∩S

Donde R y S son dos relaciones unión


comparables. El resultado de la intersección es
una nueva relación que contiene el conjunto de
todas las tuplas que están tanto en R como en S.
SELECT * FROM R INTERSECT SELECT * FROM S
La consulta correspondiente al ejemplo en
PostgreSQL tendría la siguiente forma:
SELECT * FROM cliente_farmacias_med INTERSECT
SELECT * FROM cliente_farmacias_sal
DIFERENCIA
Se denota por la expresión:
R–S
Donde R y S son dos relaciones unión
comparables.
El resultado de la diferencia es una nueva
relación que contiene las tuplas que están en R,
pero no están en S.
A diferencia de las operaciones unión e
intersección, la diferencia no es conmutativa.
PRODUCTO CARTESIANO
Se denota por la expresión:
RxS
Donde R y S son dos relaciones. El resultado del
producto cartesiano es una nueva relación que
contiene los atributos de R y S, concatenando
cada una de sus tuplas.
SELECCIÓN
Como su nombre lo dice, permite realizar una selección de un
subconjunto de tuplas de una relación que satisface la
condición de selección. Esta condición de selección es
normalmente llamada predicado. Se denota por la expresión:
σ predicado (R)
Donde el predicado es una condición especificada en términos
de los atributos de R. El predicado se compone de una o más
condiciones con la forma:

a
< i> <operador de comparación> <valor constante>
O bien,

a
< i> <operador de comparación> < a>
j
Donde:
<ai> y <aj> son nombres de alguno de los atributos de R
<operador de comparación> es normalmente uno de los
operadores {=, <, ≤, >, ≥, =}
<valor constante> es un valor constante del dominio del
atributo
Las condiciones pueden conectarse arbitrariamente
mediante los operadores lógicos AND, OR y NOT
para formar condiciones compuestas.
La selección es un operador unario, es decir; se
aplica a una sola relación. Además, la relación
resultante tendrá los mismos atributos de R.
σ cod_cliente = 001 OR cod_cliente = 003
(cliente_farmacias_med)

SELECT * FROM cliente_farmacias_med


WHERE cod_cliente = '001' OR cod_cliente = '003'
PROYECCIÓN
Mientras la selección nos permite filtrar aquellas
tuplas de la relación, que no cumplan con la
condición especificada en el predicado, la
proyección permite seleccionar los atributos de la
relación que nos interesan mantener e ignora las
otras.
π <lista atributos> (R)
Donde <lista atributos> es una lista de los atributos
de R separados por coma. Al igual que la selección,
la proyección es también un operador unario.
π<cod_cliente, tel_cliente> (cliente_farmacias_med)
Devolverá las columnas cod_cliente y tel_cliente de
la tabla cliente_farmacias_med

SELECT cod_cliente, tel_cliente


FROM cliente_farmacias_med
DIVISIÓN
Se denota por la expresión:
R/S
Donde R y S son relaciones que deben cumplir con las
siguientes condiciones:
1. Grado (R) > Grado (S)
2. El conjunto de atributos de S ⊂ Conjunto de atributos de R
Devuelve una relación sobre el conjunto de atributos C,
incluidos en la relación R, que contiene el conjunto de
valores de C, que en las tuplas de R están combinadas con
cada una de las tuplas de S.
En otras palabras, una división devuelve una serie de tuplas
de R que tengan un atributo de coincidencia con S pero
eliminando los atributos coincidentes
Ejemplo
Supongamos que R son todas las tuplas de la
relación ventas y nos interesa determinar a
través de una división, cuales fueron las ventas
que se le hicieron a la TIENDA LUPE

Realizando una seleccion.


SELECT * FROM Venta
Suponiendo que S es el código de la TIENDA LUPE

SELECT cod_cliente
FROM cliente_farmacias_med
WHERE nombre_cliente = 'TIENDA
LUPE
Haciendo una proyección
Determinar por medio de división
X1 ⟵ πC(R)
X2 ⟵ πC((S x X1) – R)
X ⟵ X1 – X2
Donde X1 sería una proyección del conjunto de
atributos C conformado por el id_venta,
cod_sucursal y monto_venta de la relación
venta.
Para calcular X2 tenemos que hacer un producto
carteciano de S con X1

SELECT * FROM (SELECT cod_cliente FROM


cliente_farmacias_med WHERE nombre_cliente =
'TIENDA LUPE') AS S, (SELECT id_venta, cod_sucursal,
monto_venta FROM venta) AS X1
X2 será la diferencia de la relación resultante
anterior menos R.

SELECT * FROM (SELECT cod_cliente FROM


cliente_farmacias_med WHERE nombre_cliente =
'TIENDA LUPE') AS S, (SELECT id_venta,
cod_sucursal, monto_venta FROM venta) AS X1
EXCEPT SELECT cod_cliente, id_venta,
cod_sucursal, monto_venta FROM venta
El resultado de la división será X1 – X2.

SELECT id_venta, cod_sucursal, monto_venta FROM


venta
EXCEPT SELECT id_venta, cod_sucursal, monto_venta
FROM (SELECT * FROM (SELECT cod_cliente FROM
cliente_farmacias_med WHERE nombre_cliente =
'TIENDA LUPE') AS S, (SELECT id_venta, cod_sucursal,
monto_venta FROM venta) AS X1
EXCEPT SELECT cod_cliente, id_venta, cod_sucursal,
monto_venta FROM venta) AS X2
REUNIÓN (JOIN)
Existen varias formas de realizar una reunión:
Reunión interna
1. Theta JOIN (θ-JOIN)
2. Equi-JOIN
3. Natural JOIN
Reunión externa
1. Left
2. Right
3. Full
REUNIÓN INTERNA
θ-JOIN
Theta JOIN, también llamada asociación, permite
realizar una unión interna entre dos relaciones,
estableciendo una condición de unión. Se denota:
R ⋈condición S
Donde la condición es una expresión de una o varias
condiciones que pueden estar separadas por
operadores lógicos AND, OR y NOT.
El resultado es una relación cuyas tuplas son la
combinación de las tuplas de ambas relaciones que
cumplen (juntas) con la condición.
Ejemplo:

venta ⋈ venta.cod_sucursal = sucursal.cod_sucursal


AND monto_venta > 10 sucursal
venta ⋈ venta.cod_sucursal =
sucursal.cod_sucursal AND monto_venta > 10
sucursal

SELECT * FROM venta v INNER JOIN sucursal s


ON v.cod_sucursal = s.cod_sucursal AND
monto_venta > 10
Equi-JOIN
Equi-JOIN es una forma especial del θ-JOIN en la que
la condición de la unión es de igualdad entre los
campos coincidentes entre las relaciones.
R⋈S
Donde R y S son relaciones que no necesariamente
deben ser unión comparables.

El resultado es una tabla con los atributos de ambas


relaciones y se obtiene combinando las tuplas de
ambas relaciones que tengan el mismo valor en los
atributos comunes.
En SQL el Equi-JOIN tiene la misma forma que el
θ-JOIN, la diferencia estriba en que la condición
será de igualdad.
Sentencia en sql
SELECT * FROM venta v INNER JOIN sucursal s ON
v.cod_sucursal = s.cod_sucursal

Tanto los θ-JOIN como los Equi-JOIN pueden ser concebidos


como un producto cartesiano de R x S al que posteriormente
se le aplica una selección con las condiciones especificadas en
el modificar ON.

SELECT * FROM cliente_farmacias_med, venta

SELECT * FROM cliente_farmacias_med, venta


WHERE venta.cod_cliente =
cliente_farmacias_med.cod_cliente
NATURAL JOIN
R⋈S
Es una forma especial del Equi-JOIN en la que la
condición de la unión es de igualdad entre los
campos coincidentes entre las relaciones.
La condición del Natural JOIN buscará todos los
atributos que tengan el mismo nombre y sean
del mismo tipo de dato entre las dos relaciones.
SELECT * FROM venta NATURAL JOIN
cliente_farmacias_med

Natural JOIN eliminara las columnas repetidas de la


relacion resultante
REUNIÓN EXTERNA (OUTER JOIN)
El operador JOIN selecciona aquellas tuplas que satisfacen
la condición del JOIN. Las tuplas que no cumplen con la
condición, es decir; aquellas que no tienen tuplas
relacionadas en la otra tabla no son incluidas en el
resultado. Lógicamente, esto incluye también aquellas
tuplas que tienen un valor nulo en el atributo que forma
parte de la condición.

Esto es útil en los casos en los que se requiere que un


conjunto de filas que se correspondan. En el ejemplo
anterior, los datos de los clientes que hayan realizado
alguna compra. Sin embargo, hay casos en los que es
necesario incluir aquellas filas de una de las relaciones que
tengan valores nulos.
Por ejemplo, si el requerimiento fuera obtener
los datos de los clientes que hayan realizado
alguna compra en las farmacias_sal.
LEFT OUTER JOIN
Selecciona todas las filas de la relación que se
encuentra a la izquierda del operador, sin
importar que no tenga fila correspondiente en la
otra relación.
R condición S
Venta cod_cliente=cod_cliente
cliente_farmacias_sal
SELECT * FROM venta v LEFT OUTER JOIN
cliente_farmacias_sal c ON v.cod_cliente =
c.cod_cliente.
RIGHT OUTER JOIN
Selecciona todas las filas de la relación que se
encuentra a la derecha del operador, sin
importar que no tenga fila correspondiente en la
otra relación.
SELECT * FROM venta v RIGHT OUTER JOIN
cliente_farmacias_sal c ON v.cod_cliente =
c.cod_cliente
FULL OUTER JOIN
Selecciona todas las filas de ambas relaciones,
sin importar que no tenga fila correspondiente
en la otra relación.
SELECT * FROM venta v FULL OUTER JOIN
cliente_farmacias_sal c ON v.cod_cliente =
c.cod_cliente
FUNCIONES DE AGREGACIÓN
ℱCOUNT
Cuenta las tuplas de una relación sin remover
los duplicados.
SELECT COUNT(id_venta) FROM venta
ℱMAX
Devuelve el valor máximo de un atributo de una
relación.
ℱMAX atributo (R)
SELECT MAX(monto_venta) FROM venta
ℱMIN
Devuelve el valor mínimo de un atributo de una
relación.
ℱMIN atributo (R)
SELECT MIN(monto_venta) FROM venta

ℱSUM
Permite realizar una suma de un atributo.
ℱSUM atributo (R)
SELECT SUM(monto_venta), cod_sucursal
FROM venta GROUP BY cod_sucursal
ℱAVG
Permite obtener el promedio de un atributo en
una relación.
ℱAVG atributo (R)
SELECT AVG(monto_venta), cod_sucursal
FROM venta GROUP BY cod_sucursal
Medición de la Productividad

También podría gustarte