Modelo Relacional y Diseño de BBDD

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 40

Tema 6 : Modelo Relacional (1970- Codd) Propiedades Estáticas 2

1. Elementos del Modelo Relacional 2


2. Características de las relaciones 2
3. Tipos de relaciones 3
4. Definición Formal de la Relación 3
5. Claves 3
6. Restricciones 6
6. Ejercicios prácticos Modelo Relacional (estática) : 8

Tema 6b: Modelo Relacional - Propiedades Dinámicas 12


1. Algebra relacional: 12
A) Operadores primitivos: 12
i) Proyección (π) 12
ii) Selección (σ)(sigma) 13
iii) Unión (U) 13
iv) Diferencia (-) o (\) 14
v) Producto cartesiano (x) 14
● Propiedades de U , -, ∩: 14
B) Operadores derivados: 15
i) Join (θ)(⋈) 15
● Join Natural (*) 15
ii) Intersección (∩) 16
iii) División (:)(÷) 16
Ejercicios prácticos Modelo Relacional (dinámica) : 17
Tema 7a: Diseño lógico: diseño relacional 22
1. Transformación E/R a Esquema Relacional 22
Transformación de interrelaciones: 22
Dominios: 25
Transformación de atributos: 25

Tema 7b: Diseño lógico: Normalización 29


A) Dependencias funcionales 29
1. Propiedades de las dependencias funcionales: 30
a) Superclave (SK) y Clave candidata (K) 30
b) Cierre de un conjunto de atributos X (X+): 31
c) Cierre de F (F+ o DF+): 32
1. Axiomas básicos de Armstrong: 32
2. Comprobar si una dependencia pertenece al cierre DF: 32
3. Comprobar si 2 dependencias son equivalentes (F☰G) 33
4. Recubrimiento minimal /irredundante 33
5. Atributos principales y No principales 34
B) Teoría de la normalización 34
BBDD

1. Primera Forma Normal (1FN) 35


2. Segunda Forma Normal (2FN) 35
3. Tercera Forma Normal (3FN) 36
4. Forma Normal de Boyce-Codd(FNBC) 37
5. Teorema 1: Descomposición sin pérdida de info 38
6. Ejercicios prácticos 38

1
BBDD

Tema 6 : Modelo Relacional (1970- Codd)


Propiedades Estáticas
● Relación (estructura básica) ~ Tabla
○ Relación → conjunto de tuplas
● Atributo ~Columna / Campo
● Tupla ~ Fila

1. Elementos del Modelo Relacional


- Grado: número de atributos (columnas)

- Cardinalidad: número de tuplas (filas)

- Dominio: conjunto finito de valores permitidos en un atributo.

2. Características de las relaciones


● El orden de las tuplas no importa.

● El orden de los atributos no importa.

● No puede haber tuplas duplicadas.

● La tabla tiene que ser plana, por cada ocurrencia, para cada atributo hay

un solo valor. → No hay atributos multivaluados.

Ej: Una BBDD de ESTUDIANTE(DNI, NOMBRE, APS, ¿TELFS?). Si un estudiante

puede tener varios números de teléfono, tendríamos que definir las

columnas con la cantidad posible de números diferentes. →

ESTUDIANTE(DNI, NOMBRE, APS, TELF_1, TELF_2), lo cual es un poco goofy.

Solución: Creamos otra tabla/relación de TELF(DNI, TELF); donde puede

haber una serie de teléfonos asociados a un mismo DNI.

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”

4. Definición Formal de la Relación


Sea 𝐴𝑖 un atributo y Dom(𝐴𝑖) su dominio, una relación R con atributos 𝐴𝑖…𝐴𝑛,

cumple que R⊆Dom(𝐴1) x Dom (𝐴𝑛) x … Dom (𝐴𝑛). [producto cartesiano ~ todos

con todos].

Básicamente, cualquier instancia tiene que estar dentro del dominio.

Formalizando un poco más, a R lo llamamos esquema de relación donde r(R) es


la relación o extensión del esquema R. → t ∊ {Dom(𝐴1) x Dom (𝐴2) x … Dom (𝐴𝑛)}.

Ejemplo:
Definición del dominio:

● Dom(Edad)=[16,100] Nombre Edad


● Dom(Nombre)= palabras hasta 100
Juan 20
caracteres.
Ana 25/02/2001

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

Ej: VEHICULOS(MATRÍCULA, BASTIDOR, MARCA NN, MODELO NN)

K= {MATRÍCULA, BASTIDOR}

a) CLAVE PRIMARIA: clave candidata elegida por el diseñador.


● Nunca puede ser nula (Regla de integridad de entidad ☝️🤓).
De hecho, si la clave primaria es compuesta, en teoría, no
puede haber ningún atributo vacío…
● Se subraya.

K_1= {MATRÍCULA}

b) CLAVES ALTERNATIVAS (unique): claves candidatas no elegidas.


● Se denotan en negrita o con la etiqueta UNIQUE.

K_A= {BASTIDOR}

B) CLAVE AJENA (foreign key): Atributo que guarda valores almacenados en


una clave primaria de otra relación. (Integridad referencial ☝️🤓).
● Se representa con una flecha de líneas discontinuas.
● Apunta de la clave ajena y apunta a la relación (su tabla
origen)

Ej1:

Ej:

4
BBDD

a) OPCIONES DE BORRADO Y ACTUALIZACIÓN EN CLAVE AJENA:


● NO ACTION -> rechazar
(Ej: un antiguo empleado, no lo borramos porque podría estar
asociado algún proyecto, cambiamos el estado o hacemos alguna
modificación sin borrado).
● SETNULL -> poner a NULL la clave ajena.
(Ejemplo similar al anterior, solo que en vez de no borrar, en el
PROYECTO metemos (NULL donde iría el EMPLEADO)).
● SET DEFAULT -> Poner un valor por defecto.
(Por ejemplo, si el valor es obligatorio no se puede poner NULL.)
No es muy habitual.
● CASCADE -> Actualizar/ borrar en cascada.
(Ejemplo, si se modifica o borra un estudiante, por ejemplo, se
borran también los teléfonos en cascada ~ el borrado iría en
sentido inverso a la flecha). Ocurre en entidades débiles. En este
caso, tiene más sentido ya que no queremos tener esos datos en la
BD.
Son peligrosas, porque un empleado puede tener muchos
proyectos y datos de valor.

● 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:

● Derivadas de la definición de relación:


○ No hay dos tuplas iguales (obligatoriedad primarykey)
○ El orden de tuplas no importa
○ El orden de atributos no importa
○ Tablas normalizadas / 1FN: Un atributo tiene solo un valor.

6
BBDD

● Regla de Integridad de Entidad: Ningún atributo de la clave primaria


puede ser valor nulo.
● Regla de Integridad Referencial: Si una relación R2 tiene una clave
ajena que apunta a R1, la clave ajena debe ser igual (debe existir en
R1) o tener valores nulos. (?)

B) RESTRICCIONES SEMÁNTICAS:

● Primary key: NO valores repetidos ni valores nulos.


● Unique (Alt key): NO valores repetidos.
● NOT NULL: NO admite valores nulos.
● Integridad Referencial (FOREIGN KEY): Si una relación R2 tiene una
clave ajena que apunta a R1, la clave ajena debe ser igual (debe
existir en R1) o tener valores nulos. (?)

C) BORRADO EN CLAVE AJENA:

● NO ACTION → no borra
● CASCADE → propaga en cascada
● SET NULL → pone NULL
● SET DEFAULT → pone valor por defecto

D) OTRAS RESTRICCIONES SEMÁNTICAS:

● CHECK → Comprueba si el predicado es cierto. (Restricción sobre un


elemento (dom, relación), ve si es V o F para hacer la operación)
● ASSERTION → Igual que check, pero para varios elementos.
Definición no va unida a un solo elemento, por lo que tiene que tener
nombre.
● TRIGGER → Restricciones en las que un usuario especifica libremente
la acción ante una determinada condición.

7
BBDD

6. Ejercicios prácticos Modelo Relacional (estática) :


1. De acuerdo con el esquema relacional presentado a continuación, indica
cuál de estas afirmaciones es cierta y cual no.

1. No pueden existir dos alojamientos con el mismo nombre.


V, está subrayado, por lo tanto, es CP(Clave Principal).
2. Un alojamiento tiene un teléfono siempre y además es único.
V, está en negrita, por lo que es CAlt(Clave Alternativa) → Clave Primaria
(única)
3. Para cada alojamiento se almacena el nombre de la persona de contacto.
F, se almacena el código del personal. Contacto es la CAj (Clave Ajena)
que apunta a la relación de → PERSONAL(cuya clave principal es el
codigo-p).
4. El contacto de un alojamiento es una persona que trabaja en ese
alojamiento.
F, no tiene porqué. Vemos que contacto (CAj) ->PERSONAL(codigo-p, …,
nombre-aloja).Y nombre-aloja(CAj)-> ALOJAMIENTOS, por lo que puede
guardar el nombre de un alojamiento distinto.
Si queremos restringirlo, de forma que el contacto también trabaje en el
alojamiento, se tiene que implementar en SQL.
5. Un alojamiento tiene al menos una persona que trabaja en él.
F.
6. Toda persona almacenada en PERSONAL trabaja en al menos un
alojamiento.
V, es lo que se refleja en PERSONAL(...,nombre-aloja).
7. El personal se identifica de manera unívoca por un código o por su NIF.

8
BBDD

V, son clave principal y alt, por lo que son unívocos.


8. Un alojamiento puede no tener habitaciones.
V.
9. Un alojamiento puede tener más de una habitación.
V, HABITACIONES(alojamiento, n-habita).
10. Todo alojamiento tiene una persona de contacto.
F, contacto* es opcional.
11. El número de una habitación identifica a la habitación dentro de su
alojamiento, es decir, en el Alojamiento “El pájaro loco” solo puede existir
una habitación 001.
V.
12. Las actividades que se ofertan en cada alojamiento se encuentran en la
relación REALIZA_ACTIVIDAD.
F, REALIZA_ACTIVIDAD→ ACTIVIDADES. Se encuentran en ACTIVIDADES.
13. Un alojamiento siempre oferta al menos una actividad.
F (=8)
14. Una actividad siempre es ofertada en al menos un alojamiento.
F, las actividades pueden no ser ofertadas. Son ofertadas en el alojamiento
las que aparecen en REALIZA_ACTIVIDAD.
15. En un mismo alojamiento, puede ofertarse la misma actividad en distintos
días de la semana.
V, en distintos días sí, en el mismo día no.
16. Una actividad puede ofertarse en distintos alojamientos, siempre y
cuando, se oferte en distintos días de la semana.
F, puede ofrecerse el mismo día también.
17. Si una actividad deja de ofertarse, es decir, se borra de ACTIVIDADES,
también se borraría de REALIZA_ACTIVIDAD.
F, es BR. (Si fuera BC sí).
18. Si se despide a una persona, causando un borrado en PERSONAL, si esta es
una persona de contacto, no se permitirá este borrado.
V, ya que es BR.
19. Si la habitación de un alojamiento no puede ser utilizada y se quiere borrar
de la relación, esto provocará el borrado del alojamiento al que pertenece.
F, solo si fuera al revés.
20. No podrán borrarse alojamientos que tengan actividades asociadas.
V, (BR)

9
BBDD

2) El Ministerio de Educación desea conocer la información de las pinacotecas


del territorio nacional.
● De cada pinacoteca interesa saber su nombre, ciudad, dirección y
dimensión.
● Cada pinacoteca tiene una serie de cuadros, caracterizados por un
código, nombre, medidas, fecha en que fue pintado y técnica utilizada
para pintarlo.
● Cada cuadro solo puede ser expuesto en una pinacoteca.
● Cada cuadro es pintado por un pintor (nombre, país, ciudad, fecha
nacimiento y fecha de fallecimiento). Un pintor puede tener a otro como
maestro.
● Cada pintor puede pertenecer a una escuela, de la que se desea saber su
nombre, país y fecha de aparición.
● Los pintores pueden tener uno o varios mecenas de los que se desea
conocer su nombre, país, ciudad, fecha de fallecimiento y fecha de inicio y
fin del mecenazgo
Se pide:
a) Diseñar el esquema o grafo relacional de la base de datos, teniendo en
cuenta que tanto los pintores como sus cuadros desaparecerán de la base de
datos si la pinacoteca a la que pertenecen cierra o deja de estar presente en la
base de datos.

10
BBDD

b) Idem suponiendo que cada cuadro pertenece a una pinacoteca, pero puede
ser expuesto en varias.

c) Idem suponiendo que en cada cuadro pueden participar distintos pintores.

11
BBDD

Tema 6b: Modelo Relacional - Propiedades


Dinámicas
La dinámica del modelo relacional permite la transformación entre estados de la
BD que se realiza aplicando un conjunto de operadores al estado origen, para
obtener el estado destino.
O (BDi) = BDj Estado origen (i) y estado final (j) BD deben satisfacer las
restricciones de integridad estática y dinámica (entre estados)

● Lenguajes relacionales (lenguajes de especificación):


○ Algebraicos.- las operaciones se aplican sobre operandos
(relaciones) y el resultado es otra relación.
■ Álgebra Relacional
○ Predicativos.- (orientados a tuplas o a dominios).- se define el
estado sin indicar las operaciones.
■ Cálculo Relacional

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

π𝐴𝑅 => los atributos A la relación R’

ii) Selección (σ)(sigma)

σ𝐶𝑅 => filas donde C es CIERTA {Se usa notación lógica}

Ej: Empleados con salario >2000€:


𝑅𝐸𝑆 ← σ𝑆𝐴𝐿𝐴𝑅𝐼𝑂>2000𝐸𝑀𝑃𝐿𝐸𝐴𝐷𝑂𝑆

Ej: Empleados con salario >2000€ y que se llamen “María”:


𝑅𝐸𝑆 ← σ𝑁𝑂𝑀='𝑀𝑎𝑟í𝑎'^𝑆𝐴𝐿𝐴𝑅𝐼𝑂>2000𝐸𝑀𝑃𝐿𝐸𝐴𝐷𝑂𝑆

Ej: DNI, empleados con salario >2000€ y que se llamen “María”:


𝑅𝐸𝑆 ← π𝐷𝑁𝐼 (σ 𝐸𝑀𝑃𝐿𝐸𝐴𝐷𝑂𝑆)
𝑁𝑂𝑀='𝑀𝑎𝑟í𝑎'^𝑆𝐴𝐿𝐴𝑅𝐼𝑂>2000

𝑅1 ←σ𝑁𝑂𝑀='𝑀𝑎𝑟í𝑎'^𝑆𝐴𝐿𝐴𝑅𝐼𝑂>2000𝐸𝑀𝑃𝐿𝐸𝐴𝐷𝑂𝑆

𝑅𝐸𝑆 ←π𝐷𝑁𝐼𝑅1

iii) Unión (U)


R1 U R2 → Unión de las filas
● Conmutativa
● Requiere compatibilidad
Ej:
R1(NOM) R2(NOM)
Juan Ana
Ana María
Pedro

R= R1 U R2;
R(NOM) = { Juan, Ana, Pedro María}

Ana aparece solo una vez, la de la primera relación.

13
BBDD

iv) Diferencia (-) o (\)


● No conmutativa
● Requiere compatibilidad
Ej:
RR ← R1 - R2;
RRR ← R2-R1

RR(Nom) = {Juan, Pedro}


RRR(Nom) = {María}

v) Producto cartesiano (x)


R1 x R1 → combina cada fila de R1 con cada fila de R2.
Ej:
R1(A,B) R2(C)
a1 b1 c1
a2 b2 c2
a3 b3

R1 X R2 → R(A,B,C)= {a1 b1 c1, a1 b1 c2,


a2 b2 c1, a2 b2 c2,
a3 b3 c1, a3 b3 c2}

● Propiedades de U , -, ∩:
U , -, ∩ → necesitan que sus operandos (relaciones) sean compatibles:
- Mismo nº de atributos
- Mismo tipo[dominio] “dos a dos”

Ej: R1(NOM, APE) R2(NOMBRE, APESS) -> compatibles ✅


R1(NOM, NUM) R2(FECHA, PRECIO) [nos fijamos en el tipo] ❌
Ej: DNI de jugadores de equipos de Madrid :

14
BBDD

● Solución 1:
𝑅1 ←π𝑁𝑂𝑀 (σ𝐶𝐼𝑈𝐷𝐴𝐷='𝑀𝐴𝐷𝑅𝐼𝐷'𝐸𝑄𝑈𝐼𝑃𝑂𝑆) // Nombre equipos de Madrid

𝑅2 ← 𝐽𝑈𝐺𝐴𝐷𝑂𝑅𝐸𝑆 𝑥 𝑅1 // Nos quedan todos con todos, filtramos a continuación:

𝑅3 ← σ𝐸𝑄𝑈𝐼𝑃𝑂=𝑁𝑂𝑀

𝑅𝐸𝑆 ← π𝐷𝑁𝐼𝑅3

⬆️Esta es más eficiente, ya que filtramos primero EQUIPOS y luego combinamos.

● Solución 2:

𝑅1 ← 𝐽𝑈𝐺𝐴𝐷𝑂𝑅𝐸𝑆 𝑥 𝐸𝑄𝑈𝐼𝑃𝑂 𝐽𝑈𝐺𝐴𝐷𝑂𝑅𝐸𝑆 θ𝐸𝑄𝑈𝐼𝑃𝑂=𝑁𝑂𝑀𝐵𝑅𝐸𝐸𝑄𝑈𝐼𝑃𝑂

𝑅2 ←σ𝑁𝑂𝑀𝐵𝑅𝐸=𝐸𝑄𝑈𝐼𝑃𝑂𝑅1

𝑅3 ←σ𝐶𝐼𝑈𝐷𝐴𝐷='𝑀𝐴𝐷𝑅𝐼𝐷'

𝑅𝐸𝑆 ←π𝐷𝑁𝐼𝑅3

B) Operadores derivados:

i) Join (θ)(⋈)
𝑅1 θ 𝑅2 = σ (𝑅1 𝑥 𝑅2)

Ej:

//Los empleados de un dept.


R ← 𝐸𝑀𝑃𝐿𝐸𝐴𝐷𝑂 θ𝐸𝑀𝑃𝐿𝐸𝐴𝐷𝑂.𝐶𝑂𝐷𝐷𝐸𝑃=𝐷𝐸𝑃.𝐶𝑂𝐷𝐷𝐸𝑃𝐷𝐸𝑃

● Join Natural (*)

○ Devuelve las filas donde los atributos con el mismo nombre tienen el
mismo valor.
○ Ej: R ← EMPLEADO * DEP

15
BBDD

Renombrar un atributo:

R1 (CODDEPT, NOMDEP) ← DEP


R2 ← EMP * R1

ii) Intersección (∩)


● R1 ∩ R2 → filas que están en R1 y R2
● Requiere relaciones compatibles.
𝑅1 ∩ 𝑅2 = 𝑅1 − (𝑅1 − 𝑅2)

iii) División (:)(÷)


● Dos operandos: R ← R1(A B C) : R2(A)
● R tiene como atributos los de R1 - R2 → R(B C)

El resultado son las tuplas del dividendo(R1) que acompañan a


todos los valores del divisor (R2)

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)

Sin suponer que Nom_E y Nombre_E tienen el mismo nombre:

16
BBDD

𝑅1 ←(σ𝑃𝐴𝐼𝑆='𝐸𝑆𝑃𝐴Ñ𝐴'𝐸𝐷𝐼𝑇𝑂𝑅𝐼𝐴𝐿)

𝑅2 ← 𝐿𝐼𝐵𝑅𝑂 θ𝐿𝐼𝐵𝑅𝑂.𝑁𝑂𝑀.𝐸=𝑅1.𝑁𝑂𝑀𝐵𝑅𝐸−𝐸 𝑅1

𝑅𝐸𝑆 ←π𝑇𝐼𝑇𝑈𝐿𝑂𝑅2

Ejercicios prácticos Modelo Relacional (dinámica) :


1. De acuerdo con el esquema relacional presentado a continuación, se inserta
la siguiente información en la base de datos:

17
BBDD

A) Resolver en álgebra relacional las siguientes consultas:


1. Nombre de los alojamientos que ofertan habitaciones dobles.
✔️(Corregido)

𝑅1 ←π𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂(σ𝑇𝐼𝑃𝑂='𝐷𝑂𝐵𝐿𝐸𝑆'𝐻𝐴𝐵𝐼𝑇𝐴𝐶𝐼𝑂𝑁𝐸𝑆)

ALOJAMIENTO

Hotel XYQ

Resort ABC

Hostal 123

Lodge QRS

2. Listado de las personas de contacto por cada alojamiento. El listado está


compuesto del nombre de la persona de contacto y el nombre de los
alojamientos. ✔️(Corregido)

𝑅1 ←π𝑁𝑂𝑀𝐵𝑅𝐸.𝐴𝐿𝑂𝐽𝐴, 𝑁𝑂𝑀𝐵𝑅𝐸. 𝑃( 𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂 θ𝐶𝑂𝑁𝑇𝐴𝐶𝑇𝑂= 𝐶𝑂𝐷𝐼𝐺𝑂.𝑃 𝑃𝐸𝑅𝑆𝑂𝑁𝐴𝐿)

Nombre_aloja Nombre_p

Hotel XYQ Juan

… María

18
BBDD

Pedro

Laura

3. Listado del personal de cada alojamiento sin tener en cuenta la persona


de contacto. ~ Personal de cada alojamiento que no es persona de
contacto. ✔️(Corregido)
𝐴 ←π𝐶𝑂𝑁𝑇𝐴𝐶𝑇𝑂(𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂𝑆)

𝐵 ←π𝐶𝑂𝐷𝐼𝐺𝑂.𝑃(𝑃𝐸𝑅𝑆𝑂𝑁𝐴𝐿)

𝑅𝐸𝑆 ←(𝐵 − 𝐴 ) * 𝑃𝐸𝑅𝑆𝑂𝑁𝐴𝐿

codigo_p nombre_p direccion NIF n_aloj

004 Luis 1234 Recepción 32.. Lodge QRS

4. Alojamientos que realizan actividades de senderismo con un nivel fácil en


domingo. ✔️(Corregido)
𝑅1 ←π𝐶𝑂𝐷.𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷 ((σ𝑁𝑂𝑀𝐵𝑅𝐸.𝐴𝐶𝑇='𝑆𝐸𝑁𝐷𝐸𝑅𝐼𝑆𝑀𝑂'^𝑁𝐼𝑉𝐸𝐿='𝐹𝐴𝐶𝐼𝐿' 𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷𝐸𝑆))

𝑅2 ←(π𝑁𝑂𝑀𝐵𝑅𝐸.𝐴𝐿𝑂𝐽𝐴 ( σ𝐷𝐼𝐴.𝑆𝐸𝑀𝐴𝑁𝐴='𝐷𝑂𝑀𝐼𝑁𝐺𝑂'(𝑅1 * 𝑅𝐸𝐴𝐿𝐼𝑍𝐴𝑅)))

𝑅3 ←(𝑅3 * 𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂𝑆)

nombre_aloja direccion telf contacto num_hab

5. Nombres de las actividades ofertadas, pero no realizadas en ningún


alojamiento.
𝑅1 ←π𝐶𝑂𝐷.𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷 ( 𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷𝐸𝑆)

𝑅2 ←π𝐶𝑂𝐷.𝐴 ( 𝑅𝐸𝐴𝐿𝐼𝑍𝐴𝑅)

𝑅3 ←π𝑁𝑂𝑀𝐵𝑅𝐸.𝐴𝐶𝑇 (𝑅1 − 𝑅2) * 𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷𝐸𝑆

nombre_act

Pesca deportiva

19
BBDD

6. Nombre de las actividades que se realizan tanto en el Hotel XYZ y en el


Hostal 123.

𝑅1 ←π𝐶𝑂𝐷.𝐴 (σ𝑁𝑂𝑀𝐵𝑅𝐸.𝐴='𝐻𝑜𝑡𝑒𝑙 𝑋𝑌𝑍)

𝑅2 ←π𝐶𝑂𝐷.𝐴 (σ𝑁𝑂𝑀𝐵𝑅𝐸.𝐴='𝐻𝑜𝑠𝑡𝑎𝑙 123)

𝑅3 ←π𝑁𝑂𝑀𝐵𝑅𝐸.𝐴𝐶𝑇 ((𝑅1 𝑈 𝑅2) * 𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷𝐸𝑆))

nombre_act

Buceo

7. Nombre y dirección de los alojamientos que tienen actividades de todos


los niveles. ✔️(Corregido)
// R1( NOMBRE_A, NIVEL) : R (NIVEL) = RES(NOMBRE_A)
Cuando nos piden todos los conjuntos de un atributo, usamos la división. (lo que
me pidan irán en el divisor).

R1 ← π𝑁𝑂𝑀𝐵𝑅𝐸.𝐴𝐿𝑂𝐽𝐴, 𝑁𝐼𝑉𝐸𝐿 (𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷𝐸𝑆 * 𝑅𝐸𝐴𝐿𝐼𝑍𝐴)

R2 ← π𝑁𝐼𝑉𝐸𝐿 (𝐴𝐶𝑇𝐼𝑉𝐼𝐷𝐴𝐷𝐸𝑆)

R3 ← 𝑅1 : 𝑅2
RES ← π𝑁𝑂𝑀𝑅𝐸.𝐴𝐿𝑂𝐽𝐴, 𝐷𝐼𝑅𝐸𝐶𝐶𝐼𝑂𝑁 (𝑅3 * 𝐴𝐿𝑂𝐽𝐴𝑀𝐼𝐸𝑁𝑇𝑂𝑆)

nombre_aloja direccion

B) De acuerdo con el esquema relacional presentado en el fichero bdlibros.txt


de aula virtual para la herramienta RELAX, interpreta la información que
recuperan las siguientes las consultas en álgebra relacional del fichero
consultas.txt.

a. (π nombre (σ institucion = 'URJC' (Autor))) ∪ (π nombre (σ institucion =


'URJC' (Editor)))
Nombre de autores o editores de la URJC
b. (π nombre (Editor))-(π nombre (Autor))
Nombre de editores que no son autores.

20
BBDD

c. π Autor.nombre, Libro.titulo (Autor ⨝ Autor.nombre = Libro.autor (π titulo,


autor (Libro)))
Nombre de autores y el título de sus libros.
d. It = π nombre σ nacionalidad = 'Italiana' (Autor)
lib = π titulo, autor (Libro)
It ⨝ autor = nombre lib
It // Nombre de autores italianos
lib // título y autor de libros
Nombre de autores italianos y títulos de sus libros.

e. A = π autor σ editorial = 'rama' (Libro)


B = Autor
π institucion (A ⨝ autor = nombre B)
A // Autores de libros de la ed Rama
B// autores xd
// Instituciones de autores de la ed Rama

f. A = π autor σ editorial ≠ 'rama' (Libro)


B = Autor
π institucion(A ⨝ autor = nombre B)
A // Autores que han publicado en editoriales distintas de Rama
B // Autores
Institucion de los autores que han publicado en eds distintas de rama

g. A = π nombre σ nacionalidad = 'Espanola' (Autor)


E = σ institucion='URJC' (Editor) ⨝ nombre = editor Libro
A ⨝ nombre = autor E
A // Nombre de autores con nacionalidad española
E// Autores (toda la relación) cuya institución sea URJC y los libros que ha
editado (toda la relación).
Autores españoles cuya institucion URJC y libros que ha editado.

h. π autor, editorial (Libro) ÷ (π editorial (Libro))


Los autores que han publicado en todas las editoriales

21
BBDD

Tema 7a: Diseño lógico: diseño relacional


E/R → Relacional (TRANSFORMACIÓN)
A veces supone:
● Pérdida semántica
● Pérdida de representación.

1. Transformación E/R a Esquema Relacional


Aplicando adecuadamente las reglas de transformación se obtiene un esquema
lógico relacional normalizado. A partir del esquema lógico específico se obtendrá
el esquema interno. Este esquema, por motivos de rendimiento y optimización,
puede ser desnormalizado.

● 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:

○ 1:N A→ propagar la clave en sentido de la flecha (Regla básica)


B → nueva relación

¿Cuándo creamos una nueva relación?


■ Cuando haya muchos valores nulos
■ Cuando se preve que se convertirá en N:M
■ Cuando la interrelación tiene atributos propios y no
deseamos propagarlos por semántica

○ 1:1 → propagar clave


→ transformarlo en una relación

23
BBDD

¿Según qué? → cardinalidades


■ (0,1) (0,1) → relación (evitamos valores nulos)
■ (0,1) (1,1) → propagamos clave del 1 al 0
■ (1,1) (1,1) → propagamos clave
○ Interrelaciones reflexivas
■ Generalización 1:N

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

PROFESOR( Cod_prof, Nombre NN, DNI UNIQUE NN, DIRECCIÓN NN,


TELÉFONO*, MATERIA NN)

25
BBDD

CREATE TABLE Profesor(


Cod_prod Códigos,
Nombre Nombres NOT NULL,
DNI DNIS NOT NULL,
Dirección Lugares NOT NULL,
Teléfono Nos_Teléfono,
Materia Materias NOT NULL,
PRIMARY KEY (Cod_Prof),
UNIQUE (DNI));

● Atributo compuesto → “se aplana” o descompone

● Atributo obligatorio →NN


● Atributo opcional→ *

● 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.

● Atributo almacenado → atributo


● Atributo derivado → no se guardan

● Atributos en interrelación → se van con la relación

● Atributo multivaluado en interrelación

Transformación entidades débiles


● Entidad débil → borrado en cascada
● Entidad débil + identificación → la clave se extiende con la clave de la
relación “madre”

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

Tema 7b: Diseño lógico: Normalización


E/R → M. Relacional → M.R. Específico SGBD
● “Diseño bueno” → No redundante (no repite info)
→ Permite recuperar info sin pérdidas de info
● Normalizar: transformar (dividir en tablas) un esquema para evitar
repeticiones y no perder info.
● Instrumentos para normalizar:
○ Dependencias funcionales
○ Formas normales

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.

Descomposición por la IZQUIERDA NO SE CUMPLE! ❌


Ej:
CIUDAD → PROVINCIA CIUDAD, CPOSTAL → PROVINCIA
CPOSTAL → PROVINCIA

Ej2:

MODELO AÑO → MARCA MODELO → MARCA

29
BBDD

AÑO → MARCA

Descomposición por la DERECHA SÍ SE CUMPLE! ✅


DNI → NOMBRE APELLIDOS DNI → NOMBRE, DNI→ APELLIDOS

1. Propiedades de las dependencias funcionales:


● Dependientes del esquema.
○ R: Relación
○ F: Conjunto de dependencias funcionales
● Definidas por el diseñador, NO los datos

❖ Si X→ R, entonces X es superclave

a) Superclave (SK) y Clave candidata (K)

❖ Superclave (SK): conjunto de atributos que, a través de aplicar


dependencias funcionales transitoriamente devuelve R.
❖ Clave candidata (K): superclave que no se puede reducir sin dejar
de ser superclave (mínima)
Ej: EMP( DNI, NOMBRE, APES) F= { DNI → NOMBRE, APES}
¿DNI NOMBRE es super clave? Sí, pero no clave candidata, DNI
es super clave y clave candidata.

VEHÍCULO( MARCA, MODELO, PRECIO) F={MARCA MODELO →


PRECIO}
{MARCA MODELO } es super clave y clave candidata.
● Aquellos atributos que solamente estén a la derecha de DF (consecuentes)
NO pertenecen a ninguna clave.

30
BBDD

● Los atributos que no aparezcan en ninguna DF tendrán que estar en TODAS


las claves.
● X es equivalente a Y si X→Y e Y→ X.
○ X↔Y
● X → Y es trivial si Y ⊆ X. Ej: NOM DNI → DNI
● Transitividad X → Y, Y → Z ; X → Z
○ Si Z -/-> X, se dice que es estricta.
● Una DF X→ Y es completa X => Y sii ∄ Z ⊂ X t.q. Z → Y
Ej:
D↔A
D→B
CA → B ¿dependencia parcial/total? — Parcial, es un atributo extraño, redundante o ajeno
(sobra)

Vemos que es gracias a A, por lo que obtendremos B.

C+ c.r.a. F -{CA → B} = {C}


A+ c.r.a. F -{CA → B} = {ABD}

b) Cierre de un conjunto de atributos X (X+):


Es el conjunto de atributos que se obtienen por la aplicación transitiva de
DF sobre X.
+
● Se denota como 𝑋
● “Conjunto de información derivada de X”

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

c) Cierre de F (F+ o DF+):


● Conjunto de dependencias funcionales derivadas de F, donde F es
un conjunto de dependencias funcionales.
● Conjunto de DF, F tiene la semántica de un esquema
○ No siempre se ve toda la semántica
■ Todas las DF que genera F
+
● 𝐹 es el cierre del conjunto F
○ Conjunto de DF generado a partir de F

1. Axiomas básicos de Armstrong:


○ Reflexividad(trivial): si Y ⊆ X, entonces X → Y (X→Y trivial)
○ Regla de aumento: si X→Y,entonces XZ→YZ
Ej:
F= {A→B , B→E}
CA→CB
CA→ B donde C es un atributo extraño/redundante /ajeno
○ Transitividad: si X→Y y Y→Z, entonces X→Z

2. Comprobar si una dependencia pertenece al cierre DF:

No solemos calcular todo el F+, sino que vemos si una serie de


dependencias pertenece a F+.
Ejemplo trivial:
F= {X→ Y
+
Y→ Z} 𝑋→𝑍∈𝐹
Para ello, vemos si el consecuente de la dependencia pertenece a
X+ c.r.a F, donde X es el determinante de la dependencia.
Nos preguntamos “¿Está el consecuente en el cierre del determinante c.r.a F?
+ +
¿ 𝑋 → 𝑍 ∊ 𝐹 ? Sí, porque 𝑍 ⊆ 𝑋 𝑐. 𝑟. 𝑎 𝐹:
+
𝑋 𝑐. 𝑟. 𝑎 𝐹 = {𝑋𝑌𝑍}

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

2) Ver si una dependencia es cierta:


+
¿ 𝐵 → 𝐹 ∊ 𝐷𝐹 ?
Vemos que A→B ⋀ B→A, (son equivalentes), por lo que si tenemos A→F,
también es cierta B→F.

3. Comprobar si 2 dependencias son equivalentes (F☰G)


Para ver si dos conjuntos de dependencias son equivalentes, F☰G si F+=G+,
no calcularemos todos los cierres de las dependencias funcionales (F+ y G+), ya
que es muy laborioso. Lo que haremos será calcular las dependencias de F+ con
respecto a G y viceversa.
Ej: F= {CC→N, N→CC, CC→CD, CC→CP}
G={CC→N, N→CC, N→CD, N→CP}
¿F☰G?

Calculamos CC+ c.r.a G= {CC,N,CD,CP} entones CC→CD ∊ G+ y podemos


decir que F cubre a G.
¿G cubre a F?
Para eso, calculamos N+c.r.a F={N,CC,CD,CP}, por lo que N → CD∊f+ y
N→ CP ∊F+. Sí, G también cubre a F y son equivalentes.

4. Recubrimiento minimal /irredundante


F es recubrimiento minimal de G si F+=G+ y F no se puede reducir:
1. No tiene dependencias redundantes.
2. No tiene atributos extraños/redundantes.
3. Todas las dependencias se han descompuesto (1 único atributo en
el implicado).

1. ¿Una dependencia es redundante?


X→Y si puede derivarse de DF-(X→Y):
F={A→B, B→C, A→C}
A→ C es redundante porque A+ c.r.a F - {A→C}={ABC}
2. ¿Hay atributos extraños?
AB → C
B es atributo extraño: A+c.r.a F - {AB→C}

33
BBDD

*Más ejemplos en p.37-40.

5. Atributos principales y No principales


● Atributo Principal (si aparece en alguna clave K)
● Atributo No Principal (No en K)

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.

● Un esquema de relación está en una cierta forma normal si satisface un


conjunto de restricciones.
● Cuanta más alta sea la forma normal, menores serán los problemas en el
mantenimiento de la BD.
● Codd propuso 3 formas normales basadas en las DF y más tarde introdujo
una definición de la 3FN más restrictiva, la FNBC (Forma Normal
Boyce-Codd).
● Las 4FM se basan en dependencias multivaluadas y la 5FN en las
dependencias de proyección-combinación.
● Conforme avanzamos “se incluyen” las anteriores FNs:

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

Forma Normal Requisitos

1FN No tener atributos multivaluados

2FN No hay atributo no principal que depende parcialmente de ninguna clave.

3FN Todos los determinantes son SK o atributo principal.

FNBC Todos los determinantes son SK.

1. Primera Forma Normal (1FN)


● Todo esquema del MR cumple la 1FN, es trivial.
● La 1FN nos dice que no puede haber atributos multivaluados, por lo que el
MR lo asegura de forma implícita.

2. Segunda Forma Normal (2FN)


● No existe ningún atributo no principal que dependa parcialmente de
alguna clave.
● Siempre es descomposición sin pérdida.
● Si solo hay 1 K, siempre es 2FN (no puede haber dependencia parcial).
Ej:
R(ABCD) 1) Calculamos K= {AB} y ANP={C,D}
F= {AB→ C, A→D} 2) Comprobamos dependencias:
C depende totalmente de K y D parcialmente.

35
BBDD

Por lo tanto, A→ D no está en 2FN.

Normalizamos:
A→ D molesta ~R2 “de la DF que molesta”
~R’ “todo sin el consecuente q molesta”

Hacemos R2, F2 y R’, F’ siguiendo el siguiente algoritmo:


R2(AD)
F={A→D} K={A} ANP={D} No depende parcialmente.
R2 está en 2FN
R’(ABC)
F’={AB→C} K={AB} ANP={C} Depende totalmente de K.
R’ está en 2FN.

3. Tercera Forma Normal (3FN)


● Cumple 2FN
● Todos los determinantes son SK o atributo principal.
● Siempre es posible encontrar una descomposición sin pérdida que cumpla
2FN y 3FN y que conserve las DF.

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.

R’(AB) // Todo sin el consecuente de lo que molesta


F’= {A→B} K’={A} Está en 3FN, ya que A es SK.

36
BBDD

4. Forma Normal de Boyce-Codd(FNBC)


● Cumple 3FN
● Todos los determinantes son SK.

● Evita redundancias entre atributos o claves.


● Si tiene 2 atributos, es FNBC.

Hasta la 3FN siempre es posible encontrar una descomposición sin pérdida de


info y que conserve las DF. En el caso de FNBC, siempre habrá descomposición sin
pérdida (LJ), pero puede perder DFs.

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.

❖ FNBC ❌ // Todos los determinantes son SK → No por A↔B

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}

En este caso, la descomposición es sin pérdida de info (Reunión sin pérdida de


atributos ~ lossless join), pero sí pierde las DF.

37
BBDD

Entonces, mejor escogemos el otro sentido de la doble implicación: B→A y nos


queda:

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

2) Dado el siguiente esquema E/R y la transformación:

Indique (V o F) si se recogen las cardinalidades del esquema anterior:


1. La cardinalidad mínima 0 de (0,n) está recogida en la transformación:
V, el esquema MR permite que existan que B’s sin una entidad A asociada.
Tenemos la tabla A, la tabla B y la tabla I. En I se muestran las que sí tienen
relación. (Por lo tanto puede existir una B sin A, simplemente no estarán en
la tabla I y sí en sus respectivas).
2. La cardinalidad máxima n de (0,n) está recogida en la transformación: F,
ya que CodB es UNIQUE. No puede estar un mismo B asociado a varios A’s.
3. La cardinalidad mínima 1 de (1 ,n) está recogida en la transformación:

38
BBDD

F, por el mismo motivo que 1.


4. La cardinalidad máxima n de (1 ,n) está recogida en la transformación:
F, para que se cumpliera, un mismo A debería poder asociarse a distintos
Bs, pero como solo CodA es clave, no se puede.

3) Dado el siguiente esquema E/R y la transformación:

Indique (V o F) si se recogen las cardinalidades del esquema anterior:

1. La cardinalidad mínima 0 de (0,n) está recogida en la transformación:


V, ya que CodA* es opcional.
2. La cardinalidad máxima n de (0,n) está recogida en la transformación:
F, para un mismo B no puede haber varios As.
3. La cardinalidad mínima 1 de (1 ,n) está recogida en la transformación:
F, nada en el MR garantiza que no sea 0.
4. La cardinalidad máxima n de (1, n) está recogida en la transformación:
V, como b es clave en B, puede haber distintos Bs asociados.

39

También podría gustarte