Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Paso 2. Las
relaciones
NOTACIÓN
Ri es un conjunto de relaciones
NOTACIÓN
Las restricciones clave candidata (CK), not null (NN), único (U), clave externa
(FK) y de dominio se indican justo debajo de la definición de la tabla
Relaciones 1:1
Relaciones N:M
• Se crea una tabla de relación TR formada por las claves primarias de
las tablas de las entidades PK(T1), PK(T2), más los atributos
asociados a la relación, si existen.
• La clave primaria de esta tabla será la unión de las claves primarias
de las entidades si la relación entre ellas sólo se produce una vez.
• La clave primaria de esta tabla será la unión de las claves primarias
de las entidades y algún atributo de la relación si la relación puede
darse varias veces.
Relaciones de generalización
• Se crea una tabla para la entidad de nivel superior.
• Se crea una tabla para cada entidad de nivel inferior,
añadiendo la clave primaria de la entidad de nivel superior.
• Los atributos que forman la clave primaria de la entidad de
nivel superior pasan a ser atributos de la clave primaria de
todas las entidades de nivel inferior.
Alumno Titulacion
0, n
Escuela
1,1 pertenece a
+nombre: varchar(50)
+dirección: varchar(100)
§ Paso 1: Entidades
• ALUMNO { dni, nombre, direccion }
• TITULACION { codigo, descripcion }
• ESCUELA { nombre, direccion }
§ Paso 2: Relaciones
• estudia
v Opción 1: ALUMNO ( dni, nombre, direccion, codigoTitulacion )
´ codigoTitulacion es FK -> PK(TITULACION)
v Opción 2: ALUM_ESTUDIA_TIT ( dniAlumno, codigoTitulacion )
´ dniAlumno es FK -> PK(ALUMNO)
´ codigoTitulacion es FK -> PK(TITULACION)
• pertenece a
v Opción 1: TITULACION ( codigo, descripcion, nombreEscuela )
´nombreEscuela es FK -> PK(ESCUELA)
Muchos
§ Tenemos dos entidades y una relación de uno a uno. Además, las dos entidades
participan parcialmente
§ Para cada entidad una tabla y propagamos la clave:
• ESTADIO { nombre, aforoMaximo }
• EQUIPO { nombre, fechaFundacion, numSocios, ciudad, nombreEstadio }
´ nombreEstadio es FK -> PK(ESTADIO)
§ INVESTIGADOR { titulación,
dniPersonal }
•dniPersonal es FK -> PK(PERSONAL)
RESUMEN
RESUMEN
– Relación especial (1): agregación. Se modela como una relación 1, N
• La clave primaria de la entidad del lado 1 se propaga a la entidad con N.
• Atributos de la relación: van a la tabla donde se ha propagado la clave.
– Relación especial (2): generalización
• 1) Una tabla para la entidad de nivel superior.
• 2) Una crea una tabla para cada entidad de nivel inferior
• 3) La clave primaria de las especializaciones es la PK de la
generalización (la PK de la clase madre se propaga a las clases hijas
como FK, donde actúa como PK de las clases hijas también).
– Observaciones:
• Atributo(s) de la clave primaria se subraya(n).
• Adnotación FK (Ejemplo): ESTACION (0,N) estáEn MUNICIPIO (1,1)
ESTACION { id, accesible, denominacionZona, idMunicipio}
idMunicipio es FK -> PK(MUNICIPIO)
MUNICIPIO {idMunicipio, nombre, numHabitantes }
DIAPOSITIVA 30
Bases de Datos
a) Introducción
b) Dependencias funcionales
c) Reglas de inferencia lógica
d) Normalización
Bases de Datos
Tema 3 – Normalización - 33
Bases de Datos
Introducción
Tema 3 – Normalización - 34
Bases de Datos
Introducción
§ Un problema derivado de la redundancia de información es que se pueden
producir anomalías:
Anomalías de inserción: ¿cómo podemos dar de alta una nueva titulación si todavía
no hay alumnos admitidos?
Anomalías de eliminación: si eliminamos al único alumno que ha sido admitido en una
nueva titulación porque ha anulado matrícula. ¿qué pasa con la información de la
titulación?
Anomalías de inconsistencia : si en el momento de dar de alta una nueva admisión de
un estudiante en una titulación, se introducen datos que difieren de los que hubiera
en registros anteriores (por ejemplo, la fecha de nacimiento) ¿qué información es la
correcta?
Introducción
Tema 3 – Normalización - 36
Bases de Datos
a) Introducción
b) Dependencias funcionales
c) Reglas de inferencia lógica
d) Normalización
Bases de Datos
Definición formal
§ Dado una relación R formada por un conjunto de atributos {A1, A2, … , An}, se
dice que un conjunto de atributos X de R determina funcionalmente a un
conjunto de atributos Y de R si:
§ es decir, todas las tuplas de R en las que X toma un determinado valor tienen
asociado el mismo conjunto de valores para Y.
Tema 3 – Normalización - 38
Bases de Datos
Tema 3 – Normalización - 39
Bases de Datos
Nomenclatura
§ Nomenclatura: X ª Y
• ª : símbolo de dependencia funcional. X implica Y
• X determina funcionalmente a Y
• Y depende funcionalmente de X
• X : atributo o conjunto de atributos determinante
• Y : atributo o conjunto de atributos dependiente
El siguiente esquema representa el esquema relacional de la tabla
EstudianteTitulación y las DF identificadas:
Tema 3 – Normalización - 41
Bases de Datos
Tema 3 – Normalización - 42
Bases de Datos
a) Introducción
b) Dependencias funcionales
c) Reglas de inferencia lógica
d) Normalización
Bases de Datos
En una regla de inferencia existen una o varias premisas (también llamadas ‘hechos’ o
‘antecedentes’) que se asumen verdaderas, y uno o varios consecuentes que serían la
conclusión o conocimiento inferido una vez aplicada la regla sobre las premisas.
Tema 3 – Normalización - 45
Bases de Datos
Si X ª Y entonces XZ ª YZ
Tema 3 – Normalización - 46
Bases de Datos
Si (X ª Y) Ù (Y ª Z) entonces X ª Z
Tema 3 – Normalización - 47
Bases de Datos
Tema 3 – Normalización - 48
Bases de Datos
Si (X ª Y) Ù (X ª Z) entonces (X ª YZ)
Composición
X+actual = X+anterior È B
X+actual = Y È B
2
Iteración 1: evaluamos cada df de Á
df1: el atributo determinante DNI forma parte de {X}+ por lo que podemos calcular
una nueva {X}+ = {X}+antigua È {Nombre, Apellidos}
{X}+ = {DNI, Nombre, Apellidos, CodCurso, FechaPréstamo, FechaEntrega}
df2: el atributo determinante CodCurso forma parte de {X}+ por lo que podemos
calcular una nueva {X}+ = {X}+antigua È {Recurso}
{X}+ = {DNI, Nombre, Apellidos, CodCurso, Recurso, FechaPréstamo, FechaEntrega}
df3 y df4 no aportan más atributos
2
Iteración 2: no es necesario volver a evaluar todas las dependencias funcionales
porque ya hemos obtenido que el cierre {CodRecurso, FechaPréstamo}+ es igual a
todos los atributos de Préstamo.
Tema 3 – Normalización - 52
Bases de Datos
{CodRecurso, FechaPréstamo}+ =
{DNI, Nombre, Apellidos, CodRecurso, Recurso, FechaPréstamo, FechaEntrega}
{CodRecurso, FechaEntrega}+ =
{DNI, Nombre, Apellidos, CodRecurso, Recurso, FechaPréstamo, FechaEntrega}
Tema 3 – Normalización - 53
Bases de Datos
{CodRecurso, FechaPréstamo}+ =
{DNI, Nombre, Apellidos, CodRecurso, Recurso, FechaPréstamo, FechaEntrega}
{CodRecurso, FechaEntrega}+ =
{DNI, Nombre, Apellidos, CodRecurso, Recurso, FechaPréstamo, FechaEntrega}
{CodRecurso, FechaPréstamo}
{CodRecurso, FechaEntrega}
Tema 3 – Normalización - 56
Bases de Datos
RESUMEN
• 1. Cierre de Conjunto de Atributos (adnotación: X+)
– PASO 1: Aplicar las reglas de inferencia reflexiva y unión para inferir el conjunto
de atributos dependientes Y (directamente dependiente de X)
– PASO 2: ITERAR: Para cada DF donde los atributo(s) determinante(s) Ì Y,
aplicar transitividad.
• Observación: La iteración para cuando (1) ya no se encuentran una DF donde
atributo(s) determinante(s) Ì Y, o (2) X+ incluye todos los atributos de R.
• 2. Superclave: Una superclave incluye todos los atributos.
– Caso 1: Si el cierre de un conjunto de atributos determinante X+ contiene todos
los atributos de R, X será superclave.
– Caso 2: Si el cierre de un conjunto de atributos no contiene todos los atributos, es
necesario aplicar la composición con otras DFs del conjunto Á. El(los) atributo(s)
que no forme(n) parte de ningún cierre (es decir, que no actué en calidad de
determinante, ni de dependiente en las DFs), deberá formar parte de toda
superclave. Notas:
• Se busca determinar la(s) superclave(s) mínima(s) (que no contenga(n) atributos
extraños).
• Muchas veces, se obtienen varias superclaves mínimas. Una de ellas (generalmente,
con el menor número de atributos de convierte en PK(R)), y el resto se consideran
claves candidatas. DIAPOSITIVA 57
Bases de Datos
a) Introducción
b) Dependencias funcionales
c) Reglas de inferencia lógica
d) Normalización
Bases de Datos
Normalización: definición
§ Requisitos de la descomposición:
• Preservar el contenido de la relación: la unión de los atributos de las
nuevas relaciones debe ser igual a los atributos de R.
• Preservar el conjunto de dependencias funcionales: las relaciones
semánticas definidas en Á deben estar presentes en el nuevo conjunto de
relaciones.
Bases de Datos
Formas normales
Tema 3 – Normalización - 61
Bases de Datos
Tema 3 – Normalización - 62
Bases de Datos
Tema 3 – Normalización - 63
Bases de Datos
§ Esta relación no satisface los criterios establecidos por la 2FN, al ser df2 una
dependencia funcional parcial con respecto de la clave primaria.
Tema 3 – Normalización - 65
Bases de Datos
§ Normalización de Préstamo:
• Crear una tabla formada por PK(R) más los atributos que dependan totalmente de
ella.
Tema 3 – Normalización - 66
Bases de Datos
Tema 3 – Normalización - 67
Bases de Datos
Tema 3 – Normalización - 68
Bases de Datos
Tema 3 – Normalización - 69
Bases de Datos
Metodología de diseño
§ Es momento de hacer una reflexión sobre la importancia que tiene seguir las
pautas de diseño vistas a lo largo de la asignatura.
§ Se ha presentado un procedimiento de diseño en el que la definición del
esquema relacional de la base de datos no se hace a ‘fuerza bruta’ y
después se normaliza, sino que, tras (1) un análisis del contexto, (2) una
fase de diseño conceptual y (3) una fase de transformación a diseño lógico
se llega a un diseño que en todos los casos cumple la 1FN y la 2FN, y
según la validad del modelo conceptual de partida hasta la 3FN.
§ Si en el ejemplo planteado, en el que un socio de una biblioteca puede tener
en préstamo varios recursos simultáneamente, hubiéramos efectuado un
diseño conceptual y, aplicando las pautas de transformación, se hubiera
creado (1) una relación asociada al conjunto entidad Recurso, (2) otra al
conjunto entidad Socio y (3) una relación Préstamo como resultado de la
transformación de un conjunto relación prestar entre Recurso(0,N) y
Socio(0,N), con los atributos asociado {FechaPréstamo, FechaEntrega}, se
hubiera llegado al mismo diseño relacional, sin necesidad de normalizar.
Tema 3 – Normalización - 70
Bases de Datos
Metodología de diseño
Tema 3 – Normalización - 71
Bases de Datos
Tema 3 – Normalización - 72
Bases de Datos
Tema 3 – Normalización - 73
Bases de Datos
Localizacion
Direccion Ciudad CodigoPostal
df1
df2
§ Normalización de Localizacion:
• Crear una tabla formada por PK(R) más los atributos que no dependan
directamente de ella.
Localizacion
Direccion Ciudad CodigoPostal
df1
CodigoPostal-Ciudad
Ciudad CodigoPostal
df2
Tema 3 – Normalización - 75
Bases de Datos
RESUMEN
• 3. Procedimiento de normalización (descomposición progresiva de
una relación R en varias relaciones, preservando el contenido de la
relación, incluyendo las DFs)
– 1FN = estudiar los atributos para ver si son atómicos (tabla a tabla).
• Atributos compuestos: Generalmente, un atributo para cada componente
• Atributos multievaluados => crear nuevas tablas. ¿CÓMO?
– R1: formada por la PK(R) más los atributos simples de R.
– Por cada atributo multievaluado: una tabla formada por la PK(R) más el atributo
multievaluado. La PK de esta tabla será la unión del PK(R) + atributo multievaluado.
En la Tabla formada, la PK será un FK que referencia a PK(R).
– 2FN = (R cumple 1FN); estudiar si existen DFs que son dependencia
funcional parcial con respecto de la PK(R) (relación a relación). Por lo tanto:
• Si la PK(R) contiene 1 atributo => CUMPLE
• Si la PK(R) está formada por un conjunto de atributos => mirar si alguno de los
atributos que forma parte de la PK(R) es ATRIBUTO DETERMINANTE en otras DFs.
SI EXISTEN => crear nuevas tablas. ¿CÓMO?
– R1: formada por PK(R) más los atributos que dependan totalmente de ella.
– Para cada DF parcial, crear una tabla el conjunto de atributos determinante y el
conjunto de atributos funcionalmente dependiente.
DIAPOSITIVA 76
Bases de Datos
RESUMEN
– 3FN= (R cumple 2FN); estudiar las dependencias transitivas con
respeto al PK(R). SI EXISTEN => crear nuevas tablas. ¿CÓMO?
– R1: formada por la PK(R) más los atributos que no dependan
transitivamente de ella.
– Por cada DF transitiva: una tabla formada por el conjunto de atributos
determinante de la DF transitiva más los atributos dependientes del
determinante.
– FNBC = (R cumple 3FN) y todo conjunto de atributos determinantes es
clave candidata. En cada relación, ver si existen relaciones que
contienen varias DFs donde uno de los atributos no primarios (el que no
parte de la PK(R) o de la clave candidata) actúa como determinante en
alguna DF. Si existen, crear nuevas tablas: ¿CÓMO?
– R1: formada por la PK(R) más los atributos que dependan directamente
de ella
– (2) Por cada dependencia funcional X ª Y en la que X no es atributo
primario: crear una tabla Ri formada por el conjunto de atributos
determinante X y el conjunto de atributos funcionalmente dependiente Y.
• OBSERVACIÓN: Se debe respetar siempre la semántica definida en las
DFs (no se pueden dividir los atributos determinantes y dependientes
DIAPOSITIVA 77
definidos en las DFs).
Estudiar el recurso Moodle
"T3.2 Normalización - Ejercicios
resueltos (PARA EL EXAMEN)"
DIAPOSITIVA 78
Repasar los recursos Moodle:
• "T3.2 - Apuntes adicionales y
ejemplos 1FN y FNBC” y
• "T3.2 Ampliación sobre
Normalización resueltos (Ejercicios
resueltos)"
DIAPOSITIVA 79
Bases de Datos
a) Introducción
b) Elementos del lenguaje
c) Lenguaje de Definición de Datos (DDL)
https://www.postgresql.org/docs/current/index.html
Bases de Datos
Objetos y conceptos
Tema 3 – SQL-DDL - 82
Bases de Datos
Objetos y conceptos
§ Index (índice): objeto que proporciona un camino de acceso rápido a las tuplas
de una tabla.
§ Trigger (disparador): función que se ejecuta de forma automática cuando se
produce un evento (INSERT, UPDATE o DELETE) en una tabla o vista.
§ Per-row trigger: la función es invocada automáticamente para cada una de las
tuplas a las que afecta el evento.
§ Per-statement trigger: la función es invocada una única vez cuando se produce
el evento.
§ Function: conjunto de sentencias pre-compiladas bajo un nombre que se
ejecutan como una única unidad. Admite paso de argumentos y devuelve uno o
varios valores de resultado.
§ Stored Proceduce: conjunto de sentencias pre-compiladas bajo un nombre que
se ejecuta como una única unidad. Admite paso de argumentos de entrada y de
salida. No puede formar parte de una sentencia del DML, se debe invocar
explícitamente mediante la sentencia CALL.
Tema 3 – SQL-DDL - 83
Bases de Datos
Tema 3 – SQL-DDL - 84
Bases de Datos
Tema 3 – SQL-DDL - 85
Bases de Datos
Tema 3 – SQL-DDL - 86
Bases de Datos
MODIFICACIÓN
CREACIÓN (CREATE) INSERCIÓN (INSERT)
ACTUALIZACIÓN (UPDATE)
ALTERACIÓN (ALTER)
BORRADO (DELETE)
ELIMINACIÓN (DROP)
CONSULTA
SELECCIÓN (SELECT)
Tema 3 – SQL-DDL - 87
Bases de Datos
PostgreSQL
§ Estándar: ISO/IEC 9075 "Database Language SQL“
§ Versión más reciente: 2011
§ Versión en revisión: 2016
§ El estándar se encuentra estructurado en las siguientes partes:
§ ISO/IEC 9075-1 Framework (SQL/Framework)
§ ISO/IEC 9075-2 Foundation (SQL/Foundation)
§ ISO/IEC 9075-3 Call Level Interface (SQL/CLI)
§ ISO/IEC 9075-4 Persistent Stored Modules (SQL/PSM)
§ ISO/IEC 9075-9 Management of External Data (SQL/MED)
§ ISO/IEC 9075-10 Object Language Bindings (SQL/OLB)
§ ISO/IEC 9075-11 Information and Definition Schemas (SQL/Schemata)
§ ISO/IEC 9075-13 Routines and Types using the Java Language (SQL/JRT)
§ ISO/IEC 9075-14 XML-related specifications (SQL/XML)
§ PostgreSQL cubre las partes 1, 2, 9, 11 y 14.
§ La parte 3 se encuentra cubierta por el driver ODBC.
§ La parte 13 se encuentra cubierta por el plugin PL/Java plug-in
Tema 3 – SQL-DDL - 88
Bases de Datos
a) Introducción
b) Elementos del lenguaje
c) Lenguaje de Definición de Datos (DDL)
https://www.postgresql.org/docs/current/index.html
Bases de Datos
Tema 3 – SQL-DDL - 90
Bases de Datos
Identificadores
§ Reglas de identificadores
§ Primer carácter: letra ([a-z]) o guion bajo (_).
§ Resto de caracteres: letras ([a-z]), dígitos ([0-9]), guion bajo (_), signo de
dólar ($) (no estándar).
§ No se pueden utilizar palabras reservadas.
§ Todo identificador que no satisfaga estas reglas debe referenciarse delimitado.
§ Los identificadores que satisfacen estas reglas pueden estar o no delimitados.
Tema 3 – SQL-DDL - 91
Bases de Datos
Identificadores
§ Identificadores ordinarios
§ Siguen las reglas de formato de los identificadores.
§ Insensibles a minúsculas y mayúsculas (case insensitive). Son convertidos a
minúsculas.
§ Ejemplos: Socio, Banda_Sonora
§ Identificadores delimitados
§ Identificadores encerrados entre dobles comillas (“).
§ Pueden estar formados por cualquier secuencia de caracteres.
§ Si el carácter ‘”’ forma parte de la secuencia, deberá escaparse con dos
dobles comillas’””’.
§ Sensible a minúsculas y mayúsculas.
§ Ejemplos: “Nombre y apellidos”, “Número de películas en préstamo”
Tema 3 – SQL-DDL - 92
Bases de Datos
Nombres de Objetos
<servidor>.<base_datos>.<esquema>.<objeto>
Literales
Tema 3 – SQL-DDL - 94
Bases de Datos
Literales
§ Introducción
§ Elementos del lenguaje
§ Lenguaje de Definición de Datos (DDL)
https://www.postgresql.org/docs/current/index.html
Bases de Datos
Definición de tabla
Definición de columna
Tema 3 – SQL-DDL - 97
Bases de Datos
Rest_columna ::=
PRIMARY KEY
UNIQUE
NOT NULL | NULL
CHECK expresión
REFERENCES nombre_tabla ( nombre_columna )
[ ON DELETE {NO ACTION | CASCADE | RESTRICT | SET NULL | SET DEFAULT}]
[ ON UPDATE {NO ACTION | CASCADE | RESTRICT | SET NULL | SET DEFAULT}]
Tema 3 – SQL-DDL - 98
Bases de Datos
Rest_tabla ::=
PRIMARY KEY ( nombre_columna )
,
UNIQUE
CHECK expresión
FOREIGN KEY ( nombre_columna )
,
REFERENCES nombre_tabla ( nombre_columna )
,
[ ON DELETE {NO ACTION | CASCADE | RESTRICT | SET NULL | SET DEFAULT}]
[ ON UPDATE {NO ACTION | CASCADE | RESTRICT | SET NULL | SET DEFAULT}]
Tema 3 – SQL-DDL - 99
Bases de Datos
Tipos Lógicos
§ boolean: TRUE, FALSE
https://www.postgresql.org/docs/current/datatype-boolean.html
Tema 3 – SQL-DDL - 100
Bases de Datos
RC
RC
RC
RC
RC
RC
RC
RT
RC
RC
RC
RC
RC
RT
Restricciones de Integridad
Inherentes:
• No existen dos o más tuplas iguales
• Los atributos son atómicos
• Ser clave
• De Entidad
• De Dominio
De usuario:
• De referencia
• Entre atributos de una relación
• Entre tuplas de una relación
• Entre atributos de distintas relaciones
Restricciones de Integridad
§ Restricción de Entidad
§ Aplicable a la Clave Primaria (PK).
§ El valor que tome la clave primaria nunca puede ser nulo (NOT NULL).
§ Restricción SQL: PRIMARY KEY (UNIQUE + NOT NULL)
Restricciones de Integridad
§ Restricción de Referencia
Un conjunto de atributos FK de T1 es una Clave Extranjera de T, si verifica:
§ Los atributos de FK tienen el mismo dominio que la Clave Primaria de T –
T(PK) -.
§ Para toda tupla t1 de T1 existe una tupla t de T tal que se verifica que el valor
que toma FK en t1 es igual al valor que toma PK en t.
§ Restricción SQL: FOREIGN KEY(…,….) REFERENCES T(PK)
Restricciones de Integridad
§ Restricción entre atributos de una relación
§ Establece una condición sobre dos atributos de la relación
§ Restricción SQL: CHECK
Los atributos de tipos smallserial, serial y bigserial se omiten en las sentencias INSERT
https://www.postgresql.org/docs/14/sql-insert.html
Tema 3 – SQL-DDL - 109
1. Acceder a la carpeta Moodle
“T3.3 Ejercicios SQL-DDL resueltos”
DIAPOSITIVA 110