Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SQL:DDL
DDL: Lenguaje de Definicin de Datos Permite crear objetos en la Base de Datos Tipos de Objetos: - Tablas - ndices - Vistas - Otros
SQL:DDL
Se pueden crear tablas con la instruccin CREATE TABLE nombre_tabla ( atributos: cada uno con su tipo de datos y restricciones ); Se pueden crear ndices as: CREATE INDEX nombreindice ON tabla(columna(s)); Las vistas no son ms que consultas con nombres Ejemplo: CREATE VIEW nombre_vista AS consulta;
Restricciones de Integridad
Aseguran que los cambios realizados a una BD no provoquen inconsistencia en la informacin.
Restricciones
Conjunto de valores y de operaciones permitidas sobre ellos. Dominios base en SQL: CHAR(p): Cadena de caracteres de longitud fija p (mxima longitud p) VARCHAR(p): Cadena de caracteres de longitud variable. Mxima longitud p. NUMBER(p,s): Valor numrico de precisin p y escala s. DATE: Fechas vlidas.
de
dominio:
Restricciones de Integridad
Un atributo puede o no admitir nulos. En SQL se especifica mediante la clusula NOT NULL. Integridad Referencial: Garantiza la existencia de las Claves Forneas. Para ello se utilizan las clusulas REFERENCES y FOREIGN KEY Clave Primaria: Garantiza la unicidad y obligatoriedad del o los atributos definidos como clave primaria. Para ello se utiliza la clusula PRIMARY KEY.
Nulos:
Restricciones de Integridad
Clave Alternativa: Garantiza la unicidad de los
atributos declarados como tal. Se utiliza la clusula UNIQUE. Si se desea hacer obligatoria debe especificarse adicionalmente NOT NULL.
Involucra condiciones de chequeo para uno o varios atributos. Sintaxis : CHECK ( condicion)
Sea el modelo:
DEPARTAMENTO # cdigo * nombre * ciudad el lugar de trabajo de
el subordinado de
el jefe de
CREATE TABLE departamento ( codigo NUMBER(6) PRIMARY KEY, nombre VARCHAR(6) NOT NULL UNIQUE, ciudad VARCHAR(12) CHECK (ciudad IN ('Medelln', 'Bogot', 'Cali')) NOT NULL );
El atributo ciudad slo admitir 1 de estas 3 ciudades. Es necesario adems colocarle la restriccin de no nulidad.
CREATE TABLE empleado ( cdula NUMBER(10) nombre VARCHAR(30) jefe NUMBER(10) salario NUMBER(10,2) comisin NUMBER(2) , cargo VARCHAR(20) depto NUMBER(6) NOT );
PRIMARY KEY, NOT NULL, REFERENCES empleado, Clave fornea NOT NULL, NOT NULL, NULL REFERENCES departamento
Clave fornea sobre la misma tabla
Restricciones de Integridad
Ejemplos con la clusula CHECK:
CREATE TABLE empleado ( cdula NUMBER(10) PRIMARY KEY, nombre VARCHAR(30) NOT NULL, jefe NUMBER(10) REFERENCES empleado(cdula), salario NUMBER(10,2) NOT NULL CHECK (salario > 0 ) , comision NUMBER(3) CHECK (comision between 0 and 100), cargo VARCHAR(20) NOT NULL, depto NUMBER(6) NOT NULL REFERENCES departamento );
Puede especificarse el atributo hacia el cual se refiere la clave fornea
Restricciones de Integridad
Especificacin de una clave primaria compuesta:
CREATE TABLE envio ( snro NUMBER(6), pnro NUMBER(6), cantidad NUMBER(6) NOT NULL, PRIMARY KEY(snro,pnro) ); Nota: Es incorrecto colocar PRIMARY KEY al frente de snro y de pnro.
Restricciones de Integridad
Clave fornea hacia una clave primaria compuesta:
CREATE TABLE revision( codrevision NUMBER(5) PRIMARY KEY, cf_snro NUMBER(6) NOT NULL, cf_pnro NUMBER(6) NOT NULL, revisor VARCHAR(20)NOT NULL, FOREIGN KEY(cf_snro,cf_pnro) REFERENCES envio );
Cuando la clave primaria a la que se referencia es compuesta se debe utilizar esta sintaxis.
Restricciones de Integridad
Se puede modificar la estructura de una tabla con la instruccin ALTER TABLE
Ej: ALTER TABLE mitabla ADD nuevocampo NUMBER(3);
Ingresando valores
EJEMPLO:
CREATE TABLE t ( a number(3) PRIMARY KEY, b date, c varchar(3)); INSERT INTO t VALUES(10, CURRENT_DATE, 'hi');
Eliminando valores
Para eliminar filas de una tabla: DELETE FROM tabla [WHERE condicion]; Ej: DELETE FROM envio WHERE snro=34; La condicin puede incluir subconsultas
Actualizando valores
Para actualizar filas de una tabla: UPDATE tabla SET campo = nuevo_valor [WHERE condicion]; - Se pueden actualizar varios campos al mismo tiempo separndolos por comas - La condicin y nuevo_valor pueden incluir subconsultas
Actualizando valores
Ejemplo:
UPDATE envio SET cantidad = cantidad - 5 WHERE snro = 10 AND pnro = 20;
Implementacin de un Arco
EMPLEADO # cdula * nombre * carn
CREATE TABLE empleado( cedula NUMBER(8) PRIMARY KEY, nombre VARCHAR(25) NOT NULL, carnet NUMBER(5) UNIQUE NOT NULL);
Clave Alternativa
CREATE TABLE factura ( codigo NUMBER(6) PRIMARY KEY, fecha DATE NOT NULL, cedula NUMBER(8) REFERENCES empleado, placa VARCHAR(10) REFERENCES auto, CHECK ( (placa IS NULL AND cedula IS NOT NULL) OR (placa IS NOT NULL AND cedula IS NULL) ) Por medio del CHECK se implementa );
el arco ya que garantiza que si una CF es nula, la otra CF es no nula
Implementacin de Supertipos/Subtipos
PERSONA #cdula *nombre ESTUDIANTE *promedio
PROFESOR
*registro
SUPERTIPOS/SUBTIPOS
Repasar la clase de Conversin E-R a Relacional Veamos la alternativa 2 para implementar supertipos y subtipos
SUPERTIPOS/SUBTIPOS
Se crea la tabla para el supertipo:
CREATE TABLE persona( cedula NUMBER(8) PRIMARY KEY, nombre VARCHAR(20) NOT NULL );
SUPERTIPOS/SUBTIPOS
Se crean tablas para cada uno de los subtipos:
CREATE TABLE estudiante( cedest NUMBER(8) PRIMARY KEY REFERENCES persona, promedio NUMBER(3,2) );
3 dgitos: 1 entero, 2 decimales
CREATE TABLE profesor( cedprof NUMBER(8) PRIMARY KEY REFERENCES persona, registro NUMBER(5) );
En esta alternativa se debe validar por programacin que la cdula de una persona no exista en ambas tablas para garantizar la exclusividad