D. D. L. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Definición de Datos • D. D. L. –Data –Definition –Language. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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) »Únicas (claves candidatas) – Índices, etc. •Vistas (consultas almacenadas) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Definición de Datos •Las sentencias para definir datos son: –CREATE, crear. –ALTER, modificar o alterar. –DROP, eliminar o descartar. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE DATABASE Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 datosdbs Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Crear Base de Datos • CREATE DATABASE – Al crear una base de datos el usuario que ejecute la sentencia CREATE... se le asignan permisos como DBA (Administrador de la BD) – Ningún usuario (excepto informix) pude utilizar la nueva BD, hasta que se asignen permisos. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE TABLE Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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: • caracteres • numéricos • cronológicos • booleanos • objetos grandes Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Creación de Tablas • Tipos de datos de Caracteres – CHAR ( largo ) • caracteres ASCII • Largo entre 1 y 32.767 – NCHAR ( largo ) • caracteres especiales del idioma estándar • largo: entre 1 y 32.767 – 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Creación de Tablas • Tipos de datos de Caracteres – VARHAR (máximo, reserva) – NVARCHAR (máximo, reserva) • caracteres especiales del idioma estándar • máximo: entre 1 y 255. Tamaño de la cadena. • reserva: entre 0 y 255. Tamaño reservado para la cadena – LVARCHAR(máximo) • máximo: entre 1 y 32.739. Tamaño de la cadena. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Creación de Tablas • Tipos de datos numéricos – Tipo de Datos Numéricos Exactos • INTEGER – Valores: -2.147.483.647 a 2.147.483.647 • SMALLINT – Valores: -32.767 a 32.767 • BIGINT o INT8 – Valores: -263 -1 a 263 - 1 Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Creación de Tablas • Tipos de datos numéricos – Tipo de Datos Numéricos Exactos • SERIAL ( n ) – n: comienzo de la serie – integer autonumérico • BIGSERIAL(n) o SERIAL8(n) – n: comienzo de la serie – Bigint o int8 autonumérico Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Tipos de Datos • Tipos de datos boolean – Verdadero o Falseo • BOOLEAN – Ocupan 1 byte – Valores válidos » 't' » 'f' » NULL Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Tipos de Datos Tipos de datos cronológicos – DATE • fecha • formato (dd / mm /aaaa) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Tipos de Datos Tipos de datos cronológicos – 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) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Tipos de Datos • Tipos de datos cronológicos – 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. Valor máximo 9 Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio Cajera Teléfonos dirección Nombre eMail CI-Caj Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio * Cajera Teléfono dirección Nombre eMail CI-Caj calle número esquina nombre apellido Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio Dirección y nombre son atributos estructurados tambien en Cliente, pero por razones de espacio y claridad los dejaremos como atributos simples en el DER * Cajera Teléfono dirección Nombre eMail CI-Caj Cliente CI-Cli número * Teléfono dirección eMail Nombre calle número esquina nombre apellido Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio Cliente CI-Cli número Teléfono dirección eMail Nombre * Cajera Teléfono dirección Nombre eMail CI-Caj IVA Tipo-Producto Producto ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula * D.D.L. – Caso de Estudio Mismos Atributos Generalizamos Cliente CI-Cli número Teléfono dirección eMail Nombre * Cajera Teléfono dirección Nombre eMail CI-Caj IVA Tipo-Producto Producto ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula * D.D.L. – Caso de Estudio Persona * Teléfono dirección eMail Nombre CI Cliente CI-Cli número Teléfono dirección eMail Nombre Es * Cajera Teléfono dirección Nombre eMail CI-Caj IVA Tipo-Producto Producto ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula * D.D.L. – Caso de Estudio Persona * Teléfono dirección eMail Nombre CI Cliente Es CI-Cli número IVA ID-IVA Porcentaje Cajera CI-Caj Producto IVA Tipo-Producto ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio Persona * Teléfono dirección eMail Nombre CI Cliente Es CI-Cli número IVA T Cajera ID-IVA Porcentaje Producto CI-Caj ID-Prod Tipo-Producto Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio Persona * Teléfono dirección eMail Nombre CI CI-Cli número Cliente Es 1 Todos los productos tienen un IVA asociado. Cajera T N IVA ID-IVA Porcentaje Producto CI-Caj ID-Prod Tipo-Producto Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio * Teléfono dirección eMail Nombre Persona CI CI-Cli número Cliente Son 1 T N Cajera CI-Caj N Factura N Hora Fecha Cantidad Tipo-Producto IVA ID-IVA Porcentaje Producto ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio * Teléfono dirección eMail Nombre Persona CI Cliente 1 Es CI-Caj N Factura 1 T Compra N Cajera CI-Cli número N N Hora Fecha Cantidad Tipo-Producto IVA ID-IVA Porcentaje Producto ID-Prod Descripción Precio Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: – Pasaje a Tablas: • Persona (CI, nombre, apellido, calle, número, esquina, email, teléfono*) • Cajera (CI-Caj) • Cliente (CI-Cli, número) • Producto (ID-Prod,descripción, precio, tipo) • IVA (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: – Pasaje a Tablas: • Persona (CI, nombre, apellido, calle, número, esquina, email, teléfono*) • Cajera (CI-Caj) Per-Tel(CI, teléfono) • Cliente (CI-Cli, número) • Producto (ID-Prod,descripción, precio, tipo) • IVA (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: – Pasaje a Tablas: • Persona (CI, nombre, apellido, calle, número, esquina, email, teléfono*) • Cajera (CI-Caj) Per-Tel(CI, teléfono) • Cliente (CI-Cli, número) • Producto (ID-Prod,descripción, precio, tipo) • IVA (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: – Pasaje a Tablas: • Persona (CI, nombre, apellido, calle, número, esquina, email) • Cajera (CI-Caj) Per-Tel(CI, teléfono) • Cliente (CI-Cli, número) • Producto (ID-Prod,descripción, precio, tipo) • IVA (ID-IVA, porcentaje) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: • • • • Per-Tel (CI, teléfono) Factura (CI-Caj, ID-Prod, fecha, hora, cantidad) Compra (CI-Caj, ID-Prod, fecha, hora, CI-Cli) Tiene (ID-Prod, ID-IVA) Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: • • • • Per-Tel (CI, teléfono) Factura (CI-Caj, ID-Prod, fecha, hora, cantidad) Compra (CI-Caj, ID-Prod, fecha, hora, CI-Cli) Tiene (ID-Prod, ID-IVA) N a 1 con totalidad Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: • • • • Per-Tel (CI, teléfono) Factura (CI-Caj, ID-Prod, fecha, hora, cantidad) Compra (CI-Caj, ID-Prod, fecha, hora, CI-Cli) Tiene (ID-Prod, ID-IVA) N a 1 con totalidad Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •Esquema Relacional: –Pasaje a Tablas: • Productos (ID-Prod, descripción, precio, IDIVA, tipo) tipo Tienen (ID-Prod, ID-IVA) N a 1 con totalidad Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. – Caso de Estudio •CREATE TABLE CREATE TABLE PERSONA ( 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 NOT NOT NOT NULL, NULL, NULL, Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. - Caso de Estudio • CREATE TABLE CREATE TABLE CLIENTE( CI_CLI INTEGER NUMERO INTEGER NOT NULL, NOT NULL, PRIMARY KEY(CI_CLI) KEY ); CREATE TABLE CAJERA( CI_CAJ INTEGER PRIMARY KEY (CI_CAJ) NOT NULL, ); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. - Caso de Estudio •CREATE TABLE CREATE TABLE PRODUCTO( ID_PROD INTEGER NOT NULL, DESCRIPCION VARCHAR(20,10) NOT NULL, PRECIO DECIMAL(7,2) NOT NULL, ID_IVA INTEGER, TIPO VARCHAR(17,12), PRIMARY KEY (ID_PROD) ); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. - Caso de Estudio •CREATE TABLE CREATE TABLE IVA( ID_IVA INTEGER NOT NULL, PORCENTAJE DECIMAL(4,4) NOT NULL, PRIMARY KEY (ID_IVA) ); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. - Caso de Estudio •CREATE TABLE CREATE TABLE PER_TEL( CI INTEGER TELEFONO CHAR(9) NOT NULL, NOT NULL, PRIMARY KEY (CI,TELEFONO)); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. - Caso de Estudio •CREATE TABLE CREATE TABLE FACTURA( CI_CAJ INTEGER ID_PROD INTEGER FECHA DATETIME YEAR NOT NULL, CANTIDAD DECIMAL (6,3) NOT NULL, NOT NULL, TO MINUTE NOT NULL, PRIMARY KEY (CI_CAJ, ID_PROD, FECHA)); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. - Caso de Estudio •CREATE TABLE CREATE TABLE COMPRA( 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula ALTER TABLE Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 columna. la definición de una • agregar o eliminar restricciones de la tabla. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Agregar un atributo •ALTER TABLE – AGREGAR: ADD – Por ejemplo, si queremos añadir a la relación PERSONA un atributo para almacenar la FECHA de NACIMIENTO, podemos usar la orden: ALTER TABLE PERSONA ADD FECHA_NAC DATE; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Modificar el tipo de dato •ALTER TABLE – MODIFICAR: MODIFY – Por ejemplo, si queremos MODIFICAR la entidad PERSONA el TAMAÑO o LARGO del atributo APELLIDO, podemos usar la orden: ALTER TABLE PERSONA MODIFY APELLIDO VARCHAR(15,10); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 PERSONA podemos usar la orden: ALTER TABLE PERSONA MODIFY FECHA_NAC DATE NOT NULL; NULL Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Valor por defecto •ALTER TABLE – MODIFICAR: MODIFY – Asignar un valor por defecto, cuando no se asigna uno: ALTER TABLE PRODUCTO MODIFY TIPO VARCHAR(17,12) DEFAULT ‘Alimentos’ Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Valor por defecto • ALTER TABLE – MODIFICAR: MODIFY – También se pueden indicar al crear la tabla: CREATE TABLE PRODUCTO( ..... TIPO VARCHAR(17,12) DEFAULT ‘Alimentos’, ....); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D.D.L. Restricción de Dominio •ALTER TABLE – MODIFICAR: MODIFY ALTER TABLE PRODUCTO MODIFY TIPO VARCHAR(17) CHECK (TIPO IN (‘Alimentos’, ‘Carnes’, Fiambres’, ‘Lacteos’, ‘Kiosco’, ‘Bebidas’, Alcoholicas’ )); ‘Quesos y ‘Limpieza’, ‘Bebidas Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 CAJERA ( CI_CAJ INTEGER NOT NULL, QUEBRANTO INTEGER CHECK (QUEBRANTO BETWEEN 100 AND 9000 ), PRIMARY KEY (CI_CAJ)); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CONSTRAINTS Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 través de CONSTRAINTS que atributo(s) pertenecen a cada uno. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 PRODUCTO ADD CONSTRAINT PRIMARY KEY (ID_PROD) CONSTRAINT PK_PROD; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 un nombre para filas deIndicar una tabla. ALTER TABLE estePRODUCTOS CONSTRAINT. ADD CONSTRAINT PRIMARY KEY (ID_PROD) Opcional. CONSTRAINT PK_PROD; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea • ALTER TABLE – En la tabla PRODUCTO se hace referencia a ID_IVA que debe existir (el valor) en la tabla IVA. ALTER TABLE PRODUCTO ADD CONSTRAINT FOREIGN KEY (ID_IVA) REFERENCES CONSTRAINT IVAS (ID_IVA) FK_PROD; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea • ALTER TABLE Atributo (lista – En la tabla PRODUCTOS se hace de atributos) la referencia a ID_IVA que dedebe tabla que es IVAs. clave existir (el valor) en la tabla en otra tabla. ALTER TABLE PRODUCTOS ADD CONSTRAINT FOREIGN KEY (ID_IVA) REFERENCES IVA (ID_IVA) CONSTRAINT FK_PROD; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea • ALTER TABLE – En la tabla PRODUCTO se hace referencia a ID_IVA que debe existir (el valor) en la tabla IVAs. Indicar en que ADD tabla ALTER TABLE PRODUCTOS nombre del o los CONSTRAINT FyOel REIG N KEY atributos en esa tabla. (ID_IVA) REFERENCES IVA (ID_IVA) CONSTRAINT FK_PROD; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea • ALTER TABLE – En la tabla PRODUCTO se hace referencia a ID_IVA que debe existir (el valor) en la tabla IVAs. ALTER TABLE PRODUCTOS ADD Indicar un nombre para CONSTRAINT FOREIGN KEY (ID_IVA) este CONSTRAINT. Opcional. REFERENCES IVA (ID_IVA) CONSTRAINT FK_PROD; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea •ALTER TABLE • También en la tablas CAJERA y CLIENTE se hacen referencia a un mismo atributo (CI) de la tabla PERSONA como, CI_CAJ y CI_CLI, ambos deben existir (los valores) en la tabla PERSONA. Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea • ALTER TABLE ALTER TABLE CAJERA ADD CONSTRAINT FOREIGN KEY (CI_CAJ) REFERENCES PERSONA (CI) CONSTRAINT FK_CI_CAJ; ALTER TABLE CLIENTE ADD CONSTRAINT FOREIGN KEY (CI_CLI) REFERENCES PERSONA (CI) CONSTRAINT FK_CI_CLI; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea •ALTER TABLE • También en la relaciones FACTURA y COMPRA 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea • ALTER TABLE ALTER TABLE FACTURA ADD CONSTRAINT FOREIGN KEY (CI_CAJ) REFERENCES CAJERA (CI_CAJ) CONSTRAINT FK_CI_CAJ_FACT; ALTER TABLE FACTURA ADD CONSTRAINT FOREIGN KEY (ID_PROD) REFERENCES PRODUCTO (ID_PROD) CONSTRAINT FK_ID_PROD_FACT; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea •ALTER TABLE ALTER TABLE COMPRA ADD CONSTRAINT FOREIGN KEY (CI_CLI) REFERENCES CLIENTE (CI_CLI) CONSTRAINT FK_CI_CLI_COMP; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Foránea •ALTER TABLE ALTER TABLE COMPRA ADD CONSTRAINT FOREIGN KEY (CI_CAJ, ID_PROD, FECHA) REFERENCES FACTURA (CI_CAJ, ID_PROD, FECHA) CONSTRAINT FK_FACT_COMP; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Clave Única • ALTER TABLE – En la tabla CLIENTE el atributo NÚMERO es único. – UNIQUE KEY • Controla que un atributo (o la combinación de atributos) tenga un único valor (CLAVE CANDIADATA). CANDIADATA ALTER TABLE CLIENTE ADD CONSTRAINT UNIQUE (NUMERO) CONSTRAINT UK_CLI; UK_CLI Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Eliminar un Atributo • ALTER TABLE – ELIMINAR: DROP • Agregamos un nuevo atributo – edad ALTER TABLE PERSONA ADD EDAD INTEGER; • No era necesario... ALTER TABLE PERSONA DROP EDAD; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula DROP TABLE Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo 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 / ISBO – EMT – CETP – 2015 – Leonardo 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 PRODUCTO CASCADE CONSTRAINTS; DROP TABLE Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Activar – Desactivar Constraints • Para habilitar Constraints: SET CONSTRAINTS FK_PROD ENABLED; • Para deshabilitar Constraints: SET CONSTRAINTS DISABLED; FK_PROD Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Renombrar • Renombrar: RENAME – Para cambiar el nombre de un atributo: RENAME COLUMN TABLA ATRIB TO NOM_NUEVO Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Renombrar • Renombrar: RENAME – Para cambiar el nombre de una tabla: RENAME TABLE nombre_tabla_vieja TO nombre_tabla_nueva; Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula D. D. L. Renombrar • Renombrar: RENAME – Para cambiar el nombre de una base de datos: RENAME DATABASE BD TO BD_NUEVA • La base de datos no puede ser la acutal (seleccionada). Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CASO DE ESTUDIO CREATE TABLE Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE PERSONA CREATE TABLE PERSONA ( 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE PER_TEL CREATE TABLE PER_TEL( CI INTEGER NOT NULL, TELEFONO CHAR(9) NOT NULL, FOREIGN KEY (CI) REFERENCES PERSONA (CI) CONSTRAINT FK_CI, PRIMARY KEY (CI,TELEFONO) CONSTRAINT PK_PER_TEL); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE CLIENTE CREATE TABLE CLIENTE( CI_CLI INTEGER NOT NULL, NUMERO INTEGER NOT NULL, UNIQUE (NUMERO) CONSTRAINT UK_CLI, FOREIGN KEY (CI_CLI) REFERENCES PERSONA (CI) CONSTRAINT FK_CI_CLI, PRIMARY KEY(CI_CLI) CONSTRAINT PK_CLIENTES); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE CAJERA CREATE TABLE CAJERA( CI_CAJ INTEGER NOT NULL, QUEBRANTO INTEGER CHECK (QUEBRANTO BETWEEN 100 AND 9000 ), FOREIGN KEY (CI_CAJ) REFERENCES PERSONA (CI) CONSTRAINT FK_CI_CAJ, PRIMARY KEY (CI_CAJ) CONSTRAINT PK_CAJERAS); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE IVA CREATE TABLE IVA( 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 / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE PRODUCTO CREATE TABLE PRODUCTO( 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 IVA (ID_IVA) CONSTRAINT FK_PROD, PRIMARY KEY (ID_PROD) CONSTRAINT PK_PRODUCTOS); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE FACTURAN CREATE TABLE FACTURA( 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 CAJERA (CI_CAJ) CONSTRAINT FK_CI_CAJ_FACT, FOREIGN KEY (ID_PROD) REFERENCES PRODUCTO (ID_PROD) CONSTRAINT FK_ID_PROD, PRIMARY KEY (CI_CAJ, ID_PROD, FECHA) CONSTRAINT PK_FACTURAN); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula CREATE COMPRAN CREATE TABLE COMPRA( 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 FACTURA (CI_CAJ, ID_PROD, FECHA) CONSTRAINT FK_FACT_COMP, FOREIGN KEY (CI_CLI) REFERENCES CLIENTE (CI_CLI) CONSTRAINT FK_CI_CLI_COMP, PRIMARY KEY (CI_CAJ, ID_PROD, FECHA) CONSTRAINT PK_COMPRAN); Sistemas de Bases de Datos II – ITS / ISBO – EMT – CETP – 2015 – Leonardo Carámbula