Modelo de Datos
Relacional
Tecnólogo en Informática, sede Paysandú Bases de Datos 1
Modelo Relacional
Temario
C
o
n
c
e
pt
o
s
d
e
l
m
o
d
e
l
o
r
e
l
a
c
i
o
n
a
l
Restricciones del modelo relacional y esquemas de base de datos
Operaciones de creación y modificación de relaciones
Referencias:
Tecnólogo en Informática - Bases de Datos 1 3
Modelo Relacional
Introducción
Modelo Relacional
–
Las primeras implementaciones comerciales estuvieron disponibles a principios de
los 1980s
Ejemplos de Motores de base de datos relacionales:
–
DB2, Informix
–
Oracle
–
SQL Server
–
MySQL
Modelo Relacional:
Conceptos generales
Tecnólogo en Informática - Bases de Datos 1 5
Modelo Relacional
Conceptos generales
Propuesto por Edgar Frank Codd en 1970Los datos se representan como una colección de relaciones – Cada relación se asemeja a una tabla de valores
Tabla de valores – Filas
● Representa una colección de datos relacionada.
● Corresponde a una entidad o relación del mundo real. ● Tupla
– Nombre de las tablas y nombre de las columnas
Modelo Relacional
Conceptos generales
Cada tupla aparece como una fila y cada atributo como un encabezamiento de columna que indica la interpretación que habrá que dar a cada uno de los valores de la misma
Tecnólogo en Informática - Bases de Datos 1 7
Modelo Relacional
Conceptos generales
Dom
i
n
io
(
D
)
– Conjunto de valores atómicos
– Atómico
● Cada valor del dominio es indivisible
Especificar un dominio
– Se definen tipos de datos (data types) desde el que se dibujan los valores del mismo
Modelo Relacional
Conceptos generales
Dominio (
D
)
– Resulta útil darle un nombre que ayude en la interpretación de sus valores. – Ejemplos de dominios:
● NumerosTelefonosFijos. El conjunto de los 9 dígitos que componen los números de teléfono en España.
● DocumentoNacionalldentidad. El conjunto de documentos nacionales de
identidad válidos en España.
● Nombres. El conjunto de caracteres que representan el nombre de una persona.
Tecnólogo en Informática - Bases de Datos 1 9
Modelo Relacional
Conceptos generales
Dominio (
D
)
– Para cada uno de ellos se especifica también un tipo de dato o formato. – Por ejemplo: el tipo de datos del dominio NumerosTelefonosFijos puede
declararse como una cadena de caracteres de la forma ddddddddd, donde cada d es un dígito numérico (decimal) y los tres primeros especifican la característica de la provincia.
● ESTUDIANTE: dom(TlfParticular) = NumerosTelefonosFijos
– También puede facilitarse información adicional para la interpretación de sus valores; por ejemplo, un dominio numérico como PesoPersona debería contar con las unidades de medida, como kilogramos o libras.
Modelo Relacional
Conceptos generales
Esquema de relación
R
– Se utiliza para describir una relación, se dice que R es el nombre de la misma – Denotado por R(A1, A2, ...,An)
● R es el nombre de la relación y
● A1, A2, ..., An lista de atributos con dominios D1, D2 ,…, Dn – El grado de una relación es el número de atributos n de la misma
Tecnólogo en Informática - Bases de Datos 1 11
Modelo Relacional
Conceptos generales
Relación
r(R)
– Relación r del esquema R(A1, A2, ...,An) = r(R) – Conjunto de n-tuplas r = {t1, t2, ..., tm}
– Cada tupla t
● Lista ordenada de n valores t =<v1, v2, ..., vn> ● Donde cada valor vi, 1 ≤ i ≤ n
– es un elemento de dom(Ai) – o un valor especial NULL
Modelo Relacional
Conceptos generales
Cada tupla aparece como una fila y cada atributo como un encabezamiento de columna que indica la interpretación que habrá que dar a cada uno de los valores de la misma
Tecnólogo en Informática - Bases de Datos 1 13
Modelo Relacional
Conceptos generales
Relación
r(R)
– La anterior definición de relación puede ser enunciada más formalmente del siguiente modo
– Una relación (o estado de relación) r(R) es una relación matemática de grado n en los dominios dom(A1), dom(A2), ... , dom(An) que es un subconjunto del
producto cartesiano de los dominios que definen R: ● r(R) ⊆ (dom(A1) ✕ dom(A2) ✕ ... ✕ dom(An))
– En general, a medida que varía el estado del mundo real lo hace también la relación, convirtiéndose en otro estado de relación diferente
Cardinalidad
–
Número total de valores en un dominio
Estado actual de una relación r(R)
–
Estado de la relación en un momento dado. Refleja sólo las tuplas válidas que
representan un estado particular del mundo real
Nombre de los atributos o columnas
–
Identifican diferentes roles, o interpretaciones para el dominio
–
Por ejemplo el mismo dominio teléfonos puede tener distintos roles: teléfono del
hogar y teléfono del trabajo.
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 15
Modelo Relacional:
Orden de las tuplas en una relación
– La relación está definida como un conjunto de tuplas
● Matemáticamente, los elementos de un conjunto no guardan un orden entre ellos
– El orden de los atributos y valores no es tan importante siempre que se mantenga la correspondencia entre atributos y valores
– Se intenta representar hechos a nivel lógico o abstracto
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 17
Modelo Relacional
Valores y NULLs en las tuplas
– Cada valor en una tupla es atómico – Modelo relacional plano● No son permitidos los atributos compuestos o multivaluados ● Se asume primera forma normal
● Atributos multivaluados pueden ser representados por relaciones separadas ● Atributos compuestos representados por atributos simples
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 19
Valores Nulos
–
Representan valores de atributos que
pue
den ser:
●desconocidos
●
conocido y no está disponible
●o no aplique a la tupla
Restricciones (
Constraints
)
–
Restricciones sobre los valores actuales en un estado de la base de datos
–
Derivados de reglas en el “minimundo” que la base de datos representa
Modelo Relacional
Un esquema de
relaci
ón
R
de grado n se designa: R(A
1, A
2, …, A
n)
Las letras Q, R, S especifican nombres de relación
Las letras q, r, s especifican estados de relación
Las letras t, u, v indican tuplas
ESTUDIANTE → estado actual de la relación
ESTUDIANTE(Nombre, Dni, …) → esquema de la relación
R.A
1, ESTUDIANTE.Nombre → cualificación de atributos
t[A
i], t.A
i, ESTUDIANTE[Nombre]
→valor i del atributo A en la tupla t
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 21
Modelo Relacional:
Restricciones
Tres categorías de Restricciones:
Inherentes al modelo
Restricciones basadas en el esquema
Basadas en la aplicación
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 23
Inherentes al modelo (
im
p
lícitas
)
– Ej.: una relación no puede tener tuplas duplicadas – Características vistas previamente
Restricciones basadas en el esquema (
explícitas
)
– Expresadas por DDL– (a desarrollar)
Basadas en la aplicación (
restricciones de semántica
o
reglas de negocio
)
– No pueden ser expresadas directamente en el modelo– Expresadas y cumplidas por la aplicación
Modelo Relacional
Restricciones basadas en el esquema (
explícitas
)
–De dominio
–De clave
–De integridad
–De entidades
–Referencial
–Claves externas
Modelo Relacional
Restricciones
Tecnólogo en Informática - Bases de Datos 1 25
Especifican que dentro de cada tupla, el valor de un atributo
A
debe ser un valor
atómico del dominio
dom(A)
Típicamente incluye:
– Data types numéricos para números enteros y reales – Caracteres
– Booleanos
– Cadena de strings de largo fijo o variable – Date, time, timestamp
– Money, currency – Otros
Modelo Relacional
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 27
Una relación está definida como un conjunto de tuplas.
Por definición, todos los elementos de un conjunto son distintos; por tanto, todas las
tuplas en una relación también deben serlo.
Esto significa que dos tuplas no pueden tener la misma combinación de valores para todos sus atributos.
Modelo Relacional
Super Clave
– Dado R(A1,...,An), se dice que X ⊆ en {A1, … , An} es superclave en un
esquema R, si no puede existir ninguna r(R) tal que tenga dos tuplas con valores iguales de X (t[X] = t’[X]).
– Especifica una restricción de exclusividad
– Cada relación tiene, al menos, una superclave predeterminada: ● el conjunto de todos sus atributos
– t1[SK] ≠ t2[SK]
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 29
Clave
– Una clave es una superclave que no contiene propiamente una superclave – Satisface dos restricciones:
1. Dos tuplas diferentes en cualquier estado de la relación no pueden tener valores idénticos para todos los atributos de la clave
2. Es una superclave mínima: es una superclave de la cual no podemos eliminar ningún atributo tal que siga cumpliendo 1)
Modelo Relacional
Modelo Relacional
Restricciones de clave (4)
Ejemplo:
– Clave → {Dni}
Tecnólogo en Informática - Bases de Datos 1 31
Clave candidata
– En general, un esquema de relación puede contar con más de una clave
– En este caso, cada una de ellas recibe el nombre de clave candidata
– Es común designar una de ellas como la clave principal de la relación, y será la que se utilice para identificar las tuplas en la relación.
– Por ejemplo, la relación COCHE de la Figura 5.4 tiene dos claves candidatas: ● NumeroPermisoConducir y NumeroBastidor
Modelo Relacional
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 33
Otra restricción en los atributos especifica si se permiten o no los valores NULL.
Por ejemplo:
– Si cada tupla ESTUDIANTE debe contar con un valor válido y no nulo para el atributo Nombre,
– entonces el Nombre de ESTUDIANTE esta obligado a ser NOT NULL.
Modelo Relacional
Las definiciones y restricciones que hemos visto hasta ahora se aplican a las relaciones individuales y a sus atributos
Una base de datos relacional suele contener muchas relaciones, con tuplas que están relacionadas de diversas formas
Un esquema de base de datos relacional S es un conjunto de esquemas de relación S = {Rl, R2, ..., Rm} y de restricciones de integridad RI
Un estado de base de datos relacional DB de S es un conjunto de estado de relación DB = {r1, r2, ..., rm} en el que cada ri es un estado de Ri y satisface las restricciones de integridad especificadas en RI
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 35
Cuando nos referimos a una base de datos relacional, incluimos implícitamente tanto su esquema como su estado actual
Un estado de base de datos que no cumple todas sus restricciones de integridad se dice que está en un estado incorrecto
Aquél que sí las cumple está en un estado correcto
Modelo Relacional
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 37
Modelo Relacional
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 39
Restricciones de integridad de entidad
– Ningún valor de una clave primaria (clave principal) puede ser nulo.
– Esto se debe a que dicha clave se emplea para identificar tuplas individuales en una relación.
– Si se permitiera ese valor, no sería posible diferenciarlas → no se podrían identificar ciertas tuplas.
Modelo Relacional
Restricciones de integridad referencial
– Las restricciones de clave y las de integridad de entidad se especifican en relaciones individuales
– Especificada entre dos relaciones.
– Mantiene consistencia entre tuplas de dos relaciones. – Informalmente:
● una tupla de una relación que hace referencia a otra relación debe hacer referencia a una tupla existente de esa relación (ver FK)
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 41
FK, clave externa, clave foránea
– Especifican una condición de integridad referencial entre dos esquemas de relación R1 y R2
– Un conjunto de atributos FK en R1 es una foreign key de R1 que referencia a R2 si cumple:
● Los atributos en FK tienen el mismo dominio, o dominios, que los atributos de clave principal PK de R2
● Un valor de FK en una tupla t1 de R1 aparece como valor de PK en alguna tupla t2 de R2. t1[FK] = t2[PK]
– En este caso: R1 → relación de referencia, R2 → relación referenciada
– Todas las restricciones de integridad deben ser especificadas en el esquema relacional
Modelo Relacional
Modelo Relacional
Tecnólogo en Informática - Bases de Datos 1 43
Restricciones de integridad semántica
–
Son especificadas y cumplidas sobre la base de datos relacional
–
Usar triggers y assertions
–
También pueden implementarse como control del programa o aplicación
que actualiza la BD
–
Ejemplos:
● El salario de un empleado no debe exceder el de su supervisor
● El número máximo de horas que un empleado puede trabajar a la semana es de 40
Modelo Relacional
Modelo Relacional:
Tecnólogo en Informática - Bases de Datos 1 45
Modelo Relacional
Operaciones
Las operaciones del modelo relacional pueden clasificarse en:
–
Recuperaciones y
–
Actualizaciones
Ahora vamos a concentrarnos en las operaciones de modificación o
actualización de una base de datos
Modelo Relacional
Operaciones
Existen tres tipos de operaciones de actualización básicas: inserción, borrado
y modificación
–
Insert →
se utiliza para insertar una nueva tupla o tuplas en una relación
–
Delete
→ se encarga de borrarlas
–
Update
→ cambia los valores de algunos atributos de las tuplas que ya
existen
Siempre que se aplique cualquiera de estas operaciones, deberán respetarse
las restricciones de integridad especificadas en el esquema de la base de
datos
Tecnólogo en Informática - Bases de Datos 1 47
Modelo Relacional
Insert
Insert proporciona una lista de los valores de atributo para una nueva tupla
t que será insertada en una relación R
Sea R(A,B,C) y r(R):
–
insert <a,b,c> into R
Modelo Relacional
Insert
Esta operación puede violar cualquiera de las cuatro restricciones estudiadas en la
sección anterior:
–
las de dominio, si el valor dado a un atributo no aparece en el dominio
correspondiente;
–
las de clave, si el valor de dicha clave en la nueva tupla t ya existe en otra tupla en
la relación r(R);
–
las de integridad de entidad, si la clave principal de la nueva tupla t es NULL;
–
y las de integridad referencial, si el valor de cualquier foreign key en t se refiere a
una tupla que no exista en la relación referenciada
Tecnólogo en Informática - Bases de Datos 1 49
Modelo Relacional
Insert
Operación:– Insert <'Cecilia', 'Santos', 'García', NULL, '04-05-1960', 'Misericordia, 23', M, 28000, NULL, 4> into EMPLEADO
Resultado:
– Esta inserción viola la restricción de integridad de entidad (NULL para la clave principal Dni), por lo que es rechazada.
Operación:
– Insert <'Alicia', 'Jiménez', 'Celaya', '999887777', '05-04-1960', 'Cercado, 38', M, 28000, '987654321', 4> into EMPLEADO
Resultado:
– Esta inserción viola la restricción de clave porque ya existe otra tupla en la relación EMPLEADO con el mismo valor de Dní, por lo que es rechazada.
Modelo Relacional
Insert
Operación:– Insert <'Cecilia', 'Santos', 'García', '677678989', '04-05-1960', 'Misericordia, 23', M, 28000, '987654321', 7> into EMPLEADO
Resultado:
– Esta inserción viola la restricción de integridad referencial especificada, en Dno en EMPLEADO porque no existe ningún DEPARTAMENTO cuyo NumeroDpto = 7.
Operación:
– Insert <'Cecilia', 'Santos', 'García', '677678989', '04-05-1960', 'Misericordia, 23', M, 28000, NULL, 4> into EMPLEADO
Resultado:
Tecnólogo en Informática - Bases de Datos 1 51
Modelo Relacional
Insert
Si un
a
i
nserción viola una o más
restricciones, la opción predeterminada es
rechazarl
a
En este caso, resultaría útil que el DBMS explicara el motivo de dicho
rechazo
Modelo Relacional
Delete
Delete sólo puede violar la integridad referencial en caso de que la tupla a
eliminar esté referenciada por las foreign keys de otras tuplas de la base de
datos
Para especificar un borrado, una condición en los atributos de la relación es
la que selecciona la tupla (o tuplas) a eliminar
Sea R(A,B,C) y r(R),
–
D
e
l
ete from
R where A=''a''
Tecnólogo en Informática - Bases de Datos 1 53
Modelo Relacional
Delete
Operación:– Borrar la tupla EMPLEADO cuyo Dni = '999887777' – Delete from EMPLEADO where Dni = '999887777' Resultado:
– Este borrado no se acepta porque existen tuplas en TRABAJA_EN que hacen referencia a ella. Por tanto, si se elimina la tupla en EMPLEADO, se producirán violaciones de la integridad referencial
Operación:
– Borrar la tupla EMPLEADO cuyo Dni = '333445555' – Delete from EMPLEADO where Dni = '333445555' Resultado:
– Este borrado provocará incluso más violaciones de integridad referencial, ya que la tupla implicada está referenciada desde las relaciones EMPLEADO, DEPARTAMENTO, TRABAJA_EN Y
Modelo Relacional
Delete
Operación:– Borrar la tupla TRABAJA_EN cuyo DniEmpleado = '999887777' y NumProy = 10 – Delete from TRABAJA_EN where DniEmpleado = '999887777' and NumProy = 10 Resultado:
– Este borrado se acepta, eliminándose sólo una tupla
Son varios los caminos que pueden tomarse si un borrado provoca una violación – El primero → rechazar el borrado
– El segundo → intentar propagar el borrado eliminando las tuplas que hacen referencia a la que estamos intentado borrar.
Tecnólogo en Informática - Bases de Datos 1 55
Modelo Relacional
Update
Update se emplea para cambiar los valores de uno o más atributos de una tupla (o
tuplas ) de una relación R
Para seleccionar la información a modificar es necesario indicar una condición en los
atributos de la relación
Sea R(A,B,C) y r(R),
–
Update R set B=''b'' where A=''a''
–
Modifica las tuplas de r cuyo valor para A es ''a'', estableciendo para el atributo B el
valor ''b''.
Modelo Relacional
Update
Operación:
– Actualizar el Salario de la tupla EMPLEADO cuyo Dni = 999887777 a 28000 – Update EMPLEADO set Salario=28000 where Dni=999887777
Resultado: Aceptable
Operación:
– Actualizar el Dno de la tupla EMPLEADO con Dni = 999887777 a l – Update EMPLEADO set Dno=1 where Dni=999887777
Tecnólogo en Informática - Bases de Datos 1 57
Modelo Relacional
Update
Operación:
– Actualizar el Dno de la tupla EMPLEADO con Dni = 999887777 a 7 – Update EMPLEADO set Dno=7 where Dni=999887777
Resultado: Inaceptable porque viola la integridad referencial.
Operación:
– Actualizar el Dni de la tupla EMPLEADO cuyo Dni = 999887777 a 987654321 – Update EMPLEADO set Dni=987654321 where Dni=999887777
Resultado: Inaceptable porque viola la restricción de clave principal repitiendo un valor que ya existe en otra tupla; viola las restricciones de integridad referencial ya que existen otras relaciones que hacen referencia a un Dni que ya existe.
Modelo Relacional
Transacciones
Una aplicación que hace uso de una base de datos suele ejecutar una serie de transacciones
Este proceso implica tanto la lectura desde una base de datos como efectuar inserciones, borrados y actualizaciones en los valores de la misma
Es necesario dejar la base de datos en un estado coherente (cumplir todas las restricciones comentadas)
Sistemas OLTP (Procesamiento de transacciones en línea)