Clase 6

Anuncio
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’)
)
Descargar