Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proyecto P.A.V.
Plataforma de Aprendizaje Virtual
Vicerrectoría Académica
Proyecto P.A.V.
Plataforma de Aprendizaje Virtual
MÓDULO VIRTUAL BASES DE DATOS
VICERRECTORÍA ACADÉMICA
PROYECTO P.A.V.
PLATAFORMA DE APRENDIZAJE VIRTUAL
TECNOLÓGICO DE ANTIOQUIA
INSTITUCIÓN UNIVERSITARIA
MEDELLÍN
2008
Realización
Realización
Vicerrector Académico
John Harvey Garavito Londoño
Docente (Autor)
Oralia Cortés Grajales
1.1. Historia
El término base de datos fue acuñado por primera vez en 1963, en un simposio celebrado
en California. De forma sencilla podemos indicar que una base de datos no es más que un
conjunto de información relacionada que se encuentra agrupada o estructurada. El archivo
por sí mismo, no constituye una base de datos, sino más bien la forma en que está
organizada la información es la que da origen a la base de datos. Las bases de datos
manuales, pueden ser difíciles de gestionar y modificar. Por ejemplo, en una guía de
teléfonos no es posible encontrar el número de un individuo si no sabemos su apellido,
aunque conozcamos su domicilio. Del mismo modo, en un archivo de pacientes en el que la
información esté desordenada por el nombre de los mismos, será una tarea bastante
engorrosa encontrar todos los pacientes que viven en una zona determinada. Los problemas
expuestos anteriormente se pueden resolver creando una base de datos informatizada.
Desde el punto de vista informático, una base de datos es un sistema formado por un
conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un
conjunto de programas que manipulan ese conjunto de datos. Desde el punto de vista más
formal, podríamos definir una base de datos como un conjunto de datos estructurados,
fiables y homogéneos, organizados independientemente en máquina, accesibles a tiempo
real, compartibles por usuarios concurrentes que tienen necesidades de información
diferente y no predecible en el tiempo.
2
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Conceptos Básicos de bases de
datos
Bit: 0 o 1
Byte: conjunto de bits
Campo: Conjunto de bytes la unidad más pequeña a la cual uno puede referirse en
un programa.
Registro: Colección de campos de iguales o de diferentes tipos.
Archivo: Colección de registros almacenados siguiendo una estructura homogénea.
Base de datos: Es una colección de archivos interrelacionados
Campo clave: Es un campo particular dentro del registro, que permite la
identificación exclusiva y unívoca de cada registro. La clave debe ser un valor que no
se repita, como por ejemplo, el número de cédula de identidad, número de
identificación, el número de carné en una universidad o el número de seguro social.
Enlace: Relación entre una secuencia de nodos, en los que se guardan campos de
datos
Estructura de datos de árbol: Es una forma de organizar un conjunto de datos
elementales con el objetivo de facilitar su manipulación la organización solo sigue una
jerarquía un nodo proviene de un solo nodo.
Estructura de datos en red: Es igual a la estructura de datos en árbol, su
diferencia está en que un nodo proviene de varios nodos.
Diagramas de estructura de datos: Es una descripción de la relación entre
entidades (personas, lugares, eventos y objetos) de un sistema y el conjunto de
información relacionado con la entidad.
Algoritmo: Un algoritmo es el conjunto de operaciones y procedimientos que deben
seguirse para resolver un problema
3
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Definiciones de Base de datos
. Ibid., p. 6.
4
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Tipos de bases de datos
JERARQUÍA O ÁRBOL: Puede representar dos tipos de relaciones entre los datos:
relaciones de uno a uno y relaciones de uno a muchos.
RED O GRAFO: Este modelo permite la representación de muchos a muchos, de tal
forma que cualquier registro dentro de la base de datos puede tener varias
ocurrencias superiores a él. El modelo de red evita redundancia en la información, a
través de la incorporación de un tipo de registro denominado el conector.
MODELO RELACIONAL: Este modelo se está empleando con más frecuencia en la
práctica, debido a las ventajas que ofrece sobre los dos modelos anteriores, entre
ellas, el rápido entendimiento por parte de usuarios que no tienen conocimientos
profundos sobre Sistemas de Bases de Datos.
BASES DE DATOS ORIENTADAS A OBJETOS (BDOO): Las BDOO almacenan y
manipulan información que puede ser digitalizada (representada) por objetos,
proporcionan una estructura flexible con acceso ágil, rápido, con gran capacidad de
modificación.
Además combina las mejores cualidades de los archivos planos, las bases jerárquicas y
relacionales.
. Ibíd., p. 6.
5
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Componentes que integran un
sistema de base de datos
6
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Definición del esquema: es decir la creación del esquema original de
la base de datos. Esto lo hace escribiendo una serie de definiciones en
lenguaje DDL lo que genera las tablas y lo graba en el diccionario de
datos.
Definición de la estructura de almacenamiento y del método de
acceso: esto se lleva a cabo escribiendo una serie de definiciones con
el mismo DDL
Modificación del esquema y de la organización física: ya sea la
modificación del esquema de la base de datos o de la descripción de la
organización física del almacenamiento. Estos cambios, aunque son
poco frecuentes, se hacen usando DDL, compilándolas y aplicándolas al
diccionario de datos.
Concesión de autorización para el acceso de datos: es decir
administrar la seguridad de la base de datos, o sea conceder acceso o
denegarlo a un usuario en particular.
Especificación de las limitantes de integridad: estas limitantes se
conservan en una estructura especial del sistema que consulta el
manejador de bases de datos cada vez que se lleva a cabo una
actualización a un dato de la base de datos.
7
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
6. Ventajas y desventajas de una
base de datos
Facilidad para tener acceso a los datos: suponga que el gerente de la empresa
llamada Aceites Esenciales S.A. desea saber la información de todos los clientes que
consumieron Extracto de manzanilla durante los primeros tres meses del año en
curso, ordenados por municipio. Ante un requerimiento de estos que no estaba
contemplado en el sistema original, tocaba hacer dos cosas; sacar el listado completo
de todos los clientes y extraerlos manualmente o sentar a un programador por una
semana o más para que haga el programa para hacer la consulta. La pregunta
esencial es y que se va a hacer la siguiente vez que se requiera una consulta que no
estaba inicialmente prevista?
Aislamiento o independencia de los datos: puesto que los datos están repartidos
en varios archivos, y estos pueden tener diferentes formatos, es difícil escribir nuevos
programas para obtener los datos apropiados.
8
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
que la chequera cuesta $100 y el retiro es por $200, entonces el modulo de
descuento de chequeras escribirá el valor $900 en el archivo, y el modulo de retiros
de los clientes escribe $800, luego el saldo final será $800 que fue el ultimo datos
escrito en el archivo. Será este dato correcto?
Seguridad: el empleado de nomina debe tener acceso a los datos de los empleados
y no de los clientes, y a la vez un cajero debe tener acceso a la información de
clientes y no a la de los empleados.
Integridad: será lógico un precio de un producto que sea menor que cero? Para esto
se imponen ciertos limitantes de consistencia pero que pasara cuando resulten
nuevos limitantes?
Complejidad: Los SGBD son conjuntos de programas que pueden llegar a ser
complejos con una gran funcionalidad. Es preciso comprender muy bien esta
funcionalidad para poder realizar un buen uso de ellos.
Coste del equipamiento adicional: Tanto el SGBD, como la propia base de datos,
pueden hacer que sea necesario adquirir más espacio de almacenamiento. Además,
para alcanzar las prestaciones deseadas, es posible que sea necesario adquirir una
máquina más grande o una máquina que se dedique solamente al SGBD. Todo esto
hará que la implantación de un sistema de bases de datos sea más cara.
Vulnerable a los fallos: El hecho de que todo esté centralizado en el SGBD hace
que el sistema sea más vulnerable ante los fallos que puedan producirse. Es por ello
que deben tenerse copias de seguridad (Backup).
Tipos de Campos: Cada Sistema de Base de Datos posee tipos de campos que
pueden ser similares o diferentes. Entre los más comunes podemos nombrar:
9
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Autoincrementables: son campos numéricos enteros que incrementan en una unidad
su valor para cada registro incorporado. Su utilidad resulta: Servir de identificador ya
que resultan exclusivos de un registro .
. ¿Qué son las bases de datos. Obtenido en Internet el 22 agosto de 2008. Hora: 10.42 pm
http://www.maestrosdelweb.com/principiantes/%C2%BFque-son-las-bases-de-datos/
. Ibíd.
. Ibíd. P. 6
10
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
7. Abstracción de los datos
Una base de datos es en esencia una colección de archivos relacionados entre sí, de la cual
los usuarios pueden extraer información sin considerar las fronteras de los archivos. Los
niveles de abstracción son la forma de esconder la complejidad de los datos para que
usuarios no familiarizados con las computadoras puedan manipular los datos.
Existen diferentes niveles de abstracción para simplificar la interacción de los
usuarios con el sistema; Interno, conceptual y externo, específicamente el de
almacenamiento físico, el del usuario y el del programador.
El siguiente nivel más alto de abstracción, describe que datos son almacenados realmente
en la base de datos y las relaciones que existen entre los mismos, describe la base de datos
completa en términos de su estructura de diseño. El nivel conceptual de abstracción lo usan
los administradores de bases de datos, quienes deben decidir qué información se va a
guardar en la base de datos.
1. Definición de los datos: Se describen el tipo de datos y la longitud de campo todos los
elementos direccionales en la base. Los elementos por definir incluyen artículos elementales
(atributos), totales de datos y registros conceptuales (entidades).
2. Relaciones entre datos: Se definen las relaciones entre datos para enlazar tipos de
registros relacionados para el procesamiento de archivos múltiples.
En el nivel conceptual la base de datos aparece como una colección de registros lógicos, sin
descriptores de almacenamiento. En realidad los archivos conceptuales no existen
físicamente. La transformación de registros conceptuales a registros físicos para el
almacenamiento se lleva a cabo por el sistema y es transparente al usuario .
11
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1. Nivel de visión.
Nivel más alto de abstracción, es lo que el usuario final puede visualizar del sistema
terminado, describe sólo una parte de la base de datos al usuario acreditado para verla. El
sistema puede proporcionar muchas visiones para la misma base de datos.
Figura 1
12
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
8. Sistema Manejador de Bases de
Datos – DBMS
Es el corazón de la base de datos ya que se encarga del control total de los posibles
aspectos que la puedan afectar. Es una colección de numerosas rutinas de software
interrelacionadas, cada una de las cuales es responsable de alguna tarea específica .
El DBMS también conocido como el Gestor de Base de Datos, es como la interfase entre la
base de datos física y las peticiones del usuario. El DBMS interpreta las peticiones de
entrada/salida del usuario y las manda al sistema operativo para la transferencia de datos
entre la unidad de memoria secundaria y la memoria principal. El siguiente grafico ilustra
mejor este funcionamiento:
13
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Figura 2
Algunos ejemplos de manejadores de bases de datos son: Dbase, Fox, Access, Informix,
Unify, Oracle, Internase
14
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
9. Lenguaje de consulta
estructurado (SQL)
Denominado por sus siglas como: DDL(Data definition Language), permite definir un
esquema de base de datos por medio de una serie de definiciones que se expresan en un
lenguaje especial, el resultado de estas definiciones se almacena en un archivo especial
llamado diccionario de datos.
15
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
10.Estructura General del Sistema
Un sistema de base de datos se encuentra dividido en módulos cada uno de los cuales
controla una parte de la responsabilidad total de sistema. En la mayoría de los casos, el
sistema operativo proporciona únicamente los servicios más básicos y el sistema de la base
de datos debe partir de esa base y controlar además el manejo correcto de los datos. Así el
diseño de un sistema de base de datos debe incluir la interfaz entre el sistema de base de
datos y el sistema operativo.
Una forma gráfica de representar los componentes antes mencionados y la relación que
existe entre ellos sería la siguiente.
16
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Figura 3
17
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
11.Modelo de datos
Se usan para describir datos en los niveles conceptual y de visión, es decir, con este modelo
representamos los datos de tal forma como nosotros los captamos en el mundo real, tienen
una capacidad de estructuración bastante flexible y permiten especificar restricciones de
datos explícitamente. Existen diferentes modelos de este tipo como el entidad relación y el
orientado a objetos, pero el más utilizado por su sencillez y eficiencia es el modelo Entidad-
Relación.
El Modelo Entidad-Relación: Denominado por sus siglas como: E-R; Este modelo representa
a la realidad a través de entidades, que son objetos que existen y que se distinguen de otros
por sus características, por ejemplo: un alumno se distingue de otro por sus características
particulares como lo es el nombre, o el numero de control asignado al entrar a una
institución educativa, así mismo, un empleado, una materia, etc.
18
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Modelo jerárquico: Es similar al modelo de red en cuanto a las relaciones y datos,
ya que estos se representan por medio de registros y sus ligas. La diferencia radica
en que están organizados por conjuntos de árboles en lugar de gráficas arbitrarias.
Figura 4
19
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Modelo de Red: Este modelo representa los datos mediante colecciones de registros
y sus relaciones se representan por medio de ligas o enlaces, los cuales pueden verse
como punteros. Los registros se organizan en un conjunto de gráficas arbitrarias. Un
modelo jerárquico presenta una estructura como la que se muestra en la figura 5.
Figura 5
Modelo Relacional: En este modelo se representan los datos y las relaciones entre
estos, a través de una colección de tablas, en las cuales los renglones (tuplas)
equivalen a los cada uno de los registros que contendrá la base de datos y las
columnas corresponden a las características (atributos) de cada registro localizado en
la tupla. Es el tipo de base de datos más difundido y utilizado en la actualidad y el
cual veremos en detalle en el segundo encuentro. Un modelo de datos relacional,
presenta una estructura como la que se muestra en la figura 6.
20
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Figura 6
Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36. Diseño: Equipo Técnico P.A.V. Agosto del 2008
Modelos físicos de datos: Se usan para describir a los datos en el nivel más bajo,
aunque existen muy pocos modelos de este tipo, básicamente capturan aspectos de
la implementación de los sistemas de base de datos. Existen dos clasificaciones de
este tipo que son:
Modelo unificador
Memoria de elementos .
. Ibid., p 23
. Ibíd., pg. 23
21
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
12. Ciclo de vida de una base de
datos
Bases de datos-Modelo de datos-Ciclo de vida
En reunión con el cliente se deben documentar los tres grupos de usuarios definidos en la
introducción de la guía, las necesidades de información de cada uno de ellos, así como los
informes que cada uno necesita para su actividad y el contenido de los mismos. Cuanta más
precisión exista en estos requisitos iniciales más preciso será el desarrollo de la base de
datos.
En esta reunión también debe quedar documentados los niveles de seguridad de los grupos
de usuarios, los derechos de cada uno de ellos sobre los datos, los requisitos de los sistemas
informáticos del cliente (sistema operativo, tipo de red, servidores, etc.) y la ubicación de
los usuarios.
Un cuestionario muy sencillo pero muy útil para el administrador es el siguiente (a rellenar
por todos los usuarios):
Nombre
Cargo
Área de Responsabilidad
Obligaciones principales que requieren información de la base datos
¿De qué aplicaciones recibe información?
¿Con cuánta frecuencia recibe información?
¿Qué hace con esta información?
¿Qué precauciones de seguridad debe tomar con respecto a la información?
¿Para qué aplicación proporciona datos?
22
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
¿Están contemplados cambios para alguna de sus actividades actuales que involucren
alguna de las informaciones anteriores?
3. Viabilidad económica. ¿Se pueden identificar los beneficios? ¿Los beneficios costearían el
desarrollo del sistema? ¿Se pueden medir los costes y los beneficios?
Aunque un poco al margen del tema es conveniente parar en este momento y planificar las
acciones a realizar elaborando un cronograma del proyecto y un organigrama con las
responsabilidades de cada miembro del equipo. Conviene señalar quienes van a ser los
interlocutores y fijar un calendario de reuniones de seguimiento del proyecto.
Hay que definir la figura del validador, esta persona será la encargada de velar en cada
momento que no se está rebasando el alcance del proyecto, así como asegurar que la
implementación está encaminada a subsanar las necesidades del cliente.
12.4. Diseño
23
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Si parte de la información necesaria para crear algún elemento establecido ya se encuentra
implementado en otro sistema de almacenamiento hay que documentar que relación existirá
entre uno y otro y detallar los sistemas que eviten la duplicidad o incoherencia de los datos.
El diseño consta, como se vio anteriormente, de tres fases: el diseño global o conceptual, el
diseño lógico y el modelo físico.
12.5. Implementación
Una vez totalmente detallado el modelo conceptual se comienza con la implementación física
del modelo de datos, a medida que se va avanzando en el modelo el administrador del
sistema va asegurando la corrección del modelo y el validador la utilidad del mismo.
La implementación consiste en el desarrollo de las tablas, los índices de los mismos, las
condiciones de validación de los datos, la relación entre las diferentes tablas. Por otro lado,
la definición de las consultas y los parámetros a utilizar por cada una de ellas.
En esta última etapa todos los usuarios del sistema acceden a la base de datos y deben
asegurarse el correcto funcionamiento de la misma, que sus derechos son los adecuados,
teniendo a su disposición cuanta información necesiten. También deberán asegurarse que el
acceso a los datos es cómodo, práctico, seguro y que se han eliminado, en la medida de lo
posible, las posibilidades de error.
El administrador se asegura que todos los derechos y todas las restricciones han sido
implementadas correctamente y que se ha seguido en Tutorial de estilo en la totalidad de la
implementación.
El validador se asegurará que todas las necesidades del cliente han sido satisfechas.
El contenido del tema 12: Ciclo de Vida de una base de datos ha sido íntegramente elaborado por
Claudio Casares www.lobocom.es/~claudio
24
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 2
Modelo Entidad
Relación (E/R)
El diseño conceptual es el proceso por el cual se construye un modelo
de la información que se utiliza en una empresa u organización, el
objetivo más esencial de la fase de requerimientos es crear un modelo
de los datos del usuario. Tal modelo identifica las cosas que se van a
almacenar en la base de datos y define sus estructuras y las relaciones,
es el modelo entidad relación uno de los modelos más conocidos,
simples y claros donde se puede expresar gráficamente toda la
estructura de la base de datos.
1. Modelo Entidad Relación
Definición: Es la percepción del mundo real. Colección de objetos básicos llamados entidades
y relaciones. El modelo contiene ciertas restricciones a la que debe de ajustarse los datos.
Lo que hace al modelo entidad relación universal es que no está enfocado al diseño de un
modelo de bases de datos particular.
Entidades
Atributos
Relaciones
Cardinalidad
Claves
26
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Ventajas del modelo entidad
relación
Constituye la base del modelo conceptual de datos.
Es el modelo semántico más popular encontrado en los libros..
Proporciona estructuras que muestran el diseño general de los requerimientos de datos
de los usuarios.
Va de lo particular a lo general
Es muy flexible está enfocado al diseño de muchas situaciones.
27
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Pasos Para Construir El Modelo
Entidad Relación
Identificación de entidades.
Identificación de relaciones.
Elaborar el modelo.
Identificar atributos.
Refinar modelo.
Pasar el modelo entidad relación a un modelo implementable (modelo
relacional).
Es toda cosa u objeto significativo (real ó imaginario) del cual se requiere conocer ó
almacenar información.
Toda entidad se representa por medio de un rectángulo con el nombre de la entidad dentro
del rectángulo en mayúsculas.
Ejemplo
Es el paso central del proceso de modelo entidad relación. Los diversos tipos de entidades
son:
28
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Toda persona realiza una transacción y que la acción de esta recae siempre sobre un
objeto dado.
Todas las personas y los objetos residen y se almacenan en un lugar
Ejemplo
Se tienen dos entidades estudiante, clase. La relación entre estudiante y clase es:
Cada estudiante debe tener una ó más clases y cada clase debe de estar compuesta por uno
ó más estudiantes.
Toda relación tiene dos extremos y para cada uno de los cuales existen:
• Un grado de cardinalidad
29
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1:1 uno a uno
30
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
N:M muchos a muchos
31
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3.2.3. Una condición opcional ó mandatoria
Cada estudiante debe inscribirse en uno ó más club Y cada club puede tener uno ó más
estudiantes.
32
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3.2.4. RELACIONES RECURSIVAS
Para este tipo de relaciones también se tiene en cuenta las reglas anteriores como:
Cada cliente puede recomendar uno y solo un cliente y cada cliente puede ser
recomendado por uno y solo un cliente.
Para elaborar el modelo entidad relación se tienen en cuenta las entidades que tengo
relacionadas sin repetir entidades.
Ejemplos:
33
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Imagen basada en: http://gemini.udistrital.edu.co/comunidad/profesores/rfranco/modelo_er.htm Fecha agosto 14 de 2008 hora: 10
pm. Diseño: Equipo Técnico P.A.V
34
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3.4. Cuarto Paso: Reconocer Atributos
Cualquier detalle que sirve para identificar, describir, cualificar, clasificar ó expresar el
estado de una entidad. Un atributo puede ser: Texto, número, figuras ó sonidos.
Atributos clave primaria: Toda entidad debe ser identificada con unicidad mediante uno de
sus atributos ó una combinación de los mismos, denominado clave primaria ó identificador
único.
Así todos los atributos de una entidad deben depender únicamente del valor de la clave
primaria. Su representación para el modelo entidad relación se hace colocando el símbolo #
antepuesto al nombre del atributo.
Ejemplo:
Ejemplo
35
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Atributos opcionales: Son aquellos que pueden ser desconocidos, estos se representan por
punto antepuesto al nombre del atributo.
Ejemplo
1. Toda entidad debe tener un identificador único ó clave primaria en caso de que no la
tenga puede asignar una.
2. Un atributo debe escribirse siempre en singular y en minúscula, un nombre de
atributo en plural coincide con el problema de repetición esta repetición de atributos
puede revelar la existencia de entidades faltantes en el modelo.
Ejemplo:
Aquí podemos ver que un cliente puede tener varios teléfonos lo que me está indicando la
presencia de una nueva entidad llamada teléfono.
Ejemplo:
36
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Un atributo se transforma en una entidad cuando tiene significado completo en sí
mismo, con relaciones y atributos propios.
Podemos observar que área que es un atributo y este también tiene atributos propios como
número del área y nombre del área y se pude relacionar con la materia.
Toda entidad debe tener al menos dos atributos una clave primaria y un descriptor. Las
únicas entidades que pueden tener solo la clave primaria son las entidades de intersección
que tienen clave primaria compuesta por dos atributos
37
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3.4.3. Como Identificar Claves:
1. Se destruye toda relación N:M que tenga el modelo para que quede 1:N.
Se crea una nueva entidad que intersecta a las entidades participantes y donde el
identificador único (clave primaria) se forma mediante la combinación de las claves
primarias de dichas entidades.
Esta es la relación que debo eliminar para que queden relaciones 1:N
38
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
La relación queda de la siguiente manera:
Las entidades estudiante y club son las entidades participantes y la entidad est_club es la
entidad de intersección ó entidad débil y toda la relación se llama relación de dependencia.
La entidad de intersección puede tener únicamente la clave primaria como se dijo en el
reconocimiento de claves y en caso de colocarle otros atributos hay que tener en cuenta que
este dependa de los dos atributos que forman la clave primaria.
Ejemplo:
Un atributo para la entidad EST_CLUB sería el horario en que un estudiante está inscrito en
un club.
39
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Otros conceptos para el modelo
entidad relación
En el modelo entidad relación, una entidad agrupa un conjunto de ocurrencias de entidad del
mismo tipo. En muchos casos, estas ocurrencias se pueden agrupar a su vez en otros
subconjuntos que tienen un significado propio para los propósitos de la Base de Datos y, por
tanto, deberían representarse de forma explícita. Por ejemplo, la entidad EMPLEADO puede
a su vez subdividirse en SECRETARIA, INGENIERO, JEFE, TÉCNICO, ASALARIADO,
SUBCONTRATADO, etc. El conjunto de ocurrencias de entidad en cada una de estas
entidades será un subconjunto de las ocurrencias de entidad de EMPLEADO, ya que por
ejemplo, un ingeniero también es un empleado. Llamaremos a cada uno de estos
subconjuntos Subclases de la entidad EMPLEADO y a EMPLEADO una Superclase de cada
uno de estos subconjuntos.
Llamaremos a la relación existente entre las Superclases y las Subclases como relación
Clase/Subclase. En el ejemplo anterior, EMPLEADO/SECRETARIA y EMPLEADO/TÉCNICO son
dos relaciones Clase/Subclase. Hay que tener en cuenta que una ocurrencia de una Subclase
representa el mismo objeto real que alguna correspondiente a su Superclase, por ejemplo la
SECRETARIA "Concha Leco" será también la EMPLEADO "Concha Leco". Por tanto, la
ocurrencia de Subclase es la misma que en la Superclase pero con un rol específico. Una
ocurrencia de Subclase no tienen sentido si no es a su vez ocurrencia de Superclase. Por
otro lado, una ocurrencia de superclase puede ser a su vez ocurrencia de varias subclases o
de ninguna. Por ejemplo, "Roberto Mate" como ocurrencia de EMPLEADO puede a su vez
pertenecer a subclases INGENIERO y ASALARIADO.
Debido a que una subclase es a su vez parte se una superclase, la subclase tendrá sus
atributos específicos así como los atributos correspondientes a la superclase a la que
pertenece. Esto quiere decir que la ocurrencia de entidad de una subclase hereda los
atributos correspondientes a la superclase a la que pertenece. De la misma manera hereda
las relaciones en las que su correspondiente superclase participa.
40
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.3. ESPECIALIZACIÓN.
El proceso por el que se definen las diferentes subclases de una superclase se conoce como
especialización. El conjunto de subclases se define basándonos en características
diferenciadores de las ocurrencias de entidad de la superclase. Por ejemplo, el conjunto se
subclases {SECRETARIA, INGENIERO, TÉCNICO} es una especialización de la superclase
EMPLEADO mediante la distinción del tipo de trabajo en cada ocurrencia de entidad.
Podemos tener varias especializaciones de una misma entidad basándonos en distintos
criterios. Por ejemplo, otra especialización de EMPLEADO podría dar lugar a las subclases
ASALARIADO y SUBCONTRATADO, dependiendo del tipo de contrato.
DIAGRAMAS ENTIDAD RELACIÓN
http://www.galeon.com/konnan2001/ERE.htm
Ibíd.
Ibíd.
Ibíd., p. 18
41
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Ejercicios resueltos de modelo
entidad relación
Deseamos diseñar una base de datos para una universidad, se dispone de la siguiente
información:
Los departamentos pueden estar en una sola facultad.
Un profesor está siempre asignado a un sólo departamento y adscrito a una o varias
cátedras, pudiendo cambiar de cátedra pero no de departamento; interesa la fecha en
que un profesor es adscrito a una cátedra.
Tenga en cuenta que una cátedra puede ser asignada a varios profesores
2. Se desea diseñar una base de datos que contenga información relativa a las
carreteras de determinado país. Se pide realizar el diseño en el modelo E/R,
sabiendo que:
42
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Se desea diseñar una base de datos sobre la información de las reservas de una
empresa dedicada al alquiler de automóviles. Se dispone de la siguiente información:
43
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Video club: En una tienda de video se necesita mantener información de alrededor
de 3000 casetas cada uno de los casetes tiene asignado un número por cada película
se necesita conocer un titulo y categoría por ejemplo: comedia, suspenso, drama,
acción, ciencia ficción, etc. Se mantienen algunas copias de muchas películas. Se le
da a cada película una identificación y se mantiene seguimiento de lo que contiene
cada casete.
44
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
ENTIDAD
CLIENTE
PELÍCULAS
TIPO_PEL
ACTORES
CASETE
ALQUILER
45
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Un modelo ER de Propietarios de Taxis Conductores y Empresas
46
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ejemplo tomado de:
http://www.calasanz-pereira.edu.co/prueba/html/modules/Access/normalizacion.htm. Fecha Septiembre 27 de 2008 hora: 10 pm
. Diseño esquema: Equipo Técnico P.A.V.
Nota: Este modelo no tiene destruidas las relaciones N:M. que hay entre cassette y alquiler
y la de actor películas
47
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 3
Modelo
Relacional
El modelo relacional es un modelo lógico basado en registros que vino
después de que los modelos jerárquico y de red estuvieran en uso. Este
modelo relacional, no se puede decir que sea en sí un modelo
semántico de datos. Su enorme éxito no se debe a que permite de
forma implícita operaciones conceptualmente abstractas sobre los
datos, sino a los altos niveles de fiabilidad e integridad que aporta en el
manejo de grandes cantidades de datos.
1. Definición
El modelo de datos relacional fue introducido por Edgar F. Codd (1970). Se basa en una
estructura de datos simple y uniforme la relación y tiene fundamentos teóricos sólidos
Codd daba 12 reglas que debe cumplir cualquier base de datos que desee considerarse
relacional:
1. Regla de información:
Todos los datos de una base de datos relacional se representan explícitamente (al nivel
lógico) como valores de tablas.
Todos y cada uno de los datos (valor indisoluble, único o atómico) de una base de datos
relacional se garantiza que sean lógicamente accesible recurriendo a una combinación de
nombres de tabla, valor de clave primaria y nombre de columna.
Los valores nulos (distinto de cadena de caracteres vacías o de una cadena de caracteres en
blanco y distinta de cero o de cualquier otro número) se soporta en los SGBD
completamente relacionales para representar la falta de información y la información
inaplicable de un modo sistemático e independiente del tipo de datos.
49
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
debe haber al menos un lenguaje cuyas sentencias sean expresables, mediante alguna
sintaxis bien definida, como cadenas de caracteres, y que sea completa en cuanto al soporte
de todos los puntos siguientes:
Todas las vistas que puedan utilizarse son también actualizables por el sistema.
Un SGBDR debe hacer más que recuperar conjuntos relacionales de datos, también debe ser
capaz de insertar, actualizar y eliminar datos como un conjunto relacional.
Los datos deben ser físicamente independiente de los programas de aplicación. Los
programas de aplicación y las actividades terminales permanecen lógicamente inalterados
cualquiera que sean los cambios efectuados ya sea las representaciones de almacenamiento
o a los métodos de acceso.
Cada vez que sea posible, el Software de aplicación debe ser independiente de los cambios
hechos a las tablas Base. Los programas de aplicación y las actividades terminales
permanecen lógicamente inalterados cuando se efectúan sobre las tablas de base de
cambios preservadores de la información de cualquier tipo que teóricamente permita
alteraciones.
Si un sistema relacional tiene un lenguaje de bajo nivel (un solo registro cada vez), ese bajo
nivel no puede ser utilizado para subvertir o suprimir las reglas de integridad y las
restricciones expresadas en el lenguaje relacional de nivel superior (múltiples registros a la
vez)
50
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
12. Un sistema de bases de datos relacionla(SGBDR) tiene independencia
distributiva.
1. Las 12 reglas de Codd. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm.
http://www.atpsoftware.net/Public/Articulos.php
51
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Estructura Del Modelo Relacional
La definición de relación desde el punto de vista matemático es: Una relación es un
subconjunto de un producto cartesiano de un listado de dominios.
52
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Para cada atributo existe un conjunto de valores permitidos llamado dominio de ese
atributo.
Los dominios corresponden a los tipos de datos primitivos de los lenguajes de programación.
Cada fila representa una tupla y una tupla es un conjunto ordenado de valores (atributos).
Por tanto una relación es un conjunto de tuplas filas o registros. Cada atributo, columna o
campo sólo puede tomar un único valor del dominio.
Debido a que las tablas son básicamente relaciones se utilizan los términos matemáticos
relación y tupla en lugar de los de tabla y fila.
Sin embargo, no es necesario hacer una definición precisa del dominio de cada atributo, sino
hasta el momento de la implementación. Por tanto la notación puede ser:
53
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Parte= (nro_pte, nom_pte, color, peso, ciudad)
Proveedor= (nro_prv, nom_prv, ciudad_prv)
Suministro= ( nro_prv,nro_pte,cantidad_sum)
La característica fundamental de este modelo de datos es que las asociaciones entre tuplas
(entidades) se representan únicamente por valores de datos en columnas, sacados de un
dominio común.
54
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Transformación Del Modelo E-R
En Tablas Relacionales
Si la BD se ajusta a un diagrama E-R, estas son las reglas de transformación:
55
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Reglas De Integridad (RI)
1. Semánticas:
En el mundo real existen ciertas restricciones que deben cumplir los elementos en él
existentes; por ejemplo, una persona sólo puede tener un número de DNI y una única
dirección oficial. Cuando se diseña una base de datos se debe reflejar fielmente el universo
del discurso que estamos tratando, lo que es lo mismo, reflejar las restricciones existentes
en el mundo real.
Tienen que ser definidas por los diseñadores en el modelo entidad relación.
2. Reglas de negocio
Los usuarios o los administradores de la base de datos pueden imponer ciertas restricciones
específicas sobre los datos, denominadas reglas de negocio.
Por ejemplo, si en una oficina de la empresa inmobiliaria sólo puede haber hasta veinte
empleados, el SGBD debe dar la posibilidad al usuario de definir una regla al respecto y debe
hacerla respetar. En este caso, no debería permitir dar de alta un empleado en una oficina
que ya tiene los veinte permitidos.
Integridad de dominio: restringimos los valores que puede tomar un atributo respecto a su
dominio, por ejemplo EDAD >= 18 and EDAD<= 65. Una nota>=0 and nota<=5
3. Reglas de la entidad
La nulabilidad de una columna determina si las filas de una tabla pueden contener un valor
NULL en esa columna. Un valor NULL no es lo mismo que cero (0), en blanco o que una
cadena de caracteres de longitud cero, como "". NULL significa que no hay ninguna entrada.
La presencia de un valor NULL suele implicar que el valor es desconocido o no está definido.
Por ejemplo, un valor NULL en la columna fecha_venta de la tabla Producto no implica que
el artículo no tenga una fecha de venta final. El valor NULL significa que se desconoce la
fecha o que no se ha establecido.
56
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Restricciones UNIQUE
Puede utilizar restricciones UNIQUE para garantizar que no se escriben valores duplicados en
columnas específicas que no forman parte de una clave principal. Tanto la restricción
UNIQUE como la restricción PRIMARY KEY exigen la unicidad; sin embargo, debe utilizar la
restricción UNIQUE y no PRIMARY KEY si desea exigir la unicidad de una columna o una
combinación de columnas que no forman la clave principal.
En una tabla se pueden definir varias restricciones UNIQUE, pero sólo una restricción
PRIMARY KEY.
Además, a diferencia de las restricciones PRIMARY KEY, las restricciones UNIQUE admiten
valores NULL. Sin embargo, de la misma forma que cualquier valor incluido en una
restricción UNIQUE, sólo se admite un valor NULL por columna.
Es posible hacer referencia a una restricción UNIQUE con una restricción FOREIGN KEY.
Definiciones DEFAULT
Cada columna de un registro debe contener un valor, aunque sea un valor NULL. Puede
haber situaciones en las que deba cargar una fila de datos en una tabla, pero no conozca el
valor de una columna o el valor ya no exista. Si la columna acepta valores NULL, puede
cargar la fila con un valor NULL. Pero, dado que puede no resultar conveniente utilizar
columnas que acepten valores NULL, una mejor solución podría ser establecer una definición
DEFAULT para la columna siempre que sea necesario. Por ejemplo, es habitual especificar el
valor cero como valor predeterminado para las columnas numéricas, o N/D (no disponible)
como valor predeterminado para las columnas de cadenas cuando no se especifica ningún
valor.
Ejemplo fecha datetime default getdate() indica que el valor predeterminado de fecha es la
fecha actual del sistema.
Una tabla suele tener una columna o una combinación de columnas cuyos valores identifican
de forma única cada fila de la tabla. Estas columnas se denominan claves principales de la
tabla y exigen la integridad de entidad de la tabla. Puede crear una clave principal mediante
la definición de una restricción PRIMARY KEY cuando cree o modifique una tabla.
Una tabla sólo puede tener una restricción PRIMARY KEY y ninguna columna a la que se
aplique una restricción PRIMARY KEY puede aceptar valores NULL. Debido a que las
restricciones PRIMARY KEY garantizan datos únicos, con frecuencia se definen en una
columna de identidad.
Cuando especifica una restricción PRIMARY KEY en una tabla, Database Engine (Motor de
base de datos) exige la unicidad de los datos mediante la creación de un índice único para
las columnas de clave principal. Este índice también permite un acceso rápido a los datos
57
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
cuando se utiliza la clave principal en las consultas. De esta forma, las claves principales que
se eligen deben seguir las reglas para crear índices únicos.
Si se define una restricción PRIMARY KEY para más de una columna, puede haber valores
duplicados dentro de la misma columna, pero cada combinación de valores de todas las
columnas de la definición de la restricción PRIMARY KEY debe ser única.
Como se muestra en la siguiente ilustración, las columnas ProductID y VendorID de la
tabla ProductVendor forman una restricción PRIMARY KEY compuesta para esta tabla.
Así se garantiza que la combinación de ProductID y VendorID es única.
Cuando trabaja con combinaciones, las restricciones PRIMARY KEY relacionan una tabla con
otra. Por ejemplo, para determinar los proveedores que suministran determinados
productos, puede utilizar una combinación de tres elementos entre las tablas Vendedor,
Production.Product y ProductVendor. Puesto que ProductVendor contiene las columnas
de ProductID y VendorID, se puede obtener acceso a las tablas Product y Vendor
mediante su relación con ProductVendor.
Una clave externa (FK) es una columna o combinación de columnas que se utiliza para
establecer y exigir un vínculo entre los datos de dos tablas. Puede crear una clave externa
mediante la definición de una restricción FOREIGN KEY cuando cree o modifique una tabla.
En una referencia de clave externa, se crea un vínculo entre dos tablas cuando las columnas
de una de ellas hacen referencia a las columnas de la otra que contienen el valor de clave
principal. Esta columna se convierte en una clave externa para la segunda tabla.
Por ejemplo, la tabla Sales.SalesOrderHeader de la base de datos AdventureWorks
tiene un vínculo a la tabla Sales.SalesPerson porque existe una relación lógica entre
pedidos de ventas y personal de ventas. La columna SalesPersonID de la tabla
SalesOrderHeader coincide con la columna de clave principal de la tabla SalesPerson. La
58
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
columna SalesPersonID de la tabla SalesOrderHeader es la clave externa para la tabla
SalesPerson.
No es necesario que una restricción FOREIGN KEY esté vinculada únicamente a una
restricción PRIMARY KEY de otra tabla; también puede definirse para que haga referencia
a las columnas de una restricción UNIQUE de otra tabla. Una restricción FOREIGN KEY
puede contener valores NULL, pero si alguna columna de una restricción FOREIGN KEY
compuesta contiene valores NULL, se omitirá la comprobación de los valores que componen
la restricción FOREIGN KEY. Para asegurarse de que todos los valores de la restricción
FOREIGN KEY compuesta se comprueben, especifique NOT NULL en todas las columnas
que participan.
59
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Si en una relación hay alguna clave ajena, sus valores deben coincidir con valores de la
clave primaria a la que hace referencia, o bien, deben ser completamente nulos.
Por lo tanto, para cada clave ajena de la base de datos habrá que contestar a tres
preguntas:
Regla de los nulos: ¿Tiene sentido que la clave ajena acepte nulos?
Regla de borrado: ¿Qué ocurre si se intenta borrar la tupla referenciada por la clave ajena?
5. Otras reglas de integridad
• Disparadores o triggers
Combinan los enfoques declarativo (en la condición) y procedimental (en la
acción),
Pueden ser tan complejas como imponga la semántica del mundo real en cuanto a la
acción, y bastantes complejas en la condición (todo lo que permite la proposición
60
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
lógica mediante la que se expresa la condición),
El cumplimiento de la condición dispara la acción,
Son más flexibles que las restricciones de acción específica.
SQL Server TechCenter. Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm.
http://technet.microsoft.com/es-es/library/ms191236.aspx
61
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Teoría De La Normalización
La primera aproximación del diccionario de datos (el diccionario de datos es la definición de
los campos o atributos contenidos en las tablas y se define usando DDL), presenta ciertos
problemas de redundancia, dependencia, etc. Es necesario optimizar el diseño para
conservar la consistencia e integridad de los datos y a la vez optimizar el espacio de
almacenamiento eliminando la redundancia. Para esto se lleva a cabo un proceso que se
llama NORMALIZACIÓN y comprende varias Formas Normales.
La normalización se adoptó porque el viejo estilo de poner todos los datos en un solo lugar,
como un archivo o una tabla de la base de datos, era ineficiente y conducía a errores de
lógica cuando se trataba de manipular los datos. De esta forma la normalización ayuda a
clarificar la base de datos ya organizarla en partes más pequeñas y más fáciles de entender,
además de otras ventajas destacables como la disminución de espacio en disco.
Vamos a suponer que el esquema de base de datos relacional tiene una serie de atributos
A1, A2, A3, ..., An.. y que la base de datos se describe como un solo esquema de relación
universal R={A1, A2, A2,....,An}; es como si tuviéramos una sola tabla, pero solo para
explicar el concepto. La dependencia funcional es una restricción , que vamos a denotar
como X->Y, donde X e Y son dos subconjuntos de R, sobre las posibles tuplas, registros o
filas que podrían formar un ejemplar de relación en R. La restricción dice que para
cualesquier dos tuplas t1 y t2 tales que el valor t1[X] = t2[X], debemos tener t1[Y] =
t2[Y]; es decir, que los valores del componente Y de una tupla dependen de los valores del
componente X. En otras palabras podríamos decir que los valores del componente X (Que
denominaremos Miembro izquierdo) determinan de manera única los valores del
componente Y (que denominaremos Miembro derecho).
Así que si una restricción de R dice que no puede haber más de una tupla con un valor X, se
dice que X es una clave candidata. Esto implica que para todo subconjunto de atributos Y
de R X->Y.
62
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Tercero -> NSS
{Tercero,NSS} -> Nombre
El proceso de normalización tiene un nombre y una serie de reglas para cada fase. Esto
puede parecer un poco confuso al principio, pero poco a poco se va entendiendo el proceso,
así como las razones para hacerlo de esta manera.
63
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Existen básicamente tres niveles de normalización: Primera Forma Normal (1NF), Segunda
Forma Normal (2NF) y Tercera Forma Normal (3NF). Cada una de estas formas tiene sus
propias reglas. Cuando una base de datos se conforma a un nivel, se considera normalizada
a esa forma de normalización. No siempre es una buena idea tener una base de datos
conformada en el nivel más alto de normalización, puede llevar a un nivel de complejidad
que pudiera ser evitado si estuviera en un nivel más bajo de normalización.
En la tabla siguiente se describe brevemente en qué consiste cada una de las reglas, y
posteriormente se explican con más detalle.
Regla Descripción
Una relación R se encuentra en 1FN si y solo sí por cada
renglón columna contiene valores atómicos.
Abreviada como 1FN, se considera que una relación se
encuentra en la primera forma normal cuando cumple lo
siguiente:
Las celdas de las tablas poseen valores simples y no se
permiten grupos ni arreglos repetidos como valores, es
Primera Forma decir, contienen un solo valor por cada celda.
Normal (1FN) Todos los ingresos en cualquier columna (atributo) deben
ser del mismo tipo.
Cada columna debe tener un nombre único.
Dos filas o renglones de una misma tabla no deben ser
idénticas, aunque el orden de las filas no es importante.
64
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
(A,B,C) en donde A determina a B, B determina a C
entonces A determina a C.
La siguiente decisión es ¿qué tan lejos debe llevar la normalización? La normalización es una
ciencia subjetiva. Determinar las necesidades de simplificación depende de nosotros. Si
nuestra base de datos va a proveer información a un solo usuario para un propósito simple y
existen pocas posibilidades de expansión, normalizar los datos hasta la 3FN quizá sea algo
65
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
exagerado. Las reglas de normalización existen como guías para crear tablas que sean
fáciles de manejar, así como flexibles y eficientes. A veces puede ocurrir que normalizar los
datos hasta el nivel más alto no tenga sentido.
¿Se están dividiendo tablas sólo para seguir las reglas o estas divisiones son en verdad
prácticas?. Éstas son el tipo de cosas que nosotros como diseñadores de la base de datos,
necesitamos decidir, y la experiencia y el sentido común nos pueden auxiliar para tomar la
decisión correcta. La normalización no es una ciencia exacta, más bien subjetiva.
Existen seis niveles más de normalización que no se han discutido aquí. Ellos son Forma
Normal Boyce-Codd, Cuarta Forma Normal (4NF), Quinta Forma Normal (5NF) o Forma
Normal de Proyección-Unión, Forma Normal de Proyección-Unión Fuerte, Forma Normal de
Proyección-Unión Extra Fuerte y Forma Normal de Clave de Dominio. Estas formas de
normalización pueden llevar las cosas más allá de lo que necesitamos. Éstas existen para
hacer una base de datos realmente relacional. Tienen que ver principalmente con
dependencias múltiples y claves relacionales.
Se dice que una tabla se encuentra en primera forma normal (1NF) si y solo si cada uno de
los campos contiene un único valor para un registro determinado. Supongamos que
deseamos realizar una tabla para guardar los cursos que están realizando los alumnos de un
determinado centro de estudios, podríamos considerar el siguiente diseño:
Podemos observar que el registro de código 1 si cumple la primera forma normal, cada
campo del registro contiene un único dato, pero no ocurre así con los registros 2 y 3 ya que
66
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
en el campo cursos contiene más de un dato cada uno. La solución en este caso es crear dos
tablas del siguiente modo:
Como se puede comprobar ahora todos los registros de ambas tablas contienen valores
únicos en sus campos, por lo tanto ambas tablas cumplen la primera forma normal.
Una vez normalizada la tabla en 1NF, podemos pasar a la segunda forma normal.
La segunda forma normal compara todos y cada uno de los campos de la tabla con la clave
definida. Si todos los campos dependen directamente de la clave se dice que la tabla está es
segunda forma normal (2NF).
Supongamos que construimos una tabla con los años que cada empleado ha estado
trabajando en cada departamento de una empresa:
67
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Imagen basada en la dirección:
http://perso.wanadoo.es/aldomartin1/noreyalre.htm
Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36
Tomando como punto de partida que la clave de esta tabla está formada por los campos
código de empleado y código de departamento, podemos decir que la tabla se encuentra en
primera forma normal, por tanto vamos a estudiar la segunda:
Por tanto, al no depender todos los campos de la totalidad de la clave la tabla no está en
segunda forma normal, la solución es la siguiente:
68
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Imagen basada en la dirección:
http://perso.wanadoo.es/aldomartin1/noreyalre.htm
Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36
69
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Podemos observar que ahora si se encuentras las tres tabla en segunda forma normal,
considerando que la tabla A tiene como índice el campo Código Empleado, la tabla B Código
Departamento y la tabla C una clave compuesta por los campos Código Empleado y Código
Departamento.
Se dice que una tabla está en tercera forma normal si y solo si los campos de la tabla
dependen únicamente de la clave, dicho en otras palabras los campos de las tablas no
dependen unos de otros. Tomando como referencia el ejemplo anterior, supongamos que
cada alumno sólo puede realizar un único curso a la vez y que deseamos guardar en que
aula se imparte el curso. A voz de pronto podemos plantear la siguiente estructura:
Por esta última razón se dice que la tabla no está en 3NF. La solución sería la siguiente:
70
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Imagen basada en la dirección:
http://perso.wanadoo.es/aldomartin1/noreyalre.htm
Obtenida en la Fecha: agosto 17 de 2008 hora: 14.36
Una vez conseguida la segunda forma normal, se puede estudiar la cuarta forma normal.
Una tabla está en cuarta forma normal si y sólo si para cualquier combinación clave - campo
no existen valores duplicados. Veámoslo con un ejemplo:
71
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Comparemos ahora la clave (Figura) con el atributo Tamaño, podemos observar que
Cuadrado Grande está repetido; igual pasa con Círculo Azul, entre otras. Estas repeticiones
son las que se deben evitar para tener una tabla en 4NF.
ibid, pg, 23
Normalización de Bases de Datos. Obtenido en Internet el 23 de Octubre de 2008.
Hora: 9.50 pm.. http://www.trucostecnicos.com/trucos/ver.php?id_art=278
Dependencia funcional e independencia, manual de la Universidad de Málaga.
Obtenido en Internet el 23 de Octubre de 2008. Hora: 9.50 pm.
http://ftp.medprev.uma.es/libro/node33.htm
Normalización de base de datos, Prof. Manuel Torres Remon. Obtenido en Internet el
23 de Octubre de 2008. Hora: 9.50 pm.
http://www.monografias.com/trabajos5/norbad/norbad.shtml
72
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
6. Lenguaje Sql
SQL: Lenguaje de consulta estructurado, Permite definir y manipular la base de datos, este
lenguaje se compone de:
6.3. Cláusulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea
seleccionar o manipular.
Comando Descripción
Utilizada para especificar la tabla de la cual se van a seleccionar los
FROM
registros
Utilizada para especificar las condiciones que deben reunir los registros que
WHERE
se van a seleccionar
GROUP
Utilizada para separar los registros seleccionados en grupos específicos
BY
73
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
HAVING Utilizada para expresar la condición que debe satisfacer cada grupo
ORDER Utilizada para ordenar los registros seleccionados de acuerdo con un orden
BY específico
Comando Descripción
AVG Utilizada para calcular el promedio de los valores de un campo determinado
COUNT Utilizada para devolver el número de registros de la selección
Utilizada para devolver la suma de todos los valores de un campo
SUM
determinado
MAX Utilizada para devolver el valor más alto de un campo especificado
MIN Utilizada para devolver el valor más bajo de un campo especificado
74
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 4
Manipulación De
Una Base De
Datos Relacional
Una vez diseñada y estandarizada la base de datos esta se puede
implementar y manipular utilizando un DBGS, estos tienen
herramientas que permiten la definición y la manipulación de la base de
datos, además incluyen un lenguaje llamado el SQL (Structured Query
Language) es un lenguaje de programación diseñado para almacenar,
manipular y recuperar datos almacenados en bases de datos
relacionales.
1. Reconocimiento Del Sistema
Gestor De Bases De Datos
Relaciónales
Sql Server es un servidor de bases de datos.
Ya con los objetos, vamos a abrir local, y vemos que ya existen varias bases de datos, lo
que significa que existen bases de datos para el sistema y otras son modelos de ejemplos
para el aprendizaje.
76
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Este es el símbolo de la base de datos:
Desplegar la opción data transformation que son los DTS (Transformación de datos entre
sistemas: entre Excel – Access, etc transforma un formato de una base de datos en otro
ósea importación y exportación de datos entre diferentes bases de datos. Con un dts coge
un archivo plano y lo transforma)
En manager.
77
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Dentro del grupo de trabajo tengo un servidor (local, pero pueden existir muchos más como
para cartera, contabilidad, etc) y dentro de los servidores hay varios objetos y dentro de los
objetos hay database (bases de datos). Esto suple la limitante que tenia Access.
Cuando se crea una base de datos, es importante comprender cómo SQL Server almacena
los datos para poder calcular y especificar la cantidad de espacio en disco que hay que
asignar a los archivos de datos y registros de transacciones. Aunque SQL Server
automáticamente incrementa el tamaño asignado a los ficheros de bases de datos
dinámicamente, para tener un rendimiento óptimo del sistema (evitar fragmentación de los
ficheros), se recomienda ser "precisos" a la hora de definir el tamaño de la base de datos.
Todas las bases de datos tienen un archivo de datos principal (.mdf), y uno o varios archivos
de registro de transacciones (.ldf). Una base de datos también puede tener archivos de
datos secundarios (.ndf). La extensión definida para cada tipo de archivos es libre, pero
como buenas prácticas se suele seguir el modelo de extensiones recomendado por Microsoft
(mdf, ldf, y ndf). El proceso de creación de la base de datos, consiste en hacer una copia de
la base de datos model, que incluye las tablas del sistema. La ubicación predeterminada
para todos los archivos de datos y registros de transacciones es C:\Archivos de
programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data.
Microsoft SQL Server Management Studio Express - Community Technology Preview (CTP)
November 2005:
Para crear una base de datos desde SQL Server 2005 Management Studio, expande la lista
de bases de datos, de la lista de instancias de SQL Server 2005 registradas, y selecciona la
opción "New database":
78
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Deberás rellenar el nombre de base de datos, nombres lógico y físico de los archivos
relacionados, y tamaño de los ficheros, así como su crecimiento:
79
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Y deberás establecer el modo de recuperación de la base de datos; en la versión Express al
crear una base de datos por defecto se establece como recuperación SIMPLE:
Para famializarte con la sintaxis del lenguaje T-SQL, te recomiendo que utilices la
opción de menú script (en recuadro verde en las dos imágenes anteriores), que
mostrará la instrucción T-SQL correspondiente a las operaciones que has ido
configurando en las distintas opciones.
1.4. Consideraciones
Dependiendo de las necesidades a cubrir del sistema de base de datos a desarrollar, deberás
configurar los archivos de una forma u otra; por ejemplo, en grandes sistemas llegarás a
configurar niveles de redundancia de discos (RAID), y repartirás la información de las tablas
en distintos ficheros. Aunque no está soportado en la versión Express, funcionalidades del
producto como Particionado de datos, llegan a ser primordiales, y es un factor a considerar
desde el momento de diseño del sistema.
80
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Por otro lado, para familiarizarte con SQL Server, recomendaría entender las opciones de
configuración de base de datos que aparecen en la pestaña opciones, que aunque no son
necesarias para comenzar a diseñar bases de datos SQL Server, si ayudan a comprender un
poco el funcionamiento interno de SQL Server (shrink, statistics, etc.):
Empezaremos por los tipos de datos. Las tablas tienen columnas, y las columnas se definen
en base a un tipo de datos; los tipos de datos acotan el tipo y tamaño de la información que
se guardará en una columna. La importancia de la elección de los tipos de datos reside en el
almacenamiento que ocupa; para varios cientos de filas, el tamaño no es tan crucial, pero
cuantas más filas se añadan a la tabla, mayor será la repercusión en el rendimiento de las
operaciones de E/S.
Como veremos, habrá tipos de datos en los que habrá que seleccionar el tamaño, e incluso
algunos tendrán la posibilidad de ofrecer tamaño variable; vamos a analizar los más
significativos.
81
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1.5.1. Tipos de datos numéricos
Los tipos de datos numéricos se utilizan para guardar valores numéricos enteros, o
decimales. Los dividiremos en dos grandes grupos: enteros, y decimales.
Tradicionalmente el tipo de datos más usado es el int; el tipo de datos bigint apareció en
SQL Server 2000, y es la alternativa al tipo de datos int, cuando los valores son muy
grandes.
Decimal, numeric:
p (precisión)
s (escala)
82
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
El número máximo de dígitos decimales que se puede almacenar a la derecha del
separador decimal. La escala debe ser un valor comprendido entre 0 y p. Para
especificar la escala es necesario haber especificado la precisión.
Precisión Almacenamiento
1-9 5
10-19 9
20-28 13
29-38 17
Money, smallmoney
Tipos de datos que representan valores monetarios o de moneda.
Float(n), single
Tipos de datos numéricos y aproximados que se utilizan con datos numéricos de
coma flotante. Los datos de coma flotante son aproximados; por tanto, no todos los
valores del intervalo del tipo de datos se pueden representar con exactitud.
Tipo de
Precisión Almacenamiento
datos
De - 1,79E+308 a -2,23E-308, 0 y de 2,23E- Depende del valor de n (4 u 8
float
308 a 1,79E+308 bytes)
De - 3,40E + 38 a -1,18E - 38, 0 y de 1,18E -
real 4 bytes
38 a 3,40E + 38
Los tipos de datos caracter se puede definir de longitud fija y de longitud variable.
Los de longitud fija son char(n) y su tamaño lo define el valor que tenga n. Por ejemplo, una
columna char(15) ocupa 15 bytes.
83
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Los de longitud variable son varchar(n), y su tamaño lo define la longitud de la columna
guardada; por ejemplo una columna varchar(250), que guarda el valor "columna variable" el
almacenamiento que ocupa es 16 bytes.
En caso de desear valores Unicode, deberás anteponer al tipo de datos la letra n, siendo los
tipos nchar, o nvarchar. La principal diferencia con los tipos de datos no-unicode, es que
utilizan el doble de bytes. Por ejemplo, el texto "Tutorial", en una columna varchar(100)
ocuparía 8 bytes, mientras que siendo unicode ocuparía 16 bytes.
El tamaño de las columnas char, varchar, nchar, nvarchar está limitado a 8000 bytes de
almacenamiento; en caso de necesitar mayor longitud puedes usar el tipo de datos
varchar(max) o nvarchar(max), que es nuevo en SQL Server 2005.
Smalldatetime, datetime
Son los tipos de datos utilizados para representar la fecha y la hora. El valor internamente
se almacena como un valor integer, y dependiendo de la precisión utilizará 4 u 8 bytes.
El tipo de datos smalldatetime almacena las fechas y horas del día con menor precisión que
datetime. El Database Engine (Motor de base de datos) almacena los valores smalldatetime
como dos enteros de 2 bytes. Los dos primeros bytes almacenan el número de días después
del 1 de enero de 1900. Los otros dos, almacenan el número de minutos desde medianoche.
Los valores datetime se redondean con incrementos de 0,000; 0,003 o 0,007 segundos,
como se muestra en la siguiente tabla.
Crear tablas
Las tablas son objetos que contienen la información guardada en la base de datos. Una tabla
es una colección de columnas; cada columna tendrá un tipo de dato y una serie de
propiedades. La información está guardada fila por fila de forma similar a lo que
gráficamente representa una hoja Excel: una colección de filas por columnas.
Para crear tablas podremos utilizar SQL Server 2005 Management Studio Express, o Visual
Basic Express Edition; la forma es muy similar en ambas herramientas, y esta vez también
utilizaremos SQL Server 2005 Management Studio Express.
84
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Expandiendo la base de datos "DemoMSDN", vemos una lista de tipos de objetos entre las
que se encuentra "tables"; pulsando el botón derecho del ratón, y selecciona "New Table"
como aparecen en la siguiente imagen:
85
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
En el cuadro marcado en rojo, se añaden cada una de las columnas que forman parte de la
tabla a crear; se pone nombre a la columna (debe comenzar por un caracter alfabético), se
selecciona el tipo de datos y precisión (ver lección anterior para más información), y se
establece si la columna aceptará valores nulos o no.
En el cuadro de debajo (en color azul), se podrán establecer las propiedades de cada
columna de la tabla; se podrán modificar las propiedades vistas anteriormente, si la columna
es calculada o no, si tiene propiedad identidad (que veremos más adelante en el capítulo),
etc.
Además toda tabla debe tener una columna o conjunto de columnas que identifique de
manera única cada fila de la tabla; para ello selecciona la columna que deseas como clave
primaria, y después de hacer click en el botón derecho del ratón, selecciona "Primary Key"
como se muestra en la imagen (también se puede hacer sobre el botón marcado en rojo en
la imagen):
A continuación, para grabar los cambios, es decir, para generar la tabla, pulsarás sobre la
zona en color verde de la siguiente imagen, y seleccionarás la opción Save Clientes (que es
el nombre de la tabla):
86
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Propiedad identity en las columnas
La propiedad identity, establece que una columna numérica genere automáticamente valores
consecutivos partiendo de una semilla inicial, y un incremento definido. Se suele utilizar
como clave primaria, en lugar de establecer claves primarias de columnas o conjuntos de
columnas muy grandes. Lo importante de esta propiedad es que "convierte"
automáticamente el valor de una columna a un valor numérico siguiente al anteriormente
insertado. Por ejemplo, si definimos la columna Id de la tabla clientes como identity, a la
hora de insertar filas, de esa columna nos "olvidaremos" porque SQL Server lo hace por
nosotros. Luego ese valor lo podremos usar como referencia principal (clave primaria), para
identificar la fila insertada. Para establecer la propiedad identity, debes seleccionar la
columna a la que deseas establecer la propiedad, y hacerlo desde la ventana de propiedades
de columna (cuadro rojo de la siguiente imagen):
87
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Relacionar tablas
Las tablas se relacionan entre sí; podría decirse que existe información de la fila que está
guardada en varias tablas. El nexo de unión de las filas es la clave primaria en la tabla
padre, y la clave primaria en la tabla hija. Por ejemplo, una relación entre clientes y
pedidos; en la tabla pedidos existirá un identificador de cliente que está asociado a un
identificador de cliente en la tabla clientes. La información estaría repartida como sigue:
Tabla Clientes
ID Nombre Apellidos ...
1 Julia Herrera ...
2 Javier Alonso ...
Tabla Pedidos
IDPedido IDCliente Importe ...
1 1 1200 ...
2 1 1300 ...
3 1 12000 ...
4 2 1000 ...
88
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Fijate que el cliente 1 (Julia Herrera), tiene los pedidos del 1 al 3, y el cliente 2 el pedido 4.
La información la "interpretamos" como si las filas de cliente en "embebiera dentro de la
tabla pedidos:
Visto el esquema, vamos a implementar la tabla Pedidos, definiendo la clave ajena a la tabla
clientes. Para ello, después de haber añadido las columnas que definen la tabla pedidos (ID,
IDCliente, y Cantidad), pulsaremos en el botón habilitado para establecer relaciones, o
seleccionaremos la opción "Relationships...":
89
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
A continuación, rellenarás los combos que aparecen para establecer la relación entre las
tablas clientes y pedidos (columnas ID de clientes, e IDCliente de Pedidos):
Para finalizar pulsa en aceptar, y expandes la opción "Insert and Update Expecifications", en
la que se podrá especificar cómo establecer el valor de la columna en caso de que la fila
padre haya sido borrada o modificada. En SQL Server 2005, se permiten dos opciones:
90
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
No Action. Que indica que no actual, que se deja la columna como estaba.
Cascade. Que se realiza la misma operación que se hizo en la fila de la tabla padre.
Set Null. Que establece a nulo el valor de las columnas afectadas.
Set Default. Que establece la columna a un valor por defecto.
Con un ejemplo se verá más claro; digamos que se borra el cliente 2 (Javier Alonso); al
borrar al cliente, las opciones que acabamos de comentar se activarán, y actuarán según las
hayamos configurado; Veamos cómo se comportaría en cada uno de los casos:
Todas estas operaciones que hemos realizado desde las herramientas gráficas,
también se pueden hacer con sentencias T-SQL; de hecho, llegará un momento en
que tu experiencia será tan profunda que te resultará más sencillo realizar gran
parte de las operaciones mediante sentencias T-SQL. En concreto, las palabras
clave para definir este tipo de sentencias son ALTER TABLE, CREATE TABLE,
CONSTRAINT, FOREIGN KEY, PRIMARY KEY.
91
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Otras restricciones (UNIQUE, CHECK, DEFAULT)
Además, existen restricciones que "acotan", limitan, o establecen el valor de una columna en
ciertas condiciones. Se llaman restricciones (CONSTRAINTS), y forman parte del estandard
SQL-99. Estas restricciones que vamos a ver son: restricción UNIQUE, restricción CHECK, y
restricción DEFAULT.
Restricción UNIQUE
La restricción UNIQUE establece que el valor de cada columna de una fila sea único, Por
ejemplo, en la tabla clientes podemos tener una clave primaria como ID, y además tener
una columna NIF que establecemos que sea única: lo que internamente implementa SQL
Server, es que cada vez que se intente hacer una modificación, o inserción de un valor para
esa columna, antes de realizar la operación, se asegura que el nuevo/modificado valor es
único en el conjunto de filas de la tabla.
Restricción CHECK
Restricción DEFAULT
92
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
La restricción DEFAULT se implementa en T-SQL con la palabra clave DEFAULT; por
ejemplo, si queremos añadir una columna Importe a la tabla Pedidos, y su valor
por defecto sea cero, podríamos ejecutar el siguiente código T-SQL:
Creación de índices
Los índices son "estructuras" alternativa a la organización de los datos en una tabla. El
propósito de los índices es acelerar el acceso a los datos mediante operaciones físicas más
rápidas y efectivas. Para entender mejor la importancia de un índice pongamos un ejemplo;
imagínate que tienes delante las páginas amarillas, y deseas buscar el teléfono de Manuel
Salazar que vive en Alicante. Lo que harás será buscar en ese pesado libro la población
Alicante, y guiándote por la cabecera de las páginas buscarás los apellidos que empiezan por
S de Salazar. De esa forma localizarás más rápido el apellido Salazar. Pues bien,
enhorabuena, has estado usando un índice.
Pues el objetivo de definir índices en SQL Server es exactamente para conseguir el mismo
objetivo: acceder más rápido a los datos.
Columnas selectivas
Columnas afectadas en consultas de rangos: BETWEEN, mayor que, menor
que, etc.
Columnas accedidas "secuencialmente"
Columnas implicadas en JOIN, GROUP BY
Acceso muy rápido a filas: lookups
1.6. Ejemplo:
/*Crear índice único*/
Ibid, pg,7
Microsoft SQL Server 2005, Express edition, Obtenido en Internet el 23 de Octubre de
2008. Hora: 9.50 pm.
http://www.desarrollaconmsdn.com/msdn/CursosOnline/Curso_SQL_Server/inde
x.html
93
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Identificar Las Sentencias De
DDL Y DML
2.1. DDL
Descripción
Comando
CREATE Utilizado para crear objetos como nuevas tablas, campos e índices
DROP Empleado para eliminar objetos como tablas e índices
Utilizado para modificar objetos como las tablas agregando campos o
ALTER
cambiando la definición de los campos.
2.2. DML.
Cláusula Descripción
SELECT Utilizada para especificar los campos y datos que se van a mostrar
FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros
Utilizada para especificar las condiciones que deben reunir los registros que
WHERE
se van a seleccionar
GROUP BY Utilizada para separar los registros seleccionados en grupos específicos
HAVING Utilizada para expresar la condición que debe satisfacer cada grupo
Utilizada para ordenar los registros seleccionados de acuerdo con un orden
ORDER BY
específico
94
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
<= Menor ó Igual que
>= Mayor ó Igual que
= Igual que
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparación de un modelo
In Utilizado para especificar registros de una base de datos
Sentencia INSERT
Sentencia UPDATE
Sentencia DELETE
95
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Utilizar Adecuadamente El Sql
Para La Implementación Y
Manipulación De Las Bases De
Datos Para Casos Reales Del
Medio Que Nos Rodea.
En esta lección, conocerás los conceptos básicos para poder realizar, consultar y modificar
la base de datos utilizando comandos sql.
Ejemplo de una base de datos creada por medo de comandos
use Construccion
96
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
check(Estrato >= 1 and Estrato <= 7),
primary key (Cod_Area))
97
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Insert into tblarea values('a10','Sur',2)
Insert into tblarea values('a11','Sur',4)
Insert into tblarea values('a12','Norte',3)
Insert into tblarea values('a13','Norte',2)
98
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ya podemos manipular la base de datos
Usando la cláusula FROM cuáles son las tablas, vistas, funciones, tablas derivadas o
expresiones de tablas comunes que se utilizan en la instrucción SELECT.
99
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Como recomendación, deberás intentar ser lo más selectivo posible en las
columnas a incluir en la cláusula SELECT. ¿Por qué razón? ¿Recuerdas la estructura
de los índices? Si deseamos todas las columnas de una tabla, estaremos
"forzando" a SQL Server a acceder al nivel de datos de las páginas (recuerda:
abajo del todo), y estaremos limitando la efectividad de los índices diseñados en
las tablas.
Para ejecutar una consulta desde SQL Server 2005 Management Studio Express,
conectaremos a la base de datos DemoMSDN, desde una de las opciones marcada en la
siguiente imagen en recuadro rojo:
A continuación deberás escribir el siguiente texto para rellenar unas cuantas filas en la tabla
clientes (veremos luego la sentencia INSERT):
100
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Para ello, copia el texto en la ventana de texto, y pulsa F5, o el botón Execute para ejecutar
la sentencia.
Ejecuta la instrucción y verás como resultado todas las filas de la tabla Clientes. Fíjate que la
columna de base de datos Id, ahora parece que se llama Identificador. Esto es un alias de
columna; habrá ocasiones en las que necesites personalizar el nombre de columna que se
muestra.
Desde Management Studio, también se puede ver la información de la tabla de forma similar
a como se presenta en Access; para ello, deberás seleccionar la tabla que quieres editar,
botón derecho del ratón, y elegir la opción "Open Table" como aparece en la siguiente
imagen:
101
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Deberás tener cuidado con abrir tablas muy grandes, porque el proceso de carga es
más costoso cuanto mayor sea el tamaño de la tabla. Sin embargo, en la versión
2005 de las herramientas administrativas, tenemos la posibilidad de cancelar
consultas mientras se está realizando la petición; fíjate en el botón marcado en
color rojo en la siguiente imagen; pulsando dicho botón se solicita al servidor que
se cancele la consulta.
102
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Claúsula WHERE
La cláusula WHERE se utiliza para aplicar filtros al conjunto de resultados; para ello
existen operadores lógicos AND, OR, NOT, EXISTS con los condicionantes <, >, =, y
BETWEEN. No hay límite para el número de condiciones a establecer. El orden de
prioridad de los operadores lógicos es NOT, seguido de AND y OR. Se pueden utilizar
paréntesis para suplantar esta prioridad en una condición de búsqueda.
Cuando se necesita recuperar información de más de una tabla, se suele especificar
cuáles son las filas coincidentes entre ambas tablas (columnas Clave Ajena / Clave
Primaria que vimos en la lección anterior). Para ello, hay una serie de operadores que
condicionan dicho filtro.
INNER JOIN
Específica que se devuelvan todos los pares de filas coincidentes. Las filas no
coincidentes se descartan del resultado. Si no se especifica ningún tipo de
combinación, éste es el tipo por defecto.
FULL [ OUTER ] JOIN
Especifica que una fila de la tabla de la derecha o de la izquierda, que no cumpla la
condición de combinación, se incluya en el conjunto de resultados y que las columnas
que correspondan a la otra tabla se establezcan en NULL.
LEFT [ OUTER ] JOIN
Especifica que todas las filas de la tabla izquierda que no cumplan la condición de
combinación se incluyan en el conjunto de resultados, con las columnas de resultados
de la otra tabla establecidas en NULL, además de todas las filas devueltas por la
combinación interna.
RIGHT [OUTER] JOIN
Especifica que todas las filas de la tabla derecha que no cumplan la condición de
combinación se incluyan en el conjunto de resultados, con las columnas de resultados
de la otra tabla establecidas en NULL, además de todas las filas devueltas por la
combinación interna.
ON <search_condition>
Especifica la condición en la que se basa la combinación; se puede referenciar más de
una columna, por ejemplo, tablas con claves primarias compuestas.
SELECT
sh.SalesOrderID, sh.OrderDate, sh.CustomerID,
sd.OrderQty, sd.ProductID, sd.UnitPrice
FROM Sales.SalesOrderHeader sh
INNER JOIN Sales.SalesOrderDetail sd
ON sh.SalesOrderID = sd.SalesOrderID
Claúsula GROUP BY
El lenguaje T-SQL permite devolver la información agregada usando la cláusula GROUP BY;
los condicionantes de la agregación se colocan después de la cláusula. Existen las siguientes
funciones de agregado:
AVG, MIN, CHECKSUM, SUM, CHECKSUM_AGG, STDEV, COUNT, STDEVP, COUNT_BIG, VAR,
103
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
GROUPING, VARP, MAX.
Por ejemplo, la siguiente sentencia T-SQL devolvería la cantidad de productos pedidos por
cliente en la base de datos MSDN:
Por ejemplo, la siguiente sentencia T-SQL devolvería la cantidad de productos pedidos por
cliente mayor que 5 en la base de datos MSDN:
Cuando se necesita recuperar los n primeros elementos que cumplen una condición, se
puede utilizar la función TOP. La función TOP tiene un argumento que puede representar un
número o un porcentaje.
104
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3.3. Consultas de modificación
Sentencia INSERT
DELETE Sales.SalesOrderDetail
WHERE SalesOrderID = 3443
La otra posibilidad es hacer la operación con un JOIN (no todos los gestores de bases de
datos lo permiten); el ejemplo sería el siguiente:
UPDATE t
SET AcumuladoImporte = t2.SumaImporte
FROM
TablaAcumulados t
INNER JOIN
(
105
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
SELECT Pedidos.Id, SUM (LineasPedido.Importe) AS SumaImporte
FROM Pedidos JOIN LineasPedido
ON Pedidos.Id = LineasPedido.Id Pedidos.Fecha BETWEEN '20050101' AND
'20060101' GROUP BY Pedidos.Id
) t2
ON t.Id = t2.Id
WHERE
Fecha BETWEEN '20050101' AND '20060101'
Para leer esta consulta es mejor que empieces por el final; mira la consulta que representa
el alias t2: obtiene los en importe total de cada pedido del año 2005.
A continuación, ese resultado se va a cruzar (JOIN) con la tabla TablaAcumulados para
actualizar la columna Acumulado pedidos, reemplazándolo por el valor de SumaImporte de
la consulta anterior. Antes de aplicarlo, deberá acotar la actualización a los pedidos
realizados en el año 2005.
/*Hallar los nombres de los trabajadores que tienen un valor hora mayor que
10000*/
select nombre
from tbltrabajador
where valor_hora>10000
/*Hallar los nombres de los trabajadores que tienen un valor hora entre 10000 y
30000*/
SELECT nombre, valor_hora
FROM tbltrabajador
WHERE (valor_hora BETWEEN 10000 AND 30000)
106
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
/* Hallar el nombre del trabajador que el nombre tenga la cadena ar en el
nombre*/
select *
from tbltrabajador
where nombre like '%ar%'
/*hallar el total de dias asignado a cada trabajador si este es mayor que 20*/
SELECT cedula, SUM(num_dias) AS total
FROM tblasignar
GROUP BY cedula
HAVING (SUM(num_dias) > 20)
107
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
from tbltrabajador inner join tbloficio
on tbltrabajador.tipo_oficio=tbloficio.tipo_oficio
group by tbltrabajador.tipo_oficio,tbloficio.bonificacion
having count(*)>2
/*Hallar los trabajadores que son decoradores o trabajan en los edificios 435*/
select cedula
from tbltrabajador
where tipo_oficio in('decorador')
union all
(select cedula
from tblasignar
where id_edificio in ('435'))
108
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
GROUP BY tblasignar.iden_edif, tbledificio.direccion, dtbledificio.tipo, tbledificio.calidad
HAVING (SUM(tbl.asignacion.num_dias) BETWEEN 20 AND 50)
/*Hallar el nombre los nombres de los trabajadores que tienen un valor hora
mayor que el Valor hora de Nelson fernando o Gabriel*/
SELECT nombre
FROM tbltrabajador
where valor_hora>all
(select valor_hora
from tbltrabajador
where nombre in('nelson','fernando','gabriel'))
/*Mostrar los nombres de los trabajadores que tienen un número e días asignado
mayor que 20*/
SELECT nombre
FROM tbltrabajador
WHERE (NOT EXISTS
(SELECT *
FROM tblasignar
WHERE tbltrabajador.cedula = tblasignar.cedula AND num_dias >
20))
109
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
group by tblasignar.cedula,tbltrabajador.nombre,tbloficio.bonificacion
having count(*)>1
order by nombre
/*Hallar los nombres de los trabajadores que no se han asignado a ningún edificio
*/
SELECT nombre
FROM tbltrabajador
WHERE (NOT EXISTS
(SELECT *
FROM tblasignar
WHERE tbltrabajador.cedula = tblasignar.cedula ))
/*Hallar los datos de los trabajadores y los datos de los edificios en que trabajan
si el valor hora es mayor que 10000*/
select tbltrabajador.*,tbledificio.*
from tbltrabajador inner join tblasignar
on tbltrabajador.cedula=tblasignar.cedula
inner join tbledificio
on tblasignar.iden_edif=tbledificio.iden_edif
where tbltrabajador.valor_hora>10000
/*Subconsultas hallar los nombres de los trabajadores que ganan más que
fernando o raul*/
select nombre,valor_hora
from tbltrabajador
where valor_hora>all
(select valor_hora
from tbltrabajador
where nombre in('fernando','raul'))
/*Consulta para los trabajadores que tienen todos los edificios asignados.*/
SELECT *
FROM .tbltrabajador
WHERE (cedula IN
(SELECT cedula
FROM tblasignar
GROUP BY tblasignar.cedula
HAVING COUNT(*) =
(SELECT COUNT(*)
FROM tbledificio)))
Hallar los datos de los trabajadores y los datos de los edificios en que trabajan si el valor
hora es mayor que 10000
select tbltrabajador.*,tbledificio.*
110
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
from tbltrabajador inner join tblasignar
on tbltrabajador.cedula=tblasignar.cedula
inner join tbledificio
on tblasignar.iden_edif=tbledificio.iden_edif
where tbltrabajador.valor_hora>10000
ibid, pg, 7
111
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Procedimientos almacenados
Los procedimientos almacenados (stored procedures) no son más que una sucesion
ordenada de instrucciones T-SQL que pueden recibir y devolver parametros provistos por el
usuario y se pueden guardar en el servidor con un nombre, para luego poder invocarlos y
ejecutarlos. En esta nueva versión (2005), tambien es posible utiliza procedimientos
almacenados usando CLR. Un procedimiento almacenado CLR es una referencia a un método
de un ensamble de .NET Framework que puede aceptar y devolver parámetros
suministrados por el usuario.
112
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.2. Crear procedimientos almacenados
CREATE PROCEDURE
Clientes_GetAll
AS
SELECT Id, Nombre FROM
dbo.Clientes
La ejecucion de los procedimientos almacenados es muy simple. Desde T-SQL hay que
utilizar la instrucción EXEC, para ejecutar los dos procedimientos almacenados que creamos
arriba deberia escribirse esto:
EXEC Clientes_GetAll
¿Y cómo se haría la llamada desde una aplicación .NET?; para ello deberemos definir un
objeto conexión que conecta a la base de datos, y un objeto command que ejecute el
comando:
113
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
'y escribimos el nombre del stored procedure a invocar
myComm.CommandText = "Clientes_GetAll"
'Creamos un dataset para soportar los datos devueltos por el stored procedure
Dim ClientesDs As DataSet = New DataSet
'Pedimos al Data Adapter que llene el dataset (Esto llama a nuestro comando)
myDA.Fill(ClientesDs)
CREATE PROCEDURE
Clientes_GetOne
@Id int
AS
Como se puede ver, ahora este stored procedure espera un parámetro que luego se usa
para hacer la consulta en el select.
Para llamar a este store procedure se usa la misma sintaxis pero solo agregando el valor del
parámetro. (En este caso, queremos obtener el registro cuyo Id = 4).
EXEC
Clientes_GetOne
4
114
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.5. Desde ADO.NET
'Creamos un dataset para soportar los datos devueltos por el stored procedure
Dim ClientesDs As DataSet = New DataSet
'Pedimos al Data Adapter que llene el dataset (Esto llama a nuestro comando)
myDA.Fill(ClientesDs)
115
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Los TRIGGERS son un tipo de objetos muy especiales en SQL Server 2005, ya que realmente
son muy parecidos a lo que las rutinas de atención a eventos en código en cualquier
lenguaje de programación como por ejemplo .NET. Como objetos especiales que son
también reciben parámetros de una forma muy especial, en forma de unas tablas virtuales,
llamadas inserted y deleted. Estas tablas especiales (inserted y deleted) contienen la
información de los registros que se han eliminado o insertado, con exactamente las mismas
columnas que la tabla base que está sufriendo esa modificación. Las tablas inserted y
deleted estarán o no rellenas de datos en función de cuál sea el tipo de operación que ha
dado lugar a su ejecución. Por ejemplo, un TRIGGER que se dispare por la inserción en una
tabla tendrá tantos registros en la tabla virtual inserted como registros estén siendo
insertados y cero registros en la tabla deleted; un TRIGGER que se dispare por la
eliminación de registros en una tabla tendrá cero registros en la tabla inserted y tantos
registros en la tabla deleted como registros estén siendo eliminados, y un TRIGGER que
responda a una operación de update, tendrá el mismo número de registros en la tabla
inserted y en la tabla deleted que además coincidirá con el número de registros actualizados
en la tabla que da lugar al evento.
Uno de los errores más comunes cuando se desarrollan TRIGGERS está relacionado con esta
arquitectura que acabamos de describir, un TRIGGER no se dispara una vez para cada fila
modificada, sino que se dispara una sola vez por cada operación, independientemente del
número de registros afectados por la operación, y todos los registros afectados están
contenidos en las tablas inserted y deleted dentro del TRIGGER. Muchos desarrolladores
parten de la premisa de que las tablas inserted y deleted contendrán solamente un registro
a lo sumo y como acabamos de explicar esto no es cierto. El segundo error más común tiene
que ver este primero y con el rendimiento, muchos desarrolladores para solventar este
problema crean cursores dentro de los TRIGGERS, los cursores como tal están fuera del
alcance de este capítulo, pero en general un cursor dentro de un TRIGGER es casi un
garantía de obtener problemas de rendimiento, por lo que deberíamos intentar evitarlos lo
más posible.
Los TRIGGERS son usados para añadir lógica o restricciones a la base de datos, por ejemplo
pueden ser usados para establecer reglas de integridad con bases de datos externas (no
grabar un pedido en la base de datos de pedidos si el cliente indicado no está dado de alta
en la base de datos de pedidos por ejemplo); también son usados para mantener tablas de
acumulados como por ejemplo la tabla que mantienen el stock de una determinada
compañía o para guardar el acumulado de ventas en la ficha de un cliente.
116
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.6. Triggers DML: INSTEAD OF
Los TRIGGERS de tipo Instead OF son TRIGGERS que se disparan en lugar de la operación
que los produce, es decir, una operación de borrado de registros con la instrucción delete
sobre una tabla que tiene un TRIGGER de tipo INSTEAD OF no se llega a realizar realmente,
sino que SQL Server 2005 cuando detecta esta operación invoca al TRIGGER que es el
responsable de actuar sobre los registros afectados, en el ejemplo que estamos siguiendo, el
TRIGGER sería el responsable de borrar los registros de la tabla que ha disparado el evento.
Si el TRIGGER no se encarga de esta tarea, el usuario tendrá la sensación de que SQL
Server no hace caso a sus comandos ya que por ejemplo una instrucción DELETE no borrará
los registros.
Repasando el código podemos ve que estamos utilizando una sintaxis de JOIN para un
DELETE, esta sintaxis es perfectamente válida y lo que hará será borrar todos los registros
de C (Clientes) que existan también en D (DELETED) uniendo estas tablas por el código de
cliente en donde el Crédito Total sea 0. El resto de los registros solicitados para borrar (es
decir todos los que su campo crédito total no sea cero) simplemente no se borrarán, ya que
como hemos mencionado los triggers de tipo INSTEAD OF delegan la responsabilidad de la
operación en el cuerpo del TRIGGER.
117
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.7. Triggers DML: AFTER
Veamos algunas particularidades sobre el código del TRIGGER, la cláusula UPDATE, permite
comprobar si se está actualizando una columna en particular, de esta forma nuestro
TRIGGER resultará inocuo para el resto de operaciones de actualización. En la segunda parte
se comprueba que el cliente tenga recibos pendientes con una cláusula EXISTS y con una
cláusula in. La cláusula IN permite comprobar que el código de cliente esté en la lista de
códigos de cliente borrados (todos ellos), la cláusula EXISTS permite comprobar si existen
recibos pendientes en esos clientes.
118
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.8. Triggers DDL: a nivel de base de datos
Los TRIGGERS DDL tienen dos alcances diferenciados, a nivel de servidor y a nivel de base
de datos. Estos alcances están enlazados con el tipo de evento que los dispare, en esta
primera parte los eventos que vamos a ver son a nivel de Base de datos y algunos ejemplos
de ellos son:
Aunque hay muchos más, relacionados con estadísticas, sinónimos, usuarios (no confundir
con logins que son a nivel de servidor), procedimientos, etc. Puede consultar los libros en
pantalla de SQL Server 2005 para obtener una relación completa de todos los eventos a los
que puede responder.
Los TRIGGERS DDL tiene una particularidad adicional sobre los de tipo DML y es que no
tiene mucho sentido las tablas inserted y deleted ya que el tipo de operaciones que disparan
los triggers son radicalmente diferentes. Sin embargo, como ellos necesitan recibir
información acerca del evento que ha ocasionado que el trigger se dispare, para ello existe
la función EVENTDATA(), esta función devuelve un valor XML que responde al siguiente
esquema:
<EVENT_INSTANCE>
<EventType>type</EventType>
<PostTime>date-time</PostTime>
<SPID>spid</ SPID>
<ServerName>name</ServerName>
<LoginName>name</LoginName>
<UserName>name</UserName>
<DatabaseName>name</DatabaseName>
<SchemaName>name</SchemaName>
<ObjectName>name</ObjectName>
<ObjectType>type</ObjectType>
<TSQLCommand>command</TSQLCommand>
</EVENT_INSTANCE>
119
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Utilizando las funciones XML para manipular esa función podemos obtener toda la
información necesaria para crear TRIGGERS que garanticen que en nuestras bases de datos
se siguen los estándares marcados. Supongamos que uno de esos estándares indica que
todas las tablas deben estar documentadas, su propósito, la fecha de creación etc en una
tabla llamada “TablasDocumentadas”, podríamos crear un TRIGGER DDL a nivel de base de
datos que nos garantizase que antes de crear la tabla, ésta , ya ha sido documentada. El
código que lo hace es el siguiente:
Si lo miramos en detalle tan solo estamos obteniendo el nombre del objeto que se ha
insertado (en nuestro caso la tabla que se acaba de crear) y estamos comprobando que
existe un registro con ese nombre en la tabla TablasDocumentadas, sin embargo este
procedimiento podría tener mucha más complejidad y garantizar no solamente que existe
sino que los datos que contiene esa tabla son de cierta calidad.
4.9. Funciones
Una herramienta adicional dentro de la programación de base de datos son las funciones
definidas por el usuario. Estas funciones, que pueden ser de tres tipos, reciben parámetros
como los procedimientos almacenados, y además pueden ser usadas como valores escalares
o como tablas dentro de cláusulas from, lo que las hace tremendamente útiles en
determinadas circunstancias.
Las funciones escalares son aquellas que devuelven un único valor en función de los
parámetros que reciben. Pueden servir en múltiples circunstancias haciendo de la
120
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
programación una experiencia más agradable. Un ejemplo de función escalar podría ser la
siguiente:
Esta función devolverá un string que contiene el rango al que pertenece el número que
recibe como parámetro.
Desde las funciones se puede acceder a tablas también, pero siempre cuando se hace hay
que ser muy cuidadoso para no implementar lo que se llaman “lookups” dentro de las udfs
por que eso puede ser muy peligroso para el rendimiento ya que por cada fila devuelta se
ejecutará una sentencia sin que el optimizador de consultas pueda hacer nada para mejorar
la forma de ejecutarse.
Las funciones de tabla en línea son muy parecidas a las vistas, con la excepción de que
admiten parámetros de tal forma que pueden resultar tremendamente útiles en
determinadas circunstancias. Veamos un ejemplo:
121
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Esta función puede ser usada en sentencias más complejas, un ejemplo de uso podría ser el
siguiente:
De esta forma podemos parametrizar consultas que vamos a usar en cláusulas FROM, de
esta forma escribir código T-SQL resulta más sencillo y el resultado es más comprensible. Si
además combinamos esta funcionalidad con las nuevas funciones APPLY podemos obtener
funcionalidades aún más interesantes, ya que podemos conseguir que las funciones en línea
o de tipo tabla reciban los parámetros desde los valores de otra tabla, la sintaxis sería algo
así:
SELECT * FROM
ClientesSeleccionados C
CROSS APPLY
ClientesPorTipo(C.tipo)
Esta consulta devolverá todos los registros de la tabla Clientes Seleccionados y los registros
de la vista ClientesPortipo para cada Tipo de la tabla primaria.
ibid, pg, 7
ibid, pg,7
122
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 5
Nuevas tendencias de
bases de Datos
Con el avance de la tecnología en las comunicaciones y en la
programación se hace necesario tener conocimientos de lo que son las
bases de datos orientadas a objetos ya esta serán utilizados a un
mismo nivel que las Bases de datos relacionales de la actualidad y las
bases de datos distribuidas que se están utilizando cada vez más en la
misma medida en que se usa la arquitectura centralizada y cliente-
servidor y que se seguirá incrementando de manera considerable en la
medida en que la tecnología de comunicación de datos brinde más
facilidades para ello.
1. Bases de datos Orientadas a
objetos(BDOO)
Definición: Una Base de Datos Orientada a Objetos (BDOO) proporciona un ambiente para
el desarrollo de aplicaciones y un depósito persistente listo para su explotación. Una BDOO
almacena datos, las relaciones entre los datos y su comportamiento, es decir la forma cómo
interactúan unos datos con otros.
124
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Tamaño excesivo en las aplicaciones resultantes. La gran mayoría de los equipos de
cómputo cuentan con capacidades tanto de almacenamiento como de memoria lo
suficientemente buena como para ejecutar la mayoría de las aplicaciones que puedan
desarrollarse con la tecnología orientada a objetos, sin embargo existen casos en los que lo
anterior no se cumple. Una de las desventajas de la programación orientada a objetos es
que cuando se heredan clases a partir de clases existentes se heredan de forma implícita
todos los miembros de dicha clase aun cuando no todos se necesiten, lo que produce
aplicaciones muy grandes que no siempre encajan en los sistemas con los que se disponga.
Velocidad de ejecución. Esto tiene que ver, en cierto modo, con el punto anterior, una
aplicación innecesariamente pesada en muchas ocasiones es más lenta de ejecutar que una
aplicación conformada únicamente por los módulos necesarios.
1.3.1. Abstracción
125
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
clase persona. Un objeto instanciado de esta clase podría ser Juan Pérez, de sexo masculino
y de 35 años de edad, quién se encuentra caminando. Estos atributos son conocidos
formalmente en programación orientada a objetos como variables de instancia por que
contienen el estado de un objeto particular en un momento dado, en este caso Juan Pérez.
Así mismo, los comportamientos son llamados métodos de instancia porque nos muestran el
comportamiento de un objeto particular de la clase.
1.3.2. Modularidad
1.3.3. Encapsulamiento
Una aplicación orientada a objetos está constituida, como mencionamos anteriormente, por
módulos. Estos módulos se implementan mediante clases, las cuales representan,
generalmente, abstracciones de objetos del mundo real. Es por medio del encapsulamiento
que podemos definir los atributos y los métodos de una clase para que los objetos que se
instancian de ésta trabajen como unidades independientes de los demás objetos con los que
interactúan. En otras palabras, con el encapsulamiento ganamos modularidad, y además
protegemos a los objetos de ser manipulados de forma inadecuada por objetos externos.
126
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1.3.4. Jerarquía o herencia
Una vez que hemos definido una clase, por ejemplo la clase bicicleta, con sus atributos y
métodos, tal vez necesitemos definir una nueva clase específica para las bicicletas de
carreras. Es obvio que ésta nueva clases compartirá elementos en común con la clase
bicicleta, es decir, la clase bicicleta de carreras será un subconjunto de la clase bicicleta.
La tecnología orientada a objetos nos permite definir jerarquías entre clases y jerarquías
entre objetos. Las dos jerarquías más importantes que existen son la jerarquía “es un” que
precisa la generalización y especificación entre clases y la jerarquía “es parte de” en la cual
se delimita la agregación de objetos.
1.4. Polimorfismo
127
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Luís Joyanes, Programación orientada a objetos, pág. 18 Mc Grow Hill 1998.
Ibid pg. 5
Ibid pg. 5
Luís Joyanes A. Programación Orientada a Objetos, página 28. Mc Grow Hill, 1998
Ibid pg. 7
Ibid pg. 7
Ibid pg. 7
128
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Diseño de un diagrama de clases
2.1.1. Clase
Una clase define los atributos y los métodos de una serie de objetos. Todos los objetos de
esta clase (instancias de esa clase) tienen el mismo comportamiento y el mismo conjunto de
atributos (cada objetos tiene el suyo propio). En ocasiones se utiliza el término «tipo» en
lugar de clase, pero recuerde que no son lo mismo, y que el término tipo tiene un significado
más general.
En ¨, las clases están representadas por rectángulos, con el nombre de la clase, y también
pueden mostrar atributos y operaciones de la clase en otros dos «compartimentos» dentro
del rectángulo.
2.1.2. Atributos
En UML, los atributos se muestran al menos con su nombre, y también pueden mostrar su
tipo, valor inicial y otras propiedades. Los atributos también pueden ser mostrados
visualmente:
129
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
- Indica atributos privados
2.1.3. Operaciones
2.1.4. Plantillas
Las clases pueden tener plantillas, un valor usado para una clase no especificada o un tipo.
El tipo de plantilla se especifica cuando se inicia una clase (es decir cuando se crea un
objeto). Las plantillas existen en C++ y se introducirán en Java 1.5 con el nombre de
Genéricos.
Ejemplo de clase
Las clases se puede relaciones (estar asociadas) con otras de diferentes maneras:
Generalización
130
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
La herencia es uno de los conceptos fundamentales de la programación orientada a objetos,
en la que una clase «recoge» todos los atributos y operaciones de la clase de la que es
heredera, y puede alterar/modificar algunos de ellos, así como añadir más atributos y
operaciones propias.
En UML, una asociación de generalización entre dos clases, coloca a estas en una jerarquía
que representa el concepto de herencia de una clase derivada de la clase base. En UML, las
generalizaciones se representan por medio de una línea que conecta las dos clases, con una
flecha en el lado de la clase base.
2.1.6. Asociaciones
Una asociación representa una relación entre clases, y aporta la semántica común y la
estructura de muchos tipos de «conexiones» entre objetos.
Las asociaciones son los mecanismos que permite a los objetos comunicarse entre sí.
Describe la conexión entre diferentes clases (la conexión entre los objetos reales se
denomina conexión de objetos o enlace).
Las asociaciones pueden tener una papel que especifica el propósito de la asociación y
pueden ser unidireccionales o bidireccionales (indicando si los dos objetos participantes en la
relación pueden intercambiar mensajes entre sí, o es únicamente uno de ellos el que recibe
información del otro). Cada extremo de la asociación también tiene un valor de
multiplicidad, que indica cuántos objetos de ese lado de la asociación están relacionados con
un objeto del extremo contrario.
En UML, las asociaciones se representan por medio de líneas que conectan las clases
participantes en la relación, y también pueden mostrar el papel y la multiplicidad de cada
uno de los participantes. La multiplicidad se muestra como un rango [mín...máx] de valores
no negativos, con un asterisco (*) representando el infinito en el lado máximo.
131
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Representación visual de una asociación en UML
Imagen extraída de la dirección:
http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html
Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
2.1.7. Agregación
Las acumulaciones son tipos especiales de asociaciones en las que las dos clases
participantes no tienen un estado igual, pero constituyen una relación «completa». Una
acumulación describe cómo se compone la clase que asume el rol completo de otras clases
que se encargan de las partes. En las acumulaciones, la clase que actúa como completa,
tiene una multiplicidad de uno.
En UML, las agregaciones están representadas por una asociación que muestra un rombo en
uno de los lados de la clase completa.
2.1.8. Composición
Las composiciones son asociaciones que representan acumulaciones muy fuertes. Esto
significa que las composiciones también forman relaciones completas, pero dichas relaciones
son tan fuertes que las partes no pueden existir por sí mismas. Únicamente existen como
parte del conjunto, y si este es destruido las partes también lo son.
En UML, las composiciones están representadas por un rombo sólido al lado del conjunto.
132
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ejemplo 1
Ejemplo 2
133
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Imagen extraída de la dirección:
http://www.elguille.info/colabora/puntoNET/canchala_UML.htm
Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
134
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ejemplo: 3
Una empresa desea crear una base de datos para el manejo de sus ventas Este
maneja las siguientes condiciones:
Completar los demás supuestos semánticos que hacen falta para construir el modelo
orientado a objetos o el diagrama de clases. Ubicando las clases, subclases, objetos,
herencia simple y herencia múltiple si la hay.
135
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Para complementar este tema de cómo construir un diagrama de clases visitar esta dirección.
http://cesar.crbyte.com/apuntes/2_tecnicas_modelado.pdf
Obtenida en la Fecha: Noviembre 16 de 2008 hora: 9.30 am
136
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Glosario
GLOSARIO
CASE: Ingeniería del software asistida por Combinación interna: Incluye todos los
computador. registros de ambas tablas que coinciden
con la condición de combinación.
Clase derivada: Clase que hereda
características de otra clase. Combinación natural: Si las columnas se
llaman igual y se elimina una de ellas el
Clase: Representación abstracta, plantilla operador de comparación debe ser el
de un conjunto de objetos. igual.
138
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
DML: Lenguaje de manipulación de datos. Grado de una relación o tabla: Es el
Dominio: Intervalo de valores del que se número de columnas que tiene una tabla o
puede obtener un atributo. relación.
Herencia múltiple: Cuando la clase
Dominios compatibles en tipo: proviene de varios padres.
Dominios que se pueden comparar
lógicamente. Herencia simple: Cuando la clase
proviene de un solo padre.
Entidad débil: Es aquella que solo puede
existir de la destrucción de una relación de Herencia: Características que se heredan.
muchos a muchos. Información: Son los datos organizados
de tal forma que son útiles para la toma
Entidad participante: Son las entidades de desiciones.
que relacionan las entidades débiles.
Informe ad hoc: Informe configurado por
Entidad: Cualquier cosa sobre la que el el usuario después de la implementación
sistema debe almacenar información. de una base de datos.
Equi-unión: Una unión entre dos tablas Integridad de los datos: Son las reglas
basadas en la igualdad. utilizadas por una base de datos para
asegurar que los datos son correctos.
Espacio del problema: La parte del
mundo real que se modela en una Integridad referencial: Aseguran que
aplicación de bases de datos. las asociaciones entre las tablas son
validas.
Esquema de bases de datos: La Intersección relacional: Una operación
disposición física en las tablas de la base relacional que devuelve los registros
de datos. comunes que hay entre dos tablas.
Evento: Cosas que suceden al ejecutar Mensajes: Son las llamadas a las
una acción. funciones.
139
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Modelo orientado a objetos: Proyección relacional: Una operación
Representación visual de la información relacional que separa columnas de una
con orientación a objetos. tabla.
140
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Tipos de datos: Son los diferentes datos
que se pueden almacenar.
141
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Bibliografía
Bibliografía
Cibergrafía
144
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica