Reglas de Codd
Reglas de Codd
Reglas de Codd
1 Introduccin
http://www.unoweb-s.uji.es/IG18/
5 SQL 6 Anexo 1. Base de Datos de Proveedores 7 Anexo 2. Base de Datos de Facturas 8 Anexo 3. Base de Datos de Ciclistas
Curso 2006-2007
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
1 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
2 / 29
Objetivos
Bibliografa
Objetivos
Bibliografa
M. Celma, J.C. Casamayor, L. Mota, Bases de datos relacionales. Ed.
Prentice Hall. [QA76.9.D26 C453 2003]
relacional
Conocer qu son las reglas de integridad en el modelo relacional
la integridad referencial.
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
3 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
4 / 29
Introduccin
Introduccin
Introduccin
Las bases de datos se descomponen en un conjunto de valores que reejan la realidad. No todos los posibles conjuntos de valores tienen sentido.
0 1 2 ... 99 nombre de la relacion clave primaria dominio DOM_DTO
Introduccin
Por tanto resulta necesario ampliar la denicin de las bases de datos para que incluya ciertas Reglas de Integridad (restriccin que debe cumplirse sobre una BD en todos sus estados). La mayora de las reglas de integridad son especcas de la base de datos, depende de la semntica del problema (reglas de negocio)
FACTURAS
codfac 3211 fecha
23/12/2002 12/11/2002 21/12/2002 30/12/2002 12/12/2002
codcli 23 25 23 20 2
grado
codven 14 9 14 1 145
iva 16 16 7 7
dto 0 15 0 10
atributos
Afectan a un solo atributo: 0 <= cant <= 1000 Afectan a varios atributos: dto <= iva
cardinalidad
tuplas
Pero existen unas reglas o metareglas generales asociadas al modelo relacional, que se reeren a las claves primarias y a las claves ajenas Adems existen las restricciones de dominios: El nombre de la provincia slo puede ser: Castelln, Valencia o Alicante DOM_PROV: {Castelln, Valencia, Alicante}
Puede haber dos facturas con el mismo cdigo? Puede haber una factura sin fecha de emisin? Puede contener el cdigo de cliente el valor SQ1? Puede contener el cdigo de vendedor un valor que no aparece en la tabla vendedores? (Universitat Jaume I) Reglas de integridad Curso 2006-2007 5 / 29 (Universitat Jaume I) Reglas de integridad Curso 2006-2007 6 / 29
Claves
Claves
Claves
Superclave: atributo o cto. de atributos que identican de modo nico las tuplas de una relacin. Clave candidata: superclave en la que ninguno de sus subconjuntos es una superclave de la relacin. Debe satisfacer:
1 Unicidad 2 Irreducibilidad (minimalidad)
Claves
Clave ajena: atributo o cto. de atributos cuyos valores deben coincidir con los de la clave primaria de otra relacin. Las Claves ajenas, son el mecanismo que proporciona el MRD para expresar vnculos (interrelacin, asociacin) entre entidades (relaciones, tablas) a modo de referencia. Diagramas referenciales: codcli ----------> CLIENTES
Clave primaria: clave candidata que se escoge para identicar las tuplas de modo nico. Las claves primarias constituyen el mecanismo de direccionamiento de tuplas de un sistema relacional. Clave alternativa: Toda clave candidata que no se elige como primaria.
FACTURAS
La clave ajena codcli de la tabla FACTURAS hace referencia a la clave primaria de la tabla CLIENTES: cliente al que corresponde la factura
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
7 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
8 / 29
Claves
Claves
Claves
CLIENTES VENDEDORES PUEBLOS PUEBLOS codpue
Claves
Clave ajena y clave primaria a la que referencia deben pertenecer al mismo
dominio.
FACTURAS FACTURAS
dto
2 0 2 0 2 5 2
iva
7 16 7 16 7 0 7
Auto-referencia : R1 > R1
Vendedores ----> Vendedores
NULL
Antonio Mayor, 23
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
9 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
10 / 29
Regla de Integridad de Entidades: Ninguno de los atributos que componen la clave primaria puede ser nulo. En una base de datos relacional nunca se almacena informacin de algo que no se puede identicar!! Observaciones: La regla se aplica a las relaciones base (parte directa de la base de datos). La regla se aplica slo a la clave primaria (no a las claves alternativas).
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
11 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
12 / 29
dto
2 0 2 0 2 5 2
iva
7 16 7 16 7 0 7
CLIENTES
codcli 00001 00012 00321 00322 nombre direccioncodpostal codpue Juan Rosa Ferran Mayor, 15 Roser, 23 Serpis, 1 12001 12002 12100 12100 12341 12341 12412 12412
compensatorias que conduzcan a un estado legal. Es tarea del diseador de la base de datos indicar qu operaciones se deben rechazar y cuales requieren operaciones adicionales, u operaciones de compensacin.
(Universitat Jaume I) Reglas de integridad Curso 2006-2007 13 / 29
NULL
Antonio Mayor, 23
FACTURAS
(Universitat Jaume I)
codcli
CLIENTES
Reglas de integridad Curso 2006-2007 14 / 29
no s s no
Regla de modicacin: Qu hacer si se intenta modicar el valor de la clave primaria de la tupla a la que hace referencia una clave ajena?
Restringir Propagar Anular
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
15 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
16 / 29
Denicin de datos Denicin de vistas Manipulacin de datos Reglas de integridad Reglas de transaccin (Begin, commit, rollback).
SQL
SQL
Al crear una tabla con la orden CREATE TABLE se pueden denir las reglas de integridad y las reglas para las claves ajenas.
CREATE TABLE nombre ( nombreCol1 tipo [Modificadores de columna], nombreCol2 tipo [Modificadores de columna], ... nombreColn tipo [Modificadores de columna], modificadores globales de tabla);
SQL
SQL
SQL
Clave Primaria (PRIMARY KEY):
Permite declarar un atributo o un conjunto de atributos como clave
SQL
Integridad Referencial (FOREING KEY):
Segn el estndar SQL92, se pueden denir las siguientes opciones de Borrado y Modicacin en Claves Ajenas:
RESTRICT / NO ACTION: rechazar la operacin de borrado o
modicacin.
CASCADE: propagar el borrado o modicacin de las tuplas de la
referencia.
SET DEFAULT: poner un valor por defecto en la CA de la tabla que
o ms) no pueden repetirse en una relacin. Esta restriccin permite la denicin de claves alternativas.
Obligatoriedad (NOT NULL): El conjunto de atributos no admite
referencia.
valores nulos.
NOTA: Ambos modos (de borrado y de modicacin) son independientes, es decir, cada uno tomar una de las cuatro opciones por separado.
(Universitat Jaume I) Reglas de integridad Curso 2006-2007 22 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
21 / 29
SQL
SQL
SQL
Reglas de integridad: el usuario formula una condicin mediante
SQL
un predicado denido sobre un conjunto de atributos, tuplas o dominios, que debe ser vericado en toda operacin de actualizacin para que el nuevo estado constituya una ocurrencia vlida del esquema. En SQL92 existen dos clases:
Vericacin (CHECK): Comprueba, en toda operacin de
actualizacin, si el predicado es cierto o falso y, en el segundo caso, rechaza la operacin. La restriccin de vericacin se dene sobre un nico elemento (dentro de un CREATE TABLE) y puede o no tener nombre. Asercin (ASSERTION): Acta de forma idntica a la anterior, pero se diferencia de ella en que puede afectar a varios elementos (por ejemplo, a dos tablas distintas). Por tanto, su denicin no va unida a la de un determinado elemento del esquema y siempre ha de tener un nombre.
(Universitat Jaume I) Reglas de integridad Curso 2006-2007 23 / 29
especicar libremente la respuesta (accin) ante una determinada condicin. As como las anteriores reglas de integridad son declarativas, los disparadores son procedimentales, siendo preciso que el usuario escriba el procedimiento que ha de aplicarse en caso de que se cumpla la condicin.
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
24 / 29
SQL
SQL
SQL
CREATE TABLE facturas ( codfac NUMERIC(6) NOT NULL, fecha DATE NOT NULL, codcli NUMERIC(5), codven NUMERIC(5), iva NUMERIC(2), dto NUMERIC(2), CONSTRAINT cp_facturas PRIMARY KEY (codfac), CONSTRAINT ca_fac_cli FOREIGN KEY (codcli) REFERENCES clientes ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT ca_fac_ven FOREIGN KEY (codven) REFERENCES vendedores ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT ri_dto_fac CHECK ( dto BETWEEN 0 AND 50 ));
SQL
CREATE TABLE vendedores( codven NUMERIC(5) NOT NULL, nombre VARCHAR(50) NOT NULL, direccion VARCHAR(50) NOT NULL, codpostal VARCHAR(5), codpue VARCHAR(5) NOT NULL, codjefe NUMERIC(5), CONSTRAINT cp_vendedores PRIMARY KEY (codven), CONSTRAINT ca_ven_pue FOREIGN KEY (codpue) REFERENCES pueblos ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT ca_ven_ven FOREIGN KEY (codjefe) REFERENCES vendedores ON DELETE RESTRICT ON UPDATE CASCADE);
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
25 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
26 / 29
anular
anular
CLIENTES codcli nombre PROVINCIAS direccion codpostal restringir codpro nombre codpue PUEBLOS codpue nombre codpro
restringir
propagar
restringir
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
27 / 29
(Universitat Jaume I)
Reglas de integridad
Curso 2006-2007
28 / 29
rest. LLEVA codigo numetapa dorsal rest. prop. PUESTO prop. dorsal numetapa posicion tiempo
Curso 2006-2007 29 / 29
prop.
rest.
prop.
(Universitat Jaume I)
Reglas de integridad