Sunteți pe pagina 1din 30

EJEMPLO 1

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).

Descripcion: Indica la descripcin de la cuenta contable, toma el valor de VARCHAR(50).

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

Trabajando con este nuevo esquema:

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

Codespecialidad: Toma el valor INT2. Nombre: Puede tomar el valor VARCHAR(30)

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

Numero: Es el nmero de prstamo INT2 Codlibro: Toma el valor INT2.

Escrito_por

Codlibro: Toma el valor INT2. Codautor: Toma el valor INT2.

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.

Puedes inicializar el servidor, dando clic en PostgreSQL 8.1\Start Service.

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:

Para crear una nueva base de datos, escribe:

Acceso a una Base de Datos

Puedes acceder a la base de dsatos Logistica1, ingresa los siguientes comandos:

Por ejemplo, puedes obtener ayuda sobre la sintaxis de varios comandos SQL de PostgreSQL por medio de:

Logistica1=# \h

Para salir de psql, escribe

Logistica1=# \q

Psql finalizar y regresar al shell de comandos.

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 /* */.

Destruccin de una Base de Datos

Para destruir una base de datos usa el siguiente comando:

ROLES O GRUPOS

CREATE ROLE / CREATE GROUP

Permite crear un nuevo rol de grupo en la base de datos.

Crea un rol de grupo vacio:

Crea un rol de grupo con miembros:

Crea un rol de grupo con privilegios de crear base de datos

DROP ROLE

Elimina el rol de grupo especificado de la base de datos. Los usuarios del grupo no se eliminan.

Ejemplo:

Logistica1=# DROP ROLE sistemas;

USUARIOS

CREATE ROLE .. LOGIN / CREATE USER

Crea un nuevo rol de usuario de base de datos

Crea un rol de usuario:

Crea un rol de usuario con palabra clave:

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:

Para eliminar la cuenta de un usuario:

Logistica1=# DROP ROLE richard;

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

Una restriccin es una regla con nombre

Existen dos maneras de definir restricciones de integridad:

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.

Las restricciones de campo disponibles son:

NOT NULL UNIQUE CHECK PRIMARY KEY

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:

Definir dos restricciones de campo NOT NULL en la tabla suministro1:

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:

Define una restriccin de campo PRIMARY KEY para la tabla suminstro4.

CHECK

Especifica una restriccin sobre los valores permitidos en un campo.

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 PRIMARY KEY FOREIGN KEY

UNIQUE

CHECK

Define una restriccin de tabla CHECK:

Ejemplo:

PRIMARY KEY

Es similar a la respectiva restriccin de campo, con la posibilidad de extenderla a mltiples columnas.

Ejemplos:

Restriccin Primary Key para la tabla proveedor.

Restriccin Primary Key para la tabla ingreso.

Restriccin Primary Key para la tabla deta_ingreso con dos columnas:

FOREIGN KEY

Se refiere a la clave ajena proveniente de otra tabla.

Ejemplo:

Crea las tablas cuenta_contable y suministro:

DROP TABLE

Elimina tablas de una base de datos.

Ejemplo:

Para destruir la tabla suministro1 escribe:

Logistica1=# DROP TABLE suministro1;

INDICES

CREATE INDEX

Construye un ndice en la tabla especificada.

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:

Para crear un ndice con el campo descripcion en la tabla suministro, escribe:

DROP INDEX

Elimina un indice existente del sistema de base de datos.

Ejemplo:

Este comando eliminar el ndice idx_suministro:

Logistica1=# DROP INDEX idx_suministro;

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:

Selecciona el siguiente nmero de esta secuencia:

DROP SEQUENCE

Quita una secuencia generadora de nmeros de la base de datos.

Ejemplo:

Para quitar la secuencia serial de la base de datos:

Logistica1=# DROP SEQUENCE correlativo;

SENTENCIAS DE MANIPULACION

INSERT

Permite la insercin de nuevas filas en una clase o una tabla.

Ejemplo:

Inserta filas en la tabla cuenta_contable:

Utiliza una secuencia en una sentencia INSERT.

SELECT

Devuelve registros de una o ms tablas, los cuales son condicionados de acuerdo a la condicin especificada con WHERE.

Ejemplos:

Selecciona las cuentas distintas de la tabla cuenta_contable y ordnala de forma descendente.

Obtener la cantidad de suministros por determinada cuenta.

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

Borra las filas que satisfacen la clasula WHERE de la tabla especificada.

Ejemplos:

Borra los suministros cuya unidad de medida sea diferente de PZA

Borra completamente la tabla suministro2.

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:

Trunca la tabla suministro3:

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

Permite crear una nueva funcin en una Base de datos.

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

Elimina una funcin.

Ejemplo:

Esta orden elimina la funcin creada anteriormente.

Logistica1=# DROP FUNCTION incremento(integer);

VISTAS

CREATE VIEW

Construye una tabla virtual. Esta vista no se materializa fsicamente.

Ejemplo:

Crea una vista de los suministros cuya unidad de medida sea PZA

DROP VIEW

Elimina una vista.

Ejemplo:

Esta orden elimina la vista creada anteriormente.

Logistica1=# DROP VIEW sum_piezas;

TRIGGERS O DISPARADORES

CREATE TRIGGER

Crea un nuevo disparador en la base de datos actual.

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

Borrar todas las referencias existentes a la definicin de un disparador.

Ejemplo:

Destruye el disparador existe_cuenta en la tabla suministro:

Logistica1=# DROP TRIGGER existe_cuenta ON suministro;

CURSORES

BEGIN

Para comenzar una transaccin:

Logistica1=# BEGIN;

DECLARE

Define un cursor para acceso a una tabla

FETCH

Permite devolver filas usando un cursor.

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

Libera los recursos asociados con un cursor abierto.

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

END es un sinnimo de PostgreSQL para COMMIT. Lleva a cabo la transaccin actual

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:

Puedes observar que no se ha definido ningn tipo de privilegios actualmente.

GRANT

Permite al creador de un objeto, dar permisos especficos a todos los usuarios (PUBLIC) o a un cierto usuario o grupo.

Ejemplo:

Concede privilegios de insercin a todos los usuarios de la tabla suministro:

Concede todos los privilegios al usuario 'richard' sobre la vista 'sum_piezas':

Concede el privilegio de seleccin al grupo 'sistemas' sobre la tabla 'cuenta_contable':

Ahora verifica los permisos asignados:

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:

Revoca el privilegio de insercin a todos los usuarios en la tabla suministro:

Revoca todos los privilegios al usuario richard en la vista sum_piezas:

Revoca el privilegio de seleccin al grupo sistemas en la tabla cuenta_contable:

S-ar putea să vă placă și