91
Integridad y seguridad Informática aplicada

Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Embed Size (px)

Citation preview

Page 1: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Integridad y seguridad

Informática aplicada

Page 2: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Contenido

• Restricciones de dominio

• Integridad referencial

• Asertos

• Disparadores

• Seguridad y autorización

• Autorización en SQL

Page 3: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Restricciones de dominioLa claúsula create domain crea un nombre de dominio, ej.:

create domain Euros numeric(12,2)

create domain Dólares numeric(12,2)

Se puede usar un dominio por otro. Por ejemplo si el atributo A de r es de tipo Euros se puede convertir mediante:

cast r.A as Dólares

Page 4: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Claúsula checkuna cláusula check puede asegurar que un dominio de sueldo por hora sólo permita valores mayores que un valor especificado

create domain sueldo-por-hora numeric(5,2)constraint comprobación-valor-sueldocheck(value ≥ 4.00)

La cláusula check también puede utilizarse para restringirun dominio para que no contenga valores nulos,como se muestra aquí:

create domain número-cuenta char(10)constraint comprobación-número—cuenta-nulocheck(value not null)

Page 5: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

En este otro ejemplo el dominio se puede limitar paraque contenga sólo un conjunto especificado de valoresusando la cláusula in:

create domain tipo-cuenta char(10)constraint comprobación-tipo-cuentacheck(value in (‘Corriente’, ‘Ahorro’))

Una restricción se podría especificar sobre la relación préstamo:

check (nombre-sucursal in(select nombre-sucursal from sucursal))

Page 6: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Integridad referencial

A menudo se desea asegurar que un valor que aparece en una relación para un conjunto de atributos determinado aparezca también en otra relación para un cierto conjunto de atributos. Esta condición se denomina integridad referencial.

Page 7: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Conceptos básicosConsidérese un par de relaciones r (R) y s (S) y la reuniónnatural r |X| s. Puede haber una tupla tr de r que no se reúna con ninguna tupla de s. Es decir, no hay ningún ts en s tal que tr [R ∩ S] = ts [R ∩ S]. Estas tuplas se denominan colgantes.

Sean r1(R1) y r2(R2) dos relaciones con las claves primarias K1 y K2, respectivamente. Se dice que un subconjunto α de R2 es una clave externa que hace referencia a K1 de la relación r1 si se exige que para cada t2 de r2 haya una tupla t1 de r1 tal que t1[K1] = t2[α].

Las exigencias de este tipo se denominan restricciones de integridad referencial o dependencia de subconjunto.

Para que una restricción de integridad referencial tenga sentido, α debe ser igual a K1, o bien α y K1 deben ser conjuntos compatibles de atributos.

Page 8: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Modificación de la base de datos

La modificación de la base de datos puede ocasionar violaciones de la integridad referencial.

Insertar. Si se inserta una tupla t2 en r2, el sistema debe asegurar que hay una tupla t1 de r1 tal que t1[K] = t2[α]. Es decir,

t2[α] ∈ K (r1)

Borrar. Si se borra una tupla t1 de r1 el sistema debe calcular el conjunto de tuplas de r2 que hacen referencia a r1:

= t1[K] (r2)

Si este conjunto no es el conjunto vacío, o bien se rechaza la orden borrar como error, o bien se deben borrar las tuplas que hacen referencia a t1. La última solución puede llevar a borrados en cascada,dado que las tuplas pueden hacer referencia a tuplas que hagan referencia a t1, etcétera.

Page 9: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Actualizar. Hay que considerar dos casos: las actualizaciones de la relación que realiza la referencia (r2) y las actualizaciones de la relación a la que se hace referencia (r1).— Si se actualiza la tupla t2 de la relación r2 y esta actualización modifica valores de la clave externa α, se realiza una comprobación parecida a la del caso de la inserción. Si t′2 denota el nuevo valor de la tupla t2, el sistema debe asegurar que

t′2[α] ∈ K (r1)

— Si se actualiza la tupla t1 de la relación r1 y esta actualización modifica valores de la clave primaria (K), se realiza una comprobación parecida a la del caso del borrado. El sistema debe asegurar que = t1[K] (r2)

utilizando el valor anterior de t1 (el valor antes de que se lleve a cabo la actualización). Si este conjunto no es el conjunto vacío, la actualización se rechaza como error o se ejecuta en cascadade manera parecida al borrado.

Page 10: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Integridad referencial en SQLEjemplo del banco:create table cliente(nombre-cliente char(20),calle-cliente char(30),ciudad-cliente char(30),primary key (nombre-cliente));

create table sucursal(nombre-sucursal char(15),ciudad-sucursal char(30),activo integer,primary key (nombre-sucursal),check (activo > = 0));

Page 11: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

create table cuenta(número-cuenta char(10),nombre-sucursal char(15),saldo integer,primary key (número-cuenta),foreign key (nombre-sucursal) references sucursal,check (saldo >= 0));

create table impositor(nombre-cliente char(20),número-cuenta char(10),primary key (nombre-cliente, número-cuenta),foreign key (nombre-cliente) references cliente,foreign key (número-cuenta) references cuenta);

Page 12: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Especificación de borrado y actualización en cascada:

create table cuenta(…foreign key (nombre-sucursal) references sucursalon delete cascadeon update cascade,…);

Page 13: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Actividad

Complétese la definición del LDD de SQL de la base de datos bancaria de la Figura anterior para incluir las relaciones préstamo y prestatario.

Page 14: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Considérese la siguiente base de datos relacional:

empleado (nombre-empleado, calle, ciudad) trabaja (nombre-empleado, nombre-empresa, sueldo) empresa (nombre-empresa, ciudad)jefe (nombre-empleado, nombre-jefe)

De una definición en el LDD de SQL de esta base de datos. Identifíquense las restricciones de integridad referencial que deban cumplirse e inclúyanse en la definición del LDD.

Page 15: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

ASERTOS

Un aserto es un predicado que expresa una condiciónque se desea que la base de datos satisfaga siempre.

Las restricciones de dominio y las de integridad referencialson formas especiales de los asertos.

Ejemplos de estas restricciones pueden ser• La suma de todos los importes de los préstamos de cada sucursal debe ser menor que la suma de todos los saldos de las cuentas de esa sucursal.• Cada préstamo tiene al menos un cliente que tiene una cuenta con un saldo mínimo de 1.000 €.

Page 16: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

create assertion restricción-suma check(not exists (select * from sucursal where (select sum(importe) from préstamo where préstamo.nombre-sucursal = sucursal.nombre-sucursal) >= (select sum (importe) from cuenta where préstamo.nombre-sucursal = sucursal.nombre-sucursal)));

create assertion restricción-saldo check(not exists (select * from préstamo where not exists (select * from prestatario, impositor, cuenta where préstamo.número-préstamo = prestatario.número-préstamo and prestatario.nombre-prestatario = impositor.nombre-cliente and impositor.número-cuenta = cuenta.número-cuenta and cuenta.saldo >= 1000)));

Page 17: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

DISPARADORESUn disparador es una orden que el sistema ejecuta demanera automática como efecto secundario de la modificación de la base de datos.Para diseñar un mecanismo disparador hay que cumplir dos requisitos:1. Especificar las condiciones en las que se va a ejecutarel disparador. Esto se descompone en un evento que causa la comprobación del disparador y una condición que se debe cumplir para ejecutar el disparador.2. Especificar las acciones que se van a realizar cuando se ejecute el disparador. Este modelo de disparadores se denomina modelo evento-condición-acción.

Page 18: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Ejemplo

A modo de ejemplo supóngase que, en lugar de permitir saldos de cuenta negativos, el banco trata los descubiertos dejando a cero el saldo de las cuentas y creando un préstamo por el importe del descubierto. Este préstamo recibe un número de préstamo idéntico al número de cuenta que ha tenido el descubierto.Las acciones que hay que emprender son las siguientes:

• Insertar una nueva tupla s a la relación préstamo cons[nombre-sucursal] = t[nombre-sucursal]s[número-préstamo] = t[número-cuenta]s[importe] = – t[saldo]• Insertar una nueva tupla u a la relación prestatario con u[nombre-cliente] = «Santos»u[número-préstamo] = t[número-cuenta]• Hacer que t[saldo] sea 0.

Page 19: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Disparadores en SQLcreate trigger descubierto after update on cuentareferencing new row as nfilafor each row when nfila.saldo < 0 begin atomic insert into prestatario (select nombre-cliente, número-cuenta from impositor where nfila.número-cuenta = impositor.número-cuenta); insert into préstamo values (nfila.número-cuenta, nfila.nombre-sucursal, – nfila.saldo)update cuenta set saldo = 0 where cuenta.número-cuenta = nfila.número-cuenta end;

Page 20: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Versión MySQLcreate trigger descubierto before update on cuentafor each row begin if new.saldo<0 then insert into prestatario (select nombre_cliente, numero_cuenta from impositor where new.numero_cuenta = impositor.numero_cuenta); insert into prestamo values (new.numero_cuenta,new.nombre_sucursal,-new.saldo); set new.saldo = 0; end if;end;

Page 21: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Ejemplo

supóngase que se tienen las siguientes relaciones:• inventario(producto, nivel), que denota la cantidadactual (número/peso/volumen) del productoen el almacén.• nivelmínimo(producto, nivel), que denota la cantidadmínima a mantener de cada producto.• nuevopedido(producto, cantidad), que denota lacantidad de producto a pedir cuando su nivel caepor debajo del mínimo.• pedidos(producto, cantidad), que denota la cantidadde producto a pedir.

Page 22: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Se puede usar entonces el disparador mostrado para solicitar un nuevo pedido del producto.create trigger nuevopedido after update of cantidad on inventarioreferencing old row as ofila, new row as nfilafor each rowwhen nfila.nivel <= (select nivel from nivelmínimowhere nivelmínimo.producto = ofila.producto)and ofila.nivel >= (select nivel from nivelmínimowhere nivelmínimo.producto = ofila.producto)begin insert into pedidos (select producto, cantidad from nuevopedido where nuevopedido.producto= ofila.producto);end

Page 23: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Cuándo no deben usarselos disparadores

Para mantener los datos de resumen.Para las réplicas de las bases de datos.En el peor de los casos esto podría dar lugar a una cadena infinita de disparos.

Por ejemplo, supóngase que un disparador de inserción sobre una relación realice otra (nueva) inserción sobre la misma relación. La acción de inserción dispara otra acción de inserción, y así hasta el infinito.

Page 24: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Actividad

Escríbase un disparador SQL para realizar la siguiente acción:

Cuando se borre una cuenta, comprobar para cada tenedor de la cuenta si tiene otras cuentas y, si no, borrarlo de la relación impositor.

Page 25: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

SEGURIDAD Y AUTORIZACIÓN

Los datos guardados en la base de datos deben estar protegidos contra los accesos no autorizados, de la destrucción o alteración malintencionadas además de la introducción accidental de inconsistencias que evitan lasrestricciones de integridad.

Entre las formas de acceso malintencionado se ncuentran:

• La lectura no autorizada de los datos (robo de información)• La modificación no autorizada de los datos• La destrucción no autorizada de los datos

Page 26: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Niveles de seguridad

Para proteger la base de datos hay que adoptar medidasde seguridad en varios niveles:

• Sistema de bases de datos.

• Sistema operativo.

• Red.

• Físico.

• Humano.

Page 27: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

AutorizacionesLos usuarios pueden tener varios tipos de autorizaciónpara diferentes partes de la base de datos. Entre ellasestán las siguientes:

• La autorización de lectura permite la lectura de los datos, pero no su modificación.• La autorización de inserción permite la inserción de datos nuevos, pero no la modificación de los existentes.• La autorización de actualización permite la modificación de los datos, pero no su borrado.• La autorización de borrado permite el borrado de los datos.

Page 28: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Cont.

Además de estas formas de autorización para el accesoa los datos, los usuarios pueden recibir autorizaciónpara modificar el esquema de la base de datos:

• La autorización de índices permite la creación y borrado de índices.• La autorización de recursos permite la creación de relaciones nuevas.• La autorización de alteración permite el añadido o el borrado de atributos de las relaciones.• La autorización de eliminación permite el borrado de relaciones.

Page 29: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Autorizaciones y vistasUna vista puede ocultar los datos que un usuario no necesita ver.La capacidad de las vistas para ocultar datos sirve para simplificar el uso del sistema y para mejorar la seguridad.El uso del sistema se simplifica porque se permite al usuario restringir su atención a los datos de interés.Aunque puede que se niegue el acceso directo a una relación, puede que se le permita el acceso a parte de esa relación mediante una vista.Por tanto, se puede utilizar una combinación de seguridad en el nivel relacional y en el nivel de las vistas para limitar el acceso de un usuario precisamente a los datos que necesita.

Page 30: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Actividad

Utilizando las relaciones de la base de datos bancaria de ejemplo escríbase una expresión SQL para definir las vistas siguientes:a. Una vista que contenga los números de cuenta y los nombres de los clientes (pero no los saldos) de todas las cuentas de la sucursal de El Escorial.b. Una vista que contenga el nombre y la dirección de todos los clientes que tengan cuenta en el banco pero no tengan ningún préstamo.c. Una vista que contenga el nombre y el saldo medio de la cuenta de cada cliente de la sucursal de Collado Villalba.

Page 31: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Concesión de privilegiosEl usuario al que se le ha concedido alguna forma de autorización puede ser autorizado a transmitir esa autorización a otros usuarios. debe tener los mismos tipos de autorizaciones

Grafo de concesión de autorizaciones.

ABD

U1

U2

U3

U4

U5

Page 32: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

PapelesEn la base de datos se crea un conjunto de papeles.

Las autorizaciones se conceden a los papeles, de igual modo que se conceden a usuarios individuales.

Se concede un conjunto de papeles a cada usuario de la base de datos (que puede ser vacío) para los que está autorizado.

En el ejemplo bancario, algunos ejemplos de papelesserían cajero, gestor-sucursal, auditor y administrador-del-sistema.

Page 33: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Trazas de auditoría

Una traza de auditoría es un registro histórico de todos los cambios (inserciones, borrados o actualizaciones) de la basede datos, junto con información sobre el usuario que realizó el cambio y en qué momento.

Page 34: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

AUTORIZACIÓN EN SQLLa norma SQL incluye los privilegios delete, insert,select y update.

El lenguaje de definición de datos de SQL incluye órdenes para conceder y retirar privilegios.

La instrucción grant se utiliza para conferir autorizaciones. La forma básica de esta instrucción es la siguiente:

grant <lista de privilegios> on <nombre de relación ode lista> to <lista de usuarios/papeles>

Ej.: grant select on sucursal to U1, U2, U3

Page 35: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Cont.

El privilegio all privileges puede utilizarse como una forma abreviada de todos los privilegios que se puedenconceder.

De manera parecida, el nombre de usuario public hace referencia a todos los usuarios presentes y futuros del sistema.

SQL incluye también un privilegio usage que autoriza a un usuario a utilizar un dominio especificado (recuérdese que el dominio se corresponde con el concepto de tipo de un lenguaje de programación y puede ser definido por el usuario).

Page 36: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Papeles en SQL

Los papeles se pueden crear en SQL:1999 como siguecreate role cajero

Se pueden conceder privilegios a los papeles al igual que a los usuarios, como se ilustra en la siguiente instrucción

grant select on cuenta to cajeroLos papeles se pueden asignar a los usuarios, así como a otros papeles, como muestran estas instrucciones.

grant cajero to juancreate role gestorgrant cajero to gestorgrant gestor to maría

Page 37: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

El privilegio de conceder privilegios

Un usuario o papel al que se le concede un privilegiono está autorizado de manera predeterminada a concedérselo a otros usuarios o papeles.Si se desea conceder un privilegio a un usuario y permitirle que lo transmita a otros usuarios hay que añadir la cláusula with grant option a la orden grant correspondiente.Por ejemplo, si se desea conceder a U1 el privilegio select sobre sucursal y que pueda transmitirlo a otros, hay que escribir

grant select on sucursal to U1 with grant option

Page 38: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Revocar privilegios

Para retirar una autorización se utiliza la instrucción revoke. Adopta una forma casi idéntica a la de grant: revoke <lista de privilegios> on <nombre de relación o de vista>from <lista de usuarios o papeles> [restrict | cascade]

Por tanto, para retirar los privilegios que se han concedidocon anterioridad hay que escribir

revoke select on sucursal from U1, U2, U3revoke update (importe) on préstamo from U1, U2, U3revoke references (nombre-sucursal) on sucursalfrom U1

Page 39: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Limitaciones de la autorización SQL

Las normas SQL actuales de autorización tienen algunasdeficiencias. Por ejemplo, supóngase que se desea que todos los estudiantes sean capaces de ver sus propiasnotas, pero no las del resto.

La autorización debe estar en el nivel de las tuplas, lo cual no es posible en los estándares de autorización de SQL.

Page 40: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

DEPENDENCIAS FUNCIONALES

Una dependencia funcional es un tipo de restricción que constituye una generalización del concepto de clave

Page 41: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Conceptos básicosLas dependencias funcionales son restricciones del conjuntode relaciones legales. Permiten expresar hechos sobre la empresa que se modela con la base de datos.Sea R el esquema de una relación.El subconjunto K de R es una superclave de R si, en cualquier relación legal r(R), para todos los pares t1 y t2 de tuplas de r tales que t1 ≠ t2, t1 [K] ≠ t2 [K].Considérese el esquema de una relación R y sean α ⊆ R y β

⊆ R. La dependencia funcionalα →β

se cumple para el esquema R si, en cualquier relación legal r (R), para todos los pares de tuplas t1 y t2 de r tales que t1 [α] = t2 [α], también ocurre que t1 [β] = t2 [β].

Page 42: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Ejemplo

Considérese el esquemaEsquema-info-préstamo = (número-préstamo,

nombre-sucursal, nombre-cliente, importe)El conjunto de dependencias funcionales que se espera que se cumplan en este esquema de relación es

número-préstamo → importenúmero-préstamo → nombre-sucursal

Sin embargo, no se espera que se cumpla la dependencia funcional

Número-préstamo → nombre-clienteya que, en general, cada préstamo se puede conceder amás de un cliente

Page 43: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

uso

Las dependencias funcionales se utilizarán de dosmaneras:1. Para probar las relaciones y ver si son legales según un conjunto dado de dependencias funcionales. Si una relación r es legal según el conjunto F de dependencias funcionales, se dice que r satisface F.2. Para especificar las restricciones del conjunto de relaciones legales. Así, sólo habrá que preocuparse por las relaciones que satisfagan un conjunto dado de dependencias funcionales. Si uno desea restringirse a las relaciones del esquema R que satisfagan el conjunto F de dependencias funcionales, se dice que F se cumple en R.

Page 44: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

ejemplo

A B C D

a1 b1 c1 d1

a1 b2 c1 d2

a2 b2 c2 d2

a2 b3 c2 d3

a3 b3 c2 d4

se satisface A→C

C →A no se satisface

se satisface AB → D

Page 45: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Se dice que algunas dependencias funcionales sontriviales porque las satisfacen todas las relaciones.

Por ejemplo, A → A la satisfacen todas las relaciones que impliquen al atributo A.

En general, una dependencia funcional de la forma α →β es trivial si β α.⊆

Page 46: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Tablas del banconombre-cliente calle-cliente ciudad-cliente

Santos Mayor Peguerinos

Gómez Carretas Cerceda

López Mayor Peguerinos

Pérez Carretas Cerceda

Rupérez Ramblas León

Abril Preciados Valsaín

Valdivieso Goya Vigo

Fernández Jazmín León

González Arenal La Granja

Rodríguez Yeserías Cádiz

Amo Embajadores Arganzuela

Badorrey Delicias Valsaín

Page 47: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

número-préstamo nombre-sucursal Importe

P-17 Centro 1000

P-23 Moralzarzal 2000

P-15 Navacerrada 1500

P-14 Centro 1500

P-93 Becerril 500

P-11 Collado Mediano 900

P-29 Navas de la Asunción 1200

P-16 Segovia 1300

P-18 Centro 2000

P-25 Navacerrada 2500

P-10 Galapagar 2200

Page 48: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

nombre-sucursal ciudad-sucursal activo

Centro Arganzuela 9.000.000

Moralzarzal La Granja 2.100.000

Navacerrada Aluche 1.700.000

Becerril Aluche 400.000

Collado Mediano Aluche 8.000.000

Navas de la Asunción Alcalá de Henares 300.000

Segovia Cerceda 3.700.000

Galapagar Arganzuela 7.100.000

Page 49: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Ejemplos

Si se considera la relación cliente (en Esquemacliente) puede verse que se satisface

calle-cliente → ciudad-cliente.

En la relación préstamo (de Esquema-préstamo) se puede ver que se satisface la dependencia

número-préstamo → importe.

Se satisface nombre-sucursal → activo, igual queocurre con activo → nombre-sucursal

Page 50: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Diseñocuando se diseña una base de datos relacional, se enumeran en primer lugar las dependencias funcionales que se deben cumplir siempre. En el ejemplo del banco, en la lista de dependencias figuran:• En Esquema-sucursal:

nombre-sucursal → ciudad-sucursalnombre-sucursal → activo

• En Esquema-cliente:nombre-cliente → ciudad-clientenombre-cliente → calle-cliente

• En Esquema-préstamo:número-préstamo → importenúmero-préstamo → nombre-sucursal

• En Esquema-prestatario:Ninguna dependencia funcional

• En Esquema-cuenta:número-cuenta → nombre-sucursalnúmero-cuenta → saldo

• En Esquema-impositor:Ninguna dependencia funcional

Page 51: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Diseño de bases relacionales

Bases de datos

Page 52: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Descomposición

Ejemplo de descomposición

Sea el esquema:

esquema-empréstito = (nombre-sucursal, ciudad-sucursal, activo, nombre-cliente, número-préstamo, importe)

Al añadir una tupla se deben repetir algunos datos como la ciudad de la sucursal.

Si una sucursal se cambia de ciudad habrá que cambiar muchas tuplas.

La dependencia funcional nombre-sucursal ciudad-sucursal se espera que se cumpla , pero no nombre-sucursal número-préstamo.

No se puede representar directamente la información de una sucursal (nombre-sucursal, ciudad-sucursal, activo).

Peor aún, tendría que borrarse la información cuando se hayan pagado todos los prestamos.

Page 53: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

tabla empréstito

nombre de la sucursal

ciudad de la sucursal activos

nombre-cliente

número-préstamo importe

Centro Arganzuela 1,800,000,000 Santos P-17 200,000

Moralzarzal La Granja 420,000,000 Gómez P-23 400,000

Navacerrada Aluche 340,000,000 López P-15 300,000

Centro Arganzuela 1,800,000,000 Sotoca P-14 300,000

Becerril Aluche 80,000,000 Santos P-93 100,000

Collado Mediano Aluche 1,600,000,000 Abril P-11 180,000

Navas de Asunción Alcalá de Henares 60,000,000 Valdivieso P-29 240,000

Segovia Cerceda 740,000,000 López P-16 260,000

Centro Arganzuela 1,800,000,000 González P-23 400,000

Galapagar Arganzuela 1,420,000,000 Rodríguez P-25 500,000

Cuenca Villaverde 15,000,000 Amo P-10 440,000

Page 54: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Supongamos que se separa en:

esquema-sucursal-cliente = (nombre-sucursal, ciudad-sucursal, activo, nombre-cliente)

esquema-préstamo-cliente = (nombre-cliente, número-préstamo, importe)

Se crean las tablas sucursal-cliente y préstamo-cliente por medio de

sucursal-cliente = Pnombre-sucursal, ciudad-sucursal, activo, nombre-cliente(empréstito)

préstamo-cliente = Pnombre-cliente , número-préstamo, importe(empréstito)

La reunión natural de estas tablas es

sucursal-cliente |><| préstamo-cliente

Esta reunión produce la tabla de la siguiente lámina

Page 55: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

nombre de la sucursal

ciudad de la sucursal activos

nombre-cliente

número-préstamo importe

Centro Arganzuela 1,800,000,000 Santos P-17 200,000

Centro Arganzuela 1,800,000,000 Santos P-93 100,000

Moralzarzal La Granja 420,000,000 Gómez P-23 400,000

Navacerrada Aluche 340,000,000 López P-15 300,000

Navacerrada Aluche 340,000,000 López P-16 260,000

Centro Arganzuela 1,800,000,000 Sotoca P-14 300,000

Becerril Aluche 80,000,000 Santos P-17 100,000

Becerril Aluche 80,000,000 Santos P-93 100,000

Collado Mediano Aluche 1,600,000,000 Abril P-11 180,000

Navas de Asunción Alcalá de Henares 60,000,000 Valdivieso P-29 240,000

Segovia Cerceda 740,000,000 López P-15 300,000

Segovia Cerceda 740,000,000 López P-16 260,000

Centro Arganzuela 1,800,000,000 González P-23 400,000

Navacerrada Aluche 340,000,000 Rodríguez P-25 500,000

Galapagar Arganzuela 1,420,000,000 Amo P-10 440,000

Page 56: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

El único camino para relacionar número-préstamo y nombre-sucursal es a través de nombre-cliente. Esto no es adecuado porque un cliente puede tener préstamos en varias sucursales.

Considere la siguiente descomposición:

Esquema-sucursal =(nombre-sucursal, ciudad-sucursal, activo)

Esquema-info-préstamo = (nombre-sucursal, nombre-cliente, número-préstamo, importe)

Se mantiene la dependencia funcional

nombre-sucursal activo ciudad-sucursal

pero nombre-cliente no determina funcionalmente a número-préstamo

Page 57: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

DefiniciónSea C un conjunto de ligaduras en la base de datos. Una descomposición [R1, R2, ..., Rn] de un esquema de relación R es una descomposición de reunión sin pérdida para R si para todas las relaciones r que son legales bajo C

r = R1(r) |><| R2(r) |><| |><| Rn(r)

Page 58: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Primera forma normalLos dominios deben de ser atómicos

Ejemplos de dominios no atómicosconjunto de nombres, atributos compuestosNúmero de identificación como CS101 quepueden dividirse en partes

un esquema de relación R esta en primera forma normal si losdominios de todos los atributos son atómicos

Los valores no-atómicos complican el almacenamiento y producen almacenamiento redundante (repetido) de los datos

Ejemplo:. conjunto de cuentas guardado con cada cliente, y conjunto de propietarios guardado con cada cuenta

Suponemos todas las relaciones están en primera forma normal

Page 59: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Primera forma normal (cont.)

La atomicidad es realmente una propiedad de como los elementos de un dominio son usados.

Ejemplo: Las cadenas se consideran normalmente indivisibles

Suponga que a los estudiantes se les da un número el cual es una cadena de la forma CS0012 o EE1127

Si los dos primeros caracteres son extraídos para encontrar el departamento, el dominio de los números no es atómico.

Hacer esto es una mala idea: lleva a codificar información en el programa de aplicación en lugar de en la base de datos.

Page 60: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Objetivo - inventar una teoría para lo siguiente

Decida si una relación particular R esta en "buena" forma.

En el caso de que una relación R no este en "buena" forma, descomponerla en un conjunto de relaciones {R1, R2, ..., Rn} tales que:

cada relación este en "buena" formala descomposición sea sin reunión con pérdida

Nuestra teoría esta basada en:

dependencias funcionalesdependencias multivaluadas

Page 61: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Ligaduras de los dominios

La ligadura de dominio permite la verificación de valores al momento de agregar datos a la base de datos. Solo aquellos que cumplan con la ligadura serán aceptados como datos válidos, los demás serán rechazados.

En SQL se utiliza la sentencia check para establecer la ligadura de dominios, ejemplos:create domain sueldo-por-hora numeric(7,1)

constraint comprobacion-valor-sueldocheck (value >= 800)

create domain numero-cuenta char(10)constraint comprobacion-numero-cuenta-nulo

check (value not null)

Page 62: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Integridad referencial

Sean r1(R1) y r2(R2) dos relaciones con claves primarias K1 y K2. Se dice que un subconjunto de R es una clave externa que hace referencia a K1 de la relación r1 si se exige que para cada t2 de r2 haya una tupla t1 en r1 tal que t1[K1] = t2[]

Las exigencias de este tipo se denominan ligaduras de integridad referencial o dependencias de subconjunto.

La última denominación proviene de que lo anterior puede expresarse como:

(r2) K1 (r2)

Page 63: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Modificación de la base de datosinsertar. Si se inserta una tupla t2 en r2, el sistema debe asegurar que hay una tupla t1 en r1 tal que t1[K] = t2[], es decir

t2[] K1 (r2)

borrar. Si se borra una tupla t1 en r1, el sistema debe calcular el conjunto de tuplas de r2 que hacen referencia a r1:

= t1[K] (r2)

Actualizar: Hay que considerara dos casos: las actualizaciones de la relación que realiza la referencia (r2) y las actualizaciones de la relación a la que se hace referencia (r1).

- si se actualiza la tupla t2 de la relación r2 y esta actualización modifica los valores de la clave externa , se realiza una comprobación parecida al caso de la inserción. El sistema debe asegurar que

t2’[] K (r1)

- si se actualiza la tupla t1 de la relación r1 y esta actualización modifica los valores de la clave externa primaria (K), se realiza una comprobación parecida al caso del borrado. El sistema debe asegurar que

= t1[K] (r2)

Page 64: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Dependencias funcionalesSea R un esquema de relación. Sean R y R. La dependencia fucnional , se cumple en R si en cualquier relación legal r(R), para todos las pares de tuplas t1 y t2 de r tales que t1[] = t2[] también ocurre t1[] = t2[].

Considere el esquema

esquema-información-préstamo =

(nombre-sucursal, número-préstamo, nombre-cliente, importe)

Se esperan las siguientes dependencias funcionales

número-préstamo importe

número-préstamo nombre-sucursal

pero no

número-préstamo nombre-cliente

Page 65: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Utilización1. para especificar las ligaduras del conjunto de relaciones legales. Así solo habrá que preocuparse por las relaciones que satisfagan un conjunto dado de dependencias funcionales.

2. Para examinar las relaciones y comprobar si son legales bajo un conjunto dado de dependencias funcionales.

A B C D

a1 b1 c1 d1

a1 b2 c1 d2

a2 b2 c2 d2

a2 b3 c2 d3

a3 b3 c2 d4

Se satisface A C

No se satisface C A

Se satisface AB D

Page 66: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Ejemplo bancarioEsquema esquema-sucursal

nombre-sucursal ciudad-sucursal

nombre-sucursal activo

Esquema esquema-cliente

nombre-cliente ciudad-cliente

nombre-cliente calle-cliente

Esquema esquema-prestamo

número-préstamo importe

número-préstamo nombre-sucursal

Esquema esquema-prestatario No hay

Esquema esquema-cuenta

número-préstamo nombre-sucursal

número-préstamo saldo

Esquema esquema-impositor No hay

Page 67: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Cierre de un conjunto de dependencias funcionales

Sea un esquema de relación R = (A, B, C, G, H, I) y el conjunto de dependencias funcionales

A BA CCG HCG IB H

A H está implicada lógicamente.

El cierre de un conjunto de dependencias funcionales F es el conjunto de todas las dependencias funcionales implicadas lógicamente por F. Se denota por F+.

Por las reglas que siguen CG HI y AG I

Page 68: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Reglas de inferenciaRegla de reflexividad. Si es un conjunto de atributos y , entonces se cumple que .

Regla de aumentatividad. Si se cumple que y es un conjunto de atributos, entonces se cumple que .

Regla de transitividad. Si se cumple que y , entonces

Estas reglas se conocen como axiomas de Armstrong. Se agregan las siguientes reglas deducibles a partir de las anteriores.

Regla de la unión. Si se cumple que y , entonces se cumple

Regla de la descomposición. Si se cumple que , entonces se cumple que y que

Regla de la seudotransitividad. Si se cumple que y que , entonces se cumple

Page 69: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Cierre de los conjuntos de atributos

Para comprobar si un conjunto es una superclave hay que preparar un algoritmo para calcular el conjunto de los atributos determinados funcionalmente por .

Se denomina cierre de sobre F al conjunto de todos los atributos determinados funcionalmente por bajo un conjunto de dependencias funcionales F; se denota por +.

Algoritmo en pseudo Pascal

resultado : = ;while (cambios en resultado) do for each dependencia funcional in F do begin if resultado then resultado := resultado ; end

Page 70: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

EjemploPara el esquema de relación R = (A, B, C, G, H, I) y el conjunto de dependencias funcionales

A BA CCG HCG IB H

Aplicamos el algoritmo para calcular (AG)+:

paso dependencia resultado

1 A B ABG2 A C ABCG 3 CG H ABCGH 4 CG I ABCGHI

¿Es AG una llave candidata?

Page 71: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Recubrimiento canónicoConjuntos de dependencias funcionales pueden ser inferidos a partir de otros

Por ejemplo: A C es redundante en {A b, B C}partes de una dependencia funcional puede ser redundante

o sea: en RHS: {A B, B C, A CD} se puede simplificar a {A B, B C, A D}

o sea: en LHS: {A B, B C, AC D} se puede simplificar a {A B, B C, A D}

Intuitivamente, un recubrimiento canónico de F es un conjunto "mínimo" de dependencias funcionales equivalente a F, sin teniendo dependencias redundantes o partes redundantes de dependencias.

Page 72: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Atributos extrañosConsidere un conjunto F de dependencias funcionales y la dependencia funcional en F.

El atributo A es extraño en si A de y F implica lógicamente (F-{ }{(-A) }

El atributo A es extraño en si A y el conjunto de dependencias funcionales (F-{ } { (A-)} implica lóigicalmente a F

Note: la implicación en la dirección contraria es trivial en cada uno de los casos de arriba, ya que una dependencia funcional "fuerte" siempre implica a una más débil

Ejemplo: dado f = {A C. AB C}B es extraña en AB C debido a {A C, AB >C} implica

lógicamente A C (el resultado de quitar B de AB C)

Ejemplo: dado f = {A C.AB CD}C es extraña en AB CD debido a AB C es inferido aun despues

de borrar C

Page 73: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Prueba si un atributo es extraño

Considere un conjunto F de dependencias funcionales y la dependencia funcional en F

Para probar si A es extraño en a calcule ([] - A)+ usando las dependencias funcionales en F, cheque si ([] - A)+ contiene , si es así, A es extraño en .

Para probar si el atributo A elemento de es extraño en calcule + usando solo dependencias funcionales en F‘ = (F-{}) {(b-A)}, cheque si + contine a A, si es así, A es extraño en .

Page 74: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Recubrimiento canónicoUn Recubrimiento canónico para F es un conjunto de dependencias funcionales Fc tales que:

F implica lógicamente todas las dependencias en Fc yFc implica lógicamente todas las dependencias en F yNinguna dependencia funcional en Fc contiene atributos extraños yTodos los lados izquierdos de dependencias funcionales en Fc son únicos

Para calcular el recubrimiento canónico para Frepeat Use la regla de unión para reemplazar cualquier dependencia en F 1 y 1 2 con1 2 encuentre una dependencia funcional con un atributo extraño en o en if se halla el atributo extraño, elimínelo de until que F no cambieNote que la regla de unión puede ser aplicable después de que los atributos extraños han sido borrados, por esto deberá ser reaplicada.

Page 75: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

aplicaciónR = (A, B, C)F = {A BC

B C A BAB C}

Combine A BC and A B into A BCEl conjunto es ahora {A BC, B C, AB C}

A is extraño en AB CCheque si el resultado de borrar A de AB C es implicado por las otras dependencias

Si: en efecto, B C está aún presente!El conjunto es ahora {A BC, B C}

C is extraño en A BC Cheque si A C esta lógicamente implicado por A B y las otras dependencias

Si: usando transitividad en A B and B C. Se puede usar cerradura de atributos de A en casos más complejos.

El recubrimiento canónico es: A BB C

Page 76: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Forma normal de Boyce-Codd

Un esquema de relación R esta en FNBC con respecto a un conjunto de dependencias funcionales si todas las dependencias funcionales en F+ de la forma

donde R y R, por lo menos una de las siguientes se cumple: es trivial (o sea ) es superllave de R

Ejemplo de un esquema no en FNBC:prestatario_préstamo = (cliente_id, número_préstamo, cantidad)

debido a que numero_prestamo cantidad en prestatario_prestamo se cumple pero numero_prestamo no es superclave

Page 77: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

EjemploSean los siguientes esquemas y dependencias funcionales

Esquema esquema-cliente = (nombre-cliente , calle-cliente, ciudad-cliente)

nombre-cliente ciudad-cliente calle-cliente

Esquema esquema-sucursal = (nombre-sucursal, activo, ciudad-sucursal)

nombre-sucursal activo ciudad-sucursal

Esquema esquema-info-préstamo = (nombre-sucursal, nombre-cliente, número-préstamo, importe)

número-préstamo importe nombre-sucursal

Podemos afirmar que esquema-cliente está en FNBC, también esquema-sucursal está en FNBC.

Pero esquema-info-préstamo no está en FNBC ya que número-préstamo no es superllave de esquema-info-préstamo.

Page 78: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Descomposición de un esquema en BCNF

Suponga que tenemos un esquema R y una dependencia no trivial causa una violación de FNBC

Descomponemos R en:( )(R--))

En nuestro ejemplo = numero_prestamo = cantidad

y prestatario_prestamo se reemplaza por( ) = (numero_prestamo,cantidad)(R-(-)) = (cliente_id, numero_prestamo)

Page 79: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Algoritmo de descomposición

resultado := {R};hecho := false;calcular F’;while (not hecho) do if(hay un esquema Ri de resultado que no este en FNBC) then begin sea a ->b una dependencia funcional no trivial que se cumpla en Ri de modo que a -> Ri, no está en F’ y que ainter b = fi; resultado := (resultado – Ri) union (Ri – b)(a,b) endelse hecho := true;

Donde F’ es la unión de las dependencias funcionales en donde solo aparecen atributos de un esquema en particular.

Page 80: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

EjemploConsidere el esquema

esquema-empréstito = (nombre-sucursal, ciudad-sucursal, activo, nombre-cliente, número-préstamo, importe)

Con las siguientes dependencias funcionales

nombre-sucursal activo ciudad-sucursal

número-préstamo importe nombre-sucursal

una clave candidata es (número-préstamo, nombre-cliente)

La aplicación del algoritmo da:

1. ya que nombre-sucursal no es una superclave, el esquema se debe se reemplaza por

esquema-sucursal = (nombre-sucursal, ciudad-sucursal, activo)

esquema-info-préstamo = (nombre-sucursal, nombre-cliente, número-préstamo, importe)

2. en este esquema es clave de y por lo tanto está en FNBC

Page 81: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Ejemplo (cont.)3. número-préstamo no es clave en esquema-info-préstamo , por lo que hay que reemplazarlo con

esquema-préstamo = (nombre-sucursal, número-préstamo, importe)

esquema-prestatario = (nombre-cliente, número-préstamo)

Estos esquemas están en FNBC

Page 82: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

BCNF y conservación de las dependencias

Ligaduras, incluyendo las dependencias funcionales, son costosas para verificar en la práctica a que pertenezcan a una sola relación

Si es suficiente probar solo aquellas dependencias en cada relación individual de la descomposición de manera de asegurar que todas lasdependencias funcionales se cumplan, entonces esa descomposición conserva las dependencias.

Debido a que no siempre es posible obtener ambas FNBC y conservación de las dependencias, la consideramos una forma normal débil, conocida como tercera forma normal.

Page 83: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Tercera forma normalUn esquema de relación R esta en tercera forma normal (3NF) si para todas:

en F+

por lo menos una de las siguientes se cumple:

es trivial (o sea ) es superllave para RCada atributo A en - esta contenido en una llave candidata para R. (note: cada atributo puede ser en una llave candidata diferente)

Si una relación esta en FNBC esta en 3NF (ya que en FNBC una de las primeras dos condiciones de arriba se debe cumplir)

La tercera condición es una relajación mínima de FNBC para asegurar la conservación de dependencias.

Page 84: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Algoritmo 3NF que preserva dependencias

Sea Fc un recubrimiento canónico de F;

i := 0;for each dependencia funcional en Fc do

if ninguno de los esquemas Rj, 1 j i contiene then begin

i := i + 1;Ri :=

endif de los esquemas Rj, 1 j i contiene un clave candidata para R

then begini := i + 1;Ri := cualquier clave candidata para R;

end return (R1, R2, ..., Ri)

Page 85: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Algoritmo 3NF que preserva dependencias (cont.)

El algoritmo asegura que:

Cada esquema de relación Ri esta en 3FN

La descomposición preserva dependencias y reunión sin pérdida

Page 86: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

EjemploEsquema de relation:

cliente_banquero_sucursal = (cliente_id, empleado_id, nombre_sucucral, tipo )

Las dependencias funcionales de este esquema son:

cliente_id, empleado_id nombre_sucucral tipoempleado_id nombre_sucucral cliente_id, nombre_sucucral empleado_id

Calculamos el recubrimiento canónico

nombre_sucucral es extraño en el r.h.s. de la 1st dependenciaNuingún otror atributo es extraño, por tanto obtenemos FC = cliente_id, empleado_id tipo

empleado_id nombre_sucucral cliente_id, nombre_sucucral empleado_id

Page 87: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

ejemplo (cont.)El lazo for genera el siguiente esquema 3NF:

(cliente_id, empleado_id, tipo ) (empleado_id, nombre_sucursal) (cliente_id, nombre_sucursal, empleado_id)

Observe que (cliente_id, empleado_id, tipo ) contiene una clave candidata del esquema original, por tanto es necesario agregar más equemas de relación.

Si la FDs fuera considerada en order different, con la 2nda considerada después de la tercera,

(empleado_id, nombre_sucursal) no sería incluida en la descomposición debido a que es un subconjunto de (cliente_id, nombre_sucursal, empleado_id)Extensiones Menores del algoritmo de decomposicion 3NF: al final del lazo for, detectar y borrar esquemas, tales que (empleado_id, nombre_sucursal), los cuales son subconjuntos de otros esquemas resultantes no dependen en el orden en que FDs son considerados.El esquema resultado simplificado 3NFes: (cliente_id, empleado_id, tipo) (cliente_id, nombre_sucursal, empleado_id)

Page 88: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

Objetivos de Normalización

Sea R un esquema de relación con un conjunto F de dependencias funcionales.

Decida si un esquema de relación R esta en "buena" forma.

En el caso de que el esquema de relación R no este en "buena" forma, descompóngalo en un conjunto de esquemas de relación {R1, R2, ...,Rn} tales que:

cada esquema de relación este en buena formala descomposición es una descomposición sin pérdidaPreferiblemente, la descomposición debe ser tal que conserve las dependencias.

Page 89: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

¿Que tan buena es NFBC?

Hay esquemas de bases de datos en NFBC que no parecen suficientemente normalizadosConsidere la base de datos

clases(curso, maetro, libro)

tal que (c, m, b) elemento de clases significa que m es calificado para enseñar c, y b es el libro de texto para c.

La base de datos se supone que lista para cada curso un conjunto de maestros cualquiera de ellos puede ser el instructor, y un conjunto de libros, todos los cuales son requeridos para el curso (sin importar quien lo enseña)

Page 90: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

¿Que tan buena es NFBC? (cont.)curso maestro librobase de datos Avi DB conceptsbase de datos Avi Ullmanbase de datos Hank DB conceptsbase de datos Hank Ullmanbase de datos Sudarsha DB conceptsbase de datos Sudarsha UllmanSistemas oper. Avi OS conceptsSistemas oper. Avi StallingsSistemas oper. Pete OS conceptsSistemas oper. Pete Stallings

No hay dependencias funcionales no-triviales y por lo tanto la relación está en BCNF

Anomalias de inserción - o sea si Marilyn es una nueva maestra que puede enseñar dases de datos, se deben insertar dos tuplas

(bases de datos, Marilyn, DB concepts)(bases de datos, Marilyn, Ullman)

Page 91: Integridad y seguridad Informática aplicada. Contenido Restricciones de dominio Integridad referencial Asertos Disparadores Seguridad y autorización Autorización

¿Que tan buena es NFBC? (cont.)

Por lo tanto es mejor descomponer clases en:

curso maestrobase de datos Avibase de datos Hankbase de datos SudarshanSistemas oper. AviSistemas oper. Jim

Maestros

curso librobase de datos DB conceptsbase de datos UllmanSistemas oper. OS conceptsSistemas oper. Shaw

libro