SQL: Sublenguaje de Definición de Datos Tablas •Ejemplo: LECTOR CREATE TABLE LECTOR ( nombre VARCHAR(100) NOT NULL, cedula NUMBER(10) NOT NULL, dir_ciudad VARCHAR(30) NOT NULL, dir_barrio VARCHAR(30) NOT NULL, dir_calle VARCHAR(30) NOT NULL, dir_numero VARCHAR(30) NOT NULL, tel_personal NUMBER(10) NOT NULL, tel_laboral NUMBER(10), tel_opcional NUMBER(10) ) Clave primaria •Sintaxis en CREATE TABLE <atributo>..PRIMARY KEY PRIMARY KEY (<lista de atributos>) •Semántica La primera para clave primaria simple La segunda para clave primaria compuesta •Ejemplo: Clave en Libro CREATE TABLE LIBRO ( nombre VARCHAR(100), codigo INT PRIMARY KEY, autor VARCHAR(30), editorial VARCHAR(30) ) Claves alternas •Sintaxis en CREATE TABLE <atributo>..UNIQUE UNIQUE (<lista de atributos>) •Semántica La primera para clave alterna simple La segunda para clave alterna compuesta •Ejemplo: Clave en Librería CREATE TABLE LIBRERIA ( nombre VARCHAR(100) UNIQUE, rif INT PRIMARY KEY, direccion VARCHAR(100), ) Claves foráneas •Sintaxis en CREATE TABLE -<atributo>..REFERENCES <tabla>(<atributo>) -FORAIN KEY (<lista de atributos>) REFERENCES <tabla>(<lista de atributo>) •Semántica Indica la tabla y los atributos que se referencian •Ejemplo: Clave en Ofrece CREATE TABLE Ofrece ( codlib INT REFERENCES LIBRO(codigo), riflib INT REFERENCES LIBRERIA(rif), precio REAL, existencia INT(30), PRIMARY KEY (riflib,codlib) ) Problemas de modificación CF •Inserción: clave foránea no nula ni corresponde a una tupla referenciada •Actualización: clave foránea no nula ni corresponde a una tupla referenciada •Eliminación: tupla referenciada por clave foránea •Actualización: tupla referenciada por clave foránea Mantenimiento de Integridad Referencial •Rechazar: no admite la modificaición (política por defecto) •Cascada(3,4): propaga la actualización o eliminación a las tuplas que le referencian •Colocar nulo (3,4): coloca nulo en las calves foráneas que refrencian a la tupla eliminada o actualizada Integridad Referencial •Ejemplo: Clave en Ofrece CREATE TABLE Ofrece ( codlib INT REFERENCES LIBRO(codigo) ON DELETE CASCADE ON UPDATE CASCADE, riflib INT REFERENCES LIBRERIA(rif) ON UPDATE CASCADE, precio REAL, existencia INT(30), PRIMARY KEY (riflib,codlib) ) Restricción de Nulos •Sintaxis en CREATE TABLE <atributo>..NOT NULL •Semántica El atributo no puede ser nulo En una inserción debe especificarse valor •Ejemplo: Autor de un Libro CREATE TABLE LIBRO ( nombre VARCHAR(100), codigo INT PRIMARY KEY, autor VARCHAR(30) NOT NULL, editorial VARCHAR(30) ) Restricción de Con Condiciones •Sintaxis en CREATE TABLE <atributo>..CHECK <condición> El atributo debe cumplir la condición Los condición es como en un WHERE Ojo:No Claves Foráneas •Semántica •Ejemplo: El sexo ‘M’ o ‘F’ CREATE TABLE LECTOR ( ci CHAR(12) PRIMARY KEY, nombre VARCHAR(30) NOT NULL, sexo CHAR CHECK (sexo IN (‘F’,’M’) ) Restricción de Dominio •Sintaxis •Semántica CREATE DOMAIN <nombre> <tipo> CHECK <condición(VALUE)> VALUE: Indica el valor Los condición es como en un WHERE •Ejemplo: Dominio de edades CREATE DOMAIN Edades INT CHECK (VALUE>=0 AND VALUE<=120) ) Restricción de Tuplas •Sintaxis en CREATE TABLE ...CHECK <condición> •Semántica La tupla debe cumplir la condición •Ejemplo: Los códigos de los libros UNILIT CREATE TABLE LIBRO ( nombre VARCHAR(100), codigo INT PRIMARY KEY, autor VARCHAR(30) NOT NULL, editorial VARCHAR(30), CHECK (codigo>=10000 AND código <=11000 OR editorial<>’UNILIT’) )