Aportación al perfil
Esta asignatura aporta al perfil del egresado la capacidad de administrar proyectos que
involucren tecnologías de información en las organizaciones conforme a requerimientos
establecidos; diseñando, desarrollando y manteniendo sistemas de bases de datos
asegurando la integridad, disponibilidad y confidencialidad de la información
almacenada. También aporta el perfil del egresado la capacidad de desarrollar e
implementar sistemas de información para el control y la toma de decisiones utilizando
metodologías basadas en estándares internacionales.
Intención didáctica
El temario se organiza en siete unidades de aprendizaje. En la unidad uno, se abordan los
conceptos fundamentales y los componentes de un sistema gestor de base de datos,
considerando la importancia y las áreas de aplicación en la organización y el desarrollo
profesional.
Competencias a desarrollar
Esta asignatura tiene como objetivo de desarrollar en el estudiante competencias
especificas, de manera que sea capaz de:
Para ello, el estudiante debe contar con competencias previas tales como:
Bibliografía
Las fuentes bibliográficas utilizadas para recopilar estos apuntes y ejemplos fueron las
siguientes:
Carlos Coronel, Steve Morris y Peter Rob. (2011). Bases de datos. Diseño,
implementación y administración. Novena Edición. Editorial Cengage Learning.
Irene Luque Ruiz, Miguel Angel Gómez-Nieto, Enrique López Espinosa, Gonzalo
Cerruela García. (2002). Bases de datos. Desde Chen hasta Codd con Oracle. Primera
Edición. Editorial Alfaomega RA-MA.
UNIDAD 1
Competencias especificas.
El alumno será capaz de:
Antecedentes
Sistemas de procesamiento de archivos
La mejor forma de entender la naturaleza y características de las bases de datos actuales
es ver las particularidades que precedieron al uso de la tecnología de bases de datos, los
primeros sistemas de información almacenaban grupos de registros en archivos
preparados.
de datos; hay menor oportunidad de discrepancia entre las múltiples copias de los
mismos elementos de datos.
• Independencia programa/datos: El procesamiento de base de datos hace que los
programas dependan menos de los formatos de archivo. Los formato de registro se
le almacenan en la misma base de datos y son accedido por el DBMS, no por los
programas de aplicación, esto minimiza el impacto de los cambios almacenados al
DBMS, que a su vez actualiza los datos y mantiene la relación con la estructura de
la base de datos.
• Fácil representación de la vista de datos: La tecnología de bases de datos hace
posible representar de un modo directo los objetos en el universo del usuario.
¿Por qué autodescriptiva? Por que aparte de contener los datos fuente del usuario
contiene también una descripción de su propia estructura, tal descripción es conocida
como diccionario de datos o metadatos, lo que promueve la independencia entre el
programa y los datos ya que al cambiar la estructura de los datos en la base de datos solo
se introduce el cambio en el diccionario de datos.
los datos y de esta manera tener un rápido acceso a los datos, son muy valiosos para
clasificación y búsqueda.
‣ Los metadatos de aplicación que se refieren a la información que la aplicación
utiliza, como lo son la estructura de las formas de entrada de datos, salida de datos
ya sean en pantalla o como reportes, etc.
Las bases de datos varían en su nivel de detalle, el grado de detalle que debe
incorporarse en una base de datos depende de la información deseada. Es evidente que
entre más información se requiera la base de datos deberá poseer mas detalles, decidir la
cantidad apropiada de detalles es una parte importante del trabajo al diseñar una base de
datos. El criterio principal es el nivel de detalle que imagina el usuario.
• Una base de datos es una colección de archivos relacionados que almacenan tanto
una representación abstracta del dominio de un problema del mundo real cuyo
manejo resulta de interés para una organización, como los datos correspondientes a
la información acerca del mismo. Tanto la representación como los datos están
sujetos a una serie de restricciones, las cuales forman parte del dominio del
problema y cuya descripción esta también almacenada en esos archivos.
Modelos de datos
El diseño de base de datos se concentra en la forma en que la estructura de base de datos
se usará para guardar y administrar datos del usuario final. El modelado de datos, primer
paso para diseñar una base de datos, se refiere al proceso de crear un modelo especifico
de datos para el dominio de un problema determinado. Un modelo es una representación
relativamente sencilla, por lo general gráfica, de estructuras de datos reales más
complejas.
• Una descripción de la estructura de datos que guardara los datos del usuario final.
• Un conjunto de reglas que se pueden hacer cumplir para garantizar la integridad de
los datos.
• Una metodología de manipulación de datos para apoyar las transformaciones de los
datos reales.
Los datos constituyen las unidades de información mas elementales que un sistema
emplea. Las aplicaciones son creadas para manejar datos y ayudar en transformarlos en
información. Pero los datos son visos en distintas formas por diferentes personas. Los
diferentes usuarios y productores de datos e información a veces reflejan la analogía de la
persona ciega y el elefante, la persona ciega que sintió la trompa tiene una visión muy
diferente con respecto a quien siento la pata o la cola.
Abstracción de la información
Para que una base de datos pueda satisfacer las características y objetivos antes señalados,
y otras más, es necesario que los usuarios de la misma tengan una visión abstracta de los
datos almacenados. Dependiendo de quien acceda o use la base de datos, esta debe
presentarle una visión de los datos que sea capaz de reconocer, interpretar y manejar; por
lo que se puede hablar de tres visiones de los datos de una base de datos:
• Visión externa: es la visión de los datos que tienen los usuarios finales de una base
de datos. Un usuario trata solo una visión parcial de la información, solo aquella que
intervienen en el dominio de actividad. Este usuario debe ver la información que
maneja como un registro independiente que los elementos de datos tengan su origen
en diferentes archivos. Por otro lado, otro usuario vera también su registro particular
de información cuyos elementos podrán ser comunes o no, al de otros registros
particulares de otros usuarios.
Tipos de lenguajes
Para realizar todas las funciones del DBMS, es necesario que cuentan con un componente
que permita la realización de esta tarea. El lenguaje de definición de datos — Data
Definition Language (DDL) — es un lenguaje basado en un determinado modelo de datos
que permite la representación lógica de los datos.
Generalmente, los DDL de los diferentes DBMS son los lenguajes simples basados
en una gramática sencilla que cuenta con un conjunto muy reducido de morfemas, lo que
garantiza la definición no ambigua de los datos. Esta definición debe ser compilada para
dar lugar a una representación orientada a la maquina que es la que utiliza el DBMS en
tiempo de procesamiento.
Al igual que el DDL, el DML esta basado en un modelo de datos y, por tanto, los
DBMS basados en distintos modelos de datos tienen diferentes DML. Se trata también de
un lenguaje basado en una gramática completa, sencilla y, generalmente, fácil de entender
por los usuarios no expertos.
Dependiendo del modo de datos en el cual se soportan y, por supuesto, del DBMS,
existen dos tipos de DML:
Tipos de usuarios
Administrador de la Base de Datos
Uno de los componentes de los DBMS es del administrador de la base de datos – Data
Base Administration (DBA) –. Se trata de un componente humano de suma importancia
en el uso de la base de datos va atener en la resolución de determinado problema, este
tiene una serie de responsabilidades en cuanto a la definición, administración, seguridad,
privacidad e integridad de la información que es tratada, así como en el desempeño del
DBMS en el procesamiento de la misma. Entre las tareas asignadas al DBA se
encuentran:
• Formas: son los formularios que contienen elementos gráficas (cajas de texto,
etiquetas, casillas de verificación, entre otras) que permiten ingresar datos al
sistema.
• Consultas: De vez en cuando los usuarios desean consultar los datos para contestar
preguntas o para identificar problemas o situaciones particulares, para ello puede
usarse el lenguaje SQL de acceso a datos o utilizar una herramienta del DBMS
UNIDAD 2
Competencias especificas.
El alumno será capaz de:
• Analizar y aplicar el modelo E-R para el diseño conceptual de bases de datos y los
posibles tipos de asociaciones entre tablas y su instrumentación.
M=<S, D>
Relación: La relación entre las dos tablas es como sigue, una fila de Captain se
relaciona con muchas filas de Item pero una fila de Item se relaciona con solo una de
Captain. Mas adelante se abordara a detalle el tema de las relaciones.
Dominio: es una serie de valores que pueden tener una columna, se debe
especificar un dominio para cada columna de cada tabla y que dominios será únicos para
la tabla, por ejemplo: ItemID, Quantity, CapID tienen valores de números entero;
Description tiene valores de caracteres y DateOut, DateIn tienen valores de fecha
El modelo Entidad - Relación (E-R) fue introducido por Peter Chen en 1976 con
el objetivo de incorporar información semántica importante lo que proveía a diferencia de
otros modelos en esos años una gran independencia de datos, el modelo se basa en dos
teorías: la relacional y la de conjuntos; desde esa fecha hasta entonces este modelo ha
sido ampliado y modificado.
La definición según Chen: “El modelo E-R puede ser usado como una base para
vistas unificadas de datos, adoptando el enfoque mas natural de lo real, que consiste en
entidades y relaciones”.
Entidades
Una entidad es un objeto real o abstracto acerca del cual se puede almacenar información;
es algo que puede identificarse en el ambiente de trabajo de los usuarios, algo importante
para los usuarios del sistema que se va a desarrollar.
ENTIDAD FUERTE
Entidad Débil
Nombre
Dirección
PERSONA
Edad
Telefono
Relaciones
Las relaciones son asociaciones entre dos o más entidades, desde el punto de vista de
teoría de conjuntos es una correspondencia entre conjuntos, pueden tener o no atributos, y
tiene un nombre único;existen dos tipos de relaciones:
PEDIDO - VENDEDOR
VENDEDOR PEDIDO
MADRE PADRE
HIJOS
• De uno a uno (1:1): una entidad única de un tipo de entidad se relaciona solo con
una entidad única de otro tipo de entidad.
AUTO - ASIGNACION
EMPLEADO AUTO
1
1:
• De uno a muchos (1:N): una entidad única de un tipo de entidad se relaciona con
muchas entidades de otro tipo de entidad.
DORMITORIO - OCUPANTE
DORMITORIO ESTUDIANTE
N
1:
ESTUDIANTE - CLUB
ESTUDIANTE CLUB
:M
N
De esta manera se pueden obtener diagramas entidad - relación como el que sigue:
DORMITORIO - OCUPANTE
DORMITORIO ESTUDIANTE
N
1:
Ubicación NoControl
CantHabitantes Renta Nombre
NoDormitorio Semestre
Relaciones Reflexivas
También denominadas relaciones recursivas, son relacionesunarias y, por tanto,
consideren que en el tipo de relación se involucra un único tipo de entidad. Por ejemplo:
consideremos el tipo de relación presentado en la siguiente figura:
Es_jefe_de »
TRABAJADOR
N
1:
Es_subordinado_de »
Aquí se muestra la relación existente entre el tipo de entidad Trabajador con ella
misma, y representa que un trabajador es jefe de 0 a varios trabajadores, mientras que un
trabajador solo es dirigido por 0 (el jefe de todos) o 1 un trabajador.
Relaciones Exclusivas
En un problema del mundo real, un tipo de entidad puede mantener relaciones con un
conjunto con otros tipos de entidad, pero no siempre estas relaciones son independientes.
Consideremos el ejemplo que se muestra en la siguiente figura:
PROVEEDOR
:1
N
ARTICULO
FABRICANTE
:1
N
Se presentan tres tipos de entidad Articulo, Proveedor y Fabricante, el problema
radica en que los artículos son suministrados por los proveedores o por los fabricantes,
pero un articulo nunca puede ser suministrado por un proveedor que no fabrica el articulo,
de forma que si el fabricante puede suministrarlo, en ningún momento será solicitado ese
articulo a ningún proveedor.
Para indicar la exclusividad entre dos tipos de relación que mantiene el mismo la
misma entidad se procede a representar un segmento que corta a los dos que representan
la relación del tipo de entidad con los tipos de interrelaciones exclusivas. En otras
palabras se dice que dos o más tipos de relación son exclusivas cuando cada ocurrencia de
un tipo de entidad puede pertenecer a un tipo de relación.
Generalización, ES_UN.
Consideremos el tipo de entidad Persona, la cual puede ser especializada en dos subtipos
de entidad Hombre y Mujer de forma total y sin solapamiento.
PERSONA
sexo
HOMBRE MUJER
heredados del tipo entidad Persona, más el atributo sexo el cual tiene la función
clasificador de las entidades Persona en alguno de los subtipos.
ENFERMEDAD
tipo
BACTERIANA VIRICA
EMPRESA
clase
PUBLICA PRIVADA
administración empresa
al mismo tiempo y además el hecho de que no podrán existir entidades que no puedan ser
especializada en algunos de estos dos subtipos.
En este caso se ha representado a un tipo de entidad Persona que puede ser refinado en
dos subtipos Trabajador y Estudiante de forma parcial con solapamiento.
PERSONA
tipo
TRABAJADOR ESTUDIANTE
#nss matricula
Este ejemplo representa que una entidad Persona puede ser del tipo Trabajador y/o
Estudiante y que además puede existir entidades Personas que no puedan clasificarse en
ninguno de estos dos subtipos.
En estos dos últimos ejemplos, los tipos de entidad incorporan nuevos atributos
mediante los cuales pueden diferenciarse entidades pertenecientes a los distintos subtipos
(o del tipo de entidad general en el caso de la especialización no sea total). Igualmente
podrían existir atributos pertenecientes al tipo de interpelación jerárquica cuya función
fuera esta diferenciación de las entidades pertenecientes a los subtipos.
Ejemplo de aplicación
El catastro municipal
Una vez que se leen los supuestos semánticos que intervienen en los sistema, así
como las características que poseen, es importante identificar las entidades, lo que
representa, sus atributos y el tipo de entidad, para ello se puede hacer uso de una tabla
como la que se muestra a continuación.
Bloque de Subtipo de la entidad Ademas de atributos como calle y numero se Debil por
casas Vivienda, hace consideran: existencia
referencia a aquellas • metros_b: metros cuadrados de la casa
viviendas en las cuales particular
solo vive una familia • od_bloque: hace referencia a cualquier
otro dato que considere sea de interés
representar.
Piso Representa cada una de Para su identificación se necesitan atributos Debil por
las viviendas que tales como: existencia e
pueden existir en un • metros_p: metros cuadrados de la casa identificación ya
bloque de pisos. particular que es necesario
• od_piso: hace referencia a cualquier otro conocer la calle
dato que considere sea de interés y numero del
representar. piso donde su
ubica
Persona Representa el objeto del Para esta entidad se van a considerar 4 tipos Fuerte
mundo real “personas de atributos:
que viven o son • curp: atributo que identifica de manera
propietarias de una unica a cada ocurrencia de esta entidad.
determinada vivienda” • nombre_persona
• apellidos_persona
• od_persona: hace referencia a cualquier
otro dato que considere sea de interes
representar.
calle
numero curp
codigo_postal nombre_persona
nombre_zona metros apellidos_persona
od_zona od_vivienda od_persona
N
N
1:
1:
tipo_vivienda
N
1:
metros_b CABEZA_FAMILIA
od_bloque BLOQUE_PISOS CASA
metros_c
od_casa
:1
escalera
N
planta
puerta
metros_p PISOS
od_piso
UNIDAD 3
MODELO RELACIONAL
Competencias especificas.
El alumno será capaz de:
Modelo Relacional
El modelo relacional fue propuesto por E. F. Codd en 1970, gracias a su coherencia y
facilidad de uso, este modelo se ha convertido en el más usado para la producción de
sistemas manejadores de base de datos.
Con base en estos conceptos, el modelo relacional tiene tres componentes bien
definidos:
1. Una estructura lógica de datos representada por relaciones, la cual se tratará en esta
sección.
2. Un conjunto de reglas de integridad para hacer cumplir que los datos sean y sigan
siendo consistentes a lo largo del tiempo, lo que se tratara en la sección de “Diseño
de bases de datos relacionales" (normalización).
3. Un conjunto de operaciones que definen la forma en la que los datos se manipulan,
tema que se abordara en la sección de “Álgebra relacional”.
Estructura básica.
La estructura fundamental del modelo relacional es una afinidad (tabla) construida por
tuplas (filas o registros) que representan cada una de las entidades que se consideran
interesantes en la base de datos, cada tupla esta conformada por un conjunto de valores o
campos (columnas) que no son mas que los atributos de las entidades. Las características
de una afinidad se resumen a continuación:
Los modelos E-R y relacional son representaciones abstractas y lógicas del mundo
real; debido a que los dos modelos emplean principios de diseño similares, se puede
convertir un diagrama E-R en un diseño relacional.
Entidad Atributos
DORMITORIO - OCUPANTE
DORMITORIO 1:
N ESTUDIANTE
Ubicación NoControl
CantHabitantes Nombre
NoDormitorio Semestre
Renta
Los campos claves o llaves son importantes porque se usan para asegurar que cada
tupla de la afinidad sea identificada de manera única; también se usan para establecer
relaciones entre afinidades y para asegurar la integridad de los datos, un tipo de clave o
llave es la primaria también existen superclaves, claves candidatas y claves secundarias,
las cuales se abordaran en detalle en la sección “Diseño de base de datos relacionales”.
Para determinar los campos relacionados se deben seguir ciertas reglas de acuerdo
a las cardinanildades máximas de la relación:
AUTO-ASIGNACION
EMPLEADO 1:
1 AUTO
NoEmpleado NoLicencia
NombreEmpleado NoSerie
Telefono Color
Marca
Modelo
Por ejemplo para este diagrama las afinidades quedarían de la siguiente manera:
O bien de la siguiente:
PROFESOR 1:
N ESTUDIANTE
NombreProfesor NoControl
Telefono NombreEstudiante
Departamento Carrera
Por ejemplo para este diagrama las afinidades quedarían de la siguiente manera:
ESTUDIANTE-CLASE
ESTUDIANTE N
:M CLASE
NoControl NoClase
NombreEstudiante NombreClase
• Por ejemplo para este diagrama las afinidades quedarían de la siguiente manera:
Por ejemplo para este diagrama las afinidades quedarían de la siguiente manera:
calle
numero
codigo_postal
metros
od_vivienda
VIVIENDA
tipo_vivienda
metros_b
od_bloque BLOQUE_PISOS CASA
metros_c
od_casa
El modelo relacional nos permite definir la estructura de la base de datos, es decir, como
están organizados los datos en tablas o afinidades, cuales son los atributos o campos
principales, como están relacionadas esas tablas a través de los campos relacionados
conocidos también como campos foráneas ya que esos campos no pertenecen afinidad
que representa la entidad.
Algunos productos DMBS no requieren que la base de datos quede definida por un
DDL en formato de archivo de texto. Una alternativa común es proporcionar un medio
gráfico para la definición de una estructura de la base de datos.
Ejemplo de aplicación
El catastro municipal
Como puede observarse, las relaciones existentes son de tipo 1:N (uno a muchos) lo que
significa que en este caso se debe identificar las entidades padres y las entidades hijas ya que de
esta manera se sabrá que campo principal de una afinidad pasara como secundario (clave foránea
o extranjera) a otra. Para empezar se identifica que por cada entidad una afinidad, en caso que
hubiese relaciones de N:M por cada una de estas se generaría una afinidad.
calle
numero curp
codigo_postal nombre_persona
nombre_zona metros apellidos_persona
od_zona od_vivienda od_persona
N
N
1:
1:
tipo_vivienda
N
1:
metros_b CABEZA_FAMILIA
od_bloque BLOQUE_PISOS CASA
metros_c
od_casa
:1
escalera
N
planta
puerta
metros_p PISOS
od_piso
ZONA_URBANA(nombre_zona, od_zona)
Observe también que la entidad PERSONA tiene una relación reflexiva, por lo cual existe
otro atributo que hace referencia a una ocurrencia de la misma entidad que se marca como
atributo “externo”.
Como la entidad VIVIENDA es una entidad que pose una especialización, por lo cual el
atributo que cualifica la especialización se incorpora como campo en esta tabla.
En el caso de PISO esta entidad tiene una relación de uno a muchos con BLOQUE_PISO,
siendo PISO una entidad hija y BLOQUE_PISO una entidad padre, por lo cual los atributos de
BLOQUE_PISO pasan como campos externos a piso, obsérvese que estos se marcan como
atributos externos y como campos llaves ya que junto con escalera, planta y puerta son los que
permiten identificar de manera única a ese piso en ese bloque de casas.
Consideración especial, preste atención al hecho que para las personas que habiten en
casas particulares los atributos escalera, planta y puerta en la entidad PERSONA tomarían
valores nulos, esto podría causar una anomalía (las cuales se trataran en la siguiente unidad), sin
embargo estos campos se necesitarían para identificar en que piso vive determinada persona, este
problema esta impuesto por la exclusividad o habita un piso o una casa particular, no ambas. por
lo cual se agrega una entidad derivada de una relación existente en una especialización en este
caso HABITA_PISO. Y se modifica la entidad PERSONA.
Que pasa si en esta etapa del modelado no se toma en cuenta esta consideración a partir
del esquema semántico del problema, no hay ningún problema, esto se soluciona aplicando la
normalización de las afinidades, sin embargo tomar en cuenta estas consideraciones ahorran
mucho tiempo en el diseño de la base de datos.
UNIDAD 4
Competencias especificas.
El alumno será capaz de:
El diseño de una base de datos usando el modelo relacional, debe satisfacer los
siguientes objetivos:
1. No-existencia de redundancias para minimizar el espacio requerido de
almacenamiento de información y por tanto reduciendo posibles problemas de
integridad en la información almacenada.
2. Aumentar el desempeño de las operaciones de actualización de la base de datos.
3. Aumentar el desempeño y garantizar la fiabilidad de las consultas realizadas acerca
de la información contenida en la base de datos.
En los años setenta, los teóricos relacionales investigaron los tipos de anomalías a
las que las afinidades eran vulnerables. Alguien encontraba una anomalía, la clasificaba y
pensaba en una forma de prevenirla. Cada vez que esto ocurría mejoraban los criterios
para diseñar las afinidades. Estas clases de afinidades y las técnicas para prevenir las
anomalías son llamadas formas normales. Dependiendo de su estructura, una afinidad
puede estar en una primera forma normal, segunda forma normal o alguna otra.
anidadas, esto es, un afinidad en la 2FN también esta en la 1FN y una afinidad en la 5NF,
esta también 4FN, BCNF, 3FN, 2FN, 1FN.
Estas formas normales fueron útiles, aunque tenían limitaciones. Ninguna teoría
garantizaba que una de ellas eliminaría todas las anomalías: cada forma sólo eliminaba
algunas. Esta situación cambió en 1981, cuando R. Fagin definió una nueva, llamada
forma normal dominio/clave (DK/NF).
Anomalias de datos
Cuando no se ha realizado un diseño de bases de datos de forma normalizada surgen con
frecuencia ciertos problemas cuando se quiere manipular la base de datos. Se distinguen
tres anomalías básicas:
• Anomalía de inserción: imposibilidad de dar de alta una tupla o registro por no
disponer del valor de un atributo principal.
• Anomalía de borrado: perdida de información por dar de baja una tupla o registro.
• Anomalía de modificación: tiene que ver con la redundancia, es decir, la repetición
de la misma información en tuplas diferentes y consiguientemente la necesidad de
propagar actualizaciones. En general la normalización reduce la redundancia pero
no la elimina por completo.
El proceso de normalización
El objetivo de la normalización es asegurar que cada afinidad se apague al concepto de
relaciones bien formadas, es decir, que tengan las siguientes características:
• Cada afinidad representa un solo tema. Por ejemplo una afinidad de curso contendrá
solo datos que pertenecen a cursos, de manera que una afinidad de estudiante solo
contendrá datos relacionados con el estudiante.
• Ningún elemento de datos se guardará innecesariamente en más de una afinidad (las
afinidades tienen mínima redundancia controlada). La razón para este requisito es
asegurar que los datos se actualicen en un solo lugar.
• Todos los atributos que no sean claves primarias (atributos no primales) son
dependientes de la llave primaria. La razón para este requisito es asegurar que los
datos sean identificables de manera única por un valor de llave primaria.
• Cada afinidad está libre de anomalías de inserción, actualización o eliminación. Esto
es para asegurar la integridad y consistencia de los datos.
Para lograr el objetivo, el proceso de la normalización nos lleva por los pasos que
conducen a las formas normales sucesivamente mas altas. El concepto de campos clave o
llaves es central para entender el proceso de normalización.
Claves y dependencias
Una clave esta formada por uno o más atributos que identifican de manera única cada
tupla de una afinidad. Una superllave es cualquier llave que de manera única identifique a
cada renglón. Una llave candidata se puede describir como superllave sin atributos
innecesarios. Una llave foránea es un atributo cuyos valores corresponden con los valores
de la llave primaria de la afinidad relacionada. Una llave secundaria se define como
aquella que se usa estrictamente para fines de recuperación de datos.
Es importante recordar que podría ser necesario más de un solo atributo para
definir la dependencia funcional; esto es una clave o llave puede estar compuesta por más
de un atributo. Esta clave de atributos múltiples se conoce como clave o llave compuesta.
Proceso de normalización
En el siguiente diagrama se presenta una afinidad en 1FN pero que contiene dependencias
parciales y transitivas, a continuación se mostrará el procedimiento para eliminar estas
dependencias minimizando el riesgo de tener anomalías por inserción, modificación o
eliminación, cabe mencionar que en cada paso para normalizar se debe hacer un análisis
de las nuevas afinidades resultantes ya en un paso al eliminar cierto tipo de dependencias
pudieran desaparecer otras o incorporarse nuevas.
Dependencia parcial
DEPENDENCIAS PARCIALES:
(PROJ_NUM) → (PROJ_NAME)
(EMP_NUM) → (EMP_NAME, JOB_CLASS, CHG_HOUR)
DEPENDENCIAS TRANSITIVAS:
(JOB_CLASS) → (CHG_HOUR)
PROJ_NUM PROJ_NAME
Dependencia transitiva
PROJ_NUM PROJ_NAME
JOB_CLASS CHG_HOUR
transitiva, la solución es la misma. Generar nuevas afinidades por cada dependencia, las
determinantes de las dependencias permanecen en las afinidad original y se colocan como
llave primaria en las nuevas afinidades. Los dependientes de las dependencias problema
se suprimen de la tabla original y se colocan como atributos no primos de las nuevas
afinidades según corresponda.
Por ejemplo si una afinidad tiene múltiples llaves candidatas y una de ellas es una
llave compuesta, la tabla puede seguir teniendo dependencias parciales con base a esa
llave candidata compuesta, aun cuando la llave primaria elegida sea un solo atributo. En
esos casos, siguiendo el proceso descrito, esas dependencias se percibirían como
transitivas y no se resolverían hasta 3NF. El proceso simplificado descrito antes permitirá
al diseñador llegar al resultado correcto, pero por medio de la practica debería reconocer
todas las llaves candidatas y sus dependencias como tales y resolverlas de forma
apropiada. La presencia de múltiples llaves candidatas también puede influir en la
identificación de dependencias transitivas. Previamente una dependencia transitiva se
definía como existente cuando un atributo no primo determinadas otros atributo no primo.
En presencia de múltiples llaves candidatas, la definición de un atributo no primo como
atributo que no sea parte de cualquier llave candidata es critica. Si el determinante de una
dependencia funcional no es la llave primaria sino que es parte de otra llave candidata,
entonces no es atributo primo y no indica la presencia de una dependencia transitiva.
A B C D
Note que esta estructura tiene dos llaves candidatas: (A, B) y (A, C); la estructura
no tiene dependencias parciales ni transitivas. La condición C → B indica que un atributo
no llave determina parte de la llave primaria y esa dependencia no es transitiva o parcial
porque el dependiente es un atributo primo, por lo cual esta condición hace que no se
satisfagan los requisitos de la BCNF.
A C B D
En este punto la afinidad esta en 1NF pero no esta en 2NF puesto que introduce
una dependencia parcial, por lo que hay que seguir con los procedimientos normales para
producir afinidades buenas.
A C D
C B
Ejemplo de aplicación
El catastro municipal
ZONA_URBANA(nombre_zona, od_zona)
La afinidad VIVIENDA se encuentra en BCFN puesto que el único determinante
funcional es la llave compuesta (calle, numero) y todas las dependencias con el resto de los
atributos es completa.
VIVIENDA(calle, numero, codigo_postal, tipo_vivienda, metros, od_vivienda, nombre_zona)
En el caso de las afinidades CASA_PARTICULAR, BLOQUE_CASA y PISO se
encuentran en BCFN pues presentan las mismas características de VIVIENDA.
CASA_PARTICULAR(calle, numero, metros_c, od_casa, curp_otro)
BLOQUE_CASA(calle, numero, metros_b, od_bloque)
PISO(calle, numero, escalera, planta, puerta, metros_p, od_piso, dni_p)
La afinidad PERSONA se encuentra en 1NF puesto que todos los atributos son atomicos
y no contienen valores nulos (observe que si no se hubiera realizado la consideración descrita en
la unidad anterior el proceso de normalización detecta esta anomalía), no existen dependencias
parciales, por lo cual esta en 2NF y no existen dependencias transitivas por lo cual satisface 3NF
y BCNF.
PERSONA(curp, nombre_persona, apellidos_persona, od_persona, curp_otro, calle, numero)
La afinidad HABITA_PISO esta en BCNF pues todos los atributos no primos dependen
de forma completa del único determinante funcional (curp) .
HABITA_PISO(curp, calle, numero, escalera, planta, puerta)
UNIDAD 5
ÁLGEBRA RELACIONAL
Competencias especificas.
El alumno será capaz de:
Álgebra relacional
Una de las grandes ventajas del modelo relacional es que define un álgebra, llamada
álgebra relacional. En el álgebra relacional existen dos tipos de operadores algebraicos
los básicos y los avanzados.
Las bases de datos relacionales efectúan todas las operaciones en las tablas usando
álgebra relacional, aunque normalmente no se permite utilizarla. El usuario interacciona
con la base de datos a través de una interfaz diferente el SQL (Structured Query
Lenguaje, lenguaje de consulta estructurado), un lenguaje declarativo que permite escribir
un conjunto de datos básicamente un lenguaje de manipulación de datos (DML)
Operadores básicos
Los operadores básicos son: unión, diferencia, selección, proyección y producto. Los
operadores unión, diferencia y producto son operadores binarios, mientras que la
selección y proyección son operadores unarios.
Para realizar las operaciones de unión y diferencia es necesario que dos afinidades
que intervienen en la operación sean compatibles, es decir, cada una de las afinidades
debe tener el mismo número de atributos (campos) y los atributos (campos) entre las
columnas correspondientes deben provenir del mismo dominio.
La unión de dos afinidades se forma añadiendo las tuplas de una afinidad con las tuplas
de la segunda con el propósito de crear una tercera afinidad. El orden en el cual aparecen
las tuplas de la tercera afinidad no tiene importancia, pero las tuplas duplicadas deberán
ser eliminadas, para que esta operación tenga sentido las afinidades deben ser compatibles
de unión. La unión de las afinidades A y B se escribe: A + B o A UNION B. Por ejemplo,
dadas las siguientes afinidades TABACO1 y TABACO2:
TABACO1
Nombre Licencia Hoja Nic Alq
Camel sin filtro R.J Reynolds Tobacco Co. Turca 1.1 15
Malboro Philips Morris Sin especificar 0.9 12
Coronas Tabacalera S.A. Canaria 0.9 15
TABACO2
Nombre Licencia Hoja Nic Alq
Ducados Tabacalera S.A. Sin especificar 1.1 15
Fortuna Tabacalera S.A. Sin especificar 1.0 14
Camel sin filtro R.J Reynolds Tobacco Co. Turca 1.1 15
Lucky sin filtro Sin especificar Sin especificar 1.0 15
Habanos Tabacalera S.A. Sin especificar 1.3 15
TABACO-3
Nombre Licencia Hoja Nic Alq
Camel sin filtro R.J Reynolds Tobacco Co. Turca 1.1 15
Malboro Philips Morris Sin especificar 0.9 12
Coronas Tabacalera S.A. Canaria 0.9 15
Rex Tabacalera S.A. Canaria 0.9 15
Ducados Tabacalera S.A. Sin especificar 1.1 15
Fortuna Tabacalera S.A. Sin especificar 1.0 14
Lucky sin filtro Sin especificar Sin especificar 1.0 15
Habanos Tabacalera S.A. Sin especificar 1.3 15
La diferencia de dos afinidades es una tercera afinidad que contenga aquellas tuplas que
ocurren en la primera afinidad pero no en la segunda. Las afinidades deben ser
compatibles de unión. La diferencia de dos afinidades A y B se escribe A – B o A MINUS
B. Por ejemplo, obtener TABACO4 = TABACO1 MINUS TABACO2
TABACO4
Nombre Licencia Hoja Nic Alq
Malboro Philips Morris Sin especificar 0.9 12
Coronas Tabacalera S.A. Canaria 0.9 15
Rex Tabacalera S.A. Canaria 0.9 15
De la misma forma que en la aritmética, el orden de las afinidades que actuar como
operandos tiene importancia y por tanto A – B no es lo mismo que B – A.
El producto de dos afinidades es la concatenación de todos las tuplas de una afinidad con
todos las tuplas de la segunda. El producto de la afinidad A (con m tuplas) y la afinidad B
(con n tuplas) tiene m veces n tuplas. El producto de dos afinidades se escribe A * B, A
TIMES B, A PRODUCT B. Ejemplo: Dada la siguiente afinidad, obtener TABACO5 =
TABACO1 PRODUCT ESTANCOS
ESTANCOS
Propietario Calle Teléfono
La Pajarita El nido, 5 275-5578
El Clavel El Jardín, 23 444-8765
TABACO5
Nombre Licencia Hoja Nic Alq Propietario Calle Teléfono
Camel s.f R.J Reynolds Turca 1.1 15 La Pajarita El nido, 5 275-5578
Camel s.f R.J Reynolds Turca 1.1 15 El Clavel El Jardín, 23 444-8765
Malboro Philips Morris Sin esp. 0.9 12 La Pajarita El nido, 5 275-5578
Malboro Philips Morris Sin esp. 0.9 12 El Clavel El Jardín, 23 444-8765
Coronas Tabacalera S.A. Canaria 0.9 15 La Pajarita El nido, 5 275-5578
Coronas Tabacalera S.A. Canaria 0.9 15 El Clavel El Jardín, 23 444-8765
Rex Tabacalera S.A. Canaria 0.9 15 La Pajarita El nido, 5 275-5578
Rex Tabacalera S.A. Canaria 0.9 15 El Clavel El Jardín, 23 444-8765
Muchas veces la afinidad resultante contiene tuplas sin significado por lo que se
necesitará llevar a cabo otras operaciones para extraer cualquier información.
Esta operación toma un subconjunto de tuplas que cumplen cierta condición. La nueva
afinidad incluirá las tuplas que cumplan con la condición dada. La selección de escribe
SELECT(NombreAfinidad / Condición). Por ejemplo, obtener TABACO6 = SELECT
( TABACO1 / LICENCIA = Tabacalera S.A.)
TABACO6
Nombre Licencia Hoja Nic Alq
Coronas Tabacalera S.A. Canaria 0.9 15
Rex Tabacalera S.A. Canaria 0.9 15
TABACO7
Nombre Nic Alq
Camel sin filtro 1.1 15
Malboro 0.9 12
Coronas 0.9 15
Rex 0.9 15
Se trata de operaciones muy potentes que realizan operaciones complejas con las
afinidades que forman parte de un esquema relacional. Estos operadores son: la
intersección y la reunión.
Las intersección de dos afinidades es una tercera afinidad que contiene aquellas tuplas
que aparecen tanto en la primera afinidad como en la segunda afinidad estas afinidades
deben ser compatibles de unión. La intersección de dos afinidades se escribe A
INTERSECT B
A3 = A1 INTERSECT A2
= A2 MINUS ((A1 UNION A2) MINUS A1)
TABACO8
Nombre Licencia Hoja Nic Alq
Camel sin filtro R.J Reynolds Tobacco Co. Turca 1.1 15
DESCRIPCION
Hoja Clase Color
Turca y Americana Normal Rubio
Turca y Americana Light Rubio
Holandesa Normal Rubio
Canaria UltraLight Negro
TABACO9
Nombre Licencia Hoja Nic Alq Clase Color
Camel sin filtro R.J Reynolds Tobacco Co. Turca 1.1 15 Normal Rubio
Camel sin filtro R.J Reynolds Tobacco Co. Turca 1.1 15 Light Rubio
Coronas Tabacalera S.A. Canaria 0.9 15 UltraLight Negro
Rex Tabacalera S.A. Canaria 0.9 15 UltraLight Negro
Ejemplo de aplicación
El catastro municipal
Una vez diseñada y construida la base de datos se deben soportar las siguientes operaciones,
analizaremos las operaciones algebraicas que se realizarán obtener información de las afinidades.
En persona se tiene la curp de todas las personas que son propietarias de las casas que
estan identificadas por una calle y numero, si se quiere filtrar obtener esta información de las
casas que solo estan en la zona centro esa información la tiene vivienda. Esta operación se puede
realizar de dos maneras:
PROJECT(SELECT(PERSONA/(PROJECT(SELECT(VIVIENDA/nombre_zona = “centro”))/
calle, numero))/curp.
- Con un operador avanzado: se realiza una junta entre PERSONA Y VIVIENDA y solo
se proyecta el curp de la afinidad resultante.
b) Obtener todo los propietarios de un piso en el bloque de casas de una determinada calle.
c) Obtener todo los pisos de mas de 50 metros cuadrados cuyo propietario tenga
determinado CURP
d) Obtener todas las zonas de la ciudad en las que solo existen casas particulares.
f) Obtener información de los metros cuadrados de solar, agrupados por zonas urbanas y
ordenados por el número total de metros en cada zona urbana.
ZONA_URBANA(nombre_zona, od_zona)
VIVIENDA(calle, numero, codigo_postal, tipo_vivienda, metros, od_vivienda, nombre_zona)
CASA_PARTICULAR(calle, numero, metros_c, od_casa, curp_otro)
BLOQUE_CASA(calle, numero, metros_b, od_bloque)
PISO(calle, numero, escalera, planta, puerta, metros_p, od_piso, dni_p)
PERSONA(curp, nombre_persona, apellidos_persona, od_persona, curp_otro, calle, numero)
La afinidad HABITA_PISO esta en BCNF pues todos los atributos no primos dependen
de forma completa del único determinante funcional (curp) .
HABITA_PISO(curp, calle, numero, escalera, planta, puerta)
UNIDAD 6
LENGUAJE SQL
Competencias especificas.
El alumno será capaz de:
El lenguaje SQL normalizado (ANSI) no nos servirá para resolver todos los
problemas, aunque si se puede asegurar que cualquier sentencia escrita en ANSI será
interpretable por cualquier DBMS en cualquier computadora y cualquier sistema
operativo. Esto conlleva a que diferentes sistemas de información puedan intercambiar
datos pasando consultas y respuestas SQL entre sí.
Los comandos SQL pueden ser utilizados en forma interactiva, como lenguaje de
consulta, o puede insertarse en programas de aplicación. En este último caso son
procesados por un precompilador y por tanto SQL no se considera como un lenguaje de
programación estrictamente dicho, más bien como un sublenguaje de datos o lenguaje de
acceso a los datos, embebido en otros lenguajes.
Componentes de SQL
SQL está compuesto por comando, cláusulas, operadores y funciones de agregado. Estos
elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de
datos.
Comandos
COMANDOS DDL
Comando Descripción
CREATE Utilizado para crear nuevas tablas, campos e índices.
DROP Empleado para eliminar tablas e índices.
ALTER Utilizado para modificar tablas agregando campos o combinando
definiciones de campos.
COMANDOS DML
Comando Descripción
SELECT Utilizado para consultar registros (tuplas) de las tablas (afinidades) de la
base de datos que satisfagan u criterio determinado.
INSERT Utilizado para cargar conjuntos de datos en la base de datos en una única
operación.
UPDATE Utilizado para modificar los valores de los campos y registros
especificados.
DELETE Utilizado para eliminar registros de una tabla de una base de datos.
Cláusulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea
seleccionar o modificar
Clausula Descripción
FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros
WHERE Utilizada para especificar las condiciones que deben reunir los registros
seleccionados en grupos específicos
ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden
específico
Funciones de agregado
Se usan dentro de una clausula SELECT en grupos de registros para devolver un único
valor que se aplica a un grupo de registros
Función Descripción
AVG Utilizada para calcular el promedio de los valores de un campo determinado
SUM Utilizada para devolver la suma de todos los valores de un campo determinado
Operadores Lógicos
Operador Descripción
AND “Y” lógico. Evalúa dos condiciones y devuelve un valor de verdad solo si
ambas son ciertas.
OR “O” lógico. Evalúa dos condiciones y devuelve un valor de verdad solo si una
de las dos o las dos son ciertas.
Operadores de comparación
Operador Descripción
< Menor que
<> Distinto de
= Igual que
Dada una sentencia SQL de selección que incluye todas las posibles cláusulas, el orden de
ejecución de las mismas es el siguiente:
1. Cláusula FROM
2. Cláusula WHERE
3. Cláusula GROUP BY
4. Cláusula HAVING
5. Cláusula SELECT
6. Cláusula ORDER BY
Para modificar el diseño de una tabla ya existente, se pueden modificar los campos o los
índices existentes, asi mismo se puede eliminar campos e indices:
Por ejemplo si se desea agregar un campo salario de tipo moneda a una tabla de
empleados quedaría:
Para agregar un campo relacionado con otra tabla, en este caso a una tabla pedidos
se agrega un campo indice de la tabla empleado, en este caso se asocia a un empleado un
pedido.
Consultas de Acción
Las consultas de acción son aquellas que no devuelven ningún registro, son las
encargadas de acciones como añadir y borrar y modificar registros.
INSERT INTO
Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta
consulta puede ser de dos tipo:
• Insertar en una tabla los registros contenidos en otra tabla.: Para seleccionar registros e
insertarlos en una tabla nueva. En este caso la sintaxis es la siguiente:
Se pueden utilizar las consultas de creación de tabla para archivar registros, hacer
copias de seguridad de las tablas o hacer copias para exportar a otra base de datos o
utilizar en informes que muestren los datos de un periodo de tiempo concreto. Por
ejemplo, se podría crear un informe de Ventas mensuales por región ejecutando la misma
consulta de creación de tabla cada mes. Se pueden insertar registros de otras tablas en
otras bases de datos.
DELETE
Crea una consulta de eliminación que elimina los registros de una o más de las tablas
listadas en la cláusula FROM que satisfagan la cláusula WHERE. Esta consulta elimina
los registros completos, no es posible eliminar el contenido de algún campo en concreto.
Su sintaxis es:
Una vez que se han eliminado los registros utilizando una consulta de borrado, no
puede deshacer la operación. Si desea saber qué registros se eliminarán, primero examine
los resultados de una consulta de selección que utilice el mismo criterio y después ejecute
la consulta de borrado. Mantenga copias de seguridad de sus datos en todo momento. Si
elimina los registros equivocados podrá recuperarlos desde las copias de seguridad.
UPDATE
Crea una consulta de actualización que cambia los valores de los campos de una tabla
especificada basándose en un criterio específico. Su sintaxis es:
UPDATE no genera ningún resultado. Para saber qué registros se van a cambiar,
hay que examinar primero el resultado de una consulta de selección que utilice el mismo
criterio y después ejecutar la consulta de actualización. Si en una consulta de
actualización suprimimos la cláusula WHERE todos los registros de la tabla señalada
serán actualizados.
Consultas de Selección
Las consultas de selección se utilizan para indicar al motor de datos que devuelva
información de las bases de datos, esta información es devuelta en forma de conjunto de
registros. Este conjunto de registros puede ser modificable.
Consultas básicas
Actividad para puntos extra (1): Investigar para que sirven los predicados ALL, TOP,
DISTINCT, DISTINCTOW y AS
La cláusula WHERE
La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas
en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. Después de
escribir esta cláusula se deben especificar las condiciones expuestas en los apartados
anteriores. Si no se emplea esta cláusula, la consulta devolverá todas las filas de la tabla.
WHERE es opcional, pero cuando aparece debe ir a continuación de FROM. Ejemplos:
Actividad para puntos extra (2): Investigar para que sirven los operadores LIKE,
BETWEEN e IN
GROUP BY
Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la
cláusula HAVING para filtrar los registros una vez agrupados.
Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier
registro agrupado por la cláusula GROUP BY que satisfaga las condiciones de la cláusula
HAVING.
AVG
Avg(expr)
En donde expr representa el campo que contiene los datos numéricos para los que
se desea calcular la media o una expresión que realiza un cálculo utilizando los datos de
dicho campo. La media calculada por Avg es la media aritmética (la suma de los valores
dividido por el número de valores). La función Avg no incluye ningún campo Null en el
cálculo.
Count
Count(expr)
En donde expr contiene el nombre del campo que desea contar. Los operandos de
expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la
cual puede ser intrínseca o definida por el usuario pero no otras de las funciones
agregadas de SQL). Puede contar cualquier tipo de datos incluso texto.
Aunque expr puede realizar un cálculo sobre un campo, Count simplemente cuenta
el número de registros sin tener en cuenta qué valores se almacenan en los registros. La
función Count no cuenta los registros que tienen campos null a menos que expr sea el
carácter comodín asterisco (*). Si utiliza un asterisco, Count calcula el número total de
registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente
más rápida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*').
SELECT Count(*) AS Total FROM Pedidos
Podemos hacer que el gestor cuente los datos diferentes de un determinado campo
SELECT Count(DISTINCT Localidad) AS Total FROM Pedidos
Max, Min
Min(expr)
Max(expr)
En donde expr es el campo sobre el que se desea realizar el cálculo. Expr pueden
incluir el nombre de un campo de una tabla, una constante o una función (la cual puede
ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL).
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais =
'España'
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais =
'España'
Sum
Sum(expr)
En donde expr representa el nombre del campo que contiene los datos que desean
sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos.
Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante
o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las
funciones agregadas de SQL).
SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM
DetallePedido
Subconsultas
Una subconsulta es una instrucción SELECT anidada dentro de una instrucción SELECT,
SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta.
Se puede utilizar el predicado ANY o SOME, los cuales son sinónimos, para
recuperar registros de la consulta principal, que satisfagan la comparación con cualquier
otro registro recuperado en la subconsulta. El ejemplo siguiente devuelve todos los
productos cuyo precio unitario es mayor que el de cualquier producto vendido con un
descuento igual o mayor al 25 por ciento:
Se puede utilizar también alias del nombre de la tabla en una subconsulta para
referirse a tablas listadas en la cláusula FROM fuera de la subconsulta. El ejemplo
siguiente devuelve los nombres de los empleados cuyo salario es igual o mayor que el
salario medio de todos los empleados con el mismo título. A la tabla Empleados se le ha
dado el alias T1:
Se puede utilizar una operación INNER JOIN en cualquier cláusula FROM. Esto
crea una combinación por equivalencia, conocida también como unión interna. Las
combinaciones equivalentes son las más comunes; éstas combinan los registros de dos
tablas siempre que haya concordancia de valores en un campo común a ambas tablas.
SELECT campos FROM tb1 INNER JOIN (tb2 INNER JOIN [( ]tb3
[INNER JOIN [( ]tablax [INNER JOIN ...)]
ON tb3.campo3 comp tbx.campox)]
ON tb2.campo2 comp tb3.campo3)
ON tb1.campo1 comp tb2.campo2
Puede combinar los resultados de dos o más consultas, tablas e instrucciones SELECT, en
cualquier orden, en una única operación UNION. El ejemplo siguiente combina una tabla
existente llamada Nuevas Cuentas y una instrucción SELECT:
Todas las consultas en una operación UNION deben pedir el mismo número de
campos, no obstante los campos no tienen porqué tener el mismo tamaño o el mismo tipo
de datos. Se puede utilizar una cláusula GROUP BY y/o HAVING en cada argumento
consulta para agrupar los datos devueltos. Puede utilizar una cláusula ORDER BY al final
del último argumento consulta para visualizar los datos devueltos en un orden específico.
Ejemplo de aplicación
El catastro municipal
ZONA_URBANA(nombre_zona, od_zona)
/* Catastro.sql
Crear el esquema de la base de datos correspondiente al
problema Catastro Municipal.
Si existe la base de datos se borrar para crear una nueva
base de datos.
*/
CONSTRAINT pk_viv
PRIMARY KEY (calle, numero),
CONSTRAINT ck_num
CHECK (numero > 0),
CONSTRAINT ck_tv
CHECK (tipo_vivienda IN ('C', 'B')),
CONSTRAINT fk_viv_zon
FOREIGN KEY (nombre_zona)
REFERENCES ZonaUrbana(nombre_zona) );
Una vez creada la base de datos, se puede proceder a su llenado mediante comandos
INSERT TO, los datos de la base de datos se cargaran con el archivo CatastroIns.sql a
continuacion se muestra un ejemplo del comando INSERT para cada tabla.
UNIDAD 7
Competencias especificas.
El alumno será capaz de:
Este modelo trata de almacenar en la base de datos los objetos completos (estado y
comportamiento). Una base de datos orientada a objetos es una base de datos que
incorpora todos los conceptos importantes del paradigma de objetos:
Los programas de aplicación de los usuarios pueden operar sobre los datos
invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la
forma en la que se han implementado. Esto podría denominarse independencia entre
programas y operaciones.
Un ODBMS hace que los objetos de la base de datos aparezcan como objetos de
un lenguaje de programación en uno o más lenguajes de programación a los que dé
soporte. Un ODBMS extiende los lenguajes con datos persistentes de forma transparente,
control de concurrencia, recuperación de datos, consultas asociativas y otras capacidades.
Características opcionales:
1. Herencia múltiple
2. Comprobación de tipos e inferencia de tipos
3. Sistema de base de datos distribuido
4. Soporte de versiones
Identidad de objetos
Un sistema de BDOO provee una identidad única a cada objeto independiente
almacenado en la base de datos. Esta identidad única suele implementarse con un
identificador de objeto único, generado por el sistema, u OID. El valor de un OID no es
visible para el usuario externo, sino que el sistema lo utiliza a nivel interno para
identificar cada objeto de manera única y para crear y manejar las referencias entre
objetos.
Constructores de tipos
En las BDOO, los valores (o estados) de los objetos complejos se pueden construir a
partir de otros objetos mediante ciertos constructores de tipos. Una forma de representar
tales objetos es considerar a cada objeto como tripleta (i, c, v), donde i es un identificador
de objeto único (el OID), c es un constructor (esto es, una indicación de cómo se
construye el valor del objeto) y v es el valor (o estado) del objeto. Puede haber varios
constructores, según el modelo de datos y el sistema OO.
Otros constructores de uso más común son los de listas y de arreglos. También
existe un dominio D que contiene todos los valores atómicos básicos que están
disponibles directamente en el sistema. Por lo regular estos incluyen los enteros, los
números reales, las cadenas de caracteres, los tipos boléanos, las fechas y cualesquiera
otros tipos de datos que el sistema maneje directamente.
Encapsulamiento
Tanto la estructura de los objetos como las operaciones que se pueden aplicar a ellos se
incluyen en las definiciones de clases de los objetos.
Hay varios lenguajes posibles en los que se pueden integrar estos conceptos:
A la hora de decidir que opción utilizar se debe tener en cuenta que los Lenguajes
Persistentes suelen ser potentes y resulta relativamente sencillo cometer errores de
programación que dañen las bases de datos. La complejidad de los lenguajes hace la
optimización automática de alto nivel, como la reducción de E/S de disco, resulte difícil.
En muchas aplicaciones, la posibilidad de las consultas declarativas es de gran
importancia, pero los lenguajes persistentes no permiten actualmente las consultas
declarativas sin que aparezcan problemas de algún tipo.
Para permitir la representación directa de parecidos entre las clases, hay que
ubicarlas en una jerarquía de especializaciones. El concepto de jerarquía de clases es
parecido al de especialización del modelo E-R.
Puesto que el tamaño de los objetos es considerable, un SGBD podría obtener una
porción del objeto y proporcionarla al programa de aplicación antes de obtener todo el
objeto. El SGBD podría también usar técnicas de almacenamiento intermedio y caché
para obtener por anticipado porciones del objeto, antes de que el programa de aplicación
necesite tener acceso a ellas.
Como un ODBMS permite a los usuarios crear nuevos tipos, y como un tipo
incluye tanto estructura como operaciones, podemos considerar que un ODBMS tiene un
sistema de tipos extensibles. Podemos crear bibliotecas de nuevos tipos definiendo su
estructura y operaciones, incluso con tipos complejos.
Polimorfismo
El polimorfismo se refiere al uso de la misma firma de mensaje para dirigir diferentes
métodos en diferentes clases. Cuando el diseñador envía una señal a un objeto, el método
de la clase de objeto, posiblemente heredado, procesa la señal.
Creación de versiones
Muchas aplicaciones de bases de datos que usan sistemas OO requieren la existencia de
varias versiones del mismo objeto.
Cabe señalar que puede haber más de dos versiones de un objeto. En caso que se
requieran dos versiones, además del módulo original. Se puede actualizar
concurrentemente las propias versiones del mismo módulo del software. Esto se llama
ingeniería concurrente. Sin embargo, siempre llega el momento en que es preciso
combinar (fusionar) estas dos versiones para que la versión hibrida incluya los cambios
realizados. Es necesario de que sus cambios sean compatibles.
Como se deduce del análisis anterior, un SGBDOO debe ser capaz de almacenar
y controlar múltiples versiones del mismo objeto.
proporcionó la referencia, de qué manera fue dicho contacto, o si debe compensarse con
una comisión, sería necesario reestructurar la base de datos para añadir este tipo de
modificaciones. Por el contrario, en una BDOO, el usuario puede añadir una “subclase”
de la clase de clientes para manejar las modificaciones que representan los clientes por
referencia.