Modelo Relacional y Diseño de BBDD
Modelo Relacional y Diseño de BBDD
Modelo Relacional y Diseño de BBDD
1
BBDD
● La tabla tiene que ser plana, por cada ocurrencia, para cada atributo hay
2
BBDD
3. Tipos de relaciones
A) CON NOMBRE
B) SIN NOMBRE: busco condiciones, ej: alumnos de X asignatura con más de Y
nota.
C) VISTAS. Muestra un subconjunto de una base de datos. Sirven para ocultar
detalles de implementación. “tablas virtuales”
cumple que R⊆Dom(𝐴1) x Dom (𝐴𝑛) x … Dom (𝐴𝑛). [producto cartesiano ~ todos
con todos].
Ejemplo:
Definición del dominio:
SINTAXIS:
- Atributo obligatorios (NOT NULL) → NN
- Atributos opcionales → *
(Se indica uno u otro para no ser redundante)
5. Claves
A) CLAVES CANDIDATAS: conjunto de atributos que identifican unívocamente
a una tupla. Simple o compuesta.
3
BBDD
K= {MATRÍCULA, BASTIDOR}
K_1= {MATRÍCULA}
K_A= {BASTIDOR}
Ej1:
Ej:
4
BBDD
● BR (Borrado Restringido)
● BC(Borrado en Cascada)
● BN(Borrado puesta a NULL)
● MC(Modificación en cascada)
Las claves ajenas sirven para crear relaciones entre tablas, de forma que:
5
BBDD
Ej 1:
Ej 2:
Este ejemplo será mejor implementarlo en cascada. Ya que si borro uno de los
dos, no tiene sentido mantenerlos todos.
6. Restricciones
A) RESTRICCIONES INHERENTES:
6
BBDD
B) RESTRICCIONES SEMÁNTICAS:
● NO ACTION → no borra
● CASCADE → propaga en cascada
● SET NULL → pone NULL
● SET DEFAULT → pone valor por defecto
7
BBDD
8
BBDD
9
BBDD
10
BBDD
b) Idem suponiendo que cada cuadro pertenece a una pinacoteca, pero puede
ser expuesto en varias.
11
BBDD
1. Algebra relacional:
A) Operadores primitivos:
○ Operadores Unarios
■ Proyección (π)
■ Selección (σ)
○ Operadores binarios
■ Unión (U)
■ Diferencia (-) (\)
■ Producto Cartesiano (x)
Al usar operadores primitivos, si hay que eliminar algo repetido, nos quedamos
con el primero que aparece.
i) Proyección (π)
● Filtro por columnas
● ¡Sin repeticiones!
12
BBDD
𝑅1 ←σ𝑁𝑂𝑀='𝑀𝑎𝑟í𝑎'^𝑆𝐴𝐿𝐴𝑅𝐼𝑂>2000𝐸𝑀𝑃𝐿𝐸𝐴𝐷𝑂𝑆
𝑅𝐸𝑆 ←π𝐷𝑁𝐼𝑅1
R= R1 U R2;
R(NOM) = { Juan, Ana, Pedro María}
13
BBDD
● Propiedades de U , -, ∩:
U , -, ∩ → necesitan que sus operandos (relaciones) sean compatibles:
- Mismo nº de atributos
- Mismo tipo[dominio] “dos a dos”
14
BBDD
● Solución 1:
𝑅1 ←π𝑁𝑂𝑀 (σ𝐶𝐼𝑈𝐷𝐴𝐷='𝑀𝐴𝐷𝑅𝐼𝐷'𝐸𝑄𝑈𝐼𝑃𝑂𝑆) // Nombre equipos de Madrid
𝑅3 ← σ𝐸𝑄𝑈𝐼𝑃𝑂=𝑁𝑂𝑀
𝑅𝐸𝑆 ← π𝐷𝑁𝐼𝑅3
● Solución 2:
𝑅2 ←σ𝑁𝑂𝑀𝐵𝑅𝐸=𝐸𝑄𝑈𝐼𝑃𝑂𝑅1
𝑅3 ←σ𝐶𝐼𝑈𝐷𝐴𝐷='𝑀𝐴𝐷𝑅𝐼𝐷'
𝑅𝐸𝑆 ←π𝐷𝑁𝐼𝑅3
B) Operadores derivados:
i) Join (θ)(⋈)
𝑅1 θ 𝑅2 = σ (𝑅1 𝑥 𝑅2)
Ej:
○ Devuelve las filas donde los atributos con el mismo nombre tienen el
mismo valor.
○ Ej: R ← EMPLEADO * DEP
15
BBDD
Renombrar un atributo:
Ejemplo:
1) Nombre de libros de editoriales españolas
● Opcion 1:
𝑅1 ←π𝑁𝑂𝑀.𝐸 (σ𝑃𝐴𝐼𝑆='𝐸𝑆𝑃𝐴Ñ𝐴'𝐸𝐷𝐼𝑇𝑂𝑅𝐼𝐴𝐿)
● Opción 2:
𝑅1 ←𝐿𝐼𝐵𝑅𝑂 * 𝐸𝐷𝐼𝑇𝑂𝑅𝐼𝐴𝐿 // Se supone q Nom_E y Nombre_E tenían el mismo nombre
𝑅𝐸𝑆 ←π𝑇𝐼𝑇𝑈𝐿𝑂(σ𝑃𝐴𝐼𝑆='𝐸𝑆𝑃𝐴Ñ𝐴'𝑅1)
16
BBDD
𝑅1 ←(σ𝑃𝐴𝐼𝑆='𝐸𝑆𝑃𝐴Ñ𝐴'𝐸𝐷𝐼𝑇𝑂𝑅𝐼𝐴𝐿)
𝑅2 ← 𝐿𝐼𝐵𝑅𝑂 θ𝐿𝐼𝐵𝑅𝑂.𝑁𝑂𝑀.𝐸=𝑅1.𝑁𝑂𝑀𝐵𝑅𝐸−𝐸 𝑅1
𝑅𝐸𝑆 ←π𝑇𝐼𝑇𝑈𝐿𝑂𝑅2
17
BBDD
𝑅1 ←π𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂(σ𝑇𝐼𝑃𝑂='𝐷𝑂𝐵𝐿𝐸𝑆'𝐻𝐴𝐵𝐼𝑇𝐴𝐶𝐼𝑂𝑁𝐸𝑆)
ALOJAMIENTO
Hotel XYQ
Resort ABC
Hostal 123
Lodge QRS
Nombre_aloja Nombre_p
… María
18
BBDD
Pedro
Laura
𝐵 ←π𝐶𝑂𝐷𝐼𝐺𝑂.𝑃(𝑃𝐸𝑅𝑆𝑂𝑁𝐴𝐿)
𝑅3 ←(𝑅3 * 𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂𝑆)
𝑅2 ←π𝐶𝑂𝐷.𝐴 ( 𝑅𝐸𝐴𝐿𝐼𝑍𝐴𝑅)
nombre_act
Pesca deportiva
19
BBDD
nombre_act
Buceo
R2 ← π𝑁𝐼𝑉𝐸𝐿 (𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷𝐸𝑆)
R3 ← 𝑅1 : 𝑅2
RES ← π𝑁𝑂𝑀𝑅𝐸.𝐴𝐿𝑂𝐽𝐴, 𝐷𝐼𝑅𝐸𝐶𝐶𝐼𝑂𝑁 (𝑅3 * 𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂𝑆)
nombre_aloja direccion
20
BBDD
21
BBDD
● Entidades → Relaciones
Transformación de interrelaciones:
● Interrelaciones:
○ N:M → nueva relación:
■ Clave principal: Concatenamos los 2 IP
■ Borrado y mod: Serían válidas B/M:C, B/M:R, etc. MENOS SET
NULL→ ya que pertenece a la clave primaria (no acepta nulos →
restricción inherente al MR)
■ Cardinalidad mínimas: Restricciones, aserciones o
disparadores (SQL creop)
22
BBDD
Otro ej:
23
BBDD
Para garantizar que una persona no se avale a sí misma, se hace en SQL con
CHECK (DNI <> AVAL), donde ‘<>’ significa distinto:
CREATE TABLE SOCIO (
DNI DNIS PRIMARY KEY,
. . .
CHECK (DNI <> AVAL)
);
■ 1:1 reflexiva
24
BBDD
Dominios:
Para ver compatibilidad usamos comando “CHECK” (SQL)
CREATE DOMAIN Estados_Civiles AS
CHAR(1) CHECK (VALUE IN ('S', 'C', 'V', 'D'))
Transformación de atributos:
● Atributo simple → atributo
25
BBDD
● Atributo monovaluado→atributo
● Atributos multivaluados→ nueva relación
26
BBDD
Para ser fiel a la semántica, hay que hacerlo con SQL, marcando TELF NN.
27
BBDD
Restricciones
● Inclusión, exclusión → SQL!! (Aserciones, disparadores (TRIGGER))
Jerarquías
● Opción a: Una sola tabla → perdemos semántica
● Opción b: 3 tablas → toda la semántica :) Aunque cada vez que tengo que
recoger datos de los hijos hay que hacer join con todos los papis.
● Opción c: 2 tablas→ Mayor eficiencia en consulta
28
BBDD
A) Dependencias funcionales
X→Y X e Y son descriptores.
“X determina Y”, “Y depende funcionalmente de X”
~ X, Y, Z pueden ser varios atributos.
Ej2:
29
BBDD
AÑO → MARCA
❖ Si X→ R, entonces X es superclave
30
BBDD
Ej1:
R(ABCDE) F={A→D , B→C , D→ BE}
+
𝐴 = {ADBEC} = R
Ej2:
R(ABCDE) F= {A→ C, C→A , A → DE}
+
𝐴 = {ACDE}
+
{𝐴𝐵 }= {ABCDE}=R Claves: {AB},{BC}
+
{𝐵𝐶 } = {BCADE} =R
31
BBDD
Ej pág 26:
1) Hallar cierre del descriptor B:
DF= {A→B, B→A, C→A, D→C, (E,C)→D, A→F, C→F}
+
𝐵 = {𝐵𝐴𝐹}
32
BBDD
33
BBDD
B) Teoría de la normalización
Dado un esquema de la relación R(A, DF) se trata de transformar por medio de
sucesivas proyecciones un esquema de partida.
● Forma normal → conjunto de definiciones que aseguran la ausencia de
algún tipo de redundancia en un esquema.
Nosotros vamos a ver hasta la FNBC y seguiremos esta especie de árbol, donde el
esquema final son “las hojas” que representen la misma info sin pérdidas.
34
BBDD
35
BBDD
Normalizamos:
A→ D molesta ~R2 “de la DF que molesta”
~R’ “todo sin el consecuente q molesta”
Ej:
R(ABC)
F={A→B, B→C} // Como solo hay 1K, está en 2FN.
K={A} A es atributo principal, B no es SK ni AP.
B→C molesta
Normalizamos:
R2(BC)
F2={B→C} K={B} Está en 3FN, ya que B es SK.
36
BBDD
Ej:
R(ABCD)
F={A↔B, BC→ D}
K={AC,BC} ANP={D}
❖ ¿1FN?✅
❖ ¿2FN? ✅ //No existe ningún atributo no principal que dependa parcialmente de alguna
clave.
❖ ¿3FN?✅ //Todos los determinantes son SK o Atributos Principales.
Normalizamos:
R2(AB)
F2={A↔B}
K={A,B} Ahora todos los determinantes son SK → FNBC ✅
Elegimos un sentido de la implicación, por ejemplo A→B, y aplicamos el algoritmo
de siempre R’ ~todo menos el consecuente de lo que da problema.
R’(ACD)
F’= {∅} // Todos requieren de B
K={ACD}
37
BBDD
R’(BCD)
F’=BC→D
K={BC} Ahora todos los determinantes son SK → FNBC ✅
5. Teorema 1: Descomposición sin pérdida de info
Una descomposición D={R1, R2} es sin pérdida de información (lossless join) con
respecto a un conjunto de DF sii:
● (A1∩A2) → (A1-A2) ⋁ (A1∩A2) → (A2-A1)
“Si el atributo común es la clave en alguna de las dos relaciones” no hay pérdida.
6. Ejercicios prácticos
38
BBDD
39