Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Definición de Datos • D. D. L. –Data –Definition –Language. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Definición de Datos • D. D. L. –Data –Definition –Language » Lenguaje » de Definición » de Datos Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Definición de Datos • D. D. L. –Permite crear, modificar y eliminar las estructuras para almacenar los datos (Metadata). –Permite definir el esquema de la B.D. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Definición de Datos • D. D. L. – Bases de Datos • Tablas (relaciones o entidades) –Columnas (atributos) –Claves: » Primarias (atributo determinante) » Foráneas (claves externas, claves de otras tablas) » Únicas (claves candidatas) –Índices, etc. • Vistas (consultas almacenadas) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Definición de Datos • Los comandos para definir datos son: –CREATE, crear. –ALTER, modificar o alterar. –DROP, eliminar o descartar. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE DATABASE Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Crear Base de Datos • CREATE DATABASE – Crea una nueva Base de Datos. – En InformiX existen varios “espacios” para almacenar las B. D., DBSpaces. – Hay que especificar en cual, sino se crea en el “espacio” del root (rootdbs), de capacidad muy limitada. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Crear Base de Datos • CREATE DATABASE – Crear una nueva Base de Datos. CREATE DATABASE nombre_BD IN nombre_espacio – Ejemplo: CREATE DATABASE BD_3IX_ape IN btdbs Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Crear Base de Datos • CREATE DATABASE – Al crear un base de datos el usuario que ejecute la instrucción CREATE... se le asigna permisos como DBA (Administrador de la BD) – Ningún usuario (excepto informix) pude utilizar la BD, hasta que se asignen permisos. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE TABLE Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Creación de Tablas • CREATE TABLE – Crea una nueva tabla (relación o entidad) – Para cada atributo se puede especificar: • Nombre » Obligatorio • Tipo de dato » Obligatorio • Dominio • Restricciones Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Creación de Tablas • CREATE TABLE –Tipos de restricciones: • De clave • Atributos de ingreso obligatorio • De integridad: –De dominio –Referencial Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Creación de Tablas • CREATE TABLE –Sintaxis: CREATE TABLE NOM_TABLA ( ATRIB1 TIPO_DATO, ATRIB2 TIPO_DATO, ATRIB3 TIPO_DATO, .....); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Creación de Tablas • Tipos de Datos – El gestor de base de datos soporta las siguientes categorías de tipos de datos: • de caracteres • de números • de tiempo • para objetos grandes Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Creación de Tablas • Tipos de datos de caracteres – CHAR ( largo ) – NCHAR ( largo ) • caracteres especiales del idioma estándar • largo: entre 1 y 32767 – VARHAR (máximo, reserva) – NVARCHAR (máximo, reserva) • caracteres especiales del idioma estándar • máximo: entre 1 y 255. Tamaño máximo de la cadena • reserva: entre 0 y 255. Tamaño reservado para la cadena Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Creación de Tablas • Tipos de datos numéricos – Tipo de Datos Numéricos Exactos • INTEGER – -2.147.483.647 a 2.147.483.647 • SMALLINT – -32.767 a 32.767 • SERIAL ( n ) – n: comienzo de la serie – integer autonumérico Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Tipos de Datos • Tipos de datos numéricos – Tipo de Datos Numéricos Exactos • DECIMAL ( p , s ) –p: cantidad de dígitos –s: cantidad de decimales • MONEY ( p , s ) –símbolo monetario Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Tipos de Datos • Tipos de datos numéricos – Tipo de Datos Numéricos Aproximados • DECIMAL ( p ) – p: precisión del número real, un integer positivo • FLOAT ( p ) – p: de 1 a 32 dígitos significantes, 16 por defecto • SAMLLFLOAT – 8 dígitos significantes Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Tipos de Datos • Tipos de datos de tiempo – DATE • fecha • formato (dd / mm /aaaa) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Tipos de Datos • Tipos de datos de tiempo – DATETIME • fecha y hora • formato (aaaa-mm-dd hh:mm:ss.fff) DATETIME Year To Year (1 a 9999) Month To Month (1 a 12) Day To Day (1 a 31-28) Hour To Hour (0 a 23) Minute To Minute (0 a 59) Second To Second (0 a 59) Fraction To Fraction (1 a 5) 3 - 1 milésima de segundo Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Tipos de Datos • Tipos de datos de tiempo – INTERVAL • almacena una unidad de tiempo INTERVAL Year(p) To Year Month(p) To Month Day(p) To Day Hour(p) To Hour Minute(p) To Minute Second(p) To Second Fraction(p) To Fraction p: cantidad máxima de dígitos máximo 9 Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Tipos de Datos • Tipos de datos de objetos grandes – TEXT • almacena caracteres hasta 2 31 bytes – BYTE • almacena hasta 231 bytes Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Caso de Estudio • Caso de Estudio: – En un supermercado las cajeras realizan la facturación de los productos a los clientes. clientes – Los productos pertenecen a distintos tipos (Alimentos, Carnes, etc.) y tienen distintos % de I.V.A. (básico, mínimo, eximidos) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Cajeras Teléfonos dirección Nombre eMail CI-Caj Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Cajeras Teléfonos dirección Nombre eMail CI-Caj * calle número esquina nombre apellido Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Dirección y nombre son atributos estructurados tambien en Clientes, pero por razones de espacio y claridad los dejaremos como atributos simples en el DER Cajeras Teléfonos dirección Nombre eMail CI-Caj * Clientes CI-Cli número Teléfonos dirección eMail Nombre * calle número esquina nombre apellido Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Clientes CI-Cli número Teléfonos dirección eMail Nombre Cajeras Teléfonos dirección Nombre eMail * * CI-Caj IVA Tipo-Producto Productos ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Mismos Atributos Generalizamos Cajeras Teléfonos dirección Nombre eMail Clientes CI-Cli número Teléfonos dirección eMail Nombre * * CI-Caj IVA Tipo-Producto Productos ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Personas * Teléfonos dirección eMail Nombre CI Clientes CI-Cli número * Teléfonos dirección eMail Nombre Son * Cajeras Teléfonos dirección Nombre eMail CI-Caj IVA Tipo-Producto Productos ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Personas * Teléfonos dirección eMail Nombre CI Clientes Son CI-Cli número IVAs ID-IVA Porcentaje Cajeras CI-Caj Productos IVA Tipo-Producto ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Personas * Teléfonos dirección eMail Nombre CI Clientes Son CI-Cli número IVAs T Cajeras ID-IVA Porcentaje Productos CI-Caj ID-Prod Tipo-Producto Descripción Precio Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio Personas * Teléfonos dirección eMail Nombre CI CI-Cli número Clientes Son 1 Todos los productos tienen un IVA asociado. Cajeras T N IVAs ID-IVA Porcentaje Productos CI-Caj ID-Prod Tipo-Producto Descripción Precio Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio * Teléfonos dirección eMail Nombre Personas CI CI-Cli número Clientes Son 1 T N Cajeras CI-Caj N Facturan N Hora Fecha Cantidad Tipo-Producto IVAs ID-IVA Porcentaje Productos ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio * Teléfonos dirección eMail Nombre Personas CI Clientes 1 Son CI-Caj N Facturan 1 T Compran N Cajeras CI-Cli número N N Hora Fecha Cantidad IVAs ID-IVA Porcentaje Productos ID-Prod Descripción Precio Tipo-Producto Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Personas (CI, nombre, apellido, calle, número, esquina, email, teléfonos*) Cajeras (CI-Caj) Clientes (CI-Cli, número) Productos (ID-Prod, descripción, precio, tipo) IVAs (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Personas (CI, nombre, apellido, calle, número, esquina, email, teléfonos*) Per-Tel(CI, teléfono) Cajeras (CI-Caj) Clientes (CI-Cli, número) Productos (ID-Prod, descripcion, precio, tipo) IVAs (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Personas (CI, nombre, apellido, calle, número, esquina, email, teléfonos*) Per-Tel(CI, teléfono) Cajeras (CI-Caj) Clientes (CI-Cli, número) Productos (ID-Prod, descripcion, precio, tipo) IVAs (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Personas (CI, nombre, apellido, calle, número, esquina, email) Per-Tel(CI, teléfono) Cajeras (CI-Caj) Clientes (CI-Cli, número) Productos (ID-Prod, descripcion, precio, tipo) IVAs (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Per-Tel Facturan Compran Tienen (CI, teléfono) (CI-Caj, ID-Prod, fecha, hora, cantidad) (CI-Caj, ID-Prod, fecha, hora, CI-Cli) (ID-Prod, ID-IVA) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Per-Tel Facturan Compran Tienen (CI, teléfono) (CI-Caj, ID-Prod, fecha, hora, cantidad) (CI-Caj, ID-Prod, fecha, hora, CI-Cli) (ID-Prod, ID-IVA) N a 1 con totalidad Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Per-Tel Facturan Compran Tienen (CI, teléfono) (CI-Caj, ID-Prod, fecha, hora, cantidad) (CI-Caj, ID-Prod, fecha, hora, CI-Cli) (ID-Prod, ID-IVA) N a 1 con totalidad Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: Productos (ID-Prod, descripción, precio, ID-IVA, tipo) tipo Tienen (ID-Prod, ID-IVA) N a 1 con totalidad Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. – Caso de Estudio • CREATE TABLE CREATE TABLE PERSONAS ( CI INTEGER NOMBRE VARCHAR(20,10) APELLIDO VARCHAR(20,10) CALLE VARCHAR(20,10), NUMERO INTEGER, ESQUINA VARCHAR(20,10), EMAIL VARCHAR(30,20), PRIMARY KEY(CI) KEY Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 NOT NOT NOT NULL, NULL, NULL, ); Prof. L. Carámbula D.D.L. - Caso de Estudio • CREATE TABLE CREATE TABLE CLIENTES( CI_CLI INTEGER NUMERO INTEGER NOT NULL, NOT NULL, PRIMARY KEY(CI_CLI) KEY ); CREATE TABLE CAJERAS( CI_CAJ INTEGER NOT NULL, PRIMARY KEY (CI_CAJ) ); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. - Caso de Estudio • CREATE TABLE CREATE TABLE PRODUCTOS( ID_PROD INTEGER DESCRIPCION VARCHAR(20,10) PRECIO DECIMAL(7,2) ID_IVA INTEGER, TIPO VARCHAR(17,12), PRIMARY KEY (ID_PROD) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 NOT NULL, NOT NULL, NOT NULL, ); Prof. L. Carámbula D.D.L. - Caso de Estudio • CREATE TABLE CREATE TABLE IVAS( ID_IVA PORCENTAJE INTEGER NOT NULL, DECIMAL(4,4) NOT NULL, PRIMARY KEY (ID_IVA) Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 ); Prof. L. Carámbula D.D.L. - Caso de Estudio • CREATE TABLE CREATE TABLE PER_TEL( CI TELEFONO INTEGER CHAR(9) NOT NULL, NOT NULL, PRIMARY KEY (CI,TELEFONO)); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. - Caso de Estudio • CREATE TABLE CREATE TABLE FACTURAN( CI_CAJ INTEGER NOT NULL, ID_PROD INTEGER NOT NULL, FECHA DATETIME YEAR TO MINUTE NOT NULL, CANTIDAD DECIMAL (6,3) NOT NULL, PRIMARY KEY (CI_CAJ, ID_PROD, FECHA)); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. - Caso de Estudio • CREATE TABLE CREATE TABLE COMPRAN( CI_CAJ INTEGER NOT NULL, ID_PROD INTEGER NOT NULL, FECHA DATETIME YEAR TO MINUTE NOT NULL, CI_CLI INTEGER NOT NULL, PRIMARY KEY (CI_CAJ, ID_PROD, FECHA)); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula ALTER TABLE Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Modificar Tablas • ALTER TABLE –La definición de una tabla se puede modificar mediante el comando ALTER TABLE (alterar o modificar tabla). Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Modificar Tablas • ALTER TABLE – Las acciones posibles para modificar las definiciones de una tabla incluyen: • agregar o eliminar una columna. • modificar la definición de una columna. • agregar o eliminar restricciones de la tabla. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Agregar un atributo • ALTER TABLE – AGREGAR: ADD – Por ejemplo, si queremos añadir a la relación PERSONAS un atributo para almacenar la FECHA de NACIMIENTO, podemos usar la orden: ALTER TABLE PERSONAS ADD FECHA_NAC DATE; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Modificar el tipo de dato • ALTER TABLE – MODIFICAR: MODIFY – Por ejemplo, si queremos MODIFICAR la entidad PERSONAS el TAMAÑO o LARGO del atributo APELLIDO, podemos usar la orden: ALTER TABLE PERSONAS APELLIDO VARCHAR(15,10); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 MODIFY Prof. L. Carámbula D.D.L. Modificar Tablas • ALTER TABLE – MODIFICAR: MODIFY – Cuando se agrega una columna a una tabla, ésta admite valores nulos (NULL). – Se puede agregar una restricción a las columnas para que no admitan valores nulos (NOT NULL), siempre y cuando la columna no contenga algún valor NULL. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Ingreso Obligatorio • ALTER TABLE – MODIFICAR: MODIFY – Por ejemplo, si queremos AGREGAR la restricción de NOT NULL al atributo FECHA_NAC de la relación PERSONAS podemos usar la orden: ALTER TABLE PERSONAS MODIFY FECHA_NAC DATE NOT NULL; NULL Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Valor por defecto • ALTER TABLE – MODIFICAR: MODIFY – Poner un valor por defecto, cuando no se asigna uno: ALTER TABLE PRODUCTOS MODIFY TIPO VARCHAR(17,12) DEFAULT ‘Alimentos’ Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Valor por defecto • ALTER TABLE – MODIFICAR: MODIFY – También se pueden agregar a la hora de crear la tabla: CREATE TABLE PRODUCTOS( ..... TIPO VARCHAR(17,12) DEFAULT ‘Alimentos’, ....); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Restricción de Dominio • ALTER TABLE – MODIFICAR: MODIFY – Verificar que los valores estén en determinado dominio. – Por ejemplo, asegurarse que los valores posibles del atributo TIPO de la tabla PRODUCTO sean: • Alimentos, Carnes, Quesos y Fiambres, Lacteos, Limpieza, Kiosco, Bebidas, Bebidas Alcoholicas Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Restricción de Dominio • ALTER TABLE – MODIFICAR: MODIFY ALTER TABLE PRODUCTOS MODIFY TIPO CHAR(17) CHECK (TIPO IN (‘Alimentos’, ‘Carnes’, ‘Quesos y Fiambres’, ‘Lacteos’, ‘Limpieza’, ‘Kiosco’, ‘Bebidas’, ‘Bebidas Alcoholicas’ )); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D.D.L. Restricción de Dominio • ALTER TABLE – También se pueden agregar a la hora de crear la tabla: CREATE TABLE CAJERAS ( CI_CAJ INTEGER NOT NULL, QUEBRANTO INTEGER CHECK (QUEBRANTO BETWEEN 100 AND 9000 ), PRIMARY KEY (CI_CAJ)); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CONSTRAINTS Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Claves • ALTER TABLE – Para que el SGBD controle: • las claves primarias (PRIMARY KEY) • las claves foráneas (FOREIGN KEY) • las claves candidatas (UNIQUE KEY) – hay que indicar a CONSTRAINTS que pertenecen a cada uno. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 través de atributo(s) Prof. L. Carámbula D. D. L. Clave Primaria • ALTER TABLE – PRIMARY KEY • Controla que el valor de un atributo (o la combinación de atributos) sea único para todas las filas de una tabla. ALTER TABLE PRODUCTOS ADD CONSTRAINT PRIMARY KEY (ID_PROD) CONSTRAINT PK_PROD; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Primaria • ALTER TABLE – PRIMARY KEY • Controla que el valor de un atributo (o la combinación de atributos) sea único para todas lasIndicar filas de una tabla. para un nombre ALTER TABLE PRODUCTOS ADD este CONSTRAINT. CONSTRAINT PRIMARY KEY (ID_PROD) Opcional. CONSTRAINT PK_PROD; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE – FOREIGN KEY • Controla que el valor de un atributo (o la combinación de atributos) exista en otra tabla (el valor). • Este atributo (o la combinación de atributos) debe ser clave primaria en la otra tabla (CLAVE EXTERNA). Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE – En la tabla PRODUCTOS se hace referencia a ID_IVA que debe existir (el valor) en la tabla IVAs. ALTER TABLE PRODUCTOS ADD CONSTRAINT FOREIGN KEY (ID_IVA) REFERENCES CONSTRAINT IVAS (ID_IVA) FK_PROD; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE (lista – En la tabla PRODUCTOS seAtributo hace referencia a ID_IVA que debe existir de (elatributos) valor) en de la la tabla IVAs. tabla que es clave ALTER TABLE PRODUCTOS en ADD otra tabla. CONSTRAINT FOREIGN KEY (ID_IVA) REFERENCES IVAS (ID_IVA) CONSTRAINT FK_PROD; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE – En la tabla PRODUCTOS se hace referencia a ID_IVA que debe existir (el valor) en la tabla IVAs. Indicar en que tabla ALTER TABLE PRODUCTOS y el nombreADD del o los CONSTRAINT FOatributos REIGN KEY (ID_IVA) en esa tabla. REFERENCES IVAS (ID_IVA) CONSTRAINT FK_PROD; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE – En la tabla PRODUCTOS se hace referencia a ID_IVA que debe existir (el valor) en la tabla IVAs. ALTER TABLE PRODUCTOS ADD Indicar un nombre para CONSTRAINT OREIGN KEY (ID_IVA) este FCONSTRAINT. Opcional. REFERENCES IVAS (ID_IVA) CONSTRAINT FK_PROD; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE • También en la tablas CAJERAS y CLIENTES se hacen referencia a un mismo atributo (CI) de la tabla PERSONAS como, CI_CAJ y CI_CLI, ambos deben existir (los valores) en la tabla PERSONAS. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE ALTER TABLE CAJERAS ADD CONSTRAINT FOREIGN KEY (CI_CAJ) REFERENCES PERSONAS (CI) CONSTRAINT FK_CI_CAJ; ALTER TABLE CLIENTES ADD CONSTRAINT FOREIGN KEY (CI_CLI) REFERENCES PERSONAS (CI) CONSTRAINT FK_CI_CLI; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE • También en la relaciones FACTURAN y COMPRAN se hacen referencia a las claves de las entidades que están vinculadas. • Se debe agregar una constraint para cada entidad vinculada en la relación. Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE ALTER TABLE FACTURAN ADD CONSTRAINT FOREIGN KEY (CI_CAJ) REFERENCES CAJERAS (CI_CAJ) CONSTRAINT FK_CI_CAJ_FACT; ALTER TABLE FACTURAN ADD CONSTRAINT FOREIGN KEY (ID_PROD) REFERENCES PRODUCTOS (ID_PROD) CONSTRAINT FK_ID_PROD_FACT; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE ALTER TABLE COMPRAN ADD CONSTRAINT FOREIGN KEY (CI_CLI) REFERENCES CLIENTES (CI_CLI) CONSTRAINT FK_CI_CLI_COMP; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Foránea • ALTER TABLE ALTER TABLE COMPRAN ADD CONSTRAINT FOREIGN KEY (CI_CAJ, ID_PROD, FECHA) REFERENCES FACTURAN (CI_CAJ, ID_PROD, FECHA) CONSTRAINT FK_FACT_COMP; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Clave Única • ALTER TABLE – En la tabla CLIENTES NÚMERO es único. el atributo – UNIQUE KEY • Controla que un atributo (o la combinación de atributos) tenga un único valor (CLAVE CANDIADATA). CANDIADATA ALTER TABLE CLIENTESADD CONSTRAINT UNIQUE (NUMERO) CONSTRAINT UK_CLI; UK_CLI Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Eliminar un Atributo • ALTER TABLE – ELIMINAR: DROP • Agregamos un nuevo atributo – edad ALTER TABLE PERSONAS ADD EDAD INTEGER; • No era necesario... ALTER TABLE PERSONAS DROP EDAD; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula DROP TABLE Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Eliminar Tablas • DROP TABLE –Si ya no se necesita una tabla, podemos eliminarla junto con su definición con la orden: • DROP TABLE DROP TABLE nombre_tabla Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Eliminar Tablas • DROP TABLE – Si la tabla a eliminar tiene la clave primaria o alguna clave secundaria referenciada por alguna clave externa de otra tabla, se deberán eliminar también estos Constraints DROP TABLE PRODUCTOS CASCADE CONSTRAINTS; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Activar – Desactivar Constraints • Para habilitar Constraints: SET CONSTRAINTS ENABLED; FK_PROD • Para deshabilitar Constraints: SET CONSTRAINTS FK_PROD DISABLED; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula D. D. L. Renombrar • Renombrar: RENAME • Para cambiar el nombre de un atributo: RENAME COLUMN TABLA ATRIB TO NOM_NUEVO • Para cambiar el nombre de una tabla: RENAME TABLE nombre_tabla_vieja TO nombre_tabla_nueva; Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CASO DE ESTUDIO CREATE TABLE Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE PERSONAS CREATE TABLE PERSONAS ( CI INTEGER NOT NULL, NOMBRE VARCHAR(20,10) NOT NULL, APELLIDO VARCHAR(15,10) NOT NULL, CALLE VARCHAR(20,10), NUMERO INTEGER, ESQUINA VARCHAR(20,10), EMAIL VARCHAR(30,20), FECHA_NAC DATE NOT NULL, PRIMARY KEY(CI) CONSTRAINT PK_PERSONAS); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE PER_TEL CREATE TABLE PER_TEL( CI INTEGER NOT NULL, TELEFONO CHAR(9) NOT NULL, FOREIGN KEY (CI) REFERENCES PERSONAS (CI) CONSTRAINT FK_CI, PRIMARY KEY (CI,TELEFONO) CONSTRAINT PK_PER_TEL); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE CLIENTES CREATE TABLE CLIENTES( CI_CLI INTEGER NOT NULL, NUMERO INTEGER NOT NULL, UNIQUE (NUMERO) CONSTRAINT UK_CLI, FOREIGN KEY (CI_CLI) REFERENCES PERSONAS (CI) CONSTRAINT FK_CI_CLI, PRIMARY KEY(CI_CLI) CONSTRAINT PK_CLIENTES); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE CAJERAS CREATE TABLE CAJERAS( CI_CAJ INTEGER NOT NULL, QUEBRANTO INTEGER CHECK (QUEBRANTO BETWEEN 100 AND 9000 ), FOREIGN KEY (CI_CAJ) REFERENCES PERSONAS (CI) CONSTRAINT FK_CI_CAJ, PRIMARY KEY (CI_CAJ) CONSTRAINT PK_CAJERAS); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE IVAS CREATE TABLE IVAS( ID_IVA INTEGER NOT NULL, PORCENTAJE DECIMAL(4,4) NOT NULL, PRIMARY KEY (ID_IVA) CONSTRAINT PK_IVAS); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE PRODUCTOS CREATE TABLE PRODUCTOS( ID_PROD INTEGER NOT NULL, DESCRIPCION VARCHAR(20) NOT NULL, PRECIO DECIMAL(7,2) NOT NULL, ID_IVA INTEGER DEFAULT 3, TIPO VARCHAR(17) CHECK (TIPO IN (‘Alimentos’, ‘Carnes’, ‘Quesos y Fiambres’, ‘Lacteos’, ‘Limpieza’, ‘Kiosco’, ‘Bebidas’, ‘Bebidas Alcoholicas’)), FOREIGN KEY (ID_IVA) REFERENCES IVAS (ID_IVA) CONSTRAINT FK_PROD, PRIMARY KEY (ID_PROD) CONSTRAINT PK_PRODUCTOS); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE FACTURAN CREATE TABLE FACTURAN( CI_CAJ INTEGER NOT NULL, ID_PROD INTEGER NOT NULL, FECHA DATETIME YEAR TO MINUTE NOT NULL, CANTIDAD DECIMAL (6,3) NOT NULL, FOREIGN KEY (CI_CAJ) REFERENCES CAJERAS (CI_CAJ) CONSTRAINT FK_CI_CAJ_FACT, FOREIGN KEY (ID_PROD) REFERENCES PRODUCTOS (ID_PROD) CONSTRAINT FK_ID_PROD, PRIMARY KEY (CI_CAJ, ID_PROD, FECHA) CONSTRAINT PK_FACTURAN); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula CREATE COMPRAN CREATE TABLE COMPRAN( CI_CAJ INTEGER NOT NULL, ID_PROD INTEGER NOT NULL, FECHA DATETIME YEAR TO MINUTE NOT NULL, CI_CLI INTEGER NOT NULL, FOREIGN KEY (CI_CAJ, ID_PROD, FECHA) REFERENCES FACTURAN (CI_CAJ, ID_PROD, FECHA) CONSTRAINT FK_FACT_COMP, FOREIGN KEY (CI_CLI) REFERENCES CLIENTES (CI_CLI) CONSTRAINT FK_CI_CLI_COMP, PRIMARY KEY (CI_CAJ, ID_PROD, FECHA) CONSTRAINT PK_COMPRAN); Sistemas de Bases de Datos II – ITS / ITSB – EMT – CETP – 2010 Prof. L. Carámbula