Professional Documents
Culture Documents
BASE DE DATOS
• Dato: Conjunto de caracteres con algún significado, pueden ser numéricos, alfabéticos, o
alfanuméricos.
• Información: Es un conjunto ordenado de datos los cuales son manejados según la necesidad del
usuario, para que un conjunto de datos pueda ser procesado eficientemente y pueda dar lugar a
información, primero se debe guardar lógicamente en archivos.
• Campo: Es la unidad más pequeña a la cual uno puede referirse en un programa. Desde el punto de
vista del programador representa una característica de un individuo u objeto.
• 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, son creados con un DBMS. El
contenido de una base de datos engloba a la información concerniente (almacenadas en archivos) de
una organización, de tal manera que los datos estén disponibles para los usuarios, una finalidad de la
base de datos es eliminar la redundancia o al menos minimizarla. Los tres componentes principales
de un sistema de base de datos son el hardware, el software DBMS y los datos a manejar, así como
el personal encargado del manejo del sistema.
Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es
responsable de una tarea específica.
El objetivo primordial de un sistema manejador base de datos es proporcionar un contorno que sea a la vez
conveniente y eficiente para ser utilizado al extraer, almacenar y manipular información de la base de datos.
Todas las peticiones de acceso a la base, se manejan centralizadamente por medio del DBMS, por lo que este
paquete funciona como interface entre los usuarios y la base de datos.
Es la estructura por la que está formada la base de datos, se especifica por medio de un conjunto de
definiciones que se expresa mediante un lenguaje especial llamado lenguaje de definición de datos. (DDL).
Es la persona o equipo de personas profesionales responsables del control y manejo del sistema de base de
datos, generalmente tiene(n) experiencia en DBMS, diseño de bases de datos, Sistemas operativos,
comunicación de datos, hardware y programación.
Los sistemas de base de datos se diseñan para manejar grandes cantidades de información, la manipulación
de los datos involucra tanto la definición de estructuras para el almacenamiento de la información como la
provisión de mecanismos para la manipulación de la información, además un sistema de base de datos debe
de tener implementados mecanismos de seguridad que garanticen la integridad de la información, a pesar de
caídas del sistema o intentos de accesos no autorizados.
Pag. 1
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Un objetivo principal de un sistema de base de datos es proporcionar a los usuarios finales una visión
abstracta de los datos, esto se logra escondiendo ciertos detalles de cómo se almacenan y mantienen los
datos.
Los objetivos principales de un sistema de base de datos es disminuir los siguientes aspectos:
Puesto que los archivos que mantienen almacenada la información son creados por diferentes tipos de
programas de aplicación existe la posibilidad de que si no se controla detalladamente el almacenamiento, se
pueda originar un duplicado de información, es decir que la misma información sea más de una vez en un
dispositivo de almacenamiento. Esto aumenta los costos de almacenamiento y acceso a los datos, además de
que puede originar la inconsistencia de los datos - es decir diversas copias de un mismo dato no concuerdan
entre si -, por ejemplo: que se actualiza la dirección de un cliente en un archivo y que en otros archivos
permanezca la anterior.
Problemas de seguridad.
La información de toda empresa es importante, aunque unos datos lo son más que otros, por tal motivo se
debe considerar el control de acceso a los mismos, no todos los usuarios pueden visualizar alguna
información, por tal motivo para que un sistema de base de datos sea confiable debe mantener un grado de
seguridad que garantice la autentificación y protección de los datos. En un banco por ejemplo, el personal de
nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos
empleados del banco y no a otro tipo de información.
Problemas de integridad.
Los valores de datos almacenados en la base de datos deben satisfacer cierto tipo de restricciones de
consistencia. Estas restricciones se hacen cumplir en el sistema añadiendo códigos apropiados en los diversos
programas de aplicación.
Pag. 2
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
2. MODELOS DE DATOS
Para introducirnos en este tema, empezaremos definiendo que es un modelo.
Modelo
Es una representación de la realidad que contiene las características generales de algo que se va a realizar. En
base de datos, esta representación la elaboramos de forma gráfica.
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, pero el más utilizado por su sencillez y eficiencia es el modelo Entidad-Relación.
El modelo E-R se basa en una percepción del mundo real, la cual está formada por objetos básicos llamados
entidades y las relaciones entre estos objetos así como las características de estos objetos llamados atributos.
Una entidad es un objeto que existe y se distingue de otros objetos de acuerdo a sus características llamadas
atributos. Las entidades pueden ser concretas como una persona o abstractas como una fecha.
Un conjunto de entidades es un grupo de entidades del mismo tipo. Por ejemplo el conjunto de entidades
CUENTA, podría representar al conjunto de cuentas de un banco X, o ALUMNO representa a un conjunto
de entidades de todos los alumnos que existen en una institución.
Una entidad se caracteriza y distingue de otra por los atributos, en ocasiones llamadas propiedades, que
representan las características de una entidad. Los atributos de una entidad pueden tomar un conjunto de
valores permitidos al que se le conoce como dominio del atributo. Así cada entidad se describe por medio de
un conjunto de parejas formadas por el atributo y el valor de dato. Habrá una pareja para cada atributo del
conjunto de entidades.
Ejemplo:
Hacer una descripción en pareja para la entidad alumno con los atributos No_control, Nombre y
Especialidad.
Nombre_atributo Valor
No_control 96310418
Nombre Sánchez Osuna Ana
Esp LI
Pag. 3
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
O considerando el ejemplo del Vendedor cuyos atributos son: RFC, Nombre, Salario.
Nombre_atributo Valor
RFC COMD741101YHR
Nombre Daniel Colín Morales
Salario 3000
La cantidad de entidades en una relación determina el grado de la relación, por ejemplo la relación
ALUMNO-MATERIA es de grado 2, ya que intervienen la entidad ALUMNO y la entidad MATERIA, la
relación PADRES, puede ser de grado 3, ya que involucra las entidades PADRE, MADRE e HIJO.
Aunque el modelo E-R permite relaciones de cualquier grado, la mayoría de las aplicaciones del modelo sólo
consideran relaciones del grado 2. Cuando son de tal tipo, se denominan relaciones binarias.
La función que tiene una relación se llama papel, generalmente no se especifican los papeles o roles, a menos
que se quiera aclarar el significado de una relación.
Diagrama E-R (sin considerar los atributos, sólo las entidades) para los modelos ejemplificados:
Existen 4 tipos de relaciones que pueden establecerse entre entidades, las cuales establecen con cuantas
entidades de tipo B se pueden relacionar una entidad de tipo A:
Pag. 4
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Se presenta cuando existe una relación como su nombre lo indica uno a uno, denominado también relación
de matrimonio. Una entidad del tipo A solo se puede relacionar con una entidad del tipo B, y viceversa.
Por ejemplo: la relación asignación de automóvil que contiene a las entidades EMPLEADO, AUTO, es una
relación 1 a 1, ya que asocia a un empleado con un único automóvil por lo tanto ningún empleado posee más
de un automóvil asignado, y ningún vehículo se asigna a más de un trabajador.
El extremo de la flecha que se encuentra punteada indica el uno de la relación, en este caso, una entidad A
ligada a una entidad B.
Significa que una entidad del tipo A puede relacionarse con cualquier cantidad de entidades del tipo B, y una
entidad del tipo B solo puede estar relacionada con una entidad del tipo A.
Nótese en este caso que el extremo punteado de la flecha de la relación de A y B, indica una entidad A
conectada a muchas entidades B.
Pag. 5
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
c) Muchos a uno.
Indica que una entidad del tipo B puede relacionarse con cualquier cantidad de entidades del tipo A, mientras
que cada entidad del tipo A solo puede relacionarse con solo una entidad del tipo B.
d) Muchas a muchas.
Establece que cualquier cantidad de entidades del tipo A pueden estar relacionados con cualquier cantidad de
entidades del tipo B.
La cardinalidad nos especifica los tipos de relaciones que existen entre las entidades en el modelo E-R y
establecer con esto las validaciones necesarias para conseguir que los datos de la instancia (valor único en un
momento dado de una base de datos) correspondan con la realidad.
Uno a uno.
La cédula de cada persona, El acta de nacimiento, ya que solo existe un solo documento de este tipo para
cada una de las diferentes personas.
Uno a muchos.
Muchos a muchos.
NOTA: Cabe mencionar que la cardinalidad para cada conjunto de entidades depende del punto de vista
que se le dé al modelo en estudio, claro está, sujetándose a la realidad.
Pag. 6
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Como ya se ha mencionado anteriormente, la distinción de una entidad entre otra se debe a sus atributos, lo
cual lo hacen único. Una llave primaria es aquel atributo el cual consideramos clave para la identificación de
los demás atributos que describen a la entidad. Por ejemplo, si consideramos la entidad ALUMNO del
Instituto Tecnológico de La Paz, podríamos tener los siguientes atributos: Nombre, Semestre, Especialidad,
Dirección, Teléfono, Número de control, de todos estos atributos el que podremos designar como llave
primaria es el número de control, ya que es diferente para cada alumno y este nos identifica en la institución.
Claro que puede haber más de un atributo que pueda identificarse como llave primaria en este caso se
selecciona la que consideremos más importante, los demás atributos son denominados llaves secundarias.
Una clave o llave primaria es indicada gráficamente en el modelo E-R con una línea debajo del nombre del
atributo.
Denominado por sus siglas como: E-R; Este modelo representa a la realidad a través de un esquema gráfico
empleando los terminología de entidades, que son objetos que existen y son los elementos principales que se
identifican en el problema a resolver con el diagramado y se distinguen de otros por sus características
particulares denominadas atributos, el enlace que rige la unión de las entidades está representada por la
relación del modelo.
Recordemos que un rectángulo nos representa a las entidades; una elipse a los atributos de las
entidades, y una etiqueta dentro de un rombo nos indica la relación que existe entre las entidades,
destacando con líneas las uniones de estas y que la llave primaria de una entidad es aquel atributo que
se encuentra subrayado.
A continuación mostraremos algunos ejemplos de modelos E-R, considerando las cardinalidades que existen
entre ellos:
Problema:
Diseñar el modelo E-R, para la relación Registro de automóvil que consiste en obtener la tarjeta de
circulación de un automóvil con los siguientes datos:
Pag. 7
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Indicamos con este ejemplo que existe una relación de pertenencia de uno a uno, ya que existe una tarjeta de
circulación registrada por cada automóvil.
En este ejemplo, representamos que existe un solo presidente para cada país.
El siguiente ejemplo indica que un cliente puede tener muchas cuentas, pero que una cuenta puede
llegar a pertenecer a un solo cliente (Decimos puede, ya que existen cuentas registradas a favor de más de
una persona).
Un diagrama E-R, puede ser representado también a través de una colección de tablas. Para cada una de las
entidades y relaciones existe una tabla única a la que se le asigna como nombre el del conjunto de entidades
y de las relaciones respectivamente, cada tabla tiene un número de columnas que son definidas por la
cantidad de atributos y las cuales tienen el nombre del atributo.
La transformación de nuestro ejemplo Venta en la que intervienen las entidades de Vendedor con los
atributos RFC, nombre, puesto, salario y Artículo con los atributos Clave, descripción, costo.
Tabla Empleado
Tabla artículo
Tabla Venta
RFC Clave
TEAT701210XYZ C260
COV741120ABC A100
Nótese que en la tabla de relación - Venta -, contiene como atributos a las llaves primarias de las entidades
que intervienen en dicha relación, en caso de que exista un atributo en las relaciones, este atributo es anexado
como una fila más de la tabla;
Por ejemplo si anexamos el atributo fecha a la relación venta, la tabla que se originaría sería la siguiente:
a) Generalización.
Es el resultado de la unión de 2 o más conjuntos de entidades (de bajo nivel) para producir un conjunto de
entidades de más alto nivel. La generalización se usa para hacer resaltar los parecidos entre tipos de
entidades de nivel más bajo y ocultar sus diferencias.
La generalización consiste en identificar todos aquellos atributos iguales de un conjunto de entidades para
formar una entidad(es) global(es) con dichos atributos semejantes, dicha entidad(es) global(es) quedara a un
nivel más alto al de las entidades origen.
Pag. 9
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Ejemplo:
Tomando el ejemplo del libro de fundamentos de base de datos de Henry F. Korth.
Donde:
Se tiene las entidades Cta_Ahorro y Cta_Cheques, ambas tienen los atributos semejantes de No_Cta y Saldo,
aunque además de estos dos atributos, Cta_Ahorro tiene el atributo Tasa_Interes y Cta_Cheques el atributo
Saldo_Deudor. De todos estos atributos podemos juntar (generalizar) No_Cta y Saldo que son iguales en
ambas entidades.
Entonces tenemos:
Podemos leer esta gráfica como: La entidad Cta_Ahorro hereda de la entidad CUENTA los atributos No_Cta
y saldo, además del atributo de TasaInteres, de forma semejante Cta_cheque tiene los atributos de No_Cta,
Saldo y SaldoDeudor.
b) Especialización:
Es el resultado de tomar un subconjunto de entidades de alto nivel para formar un conjunto de entidades de
más bajo nivel.
• En la generalización cada entidad de alto nivel debe ser también una entidad de bajo nivel. La
especialización no tiene este limitante.
• Se representa por medio de un triángulo denominado con la etiqueta "ISA", se distingue de la
generalización por el grosor de las líneas que conectan al triángulo con las entidades.
• La especialización denota la diferencia entre los conjuntos de entidades de alto y bajo nivel.
Pag. 10
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
c) Agregación.
La agregación surge de la limitación que existe en el modelado de E-R, al no permitir expresar las relaciones
entre relaciones de un modelo E-R en el caso de que una relación X se quiera unir con una entidad cualquiera
para formar otra relación.
La Generalización consiste en agrupar por medio de un rectángulo a la relación (representada por un rombo)
junto con las entidades y atributos involucrados en ella, para formar un grupo que es considerado una entidad
y ahora sí podemos relacionarla con otra entidad.
Para ejemplificar lo anterior consideremos el ejemplo del libro de fundamentos de Base de Datos de Henry
F. Korth. En donde el problema consiste en que existen trabajando muchos empleados que trabajan en
diferentes proyectos, pero dependiendo del trabajo que realiza en pueden llegar a utilizar un equipo o
maquinaria; en este problema intervienen 3 entidades: Empleado, Proyecto y Maquinaria, el diagrama E-R
correspondiente es:
Como el modelo E-R no permite la unión entre dos o más relaciones, la relación trabajo es englobada
como si fuera una entidad más de la relación usa, gráficamente queda como:
Pag. 11
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Ahora podemos decir que la entidad trabajo se relaciona con la entidad maquinaria a través de la relación
usar. Para indicarnos que un trabajo usa un determinado equipo o maquinaria según el tipo de trabajo que se
trate
Estos modelos utilizan registros e instancias para representar la realidad, así como las relaciones que existen
entre estos registros (ligas) o apuntadores. A diferencia de los modelos de datos basados en objetos, se usan
para especificar la estructura lógica global de la base de datos y para proporcionar una descripción a nivel
más alto de la implementación.
• Modelo Relacional
• Modelo de Red
• Modelo Jerárquico
La ventaja del modelo relacional es que los datos se almacenan, al menos conceptualmente, de un modo en
que los usuarios entienden con mayor facilidad. Los datos se almacenan como tablas y las relaciones entre
las filas y las tablas son visibles en los datos. Este enfoque permite a los usuarios obtener información de la
base de datos sin asistencia de sistemas profesionales de administración de información.
a. Es importante saber que las entradas en la tabla tienen un solo valor (son atómicos); no se admiten
valores múltiples, por lo tanto la intersección de un renglón con una columna tiene un solo valor,
nunca un conjunto de valores.
b. Todas las entradas de cualquier columna son de un solo tipo. Por ejemplo, una columna puede
contener nombres de clientes, y en otra puede tener fechas de nacimiento. Cada columna posee un
Pag. 12
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
nombre único, el orden de las comunas no es de importancia para la tabla, las columnas de una tabla
se conocen como atributos. Cada atributo tiene un dominio, que es una descripción física y lógica de
valores permitidos.
c. No existen 2 filas en la tabla que sean idénticas.
d. La información en las bases de datos son representados como datos explícitos, no existen
apuntadores o ligas entre las tablas.
En el enfoque relacional es sustancialmente distinto de otros enfoques en términos de sus estructuras lógicas
y del modo de las operaciones de entrada/salida. En el enfoque relacional, los datos se organizan en tablas
llamadas relaciones, cada una de las cuales se implanta como un archivo. En terminología relacional una fila
en una relación representa un registro o una entidad; Cada columna en una relación representa un campo o
un atributo.
Así, una relación se compone de una colección de entidades(o registros) cuyos propietarios están descritos
por cierto número de atributos predeterminados implantados como campos.
La arquitectura relacional se puede expresar en términos de tres niveles de abstracción: nivel interno,
conceptual y de visión.
En el nivel conceptual, el modelo relacional de datos está representado por una colección de
relaciones almacenadas. Cada registro de tipo conceptual en un modelo relacional de datos se
implanta como un archivo almacenado distinto.
2. Submodelo de datos:
Los esquemas externos de un sistema relacional se llaman submodelos relacionales de datos; cada
uno consta de uno a más escenarios (vistas) para describir los datos requeridos por una aplicación
dada. Un escenario puede incluir datos de una o más tablas de datos. Cada programa de aplicación
está provisto de un buffer ("Area de trabajo de usuario") donde el DBMS puede depositar los datos
recuperados de la base para su procesamiento, o puede guardar temporalmente sus salidas antes de
que el DBMS las escriba en la base de datos.
3. Esquema de almacenamiento:
En el nivel interno, cada tabla base se implanta como un archivo almacenado. Para las
recuperaciones sobre las claves principal o secundaria se pueden establecer uno o más índices para
accesar un archivo almacenado.
4. Sublenguaje de datos:
Pag. 13
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
3. NORMALIZACIÓN
3.1. Terminología relacional equivalente
En la figura anterior se muestra al tabla Trabajo (Código, Nombre, Posición, Salario), donde Código es la
Clave Primaria
Los términos Relación, Tupla y Atributo derivan de las matemáticas relacionales, que constituyen la fuente
teórica del modelo de base de datos relacional.
Todo atributo en una tabla tiene un dominio, el cual representa el conjunto de valores que el mismo puede
tomar. Una instancia de una tabla puede verse entonces como un subconjunto del producto cartesiano entre
los dominios de los atributos. Sin embargo, suele haber algunas diferencias con la analogía matemática, dado
que algunos RDBMS permiten filas duplicadas, entre otras cosas. Finalmente, una tupla puede razonarse
matemáticamente como un elemento del producto cartesiano entre los dominios.
3.2. Dependencia
3.2.1. Dependencia funcional
B es funcionalmente dependiente de A.
Una dependencia funcional es una conexión entre uno o más atributos. Por ejemplo si conocemos el valor de
FechaDeNacimiento podemos conocer el valor de Edad.
Pag. 14
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente manera:
FechaDeNacimiento Edad
Si la dirección o el nombre de una persona están incluidos en el dni, entonces con el dni podemos determinar
la dirección o su nombre.
Entonces
dni nombre
Si con el dni se determina el nombre de una persona, entonces con el dni más la dirección también se
determina el nombre o su dirección.
Edad Conducir
Pag. 15
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
a) Union
y entonces
b) Pseudo-transitiva
y entonces
c) Descomposición
3.3. Claves
Una clave primaria es aquella columna (pueden ser también dos columnas o más) que identifica únicamente
a esa fila. La clave primaria es un identificador que va a ser único para cada fila. Se acostumbra poner la
clave primaria como la primera columna de la tabla pero esto no tiene que ser necesario, si no es más una
conveniencia. Muchas veces la clave primaria es autonumérica.
En una tabla puede que tengamos más de una clave, en tal caso se puede escoger una para ser la clave
primaria, las demás claves son las claves candidatas, además es la posible clave primaria.
Una clave foránea es aquella columna que existiendo como dependiente en una tabla, es a su vez clave
primaria en otra tabla.
Una clave alternativa es aquella clave candidata que no ha sido seleccionada como clave primaria, pero que
también puede identificar de forma única a una fila dentro de una tabla. Ejemplo: Si en un tabla clientes
definimos id_cliente como clave primaria el número de documento o seguro social de ese cliente podría ser
una clave alternativa. En este caso no se usó como clave primaria porque es posible que no se conozca ese
dato en todos los clientes.
Una clave compuesta es una clave que está compuesta por más de una columna.
Las formas normales son aplicadas a las tablas de una base de datos. Decir que una base de datos está en la
forma normal N es decir que todas sus tablas están en la forma normal N.
En general, las primeras tres formas normales son suficientes para cubrir las necesidades de la mayoría de las
bases de datos. El creador de estas 3 primeras formas normales (o reglas) fue Edgar F. Codd.
Pag. 16
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
• Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son
indivisibles, mínimos.
• La tabla contiene una clave primaria
• La tabla no contiene atributos nulos
• Si no posee ciclos repetitivos
Una columna no puede tener múltiples valores. Los datos son atómicos. (Si a cada valor de X le pertenece un
valor de Y, entonces a cada valor de Y le pertenece un valor de X)....
La primera forma normal (1NF o forma mínima) es una forma normal usada en normalización de bases de
datos. Una tabla de base de datos relacional que se adhiere a la 1NF es una que satisface cierto conjunto
mínimo de criterios. Estos criterios se refieren básicamente a asegurarse que la tabla es una representación
fiel de una relación y está libre de "grupos repetitivos".
Sin embargo, el concepto de "grupo repetitivo", es entendido de diversas maneras por diferentes teóricos.
Como una consecuencia, no hay un acuerdo universal en cuanto a qué características descalificarían a una
tabla de estar en 1NF. Muy notablemente, la 1NF, tal y como es definida por algunos autores excluye
"atributos relación-valor" (tablas dentro de tablas) siguiendo el precedente establecido por E.F. Codd)
(algunos de esos autores son: Ramez Elmasri y Shamkant B. Navathe). Por otro lado, según lo definido por
otros autores, la 1NF sí los permite (por ejemplo como la define Chris Date).
Según la definición de Date de la 1NF, una tabla está en 1NF si y solo si es "isomorfa a alguna relación", lo
que significa, específicamente, que satisface las siguientes cinco condiciones:
La violación de cualquiera de estas condiciones significaría que la tabla no es estrictamente relacional, y por
lo tanto no está en 1NF. Algunos ejemplos de tablas (o de vistas) que no satisface esta definición de 1NF
son:
• Una tabla que carece de una clave primaria. Esta tabla podría acomodar filas duplicadas, en violación
de la condición 3.
• Una vista cuya definición exige que los resultados sean retornados en un orden particular, de modo
que el orden de la fila sea un aspecto intrínseco y significativo de la vista. Esto viola la condición 1.
Las tuplas en relaciones verdaderas no están ordenadas una con respecto de la otra.
• Una tabla con por lo menos un atributo que pueda ser nulo. Un atributo que pueda ser nulo estaría en
violación de la condición 4, que requiere a cada campo contener exactamente un valor de su dominio
de columna. Sin embargo, debe ser observado que este aspecto de la condición 4 es controvertido.
Muchos autores consideran que una tabla está en 1FN si ninguna clave candidata puede contener
valores nulos, pero se aceptan éstos para atributos (campos) que no sean clave, según el modelo
original de Codd sobre el modelo relacional, el cual hizo disposición explícita para los nulos.
Pag. 17
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
La cuarta condición de Date, que expresa "lo que la mayoría de la gente piensa como la característica que
define la 1NF", concierne a grupos repetidos. El siguiente ejemplo ilustra cómo un diseño de base de datos
puede incorporar la repetición de grupos, en violación de la 1NF.
Suponga que un diseñador principiante desea guardar los nombres y los números telefónicos de los clientes.
Cliente
ID Cliente Nombre Apellido Teléfono
123 Rachel Ingram 555-861-2025
456 James Wright 555-403-1659
789 María Fernández 555-808-9633
En este punto, el diseñador se da cuenta de un requisito debe guardar múltiples números telefónicos para
algunos clientes. Razona que la manera más simple de hacer esto es permitir que el campo "Teléfono"
contenga más de un valor en cualquier registro dado:
Cliente
ID Cliente Nombre Apellido Teléfono
123 Rachel Ingram 555-861-2025
555-403-1659
456 James Wright
555-776-4100
789 María Fernández 555-808-9633
Asumiendo, sin embargo, que la columna "Teléfono" está definida en algún tipo de dominio de número
telefónico (por ejemplo, el dominio de cadenas de 12 caracteres de longitud), la representación de arriba no
está en 1NF. La 1NF (y, para esa materia, el RDBMS) prohíbe a un campo contener más de un valor de su
dominio de columna.
El diseñador puede evitar esta restricción definiendo múltiples columnas del número telefónico:
Cliente
ID Cliente Nombre Apellido Teléfono 1 Teléfono 2 Teléfono 3
123 Osvaldo Ingram 555-861-2025
456 James Wright 555-403-1659 555-776-4100
789 Maria Fernandez 555-808-9633
Sin embargo, esta representación hace uso de columnas que permiten valores nulos, y por lo tanto no se
conforman con la definición de la 1NF de Date. Incluso si se contempla la posibilidad de columnas con
valores nulos, el diseño no está en armonía con el espíritu de 1NF. Teléfono 1, Teléfono 2, y Teléfono 3,
comparten exactamente el mismo dominio y exactamente el mismo significado; el dividir del número de
teléfono en tres encabezados es artificial y causa problemas lógicos. Estos problemas incluyen:
Pag. 18
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
• Dificultad en hacer consultas a la tabla. Es difícil contestar preguntas tales como "¿Qué clientes
tienen el teléfono X?" y "¿Qué pares de clientes comparten un número de teléfono?".
• La imposibilidad de hacer cumplir la unicidad los enlaces Cliente-a-Teléfono por medio del
RDBMS. Al cliente 789 se le puede dar equivocadamente un valor para el Teléfono 2 que es
exactamente igual que el valor de su Teléfono 1.
• La restricción de los números de teléfono por cliente a tres. Si viene un cliente con cuatro números
de teléfono, estamos obligados a guardar solamente tres y dejar el cuarto sin guardar. Esto significa
que el diseño de la base de datos está imponiendo restricciones al proceso del negocio, en vez de
(como idealmente debe ser el caso) al revés.
El diseñador puede, alternativamente, conservar una sola columna de número de teléfono, pero alterando su
dominio, haciendo una cadena de suficiente longitud para acomodar múltiples números telefónicos:
Cliente
ID Cliente Nombre Apellido Teléfono
123 Rachel Ingram 555-861-2025
456 James Wright 555-403-1659, 555-776-4100
789 María Fernández 555-808-9633
Éste es defendiblemente el peor diseño de todos, y otra vez no mantiene el espíritu de la 1NF. El encabezado
"Teléfono" llega a ser semánticamente difuso, ya que ahora puede representar, o un número de teléfono, o
una lista de números de teléfono, o de hecho cualquier cosa. Una consulta como "¿Qué pares de clientes
comparten un número telefónico?" es virtualmente imposible de formular, dada la necesidad de proveerse de
listas de números telefónicos así como números telefónicos individuales. Con este diseño en la RDBMS, son
también imposibles de definir significativas restricciones en números telefónicos.
Un diseño que está inequívocamente en 1NF hace uso de dos tablas: una tabla de cliente y una tabla de
teléfono del cliente.
Cliente
ID Cliente Nombre Apellido
123 Rachel Ingram
456 James Wright
789 María Fernández
En este diseño no ocurren grupos repetidos de números telefónicos. En lugar de eso, cada enlace Cliente-a-
Teléfono aparece en su propio registro.
Pag. 19
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
3.4.1.3. Atomicidad
Algunas definiciones de 1NF, más notablemente la de E.F. Codd, hacen referencia al concepto de
atomicidad. Codd indica que "se requiere que los valores sean atómicos con respecto al DBMS en los
dominios en los que cada relación es definida". Codd define un valor atómico como uno que "no puede ser
descompuesto en pedazos más pequeños por el DBMS (excepto ciertas funciones especiales)".
Hugh Darwen y Chris Date han sugerido que el concepto de Codd de un "valor atómico" es ambiguo, y que
esta ambigüedad ha conducido a una extensa confusión sobre cómo debe ser entendida la 1NF. En
particular, la noción de un "valor que no puede ser descompuesto" es problemática, pues parecería implicar
que pocos, si algún, tipos de datos son atómicos:
• Una cadena de caracteres parecería no ser atómica, ya que el RDBMS típicamente proporciona
operadores para descomponerla en subcadenas.
• Una fecha parecería no ser atómica, ya que el RDBMS proporciona típicamente operadores para
descomponerla los componentes de día, mes, y año.
• Un número de punto fijo parecería no ser atómico, ya que el RDBMS proporciona típicamente
operadores para descomponerlo en componentes de números enteros y fraccionarios.
Date sugiere que "la noción de atomicidad no tiene ningún significado absoluto": un valor puede ser
considerado atómico para algunos propósitos, pero puede ser considerado un ensamblaje de elementos más
básicos para otros propósitos. Si esta posición es aceptada, la 1NF no puede ser definida con referencia a la
atomicidad. Las columnas de cualquier tipo de datos concebible (desde tipos de cadenas y tipos numéricos
hasta tipos de arreglos y tipos de tabla) son entonces aceptables en una tabla 1NF - aunque quizás no siempre
deseable. Date discute que los atributos relación-valor, por medio de los cuales un campo dentro de una tabla
puede contener una tabla, son útiles en casos raros.
Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de
ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias
parciales.
La segunda forma normal (2NF) es una forma normal usada en normalización de bases de datos. La 2NF
definida originalmente por E.F. Codd en 1971. Una tabla que está en la primera forma normal (1NF) debe
satisfacer criterios adicionales para calificar para la segunda forma normal. Específicamente: una tabla 1NF
está en 2NF si y solo si, dada cualquier clave candidata y cualquier atributo que no sea un constituyente de la
clave candidato, el atributo no clave depende de toda la clave candidata en vez de solo una parte de ella.
En términos levemente más formales: una tabla 1NF está en 2NF si y solo si ninguno de sus atributos no-
principales son funcionalmente dependientes en una parte (subconjunto apropiado) de una clave candidata.
(Un atributo no-principal de A es uno que no pertenece a ninguna clave candidata).
Observe que cuando una tabla 1NF no tiene ninguna clave candidata compuesta (claves candidata
consistiendo en más de un atributo), la tabla está automáticamente en 2NF.
Pag. 20
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Ejemplo
El atributo restante, Lugar actual de trabajo, es dependiente en solo parte de la clave candidata, llamada
Empleado. Por lo tanto la tabla no está en 2NF. Observe la redundancia de la manera en que son
representadas los Lugares actuales de trabajo: nos dicen tres veces que Jones trabaja en la 114 Main Street, y
dos veces que Ellis trabaja en 73 Industrial Way. Esta redundancia hace a la tabla vulnerable a anomalías de
actualización: por ejemplo, es posible actualizar el lugar del trabajo de Jones en sus registros "Mecanografía"
y "Taquigrafía" y no actualizar su registro "Tallado". Los datos resultantes implicarían respuestas
contradictorias a la pregunta "¿Cuál es el lugar actual de trabajo de Jones?".
Una alternativa 2NF a este diseño representaría la misma información en dos tablas:
Empleados
Empleado Lugar actual de trabajo
Jones Mecanografía
Jones Taquigrafía
Jones Tallado
Roberts Limpieza ligera
Ellis Alquimia
Ellis Malabarismo
Harrison Limpieza ligera
Las anomalías de actualización no pueden ocurrir en estas tablas, las cuales están en 2NF.
Sin embargo, no todas las tablas 2NF están libres de anomalías de actualización. Un ejemplo de una tabla
2NF que sufre de anomalías de actualización es:
Pag. 21
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Aunque el Ganador y la Fecha de nacimiento del ganador están determinadas por una clave completa
{Torneo, Año} y no son partes de ella, particularmente las combinaciones Ganador / Fecha de nacimiento
del ganador son mostradas redundantemente en múltiples registros. Este problema es tratado por la tercera
forma normal (3NF).
Una tabla para la cual no hay dependencias funcionales parciales en la clave primaria está típicamente, pero
no siempre, en 2NF. Además de la clave principal, la tabla puede contener otras claves candidatas; es
necesario establecer que ningún atributo no-principal tienen dependencias de clave parciales en cualesquiera
de estas claves candidata.
Aun si el diseñador ha especificado la clave principal como {Nombre completo del modelo}, la tabla no está
en 2NF. {fabricante, modelo} es también una clave candidato, y País del fabricante es dependiente en un
subconjunto apropiado de él: Fabricante.
La tabla se encuentra en 3FN si es 2FN y cada atributo que no forma parte de ninguna clave, depende
directamente y no transitivamente, de la clave primaria.
La tercera forma normal (3NF) es una forma normal usada en la normalización de bases de datos. La 3NF
fue definida originalmente por E.F. Codd en 1971. La definición de Codd indica que una tabla está en 3NF si
y solo si las dos condiciones siguientes se mantienen:
Pag. 22
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Un atributo no-primario es un atributo que no pertenece a ninguna clave candidato. Una dependencia
transitiva es una dependencia funcional X → Z en la cual Z no es inmediatamente dependiente de X, pero sí
de un tercer conjunto de atributos Y, que a su vez depende de X.
Una formulación alternativa de la definición de Codd, dada por Carlo Zaniolo en 1982, es ésta: Una tabla
está en 3NF si y solo si, para cada una de sus dependencias funcionales X → A, por lo menos una de las
condiciones siguientes se mantiene:
• X contiene A, ó
• X es una superclave, ó
• A es un atributo primario (es decir, A está contenido dentro de una clave candidato)
La definición de Zaniolo tiene la ventaja de dar un claro sentido de la diferencia entre la 3NF y la más
rigurosa forma normal de Boyce-Codd (BCNF). La BCNF simplemente elimina la tercera alternativa ("A es
un atributo primario").
Ejemplo
Un ejemplo de una tabla 2NF que falla en satisfacer los requisitos de la 3NF es:
La violación de la 3NF ocurre porque el atributo no primario Fecha de nacimiento del ganador es
dependiente transitivamente de {Torneo, Año} vía el atributo no primario Ganador. El hecho de que la Fecha
de nacimiento del ganador es funcionalmente dependiente en el Ganador hace la tabla vulnerable a
inconsistencias lógicas, pues no hay nada que impida a la misma persona ser mostrada con diferentes fechas
de nacimiento en diversos registros.
Para expresar los mismos hechos sin violar la 3NF, es necesario dividir la tabla en dos:
Las anomalías de actualización no pueden ocurrir en estas tablas, las cuales están en 3NF.
Pag. 23
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
La tabla se encuentra en BCNF si cada determinante, atributo que determina completamente a otro, es clave
candidata.
La Forma Normal de Boyce-Codd (o FNBC) es una forma normal utilizada en la normalización de bases de
datos. Es una versión ligeramente más fuerte de la Tercera forma normal (3FN). La forma normal de Boyce-
Codd requiere que no existan dependencias funcionales no triviales de los atributos que no sean un conjunto
de la clave candidata. En una tabla en 3FN, todos los atributos dependen de una clave, de la clave completa y
de ninguna otra cosa excepto de la clave (excluyendo dependencias triviales, como). Se dice que una tabla
está en FNBC si y solo si está en 3FN y cada dependencia funcional no trivial tiene una clave candidata
como determinante. En términos menos formales, una tabla está en FNBC si está en 3FN y los únicos
determinantes son claves candidatas.
Ejemplo
Solamente en casos raros una tabla en 3NF no satisface los requerimientos de la BCNF. Un ejemplo de tal
tabla es (teniendo en cuenta que cada estudiante puede tener más de un tutor):
El propósito de la tabla es mostrar qué tutores están asignados a qué estudiantes. Las claves candidatas de la
tabla son:
Por lo tanto los tres atributos de la tabla son atributos primarios, es decir, los tres atributos pertenecen a las
claves candidatas.
Recuerde que la 2NF prohíbe dependencias funcionales parciales de atributos no-primarios en las claves
candidatas, y la 3NF prohíbe dependencias funcionales transitivas de atributos no-primarios en claves
candidatas. Dado que la tabla de arriba carece de cualquier atributo no-primario, está en 2NF y 3NF.
La FNBC es más rigurosa que la 3NF en que no permite ninguna dependencia funcional en la cual el
conjunto determinante de atributos no sea una clave candidato (o superconjunto de eso). La dependencia de
ID Tutor en Número de seguro social del tutor es ese tipo de dependencia. Por consiguiente, la tabla de arriba
no está en FNBC
Cualquier tabla que sea insuficiente en FNBC será vulnerable a inconsistencias lógicas. En la tabla de arriba
podía ser representada una combinación inconsistente de ID Tutor y Número de seguro social del tutor.
En este caso, corregir el problema sería una simple cuestión de usar solo un esquema de identificación para
los tutores: o el ID, o el número del seguro social, pero no ambos.
Pag. 24
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
La cuarta forma normal (4NF) es una forma normal usada en la normalización de bases de datos. La 4NF se
asegura de que los hechos multivalores independientes estén correcta y eficientemente representados en un
diseño de base de datos. La 4NF es el siguiente nivel de normalización después de la forma normal de
Boyce-Codd (BCNF).
La definición de la 4NF confía en la noción de una dependencia multivalor. Una tabla con una dependencia
multivalor es una donde la existencia de dos o más relaciones independientes muchos a muchos causa
redundancia; y es esta redundancia la que es removida por la cuarta forma normal.
Permutaciones de envío de
Restaurante Variedad de Pizza Área de envío
Cada fila indica que un restaurante dado puede entregar una variedad dada de pizza a un área dada.
Note que debido a que la tabla tiene una clave única y ningún atributo no-clave, no viola ninguna forma
normal hasta el BCNF. Pero debido a que las variedades de pizza que un restaurante ofrece son
independientes de las áreas a las cuales el restaurante envía, hay redundancia en la tabla: por ejemplo, nos
dicen tres veces que A1 Pizza ofrece la Corteza rellena, y si A1 Pizza comienza a producir pizzas de Corteza
de queso entonces necesitaremos agregar múltiples registros, uno para cada una de las Áreas de envío de A1
Pizza. En términos formales, esto se describe como que Variedad de pizza está teniendo una dependencia
multivalor en Restaurante.
Para satisfacer la 4NF, debemos poner los hechos sobre las variedades de pizza ofrecidas en una tabla
diferente de los hechos sobre áreas de envío:
Pag. 25
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
En contraste, si las variedades de pizza ofrecidas por un restaurante a veces variaran de una área de envío a
otra, la tabla original de la tres columnas satisfaría la 4NF.
Ronald Fagin demostró que es siempre posible alcanzar la 4NF (pero no siempre deseable). El teorema de
Rissanen es también aplicable en dependencias multivalor.
La quinta forma normal (5NF), también conocida como forma normal de proyección-unión (PJ/NF), es un
nivel de normalización de bases de datos designado para reducir redundancia en las bases de datos
relacionales que guardan hechos multi-valores aislando semánticamente relaciones múltiples relacionadas.
Una tabla se dice que está en 5NF si y solo si está en 4NF y cada dependencia de unión (join) en ella es
implicada por las claves candidatas.
Ejemplo
Psiquiatra-para-asegurador-para-condición
Psiquiatra Asegurador Condición
El psiquiatra puede ofrecer tratamiento reembolsable a los pacientes que sufren de la condición dada y que
son asegurados por el asegurador dado. En ausencia de cualquier regla que restrinja las combinaciones
válidas posibles de psiquiatra, asegurador, y condición, la tabla de tres atributos Psiquiatra-para-Asegurador-
para-Condición es necesaria para modelar la situación correctamente.
Pag. 26
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Cuando un psiquiatra es autorizado a ofrecer el tratamiento reembolsable a los pacientes asegurados por el
asegurador P, y el psiquiatra puede tratar la condición C, entonces - en caso que el asegurador P cubra la
condición C - debe ser cierto que el psiquiatra puede ofrecer el tratamiento reembolsable a los pacientes que
sufren de la condición C y están asegurados por el asegurador P.
Psiquiatra-para-condición
Psiquiatra Condición
Psiquiatra-para-asegurador
Psiquiatra Asegurador
Asegurador-para-condición
Asegurador Condición
Healthco Ansiedad
Healthco Depresión
Healthco Demencia
FriendlyCare OCD
FriendlyCare Ansiedad
FriendlyCare Depresión
FriendlyCare Trastorno emocional
FriendlyCare Esquisofrenia
Victorian Life Trastorno de conversión
Note como esta disposición ayuda a quitar redundancia. Suponga que el Dr. James se convierte en un
proveedor de tratamientos para FriendlyCare. En la disposición anterior tendríamos que agregar dos nuevas
entradas puesto que el Dr. James puede tratar dos condiciones cubiertas por FriendlyCare: ansiedad y
depresión. Con la nueva disposición necesitamos agregar una sola entrada (en la tabla Psiquiatra-para-
Asegurador).
Pag. 27
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
3.4.6.1. Uso
Solamente en raras situaciones una tabla 4NF no se conforma con la 5NF. Éstas son situaciones en las cuales
un complejo constreñimiento del mundo real gobernando las combinaciones válidas de los valores de
atributos en la tabla 4NF no es implícito en la estructura de esa tabla. Si esa tabla no se normaliza a 5NF, la
carga de mantener la consistencia lógica de los datos dentro de la tabla debe ser llevada en parte por la
aplicación responsable de inserciones, borrados, y actualizaciones a ella; y hay un aumentado riesgo que los
datos dentro de la tabla se volverán inconsistentes. En contraste, el diseño 5NF excluye la posibilidad de
tales inconsistencias.
Pag. 28
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
La historia de SQL (que se pronuncia deletreando en inglés las letras que lo componen, es decir
"ese-cu-ele" y no "siquel" como se oye a menudo) empieza en 1974 con la definición, por parte de
Donald Chamberlin y de otras personas que trabajaban en los laboratorios de investigación de IBM,
de un lenguaje para la especificación de las características de las bases de datos que adoptaban el modelo
relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language) y se implementó en un
prototipo llamado SEQUEL-XRM entre 1974 y 1975. Las experimentaciones con ese prototipo
condujeron, entre 1976 y 1977, a una revisión del lenguaje (SEQUEL/2), que a partir de ese momento
cambió de nombre por motivos legales, convirtiéndose en SQL. El prototipo (System R), basado en
este lenguaje, se adoptó y utilizó internamente en IBM y lo adoptaron algunos de sus clientes
elegidos. Gracias al éxito de este sistema, que no estaba todavía comercializado, también otras
compañías empezaron a desarrollar sus productos relacionales basados en SQL. A partir de 1981,
IBM comenzó a entregar sus productos relacionales y en 1983 empezó a vender DB2. En el curso
de los años ochenta, numerosas compañías (por ejemplo Oracle y Sybase, sólo por citar algunos)
comercializaron productos basados en SQL, que se convierte en el estándar industrial de hecho por lo que
respecta a las bases de datos relacionales.
En 1986, el ANSI adoptó SQL (sustancialmente adoptó el dialecto SQL de IBM) como estándar para los
lenguajes relacionales y en 1987 se transformó en estándar ISO. Esta versión del estándar va con el nombre
de SQL/86. En los años siguientes, éste ha sufrido diversas revisiones que han conducido primero a la
versión SQL/89 y, posteriormente, a la actual SQL/92.
El hecho de tener un estándar definido por un lenguaje para bases de datos relacionales abre
potencialmente el camino a la intercomunicabilidad entre todos los productos que se basan en él. Desde el
punto de vista práctico, por desgracia las cosas fueron de otro modo. Efectivamente, en general cada
productor adopta e implementa en la propia base de datos sólo el corazón del lenguaje SQL (el así
llamado Entry level o al máximo el Intermediate level), extendiéndolo de manera individual según la
propia visión que cada cual tenga del mundo de las bases de datos.
Actualmente, está en marcha un proceso de revisión del lenguaje por parte de los comités ANSI e ISO,
que debería terminar en la definición de lo que en este momento se conoce como SQL3. Las
características principales de esta nueva encarnación de SQL deberían ser su transformación en un
lenguaje stand-alone (mientras ahora se usa como lenguaje hospedado en otros lenguajes) y la
introducción de nuevos tipos de datos más complejos que permitan, por ejemplo, el tratamiento de datos
multimediales.
SQL (Standar Query Lenguaje) es un lenguaje estandarizado de base de datos, el cual nos permite realizar
tablas y obtener datos de ella de manera muy sencilla. Para exponer más claramente los conceptos se
realizaran ejemplo sobre relaciones que se crearan aquí para entender mejor como funciona SQL.
Pag. 29
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Cuando aquí nos refiramos a relación estamos hablando más concretamente a la tabla de datos en sí, y sus
atributos serán los campos de la tabla. Como ejemplo la siguiente relación (tabla) la llamaremos persona y
sus atributos (campos) son nombre, apellido Y DNI
La estructura básica de una expresión para consulta SQL consta de tres cláusulas:
• SELECT
• FROM
• WHERE
La cláusula SELECT se usa para listar los atributos que se desean en el resultado de una consulta.
La cláusula FROM lista las relaciones que se van a examinar en la evaluación de la expresión
La cláusula WHERE costa de un predicado que implica atributos de las relaciones que aparecen en la
cláusula FROM.
SELECT A1,A2,...,An
FROM r1,r2,...,rn
WHERE P
Donde:
Ai = atributo (Campo de la tabla)
ri = relación (Tabla )
P = predicado (condición)
Pag. 30
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Ejemplo: Seleccionar todos los nombres de las personas que tengan el apellido MARQUESI de la tabla
persona
SELECT nombre
FROM persona
WHERE apellido = “ MARQUESI”
NOMBRE
MARTIN
PABLO
El resultado de una consulta es por supuesto otra relación. Si se omite la cláusula WHERE, el predicado P es
verdadero. La lista A1, A2,..., An puede sustituirse por un asterisco (*) para seleccionar todos los atributos
de todas las relaciones que aparecen en la cláusula FROM, aunque no es conveniente elegir esta última
opción salvo que sea necesario pues desperdiciamos mucho tiempo en obtenerlo
4.4. Alias
Es posible renombrar los atributos y las relaciones, a veces por conveniencia y otras veces por ser necesario,
para esto usamos la clausula AS como en el siguiente ejemplo.
Ejemplo
PRIMER NOMBRE
MARTIN
PABLO
En este ejemplo cabe destacar un par de cosas. Cuando nos referimos a un atributo como es el caso de
nombre, podemos referirnos a este usando la relación ( o el alias en este ejemplo ) a la que pertenece el
atributo seguido de un punto seguido del atributo <P.nombre>, a veces esta notación será necesaria para
eliminar ambigüedades. Los corchetes los usamos cuando usamos espacios en blancos o el caratér (-) en el
nombre de atributo o alias.
Usar alias en los atributos nos permite cambiar el nombre de los atributos de la respuesta a la consulta.
Cuando asociamos un alias con una relación decimos que creamos una variable de tupla. Estas variables de
tuplas se definen en la cláusula FROM después del nombre de la relación.
En las consultas que contienen subconsultas, se aplica una regla de ámbito a las variables de tupla. En una
subconsulta está permitido usar solo variables de tupla definidas en la misma subconsulta o en cualquier
consulta que tenga la subconsulta.
La lógica de estos conectores es igual que en cualquier lenguaje de programación y sirven para unir
predicados.
Pag. 31
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
También incluye el operador de comparación BETWEEN, que se utiliza para valores comprendidos.
Ejemplo: Encontrar todos los nombres y dni de las personas cuyos dni sea mayor que 26 millones y menor a
28 millones
NOMBRE DNI
MARTIN 26125988
ESTEFANIA 27128064
MELISA 27456224
BETANIA 27128765
SQL también incluye un operador de selección para comparaciones de cadena de caracteres. Los modelos se
describen usando los caracteres especiales:
Estos modelos se expresan usando el operador de comparación LIKE. Un error muy frecuente es tratar de
utilizar los modelos mediante el operador de igualdad ( = ) lo cual es un error de sintaxis.
Ejemplo: encontrar los nombres que comiencen con la letra p o el nombre tenga exactamente 6 caracteres de
la relación persona
SELECT nombre
FROM persona
WHERE (nombre LIKE "P%") OR (nombre LIKE "_ _ _ _ _ _")
NOMBRE
MARTIN
PABLO
MELISA
SANDRA
Los lenguajes de consulta formales se basan en la noción matemática de relación como un conjunto. Por ello
nunca aparecen tuplas duplicadas en las relaciones. En la práctica la eliminación de duplicados lleva bastante
tiempo. Por lo tanto SQL permite duplicados en las relaciones. Así pues en las consultas se listaran todas las
tuplas inclusive las repetidas.
En aquellos casos en los que queremos forzar la eliminación de duplicados insertamos la palabra clave
DISTINCT después de la cláusula SELECT
Pag. 32
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
APELLIDO
MARQUESI
SANCHEZ
GUISSINI
ALEGRATO
BRITTE
ARDUL
MICHELLI
MUSACHEGUI
SERRAT
Si observamos la tabla original de la relación persona veremos que el apellido marquesi aparecía dos veces,
pero debido al uso de DISTINCT en la consulta la relación respuesta solo lista un solo marquesi.
SQL incluye las operaciones de conjuntos UNION, INTERSECT, MINUS, que operan sobre relaciones y
corresponden a las operaciones del álgebra unión, intersección y resta de conjuntos respectivamente. Para
realizar esta operación de conjuntos debemos tener sumo cuidado que las relaciones tengan las mismas
estructuras.
Incorporemos ahora una nueva relación, llamada jugadores que representa las personas que juegan al fútbol,
sus atributos serán DNI, puesto y nro_camiseta.
Supongamos que esta nueva tabla está conformada de la siguiente manera
Ejemplo: Obtener todos los nombres de la relación persona cuyos apellidos sean Marquesi o Serrat
SELECT nombre
FROM PERSONA
WHERE apellido = "MARQUESI"
UNION
SELECT nombre
FROM PERSONA
WHERE apellido = "SERRAT"
PRIMER NOMBRE
MARTIN
PABLO
JUAN
Pag. 33
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Ejemplo: Obtener todos los DNI de los que juegan al fútbol y, además, están en la lista de la relación persona
SELECT dni
FROM persona
INTERSECT
SELECT dni
FROM jugadores
DNI
26125988
25485699
28978845
Por omisión, la operación de unión elimina las tuplas duplicadas. Para retener duplicados se debe escribir
UNION ALL en lugar de UNION.
Pertenencia a un conjunto
Ejemplo: Encontrar los nombres de las personas que juegan al fútbol y, además, se encuentran en la relación
persona
NOMBRE APELLIDO
MARTIN MARQUESI
PABLO MARQUESI
JUAN SERRAT
Es posible probar la pertenencia de una relación arbitraria SQL usa la notación de elementos <v1,v2,...,vn>
para representar una tupla de elementos de n que contiene los valores v1,v2,...,vn.
Comparación de conjuntos
En conjuntos la frase << mayor que algún >> se representa en SQL por ( >SOME ), también podría
entenderse esto como << mayor que el menor de >>, su sintaxis es igual que la del conector IN. SQL
también permite las comparaciones ( >SOME ),( =SOME ) ( >=SOME ), ( <=SOME ) y ( <>SOME ).
También existe la construcción ( >ALL ), que corresponde a la frase << mayor que todos >>. Al igual que el
operador SOME, puede escribirse ( >ALL ),( =ALL ) ( >=ALL ), ( <=ALL ) y ( <>ALL ).
En ocasiones podríamos querer comparar conjuntos para determinar si un conjunto contiene los miembros de
algún otro conjunto. Tales comparaciones se hacen usando las construcciones CONTAINS y NOT
CONTAINS
Pag. 34
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
La construcción EXISTS devuelve el valor TRUE si la subconsulta del argumento no está vacía, y la
construcción NOT EXISTS devuelve TRUE si la consulta es vacía.
Ejemplo: encontrar todos los nombres y apellidos de la relación persona si es que en la relación jugadores
existe un jugador con el número de dni 27128055
Como el dni = 27128055 no existe en la relación jugadores, la condición es FALSE y por lo tanto la
respuesta es vacía.
SQL ofrece al usuario cierto control sobre el orden en el que se va a presentar las tuplas en una relación. La
cláusula ORDER BY hace que las tupla en el resultado dé una consulta en un orden específico.
Por omisión SQL lista los elementos en orden ascendente. Para especificar el tipo de ordenación, podemos
especificar DESC para orden descendente o ASC para orden ascendente.
Ejemplo: encontrar todos los nombres y apellido de la relación persona y ordenar los resultados por apellido
y nombre en forma descendente
APELLIDO NOMBRE
SERRAT JUAN
SANCHEZ ROBERTO
MUSACHEGUI BETANIA
MICHELLI SOLEDAD
MARQUESI PABLO
MARQUESI MARTIN
GUISSINI ESTEFANIA
BRITTE SANDRA
ARDUL MELISA
ALEGRATO RUBEN
Pag. 35
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
SQL ofrece la posibilidad de calcular funciones en grupos de tuplas usando la cláusula GROUP BY, también
incluye funciones para calcular
• Promedios AVG
• Mínimo MIN
• Máximo MAX
• Total SUM
• Contar COUNT
Para los próximos ejemplos incorporamos una nueva relación llamada PRO que representara los jugadores
profesionales de fútbol, sus atributos serán dni, años_pro, club, valor_actual. Y los valores son los
siguientes:
Ejemplo: determinar el valor total en jugadores así como también la cantidad de jugadores de cada club en la
relación pro
Ejemplo: Determinar por cada club cual es el valor_actual del jugador más caro de la relación pro
CLUB JUG_MAS_CARO
ALL BOY'S 2500
LANUS 12000
Hay ocasiones en la que los duplicados deben eliminarse antes de calcular una agregación. Cuando queremos
eliminar los duplicados del cálculo usamos la palabra clave DISTINCT antepuesto al atributo de agregación
que queremos calcular, como por ejemplo COUNT(DISTINCT club).
Hay ocasiones en las que es útil declara condiciones que se aplican a los grupos mas que a las tuplas. Para
esto usamos la cláusula HAVING de SQL.
Pag. 36
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Ejemplo: Determinar por cada club cual es el valor_actual del jugador más caro, pero con la condición de
que este sea mayor a 10000 de la relación pro
CLUB JUG_MAS_CARO
LANUS 12000
Si en la misma consulta aparece una cláusula WHERE y una cláusula HAVING, primero se aplica el
predicado de la cláusula WHERE, las tupla que satisfacen el predicado WHERE son colocadas en grupos por
la cláusula GROUP BY. Después se aplica la cláusula HAVING a cada grupo.
a) Eliminación
Una solicitud de eliminación se expresa casi de igual forma que una consulta. Podemos suprimir solamente
tuplas completas, no podemos suprimir valores solo de atributos.
DELETE FROM r
WHERE P
Donde P presenta un predicado y r representa una relación. Las tuplas t en r para las cuales P(t) es verdadero,
son eliminadas de r.
Si omitimos la cláusula WHERE se eliminan todas las tuplas de la relación r (un buen sistema debería buscar
confirmación del usuario antes de ejecutar una acción tan devastadora)
Ejemplo: Eliminar todas las tuplas de la relación persona en donde apellido sea igual a “BRITTE”
b) Inserción
Para insertar datos en una relación, especificamos una tupla que se va a insertar o escribimos una consulta
cuyo resultado es un conjunto de tuplas que se van a insertar. La inserción de tuplas la realizamos mediante
las sentencias
INSERT INTO r1
VALUES (v1,v2,...,v)
Pag. 37
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
Ejemplo: Insertar una tupla con los mismos valores de la tupla eliminada en el ejemplo anterior en la relación
persona.
En este ejemplo, los valores se especifican en el orden en que se listan los atributos correspondientes en el
esquema de relación. Para poder ingresar los datos en un orden diferente podríamos haber escrito
c) Actualizaciones
En ciertas ocasiones podemos desear cambiar los valores de una tupla sin cambiar todos los valores en dicha
tupla. Para este propósito usamos la sentencia
UPDATE r1
SET A1 = V1, A2 = V2,...,An = Vn
WHERE P
Ejemplo: En la relación jugadores actualizar la posición de los jugadores que posean la camiseta número 5 y
asignarles la camiseta número 7.
UPDATE jugadores
SET nro_camiseta = 7
WHERE nro_camiseta = 5
Es posible que para las tuplas insertadas se den valores únicamente a algunos atributos del esquema. El resto
de los atributos son asignados a valores nulos representados por NULL. Para esto colocamos la palabra
reservada NULL como valor del atributo.
Ejemplo: Insertar en la relación jugadores un jugador con dni = 26356312, puesto = defensor, y al cual aun
no le han asignado un nro_camiseta.
Pag. 38
C.T.S. ÁREA DE INFORMÁTICA - BASE DE DATOS - 3E
a) Creación
Una relación en SQL se define usando la orden CREATE TABLE r(A1 D1, A2 D3,...,An Dn)
Donde r es el nombre de la relación, cada Ai es el nombre de un atributo del esquema de la relación r y Di es
el tipo de dato de Ai. Una relación recién creada está vacía. La orden INSERT puede usarse para cargar la
relación
Ejemplo: crear la relación lesionado con los atributos nombre, apellido ambos de tipo char y tiempo_inhabilit
de tipo entero
b) Eliminación
Para eliminar una relación usamos la orden DROP TABLE r, esta orden elimina toda la información sobre la
relación sacada de la base de datos, esta orden es más fuerte que DELET FROM r ya que esta ultima elimina
todas las tuplas pero no destruye la relación, mientras que la primera sí.
c) Actualización
La orden ALTER TABLE se usa para añadir atributos a una relación existente. A todas las tuplas en la
relación se les asigna NULL como valor de atributo. La sintaxis de ALTER TABLE es la siguiente:
Ejemplo: agregar los atributos de tipo char nombre y apellido a la relación jugadores
Pag. 39