Dise�o de Bases de Datos - Escuela de Ingeniería Industrial

Anuncio
Claves candidatas y primarias
™Una clave candidata para una relación R es un
subconjunto C de los atributos de R tales que se
cumplen las siguientes propiedades:
ƒ Propiedad de unicidad. No existen dos tuplas de R con
los mismos valores para C.
ƒ Propiedad de irreducibilidad. No existe un subconjunto
de C que cumpla con la propiedad de unicidad.
Diseño de Bases de
Datos
Franco Guidi Polanco
Escuela de Ingeniería Industrial
Pontificia Universidad Católica de Valparaíso, Chile
fguidi@ucv.cl
™Consecuencia: debido a que una relación no puede
tener tuplas duplicadas, esta debe contener al
menos una clave candidata.
Revisión: 7 de Junio de 2005
Franco Guidi Polanco
Claves candidatas y primarias
2
Clave primaria y claves alternas
™Es posible que una relación tenga más de una
clave candidata.
™Cuando existe más de una clave candidata, a una
de ellas se le llama clave primaria, y a las
restantes, claves alternas.
™Una clave candidata puede componerse de más de
un atributo.
™Si existe solo una clave candidata, esta debe ser la
clave primaria.
ƒ Clave simple: compuesta por un atributo.
ƒ Clave compuesta: compuesta por más de un atributo.
™Si existe más de una clave candidata, se
determina cuál de ellas será clave primaria sólo en
función de la simplicidad.
Franco Guidi Polanco
3
Franco Guidi Polanco
4
Clave primaria y claves alternas: ejemplos
Claves foráneas
™Relación ESTUDIANTE
Rut
Nombre
Fecha
nacimiento
Ciudad
nacimiento
15.332.241-5
Nicanor Neruda
12/03/1984
Talca
14.102.999-3
Violeta Paz
01/05/1983
16.290.412-k
Vicente Parra
25/10/1985
17.221.332-8
Marcela Huidobro
01/12/1985
Carrera
año
ingreso
Orden
ingreso
515056-5
77
2003
12
Iquique
532292-1
77
2003
122
Linares
497642-3
25
2002
4
Castro
Rol UCV
500023-4
54
2001
Colegio
15
Claves:
- Rut
- Rol UCV
- Carrera + año ingreso + orden ingreso
- Nombre + fecha nacimiento + ciudad nacimiento
Franco Guidi Polanco
™ Supongamos que existe una tabla “Colegio” en la que se registran los
colegios con sus datos (nombre_colegio, direccion, telefono, etc.) y
una tabla “Alumno” en que se registran datos de alumnos
(nombre_alumno, direccion, colegio_origen, etc.).
™ Es claro que el atributo “colegio_origen” de la tabla alumnos sólo
puede tomar un valor si este existe en la tabla “colegios”.
5
Claves foráneas
definición
Dirección
Teléfono
Nombre_alumno
Dirección
Colegio_origen
Escuela agrícola
Piggley Winks
Camino
Internacional
1000
877767
Pedro Unamuno
Los Almendros
1222
Clifford School
Clifford School
Av. Dos 234
332120
Luis Pérez
Los Espinos
2653
Liceo Técnico
Bob el
Constructor
Liceo Técnico Bob
el Constructor
Calle Tres 3000
554536
Angel Picapiedra
El Sauce 1010
Clifford School
Franco Guidi Polanco
6
Claves foráneas: ejemplo
™ Sea R2 una relación. Una clave foránea en R2 es un
subconjunto Fk de atributos de R2, tal que:
Relación “productos”
ƒ Existe una relación R1 (con R1 no necesariamente distinto a R2)
con una clave candidata Ck, y
ƒ En todo momento, cada valor de Fk en R2 es idéntico al valor de Ck
en alguna tupla en R1.
™ En otras palabras, cada valor de una clave foránea debe
aparecer como valor de la clave candidata correspondiente
en otra relación.
Franco Guidi Polanco
Alumno
Nombre_colegio
código
descripcion
costo
unidad_medida
06421654-5
52464646-4
63446345-8
Cable cobre
Poste
Interruptor
500
50.000
300
Metro
Pieza
Pieza
Relación “ventas”
7
Franco Guidi Polanco
Clave foránea
nro_venta
código
fecha
cantidad
1
2
3
52464646-4
52464646-4
06421654-5
10/05/1999
12/06/1999
12/06/1999
200
4
25
8
Representación de asociaciones generadas por
claves foráneas
Más sobre claves foráneas
™Pueden existir claves foráneas compuestas (la
clave candidata correspondiente también debe ser
compuesta).
ventas.codigo
ventas
productos
™Las claves foráneas y su correspondiente clave
candidata deben estar definidas sobre el mismo
dominio.
™En este caso, “codigo” es clave foránea en
“ventas”, para acceder a los datos de
“productos”.
™El valor de una clave foránea representa una
referencia a la tupla que contiene la clave
candidata asociada (tupla referenciada o tupla
objetivo).
™Se suele decir que las referencias de clave
foránea a clave candidata son el “pegamento”
que mantiene unida a la base de datos.
Franco Guidi Polanco
9
Integridad referencial
Franco Guidi Polanco
Ejemplo de falla en integridad referencial
™El problema de asegurar que la BD no contenga
algún valor inválido de clave foránea se denomina
problema de integridad referencial.
Tabla “productos”
™Integridad referencial: la BD no debe contener
algún valor de clave foránea no existente en la
relación de destino.
Franco Guidi Polanco
10
código
descripcion
costo
unidad_medida
06421654-5
52464646-4
Cable cobre
Poste
500
50.000
Metro
Pieza
Tabla “ventas”
11
Franco Guidi Polanco
ERROR
nro_venta
código
fecha
cantidad
1
2
3
52464646-4
94615886-4
06421654-5
10/05/1999
12/06/1999
12/06/1999
200
4
25
12
¿Cómo asegurar la integridad referencial?
Dependencias funcionales
™Restricción. Rechazar cualquier operación que,
de ser ejecutada, deje a la base de datos en un
estado ilegal.
™Restricción de integridad que describe vínculos de
tipo funcional entre atributos de una relación.
™Ejemplos:
™Cascada. Aceptar la operación, y efectuar ciertas
acciones compensatorias para asegurar que la
base de datos se mantenga en un estado legal.
Franco Guidi Polanco
ƒ Rut Æ Nombre_persona
ƒ Patente Æ Marca, Modelo, Año
ƒ RolUcv ClaveCurso Æ Nota
13
14
Ejemplo: abastecimiento de una empresa
importadora
Diseño de bases de datos relacionales
™Diseño de B.D.: Dado un conjunto de datos a ser
representados en una B.D., decidir la estructura
lógica más adecuada para estos datos.
™En otras palabras, se trata de decidir que tablas
(relaciones) deben existir, que campos (atributos)
deben tener, y las asociaciones entre estos
elementos (claves primarias y foráneas).
Franco Guidi Polanco
Franco Guidi Polanco
15
Una empresa importadora es abastecida por un
conjunto de proveedores. Cada uno de los proveedores
tiene un código, que los identifica, un nombre y una
dirección. Los artículos se identifican también con un
código, y tienen una descripción. Los pedidos se
identifican con un número correlativo y se registra la
fecha en la que son realizados, y el proveedor al que
van dirigidos. Cada pedido consta de la solicitud de
uno o más artículos, con sus respectivas cantidades.
Franco Guidi Polanco
16
Documento utilizado en la empresa
Diseñando la base de datos
™El modelo relacional exige que todo sea
expresado en términos de tablas.
™Una primera aproximación podría ser:
Pedido
Nº del pedido: 1
Nombre del proveedor:
Fecha del pedido: 10/03/1999
Dirección del proveedor: Calle 4, nº...
ABC
Código del proveedor: 5645462-8
Código del
Nombre del articulo
articulo
Cantidad
pedida
685431-4
878795-7
50
48
LAPIZ
TIJERAS
Franco Guidi Polanco
Nº del
pedido
17
¿Cuál es el diseño correcto para la B.D.?
Código del
proveedor
Nombre del
proveedor
Dirección del
proveedor
Código del
articulo
Nombre del Cantidad
articulo
pedida
1
10/03/1999 5645462-8
ABC
Calle 4, nº...
685431-4
878795-7
LAPIZ
TIJERAS
50
48
2
11/03/1999 6353134-4
MSF
Av. 9, nº...
468624-8
AGENDA
500
3
11/03/1999 8545432-8
FGP
Calle 6, nº...
556546-3
878795-7
CD-ROM
TIJERAS
10
12
Franco Guidi Polanco
18
Normalización
™El diseño recién presentado presenta redundancia.
™Es el proceso de identificación y eliminación de
ciertas propiedades indeseables en el diseño de
una B.D.
™Además los datos poseen estructura interna (no
son escalares).
Franco Guidi Polanco
Fecha del
pedido
™Se definen un conjunto de “formas normales”, y se
dirá que una tabla está en una cierta forma
normal, si satisface un conjunto predefinido de
condiciones.
19
Franco Guidi Polanco
20
Niveles de Normalización
Primera forma normal (1NF)
™Una relación está en primera forma normal si
cumple el requisito de contener valores escalares
solamente.
™En nuestro ejemplo, la siguiente relación está en
1NF.
1 NF
2 NF
3 NF
3 BC NF
4 NF
5 NF
Nº del
pedido
Franco Guidi Polanco
21
Problemas con 1FN
Fecha del
pedido
Código del
proveedor
Nombre del
proveedor
Dirección del
proveedor
Código del
articulo
Nombre del Cantidad
articulo
pedida
1
10/03/1999 5645462-8
ABC
Calle 4, nº...
685431-4
LAPIZ
1
10/03/1999 5645462-8
ABC
Calle 4, nº...
878795-7
TIJERAS
50
48
2
11/03/1999 6353134-4
MSF
Av. 9, nº...
468624-8
AGENDA
500
3
11/03/1999 8545432-8
FGP
Calle 6, nº...
556546-3
CD-ROM
10
3
11/03/1999 8545432-8
FGP
Calle 6, nº...
878795-7
TIJERAS
12
Franco Guidi Polanco
22
Ejemplos de anomalías de actualización en 1FN
™La redundancia en 1FN llevan a la existencia de
una serie de anomalías de actualización, esto
es, dificultades con las operaciones de
actualización (adición, eliminación o modificación
registros).
™No se pueden agregar los datos de un nuevo
artículo, a menos que exista un pedido asociado
a éste.
™Si elimina un pedido y este es el único asociado a
un artículo, se eliminan también los datos del
artículo.
™Como los datos de un artículo se pueden repetir
en diferentes registros de la tabla, si se desea
actualizar los datos de un artículo, deben
actualizarse todos los registros que tienen el dato
(riesgo de inconsistencia).
Franco Guidi Polanco
23
Franco Guidi Polanco
24
Análisis de dependencias funcionales en 1FN
Segunda forma normal (2FN)
™Una tabla está en 2FN si y solo si está en 1FN y
todos los atributos no claves dependen
irreduciblemente de la clave primaria (no
dependen solo de parte de ella).
Fecha del
pedido
Clave primaria
Código del
proveedor
Nº del
pedido
Dirección del
proveedor
Nombre del
proveedor
™En el caso de nuestro ejemplo, esto implicará
separar la tabla en tres partes...
Cantidad
pedida
Código del
articulo
Nombre del
articulo
Las flechas en este diagrama indican dependencias
funcionales entre atributos, es decir que el valor de
un atributo está determinado por el valor de otro.
Franco Guidi Polanco
25
Base de datos de abastecimiento en 2FN
Tabla 1
Tabla 2
(Pedido-artículo)
(Pedido)
Clave primaria
Nº del
pedido
Cantidad
pedida
Nº del
pedido
Código del
articulo
™Con este nuevo diseño se pueden ingresar datos
de artículos aun cuando no existan pedidos
asociados a ellos.
Código del
proveedor
™Se pueden eliminar todos los pedidos de un
artículo, sin que esto implique eliminar los datos
del artículo.
Dirección del
proveedor
Nombre del
proveedor
™Cada artículo tiene sus datos en un solo registro,
lo que facilita la actualización.
Tabla 3
(Artículo)
Clave primaria
Código del
articulo
Franco Guidi Polanco
26
Pros y contras de 2FN
Fecha del
pedido
Clave primaria
Franco Guidi Polanco
™Sin embargo, las anomalías subsisten con los
proveedores.
Nombre del
articulo
27
Franco Guidi Polanco
28
Tercera forma normal (3FN)
Base de datos de abastecimiento en 3FN
™Una tabla está en 3FN si y solo si está en 2FN, y
cada atributo no clave depende no transitivamente
de la clave primaria.
Se requiere dividir la tabla 2 en dos partes:
Tabla 2
(Pedido)
Fecha del
pedido
Clave primaria
Dependencia
transitiva a través del
código del proveedor
Tabla 2
(Pedido)
Fecha del
pedido
Clave primaria
Nº del
pedido
Nº del
pedido
Dirección del
proveedor
Nombre del
proveedor
Código del
proveedor
Dirección del
proveedor
Tabla 2.1
Tabla 2.2
(Pedido)
(Proveedor)
Clave primaria
Franco Guidi Polanco
29
Dirección del
proveedor
Código del
proveedor
Código del
proveedor
Nombre del
proveedor
Franco Guidi Polanco
Esquema relacional final de la base de datos de
abastecimiento
30
Ejemplos de tablas de la B.D.
Artículo
Código del artículo
Nro del pedido
Pedido-artículo
Tabla pedido-artículo
Tabla pedido
Nº del
pedido
Código del
articulo
Cantidad
pedida
Nº del
pedido
1
685431-4
50
1
10/03/1999 5645462-8
1
878795-7
48
2
11/03/1999 6353134-4
2
468624-8
500
3
11/03/1999 8545432-8
3
556546-3
10
3
878795-7
12
Código del proveedor
Proveedor
Franco Guidi Polanco
Clave primaria
Fecha del
pedido
Nº del
pedido
Nombre del
proveedor
Pedido
Código del
proveedor
31
Franco Guidi Polanco
Fecha del
pedido
Tabla artículo
Código del
articulo
Nombre del
articulo
685431-4
LAPIZ
Código del
proveedor
Tabla proveedor
Código del
proveedor
Dirección del
proveedor
Calle 4, nº...
878795-7
TIJERAS
5645462-8
468624-8
AGENDA
6353134-4
Av. 9, nº...
556546-3
CD-ROM
8545432-8
Calle 6, nº...
32
Descargar