Documente Academic
Documente Profesional
Documente Cultură
Ahora vamos a elegir los tipos de datos para cada atributo de cada relacin tratada en los capitulos anteriores. . Para el primer ejemplo tenamos el siguiente esquema:
PROVEEDOR(Codproveedor, ruc, razon, direccion) SUMINISTRO(codsuministro, descripcion, medida, stockactual, cuenta) CUENTA_CONTABLE(cuenta, subcta, clase, descripcion) INGRESO(numero, fecha, codprovedor, moneda, tipocambio) DETA_INGRESO(numero, codsuministro,cantidad, precio)
Relacin proveedor
Codproveedor: El codigo de un proveedor nos servir para identificarlo, puede ser un INT2. RUC: El RUC de una persona natural o jurdica est comprendida por 11 dgitos, para ello utilizaremos CHAR(15) Razn: Representa la razn social del proveedor, la que puede tomar el valor de VARCHAR(40). Direccin: Representa la direccin de un proveedor, la que tambin puede tomar el valor VARCHAR(50).
Relacin suministro
Codsuministro: El cdigo de suministro puede ser un INT2 Descripcion: La descripcin de un suministro puede ser una tipo de dato VARCHAR(40). Medida: La medida de un suministro puede ser expresada como un CHAR(3), Stockactual: Muestra la cantidad actual de suministros que hay en el almacn, puede ser un FLOAT4. Cuenta: Es la clave fornea y toma el mismo valor de la cuenta contable INT2.
Relacin Cuenta_Contable
Cuenta: Representa la cuenta contable de un suministro, toma el valor de INT2. Subcta: Representa la subcuenta contable, toma el valor INT2. Clase: Indica a que clase pertenece un suministro, toma el valor de VARCHAR(30).
Relacin Ingreso
Numero: Representa el numero de ingreso de suministros al almacen, toma el valor de INT2. Fecha: Representa la fecha de ingreso, toma el valor DATE. Moneda: Indica si es soles o dlares, toma el valor CHAR. Tipocambio: Indica el valor de dlar diario, toma el valor FLOAT4. Codproveedor: Indica el codigo del proveedor, toma el valor INT2
Relacin Deta_Ingreso
Numero: Representa el numero de ingreso de suministros al almacen, toma el valor de INT2. Codsuministro: Es el cdigo de suministro, y toma el valor anterior INT2. Cantidad: Es la cantidad de suministros ingresados al almacn INT2. Precio: Es el precio con que ingresa al almacn FLOAT4.
EJEMPLO 2
ALUMNO(Codalumno, Nombre, Escuela ,Ciclo) LIBRO(Codlibro, registro, titulo, paginas, codeditorial, codespecialidad) ESPECIALIDAD(codespecialidad, Nombre) AUTOR(Codautor, Nombre, email) EDITORIAL(codeditorial, Nombre, Direccin, Telfono) PRESTA(numero, Codalumno, Fecha_presta,Fecha_devolucin, observacin) DETA_PRESTA(numero, codlibro) ESCRITO_POR(Codlibro, Codautor)
Relacin Alumno
Codalumno: Cdigo de un alumno, toma el valor INT2. Nombre: Toma el valor VARCHAR(40) Escuela: Toma el valor VARCHAR(30) Ciclo: Toma el valor VARCHAR(3)
Relacin Libro
Codlibro: Cdigo de Libro, toma el valor INT2. Registro: Tambin toma el valor INT2. Titulo: Puede tomar el valor VARCHAR(50) Paginas: Toma el valor INT2. Codeditorial: Cdigo de Editorial, toma el valor INT2. Codespecialidad: Es el codigo de la especialidad. Toma el valor INT2.
Relacin Especialidad
Relacin Autor
Codautor: Cdigo de autor, toma el valor INT2. Nombre: Puede tomar el valor VARCHAR(50) Email: Puede tomar el valor VARCHAR(30)
Relacin Editorial
Codeditorial: Cdigo de editorial, toma el valor INT2. Nombre: Puede tomar el valor VARCHAR(50) Direccin: Puede tomar el valor VARCHAR(50) Telfono: Puede tomar el valor VARCHAR(15)
Relacin Presta
Numero: Es el nmero de prstamo INT2 Codalumno: Toma el valor INT2. Fecha_presta: Toma el valor DATE. Fecha_devolucin: Toma el valor DATE. Observacin: Se necesita espacio, VARCHAR(100)
Relacin Deta_Presta
Escrito_por
BASE DE DATOS
Las bases de datos se crean dentro de PSQL con el comando Create database.
El motor de PostgreSQL debe estar corriendo y el usuario que da el comando debe ser el superusuario de PostgreSQL, o haber obtenido privilegio por parte del superusuario para crear bases de datos.
Para ingresar a Psql selecciona postgreSQL 8.1\ psql to postgres, en la ventana que se muestra ingresa la clave. Luego se mostrar la pantalla de bienvenida de plsql.
PostgreSQL permite crear cualquier nmero de bases de datos en un servidor, el usuario que crea una base de datos ser automticamente el administrador de esa base de datos. Los nombres de las bases de datos deben comenzar por una letra y estar limitadas a una longitud total de 32 caracteres.
Para crear una base de datos llamada "Logistica1 dentro de psql escribe:
Ventana de Comandos
Para ingresar a PostgreSQL utilizando una base de datos postgres, por medio de la ventana de comandos selecciona postgreSQL 8.1\ command prompt:
Por ejemplo, puedes obtener ayuda sobre la sintaxis de varios comandos SQL de PostgreSQL por medio de:
Logistica1=# \h
Logistica1=# \q
En los pedidos SQL se puede usar libremente espacio en blanco (espacio, tabuladores nuevas lneas). Los comentarios de una lnea se indican con . Para comentarios de varias lneas dentro de una lnea se usa /* */.
ROLES O GRUPOS
DROP ROLE
Elimina el rol de grupo especificado de la base de datos. Los usuarios del grupo no se eliminan.
Ejemplo:
USUARIOS
Crea un rol de usuario con una palabra clave, cuya cuenta es vlida hasta el final 1 de Mayo del 2007.
Crea una cuenta con la que el usuario pueda crear bases de datos:
DROP ROLE
Retira de la base de datos el usuario dado. No retira tablas, vistas u otros objetos que pertenezcan al usuario. Si el usuario es dueo de una base de datos, se producir un error.
Ejemplo:
TABLAS
CREATE TABLE
Introducir una nueva clase o tabla en la base de datos actual. La tabla ser poseda por el usuario que introduce la sentencia.
Clusula DEFAULT
Asigna un valor por defecto a un campo. El tipo de dato de un valor por defecto debe corresponder al tipo de dato de la definicin del campo.
Ejemplo:
Puedes asignar un valor constante como valor por defecto para los siguientes campos de una tabla:
Clausula CONSTRAINT
Restricciones de campo.
Es una restriccin de integridad definida como parte de la definicin de campo, y lgicamente se convierte en una restriccin de tabla nada ms al ser creada.
NOT NULL
Especifica una regla que obliga que un campo contenga nicamente valores no nulos. sta es nicamente una restriccin de campo, y no se permite como restriccin de tabla.
Ejemplo:
UNIQUE
Especifica una regla que obliga a un grupo de uno o ms campos de una tabla a contener valores nicos.
PostgreSQL crea automticamente un ndice nico por cada restriccin UNIQUE, para asegurar la integridad de los datos.
Ejemplo:
Define una restriccin de campo UNIQUE para la tabla suministro2. Las restricciones de campo UNIQUE solo son definidas sobre un campo de la tabla:
PRIMARY KEY
Especifica que un campo de una tabla solamente puede contener valores nicos (no duplicados) y no nulos.
La restriccin de clave primaria, debe nombrar un conjunto de campos que no sean contenidos por ninguna otra restriccin UNIQUE definidos por la misma tabla, ya que producira una duplicacin de indices equivalentes y una sobrecarga adicional en tiempo de ejecucin.
Ejemplo:
CHECK
Ejemplo:
Define una restriccin de campo CHECK, para que el stock actual de un suministro sea mayor a 10.
Restricciones de tabla.
Es una restriccin de integridad definida sobre uno o ms campos de una tabla base. Las cuatro variaciones de restricciones de tabla son:
UNIQUE
CHECK
Ejemplo:
PRIMARY KEY
Ejemplos:
FOREIGN KEY
Ejemplo:
DROP TABLE
Ejemplo:
INDICES
CREATE INDEX
Los ndices se utilizan principalmente para incrementar el rendimiento de una base de datos. Sin embargo, su uso inapropiado dar lugar a una base de datos ms lenta.
Ejemplo:
DROP INDEX
Ejemplo:
SECUENCIAS
CREATE SEQUENCE
Introducir una nueva secuencia generadora de nmeros dentro de la base de datos actual.
Ejemplo:
Crea una secuencia ascendente llamada correlativo, comenzando en 101 y con un incremento de 1:
DROP SEQUENCE
Ejemplo:
SENTENCIAS DE MANIPULACION
INSERT
Ejemplo:
SELECT
Devuelve registros de una o ms tablas, los cuales son condicionados de acuerdo a la condicin especificada con WHERE.
Ejemplos:
Ordena los resultados individuales de acuerdo con los contenidos de la segunda columna.
UPDATE
Cambia el valor de las columnas especificadas por todas las filas que satisfacen la condicin dada.
Ejemplo:
Modifica la descripcin del suministro ANILLA, por ANILLA SIMPLE en la columna descripcin.
DELETE
Ejemplos:
TRUNCATE es una extensin de PostgreSQL, el cual provee un mecanismo ms rpido para borrar todas las filas de una tabla.
TRUNCATE
Remueve rpidamente todas las filas de una tabla. Tiene el mismo efecto que el DELETE pero al no recorrer la tabla resulta ms rapido. Es ms efectivo en tablas grandes.
Ejemplo:
CREATE TABLE AS
Permite a una tabla, ser creada a partir del contenido de una consulta.
Ejemplo:
Crea una tabla accesorios, a partir de la consulta de suministros que tienen cuenta=26210
FUNCIONES
CREATE FUNCTION
Ejemplo:
Crea una funcin de incremento que reciba como parmetro un entero, y retorne tambin el nmero aumentado en 1, utilizando el lenguaje psql:
DROP FUNCTION
Ejemplo:
VISTAS
CREATE VIEW
Ejemplo:
Crea una vista de los suministros cuya unidad de medida sea PZA
DROP VIEW
Ejemplo:
TRIGGERS O DISPARADORES
CREATE TRIGGER
Ejemplos:
Comprueba si el cdigo de cuenta especificado existe en la tabla cuenta_contable antes de aadir o actualizar una fila en la tabla suministro.
CREATE TRIGGER existe_cuenta BEFORE INSERT OR UPDATE ON suministro FOR EACH ROW EXECUTE PROCEDURE check_primary_key (' cuenta', 'cuenta_contable', ' cuenta');
Antes de cancelar una cuenta o de actualizarla, borra cada referencia en la tabla suministro:
CREATE TRIGGER existe_cuenta2 BEFORE DELETE OR UPDATE ON cuenta_contable FOR EACH ROW EXECUTE PROCEDURE check_foreign_key (1, 'CASCADE', 'cuenta', 'suministro', 'cuenta');
DROP TRIGGER
Ejemplo:
CURSORES
BEGIN
Logistica1=# BEGIN;
DECLARE
FETCH
Se permite especificar nmeros negativos en el contador. Un nmero negativo es equivalente a modificar el sentido de las palabras FORWARD y BACKWARD. Por ejemplo: FORWARD -1 es igual a BACKWARD 1.
Los cursores slo se deben usar dentro de transacciones, ya que los datos que almacenan abarcan mltiples consultas de usuario.
CLOSE
PostgreSQL no tiene un estado de cursor OPEN expcito; un cursor se considera abierto cuando es declarado. Utiliza el estado DECLARE para declarar un cursor.
COMMIT
Realiza la transaccin actual. Todos los cambios realizados por la transaccin son visibles a las otras transacciones, y se garantiza que se conservan si se produce una cada de la mquina.
END
ROLLBACK
Deshace la transaccin actual y provoca que todas las modificaciones originadas por la misma sean descartadas.
Ejemplo:
Declara un cursor que contenga los suministros de stock actual > a 12.
COMANDO VACUUM
Sirve para dos propsitos en PostgreSQL como medio para reclamar almacenamiento, y tambin para recolectar informacin para el optimizador.
Ejemplo:
El siguiente es un ejemplo de la ejecucin del comando VACUUM en la tabla suministro de la base de datos Logistica1:
PRIVILEGIOS
Puedes escribir la siguiente sentencia para obtener ms informacin sobre los permisos de los objetos existentes:
GRANT
Permite al creador de un objeto, dar permisos especficos a todos los usuarios (PUBLIC) o a un cierto usuario o grupo.
Ejemplo:
REVOKE
Permite al creador de un objeto revocar permisos asignados anteriormente a todos los usuarios (mediante PUBLIC) o a un usuario o a un grupo.
Ejemplos: