BASES DE DATOS U.D.1. Sistemas de gestión de bases de Datos.

Anuncio
BASES DE DATOS
U.D.1. Sistemas de gestión de bases de Datos.
U.D.2. Bases de Datos Relacionales.
• Modelo E/R.
• Transformación del esquema E/R al Relacional.(Operaciones básicas sobre tablas).
• Normalización(Access);
U.D.3. SQL
• Lenguaje de manipulación de datos.
• Lenguaje de definición de datos.
• Lenguaje de control de datos.
ASI 2
U.D.1. Sistemas de gestión de bases de Datos.
• Concepto y objetivos de los sistemas de Bases de Datos.
• Distintos niveles de abstracción.
• Sistemas Gestores de Bases de Datos (SGBD).
• Interacción del usuario con el SGBD: Lenguajes.
• El administrador de la Base de Datos.
• Concepto y objetivos de los sistemas de Bases de Datos.
Orígenes históricos:
BD: Conjunto de datos más relaciones. Conjunto de información−>Características comunes.
Surge en el año 1960 aunque no se empieza a usar hasta el año 1971.
Sistema de BD: Conjunto de BB.DD. Surgen para solucionar los problemas que había en los ficheros.
Problemática de ficheros:
• Información inconsistente.
DNI
Nombre
Dire
Fech_Ing
Tfno
1
Año_Trab
Personal
DNI
Nombre
Dire
Sueldo
SS
Nóminas
• Redundancia−>Datos repetidos.
• Dependencia de los datos respecto al soporte físico y a los programas.
• Confidencialidad y seguridad. Confidencialidad es impedir a ciertos usuarios consultar ciertos datos.
Definición de B.D.:
• De Miguel y Piattini−1993: Colección de datos integrados, con redundancia controlada y estructura
que refleje las interrelaciones y restricciones existentes en el mundo real. Los datos que han de ser
compartidos por distintos usuarios y aplicaciones deben mantenerse independientes de éstas , y su
definición y descripción han de ser únicas, estando almacenadas junto a los mismos. Los
procedimientos de actualización y recuperación han de ser capaces de mantener la seguridad y
confidencialidad.
• Sistema formado por un conjunto de datos y un paquete software para la gestión del mismo de tal
forma que se controla el almacenamiento de los datos redundantes, los datos resultan independientes
de los programas y se puede acceder a los datos de distinta forma.
Objetivos:
• Independencia de los datos respecto a tratamiento.
• Coherencia en los resultados.
• Mayor valor informativo.
• Utilización múltiple.
• Seguridad y confidencialidad.
• Desempeño−>Atender con rapidez las peticiones de datos.
• Redundancia mínima.
• Integridad−>Evitar fallos en la base de datos.
• Interfaz con el pasado y con el futuro.
• Distintos niveles de abstracción
♦ Esquema externo: representa la visión individual de un usuario de la BBDD ! Programas de
aplicación que manejan una parte de la información de usuarios.
♦ Esquema conceptual: describe cuáles son los datos reales que están almacenados en la BBDD
y qué relaciones existen entre los datos: nombre, tamaño, tipo, relaciones, limitadores de
integridad, etc.
♦ Esquema interno: representación más cercana al almacenamiento físico de datos. Describe los
ficheros que contienen la información, organización, ubicación, tipos de registros, su
longitud, campos, índices, forma de acceso.
• S.G.B.D
Definición: Es un conjunto coordinado de programas, procedimientos o lenguajes que suministra
tanto a los usuarios no informáticos, como a personal informático los medios necesarios para
describir, recuperar y manipular los datos almacenados en la base manteniendo la seguridad.
Funciones:
2
♦ Describir el esquema conceptual.
♦ Describir el esquema externo.
♦ Descripción de la organización física y recuperar tras un fallo.
♦ Interrogación directa para recuperar la información y acceso a los datos desde lenguajes de
alto nivel.
Ejemplos de SGBD comerciales:
• Modelo jerárquico (1960).
• Modelo en red (1970).
• Modelo relacional (1986−Codd).
• Usa los árboles para la representación lógica de los datos.
Departamentos (Dpto_nº, Dnombre, loc)
Empleados (Emp_nº, apell, oficio,..., Dept_nº)
•
•
•
•
10 Contab Sevilla
4422 Pérez
red
4433
Sánchez
20 RRHH Madrid
5000
López
4444
García
5555 Carlos
Ejemplos:
IMS de IBM
System 2000 de Intel
Un registro puede tener n hijos pero cada hijo sólo un padre.
• n hijos con n padres.
Inconveniente: Todo está relacionado con todo.
Ejemplos:
DMS 1100 de Univac
EDMS de Xerox
3
• Elemento principal son las relaciones representadas en tablas.
Departamentos Empleados
Dpto_nº
Dnombre
Loc
10 Contab
Sevilla
20 RRHHMadrid
Emp_nº
Apell
Of Dnombre
Loc
Pérez
4422
• Interacción del usuario con el SGBD: Lenguajes
• Lenguaje de definición de datos o DDL: Se describen los datos, la estructura de esos datos, las
relaciones entre esos datos, reglas de integridad, características físicas y las vistas de los usuarios, es
decir, se hace una descripción de los esquemas físicos, de los esquemas conceptuales y los esquemas
externos o distintas vistas.
• Lenguaje de manipulación de datos o DML: Permiten manejar o tener acceso a la base de datos, es
decir, insertar, buscar, modificar y borrar datos de la base de datos. Hay una instrucción llamada
Insert para insertar.
• Lenguaje de control de datos o DCL: Controla el acceso a la información de la base de datos y define
los privilegios y los tipos de acceso y seguridad de los datos. Administrador de la base de datos.
• El administrador de la BD
Se le llama DBA y es el responsable del diseño, del control y de la administración de la base de datos.
Puede ser una persona o varias personas. El ANSI /X3/SPARC en realidad dice que debe haber tres
administradores:
• Administrador de la empresa: Realiza el diseño conceptual y lógico de la base de datos.
• Administrador de la base de datos: Realiza el diseño físico de la base de datos.
• Administrador de aplicaciones: Realizan los distintos esquemas externos de la base de datos.
Funciones generales:
♦ Diseñar la estructura de la base de datos.
♦ Descripción conceptual y lógica de la base de datos.
♦ Descripción física.
♦ Describir las vistas y los esquemas externos.
♦ Definir los estándares.
♦ Define la estrategia de transición.
♦ Aspectos relativos a la seguridad.
♦ Estar en comunicación con usuarios, directivos, analistas, operadores, programadores,
suministradores de productos, ...
U.D.2. Bases de Datos Relacionales
• El modelo E/R(Análisis de datos)
♦ Introducción.
♦ Elementos del modelo E/R.
♦ Construcción de un esquema E/R.
♦ Paso de E/R a modelo relacional(Diseño de datos)
◊ Modelo Relacional.
◊ Reglas de transformación.
◊ Operaciones básicas sobre tablas.
4
◊ Normalización
⋅ Introducción.
⋅ Noción intuitiva de F.N(Formas Normales).
⋅ El modelo E/R(Análisis de datos)
• Introducción.
Propuesto por Peter P. Chen en 1976 y según este autor, el modelo E/R se usa
para representar los datos y las relaciones entre ellos usando una serie de
símbolos y reglas.
• Elementos del modelo E/R.
• Entidades.
• Relaciones.
• Atributos.
• Generalización de entidades.
Relación
Atributo Atributo
• Es un objeto real o abstracto acerca del cual queremos almacenar
información en la base de datos. Ejemplos: persona, cosa, lugar. Hay
dos tipos:
− Fuertes o regulares: La que tiene existencia por si misma y se
representa así:
− Débil: Aquella cuya existencia depende de una entidad fuerte y se
representa así:
Ejemplos:
Si desaparece el empleado, familiar sería una entidad débil.
Si desaparece el funcionario, hijo sería una entidad débil.
Si desaparecen los libros, ejemplar sería débil.
2. Es la asociación entre entidades y se representa así: . Cada relación
tiene un nombre que la identifica. El grado de una relación es el
número de entidades que intervienen en la relación y puede haber:
− Grado 2: Unen dos entidades.
− Grado 1: Une una entidad consigo misma.
− Grado n: Más de dos entidades.
Tipo de correspondencia: Es el nº máximo de ocurrencias de cada
entidad que pueden intervenir en una ocurrencia de la relación que se
está tratando.
− 1:1.
5
− 1:N. Uno a muchos.
− N:1. Muchos a uno.
− N:M. Muchos a muchos.
Cardinalidad: Nº máximo y mínimo de ocurrencias de una entidad
que pueden estar relacionados con una ocurrencia de otra u otras
entidades que participan en la relacion. Puede tomar los valores (0,1),
(1,1), (0,n), (1,n), (n,m).
(0,n) (1,1)
(1,1) (0,1)
Si la relación es entre una entidad débil y una fuerte, se habla de una
dependencia en identificación y en existencia.
♦ Se dice que hay dependencia en existencia cuando las
ocurrencias de una entidad débil no pueden existir si
desaparece la entidad regular de la que depende.
♦ Dependencia en identificación es cuando además de lo
anterior, las ocurrencias de la débil no se pueden identificar
únicamente mediante los atributos propios y exigen añadir la
clave de la entidad de la que dependen(toda dependencia en
identificación lo es en existencia). Las dependencias en
identificación se representan y las de existencia
Ejemplo:
Cod_planta Num_habitación
Otro aspecto a tener en cuenta es que las relaciones pueden ser
exclusivas y se representa mediante un .
Ejemplo:
Un empleado es responsable de un departamento o bien trabaja
en varios proyectos.
3. Son las propiedades de las entidades o las relaciones. Toman sus
valores de los dominios, siendo un dominio el conjunto de valores
que puede tomar un atributo.
Nombre: Es el atributo identificador principal, los que identifican
unívocamente las entidades.
Nombre: Atributo identificador alternativo.
Nombre: Atributos normales.
En las relaciones se pueden encontrar los atributos normales.
6
Generalización: La generalización es una necesidad muy habitual. La
relación que se establece entre un supertipo de entidad y sus subtipos
corresponde a la notación de es un o es un tipo de. Se representa por
un triángulo invertido y en esta relación toda ocurrencia de un
subtipo es una ocurrencia del supertipo aunque no sucede lo
contrario, con lo que las cardinalidades serán (1,1) en el supertipo y
(n,1) en el subtipo.
Tiene una característica importantísima: La herencia: Es el modo que
todo lo que le pase al supertipo le pasa también al subtipo, de modo
que todos los atributos del subtipo serán también del supertipo. Los
específicos del subtipo serán también al subtipo. Las relaciones que
afecten a todos los subtipos se asocian al supertipo asociando al
subtipo las específicas.
Ejemplo:
Tipo Supertipo
Cargo
(1,1)
(0,1) (0,1)
Subtipo
Cualidad Fecha
♦ Construcción de un esquema E/R
No existen reglas que nos digan que elemento va a ser entidad o
relación, pero existen normas generales que podemos aplicar:
♦ Un sustantivo que actúa como sujeto o O.D es una
entidad(puede ser un atributo).
♦ Los nombres propios suelen ser ocurrencias de una entidad.
♦ Un verbo suele ser una relación.
♦ Preposición entre dos nombres suele ser o una relación o
asocia entidad y su atributo.
Batini−1993:
• Descendente: Se parte de una entidad y se descompone al detalle de
los atributos.
• Ascendente: Se parten los atributos, se agrupan en entidades y se
agrupan por relaciones.
• Inside − Out: Se empieza creando el esquema entidad−relación en
una parte del papel y luego se va ocupando todo el papel.
• Mixto: Descendente y mancha de aceite.
Ejemplo de redundancia: Sólo N:M.
(1,n)
7
(1,1)
(1,1) (1,1)
(1,n)
(1,n)
C1
Fecha
(1,n) (1,n)
C1 asignado adscrito se encuentra
D1 P1 C1 D1 C1
P2 C2 C2 no es redundante
P3 C3 C3
C2
C1
C2
C1 P1 D1 C1 D1
P2 D2
P3 D3
Adscrito asignado
Cardinalidad
Vivienda pertenece como mínimo ( ) municipio
(,)(,)
Mínimo de municipios
Máximo de municipios Un municipio tiene
Vivienda como máximo ( ) municipio como mínimo ( )
viviendas.
Un municipio tiene como máximo ( ) viviendas.
8
Ejemplo:
NO ES LO MISMO
• Paso de E/R a modelo Relacional(Diseño de datos)
♦ Modelo Relacional
Surge en 1960 por Codd, pero no se usa hasta el año 1980.
El elemento más importante es la relación y está representada
mediante tablas. Las tablas tienen columnas que son los atributos de
la relación y filas llamadas tuplas y son las distintas ocurrencias de la
relación.
Modelo Relacional
Gráficamente
Relación
Atributos
Tuplas
Tablas
Columnas
Filas
Información
tradicional
Ficheros
Campos
Registros
♦ Cardinalidad: Es el número de tuplas.
♦ Grado: Es el número de atributos.
♦ Dominio: Conjunto de valores que puede tomar un atributo.
♦ Claves: Se distingue entre clave candidata: Conjunto de
atributos que determina mínima y unívocamente cada tupla.
En una relación pueden existir varias claves candidatas.
Ejemplo: Empleados(Cod_E, DNI, Nombre, Sueldo, ...). Aquí las
claves candidatas pueden ser o Cod_E o el DNI y de entre éstas dos,
una debe ser la clave principal llamada también clave primaria y el
resto de claves se llaman claves alternativas.
Claves ajenas: Es el conjunto de atributos, cuyos valores coinciden
con los valores de la clave primaria de otra relación(o de ella misma).
Ejemplo:
Cod_E DNI Nombre
(1,n) (1,1)
(0,n) (1,1)
Cod_D Local
Nombre
Empleados(Cod_E, Nombre, Sueldo, Cod_D[fk],
Cod_E_Superior[fk])
Departamentos(Cod_D, Nombre, Localidad)
Dos reglas importantes:
9
♦ Integridad de entidad: Ningún atributo que forma parte de la
clave primaria de una relación puede tomar un valor nulo.
♦ Integridad referencial: Los valores de la clave ajena o bien
coinciden con los de la clave primaria a la que referencian, o
bien son nulos, por tanto, para cada clave ajena se debe
especificar si puede o no tomar valores nulos.
Operaciones
Es necesario determinar las consecuencias del borrado y
modificación realizadas sobre tuplas de la relación referenciada.
Ejemplo:
Empleados(Cod_E, DNI, Nombre, Sueldo, Cod_D[fk])
Departamentos(Cod_D, Nombre, Localidad)
♦ Operación restringida: El borrado o la modificación de tuplas
de la relación que contiene la clave primaria referenciada,
sólo se permite si no existen tuplas con dicha clave en la
relación que contiene la clave ajena.
Ejemplo:
Cod_Dep
Nombre Local
1
Administración
Vall
2
Comercial
Burgos
Cod_EDNI
Nombre
Sueldo
Cod_Dep
12 12
Pepe
1
15 15
Juan
1
16 16
Lola
1
En este caso sólo se puede borrar el departamento 2.
♦ Operación en cascada: Lleva consigo el borrado o la
modificación en cascada de las tuplas con dicha clave en la
relación que contiene la clave ajena. En este caso si se borra
el departamento 1 desaparecen todos los empleados de ese
departamento.
♦ Con puesta a nulos(Set Null): Lleva consigo poner a nulos
los valores de la clave ajena de la relación que referencia.
Esta opción es posible cuando la clave ajena puede ser puesta
a nulo.
♦ Operación con puesta a valor por defecto: Lleva consigo
poner a valor por defecto a la clave ajena de la relación que
referencia. Este valor por defecto se habrá definido al crear la
tabla.
♦ Operación que desencadena un procedimiento de usuario: El
borrado o modificación de tuplas de la tabla referenciada,
pone en marcha un procedimiento determinado por el
usuario.
♦ Reglas de transformación
10
♦ Toda entidad se transforma en una relación.
♦ Toda entidad N:M se transforma en una relación.
♦ Toda interrelación 1:N se traduce en una propagación de
claves.
Ejemplo:
Código
Título
Idioma
País Nombre Dire Ciudad
Nombre Nación
Libro (Código, título, idioma, nombre_e[fk])
Editorial (Nombre_e, dirección, ciudad, país).
Autor (Nombre_a, nacionalidad).
Escribe (Código[fk], Nombre_a[fk]).
Otro ejemplo:
Clientes (Cod_cli).
Pedidos (Cod_ped , Fecha).
Artículos (Cod_art).
Agrupa (Cod_ped[fk], Cod_art[fk]).
Casos a considerar:
◊ Interrelaciones 1:1: Se pueden representar de
distintas maneras atendiendo a las cardinalidades de
la relación.
◊ Si las entidades que se asocian tienen (0,1): Se puede
propagar la clave a cualquiera de las dos entidades o
crear una nueva relación además de las dos
relaciones que representan cada una de las dos
entidades.
Ejemplo:
(0,1) (0,1)
DNI_H DNI_M
11
Sol 1: Hombre (DNI_H ,..., DNI_M[fk]).
Mujer (DNI_M).
Sol 2: Hombre (DNI_H).
Mujer (DNI_M, DNI_H[fk]).
Sol 3: Hombre (DNI_H).
Mujer (DNI_M).
Matrimonio (DNI_H[fk], DNI_M[fk]).
◊ Las entidades que se asocian tienen como
cardinalidades (0,1) (1,1): Se propaga la clave de la
entidad con cardinalidad (1,1) a la tabla resultante de
cardinalidad (0,1).
Ejemplo:
(1,1) (0,1)
Cod_emp Nombre_emp Cod_D Nombre_D
Empleado (Cod_emp, Nombre_emp)
Departamento (Cod_D, Nombre_D, Cod_emp[fk]).
◊ Si las dos entidades tienen cardinalidad (1,1): Se
puede propagar la clave de cada una de ellas a la
tabla resultante de la otra. También se puede plantear
la propagación de las dos claves pero puede atraer
redundancias.
Ejemplo:
(1,1) (1,1)
Cod_X Cod_Y
X (Cod_X).
Y (Cod_Y, Cod_X[fk]).
X (Cod_X, Cod _Y[fk]).
Y (Cod_Y,).
X (Cod_X, Cod_Y[fk]).
Y (Cod_Y, Cod_X[fk]).
12
⋅ Interrelaciones 1:N: Se traduce como
propagación de claves y se van a analizar las
reflexivas.
Ejemplo 1:
(0,n)
(0,1)
Cod_Tema
Ejemplo 2:
(0,1)
(0,n)
Cod_E
Para este ejemplo la solución es una tabla.
Sol 1: Empleado (Cod_E,..., Cod_E_Sup[fk]).
Sol 2: Empleado (Cod_E).
Jefe (Cod_E[fk], Cod_E_Sup[fk]).
Ejemplo 3:
(1,1)
(0,n)
Cod_E
Aquí la solución correcta sería:
Empleado (Cod_E,..., Cod_E_Sup[fk]). Borrado
restringido en cascada. Y la modificación restringida
o en cascada. Y Cod_E_Sup es NOT NULL.
Ejemplo 4:
(1,1)
(1,n)
Editorial (Cod_Ed).
Libro (Cod_L, Cod_Ed[fk]). Modificación
restringida y borrado restringido, y Cod_Ed es NOT
NULL.
13
En existencia y en identificación
No se recoge en el modelo relacional.
a) Dependencia en existencia(mecanismo de
propagación de claves): Creando una clave ajena con
nulos no permitidos en la relación de la entidad
dependiente con la característica de obligar a una
modificación y un borrado en cascada.
Ejemplo:
(1,1) (0,n)
Cod_emple Nombre DNI Nombre
Empleado(Cod_emple[pk], Nombre)
Familiar(DNI[pk],Nombre,Cod_emple[fk])Borrado
y modificación en cascada y es not null.
b) Dependencia en identificación: Además de la
dependencia en existencia la clave primaria de la
relación de la entidad débil debe estar formada por la
concatenación de las claves de las dos entidades
participantes en la relación.
Ejemplo:
(1,1) (0,n)
Cod_libro Cod_ejemplar
Libro(Cod_libro[pk])
Ejemplar(Cod_ejemplar[pk],Cod_libro[fk])Borrado
y modificación en cascada y es not null.
⋅ Transformación de relaciones N:M: Se
transforma en tres tablas.
Ejemplo:
Fecha_ent Fecha_sal
Cod_autor Cod_libro
Autor(Cod_autor[pk])
Escribe(Cod_autor[fk], Cod_libro[fk], Fecha_ent,
Fecha_sal)
Libro(Cod_libro[pk])
14
⋅ Transformación de tipos y subtipos:
Hay varias soluciones.
Ejemplo:
Título Código
Idioma
Suplemento Páginas
SOL1: Documento(Código[pk], Idioma, Título,
Suplemento, Páginas, tipo)
SOL2: Dcumento(Código[pk], Título, Idioma)
Artículo(Código[pk], Suplemento)
Libro(Código[pk], Páginas)
SOL3: Libro(Código[pk], Título, Idioma, Páginas)
Artículo(Código[pk], Título, Idioma, Suplemento)
◊ Crear una tabla con todos los atributos de la entidad
y de los subtipos. Se utiliza cuando los subtipos se
diferencian en poco y las entidades que los asocian
es la misma. Se añade un atributo adicional llamado
tipo que discrimina a los subtipos y se llama
discriminante.
◊ Se crea una relación para el supertipo y tantas
relaciones como subtipos haya con sus atributos
correspondientes. Se adopta esta solución cuando
hay muchos atributos distintos para los subtipos
queriéndose mantener de todas formas los atributos
de todos ellos en una relación.
◊ Relaciones distintas para cada subtipo, conteniendo
además de sus propios atributos, los atributos
comunes.
⋅ Transformación de interrelaciones
exclusivas:
Cod_libro
Cod_editorial
Cod_uni
Libro(Cod_libro[pk],..., Cod_editorial[fk],
Cod_uni[fk])
Editorial(Cod_editorial([pk])
15
Universidad(Cod_universidad[pk])
⋅ Operaciones básicas sobre tablas
Está basado en el álgebra relacional y los operandos
son dos tablas y el resto es otra tabla.
Operaciones básicas
⋅ Operaciones unarias(1 tabla): Selección y
proyección.
⋅ Operaciones binarias(2 tablas): Unión,
diferencia y producto cartesiano.
⋅ Operaciones derivadas: Intersección,
cociente y combinación o join.
⋅ Selección: Obtiene un subconjunto de filas
de una tabla con todas sus columnas. Se
pueden seleccionar determinadas filas
incluyendo en una operación una condición.
condición (Tabla)
NºDPTO=20 (Empleados)
⋅ Proyección: Da como resultado una nueva
tabla a partir de otra con el subconjunto de
columnas indicado. Las filas duplicadas sólo
aparecen una vez.
col1 col2 (Tabla)
apellido salario (Empleados)
⋅ Unión: Dos tablas se pueden unir si tienen el
mismo número de columnas y dominios
compatibles y el resultado es otra tabla con
las filas de esas dos tablas y las filas
repetidas sólo aparecen una vez.
Tabla1 Tabla2
Emple1 Emple2
Emple 1 Emple 2 Emple1 Emple2
Nº
Nombre
emp
1001 Rosa
1005 Fernando
Nº
Nombre
emp
16
1001
1005
2001
2010
Nº
emp
2001
2010
1005
Rosa
Fernando
Pilar
Octavio
Nombre
Pilar
Octavio
Fernando
⋅ Diferencia: Sólo es posible si tienen el
mismo nº de columnas y dominios
compatibles. El resultado es otra tabla con
las filas que estén en una tabla y no
pertenecientes a la otra.
Tabla 1 − Tabla2
S = Emple1 − Emple2
S = Emple1 − Emple 2 S = Emple2 −
Emple1
Nº
Nombre
emp
1001 Rosa
Nº emp Nombre
2001
Pilar
2010
Octavio
⋅ Producto cartesiano: Se puede realizar entre
dos tablas que tengan distinto número de
columnas. El resultado es otra tabla que
contiene la suma de columnas de ambas
tablas y el conjunto formado por todas las
filas de ambas tablas. No pueden existir
columnas con el mismo nombre.
Tabla1 x Tabla2
Ventas Artículos
Cod Fecha
Cant
5100 18/11/05
100
5200 19/11/05
120
5100 19/11/05
45
Código Denom
Exist
PVP
17
5100
5200
Patatas
500
78
Cebollas
250
90
S = Ventas x Artículos
Cod Fecha Cant Código Denom Exist PVP
5100 18/11/05 100 5100 Patatas 500 78
5100 18/11/05 100 5200 Cebollas 2500 90
5200 19/11/05 120 5100 Patatas
5200 19/11/05 120 5200 Cebollas
5100 19/11/05 45 5100 Patatas
5100 19/11/05 45 5200 Cebollas
⋅ Intersección: Es otra tabla formada por las
filas que aparecen en ambas tablas y las
columnas de una de las tablas. Las tablas han
de tener el mismo número de columnas y
dominios compatibles.
Tabla1 Tabla2
Emple1 Emple2
Nº
Nombre
emp
1005 Fernando
⋅ Cociente: Se realiza entre dos tablas que
cumplan las siguientes condiciones:
⋅ T1 debe tener columnas de T2 y el número
de columnas ha de ser mayor que el de T2.
⋅ T2 debe tener al menos una fila.
El cociente es una nueva tabla formada por
las columnas de T1 que no están en T2 y por
las filas obtenidas al concatenar con T2 que
estén contenidas en T1.
Tabla1 Tabla2
A
1
4
7
1
A
2
7
BC
64
31
02
23
B
3
1
18
S = Tabla1 : Tabla2 Concatenación
A
1
A
1
1
4
4
7
7
1
1
B
2
7
2
7
2
7
2
7
C
3
1
3
1
3
1
3
1
⋅ Combinación o join: Se obtiene el producto
cartesiano de dos tablas cuyas filas cumplan
una determinada condición. La condición
determina el criterio de combinación de
ambas tablas.
(Tabla1 x Tabla2)cond
(Ventas x Artículos)cód = código
Cod Fecha Cant
5100
5200
5100
45
Denom Exist PVP
Patatas
Cebollas
Patatas
⋅ Normalización
• Introducción
La normalización ayuda a detectar fallos en
el modelo E/R y en el relacional. Evita
problemas de redundancia, ambigüedades,
pérdida de información. Consiste en ir
descomponiendo los registros en otros de
menor tamaño de forma que satisfagan una
serie de restricciones específicas que se
conocen como Formas Normales. La teoría
de normalización se resume en Hechos
distintos se almacenan en objetos distintos.
Ejemplo: En este ejemplo se repiten los
presupuestos.
Nombre_emp Proyecto Nombre
Presupuesto
Pepe
P1
Programador 5000€
19
Pepe
Juan
Juan
P2
P1
P2
Analista
10000€
Jefe
5000€
Programador 10000€
• Noción intuitiva de las Formas
Normales(FN)
Las 3 primeras Codd entre el 70−72
Relaciones en FNBC: Óbice−Codd en el 74
Relaciones en 4ª FN: Fagin en el 77.
Relaciones en 5ª FN: Fagin en el 79.
1ª Forma Normal: Prohíbe que en un registro
haya grupos repetidos, es decir, que todos
los campos deben ser atómicos, es decir, no
está en 1ª FN si existe más de un valor a la
vez para un mismo atributo.
Ejemplo:
Cod
5050
5060
Nombre Idioma
Italiano
Manuel
Español
Pedro
Español
SOL1: Una sola tabla donde esté el nombre
del empleado y el código del empleado.
SOL2: Una tabla que tenga el código del
empleado y el nombre y otra tabla donde
está el código y el idioma.
SOL3: Una tabla donde esté el código, el
nombre, el idioma1 y el idioma2.
Otro ejemplo:
LIBRO(Cod_libro,autor)
SOL1: Libro (L1, {Pepe}
{Luis})
SOL2: L1|Pepe
L2| Luis
20
SOL3: L1|Pepe|Luis|
2ª FN: Se dice que un registro está en 2ª FN
si además de estar todos los atributos que no
formen parte de ninguna clave candidata
suministran información acerca de la clave
completa.
Ejemplo:
Almacén (Cod_alm, Dir_alm, Cod_pieza,
cantidad)
CC: Cod_alm + Cod_pieza
ANP: Dir_alm y cantidad
Dir_alm no da información acerca de CC,
sólo de Cod_alm, sin embargo cantidad sí.
SOL: Se divide la tabla en tantas como
necesitemos para conseguir la 2ª FN.
Dir_alm
Cantidad
Almacén1 (Cod_alm, Cod_pieza, Cantidad)
Almacén2 (Cod_alm, Dir_alm)
Otro ejemplo:
Préstamos (Num_socio, Nombre_socio,
Cod_libro, Fecha_préstamo, Editorial, País)
CC: Num_socio + Cod_libro ó
Nombre_socio + Cod_libro
ANP: Fecha_préstamo (sí), Editorial (No),
País (No)
O1 N1 L1 F1 E1 P1
O1 N1 L2 F2 E2 P2
O2 N2 L3 F3 E1 P1
No está en 2ª FN
Préstamo (Num_socio, Nombre_socio,
Cod_libro, Fecha_préstamo) en 2ª FN
21
CC:
Fecha_préstamo
Libros (Cod_libro, Editorial, País) en 2ª FN
pero no en 3ª FN
3ª FN: Además de englobar las dos
restricciones anteriores puesto que toda
relación que está en 3ª FN está en 2ª FN y se
añade que todos los atributos que no forman
parte de ninguna clave candidata, da
información acerca de la clave y no de los
atributos. Para que esté en 3ª FN sus campos
deben ser mutuamente independientes y
completamente dependientes de las claves.
Ejemplo:
Libro (Cod_libro, Editorial, País)
CC: Cod_libro
ANP: Editorial, País
SOL1: Una tabla que sea Cod_libro y
editorial y otra tabla que sea Editorial y País.
L1 (Cod_libro, Editorial)
L2(Cod_libro, País)
SOL2: L1 (Cod_libro, País)
L2 (Editorial, País)
SOL3: L1 (Cod_libro, Editorial)
L2 (Editorial, País)
Si no está en 3ª FN al dividir para que no se
pierda información el atributo común tiene
que ser la clave al menos de una de las tablas
y no hay que perder dependencias
funcionales.
Dependencia funcional: Se dice que depende
funcionalmente de x si y sólo si cada valor
de x tiene asociado en todo momento un
único valor de y lo que se representa así: x y
x es el implicante
22
y es el implicado
Ejemplo:
DNI−>nombre Sí
DNI_prof−>Teléfono No dep_funcional
Disco−>Cantante No
Año, prueba−>Atleta No
Prueba, récord−>Atleta, año Sí
DNI−>Nombre_padre ¿Sí?
Cod_dep−>Localidad ¿No?
Entidad
Entidad
Dpto
Empleado
Hospital
Hijo
Empleado
Familiar
Funcionario
Hijo de funcionario
Libro
Ejemplar
X
Y
Es jefe
Empleado
Hombre
23
Mujer
Hombre
Mujer
Hombre
Mujer
Hombre
Mujer
pertenece
responsable
Empleado
Dpto
E
I
I|hay
Planta
Habitaciones
responsabl
trabaja
Empleado
Dpto
proyecto
Empleado
Vendedor
Analista
Dpto
Facultad
24
Profesor
Cátedra
está
asignado
Encontrar
adscrito
pertenece
Municipio
Vivienda
tiene
Programador
Lenguaje
proyecto
usa
Programador
usa
trabaja
Proyecto
Lenguaje
en
Empleado
Dpto
jefe
Editorial
Libro
Autor
25
edita
escribe
Clientes
Pedidos
Artículos
agrupa
agrupa
Hombre
Mujer
Se casa
Empleado
Departamento
resp
X
Y
Tema
consta
Empleado
jefe
Empleado
jefe
Editorial
Libros
edita
Empleado
Familiar
26
Tiene
Ex
Libro
Ejemplar
Id
tiene
Autor
Libro
escribe
Documento
Artículo
Libro
Libro
Editorial
Universidad
edita
Edita 2
Rel en 1ª FN
Rel en 2ª FN
Rel en 3ª FN
Rel en FNBC
Rel en 4ª FN
Relaciones en 5ª FN
Cod_alm
Cod_pieza
Num_socio + Cod_libro
27
Nombre_socio + Cod_libro
28
Descargar