Documentacion postgresql

90

Transcript of Documentacion postgresql

Page 1: Documentacion postgresql
Page 2: Documentacion postgresql

Agosto 2009

Licencia de Documentacion

PostgreSql by Ing. Erika Veliz is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España License.

Page 3: Documentacion postgresql

Agosto 2009

¿Qué es PostgreSql?

Es un sistema de gestión de base de datos objeto-relacional de software libre, publicado bajo la licencia BSD.

Page 4: Documentacion postgresql

Agosto 2009

HistoriaEl Sistema Gestor de Bases de Datos Objeto-Relacionales conocido como PostgreSQL está derivado del paquete Postgres escrito en Berkeley.

El proyecto Postgres de Berkeley

Se inicia en la Universidad de Berkeley en 1977 por el Prof. Michael Stonebraker bajo el nombre Ingres como un ejercicio de aplicación de las teorías de los RDBMS.

La implementación del DBMS Postgres comenzó en 1986.

The Design of PostgresThe Postgres Data Model. The Design of the Postgres Rules System. The Postgres Storage System

Page 5: Documentacion postgresql

Agosto 2009

Historia1987 Sistema de Pruebas. ACM-SIGMOD→

Junio de 1989 Versión 1, descrita en The Implementation of →Postgres.

Junio de 1990 Versión 2, On Rules, Procedures, Caching and →Views in Database Systems)

1991 Versión 3, implementación para múltiples gestores de →almacenamiento, un ejecutor de consultas mejorado y un sistema de reescritura de reglas nuevo.

Page 6: Documentacion postgresql

Agosto 2009

Historia

1995 Postgres95 Andrew Y Jolly Chen →añadieron un intérprete de lenguage SQL a Postgres.

1996 Se elige un nuevo nombre, PostgreSQL, →para reflejar la relación entre el Postgres original y las versiones más recientes con capacidades SQL.

Page 7: Documentacion postgresql

Agosto 2009

Historia

2000, Red Hat, crea la Empresa Great Bridge para Comercializar PostgreSql.

2004, PostgreSQL 8.0, adopción en el mundo comercial, se le califico como el 5to DBMS mas popular en USA.

2005 Julio, PostgreSQL paso el test de Coverty Inspected, encontrando solo 20 errores en 775,000 lineas de código.

2006 Versión 8.1.4

Page 8: Documentacion postgresql

Agosto 2009

Características

Implementación del estándar SQL92/SQL99.

Soporta distintos tipos de datos

Incorpora una estructura de datos array.

Incorpora funciones de diversa índole

Page 9: Documentacion postgresql

Agosto 2009

Permite la declaración de funciones propias, así como la definición de disparadores.

Soporta el uso de índices, reglas y vistas.

Incluye herencia entre tablas.

Permite la gestión de diferentes usuarios, como también los permisos asignados a cada uno de ellos.

Características

Page 10: Documentacion postgresql

Agosto 2009

Características

ACID(Atomicity,Consistency,Isolation and Durability):

Atomicidad.Consistencia.Aislamiento.Durabilidad.

Page 11: Documentacion postgresql

Agosto 2009

CaracterísticasCorre en casi todos los principales sistemas operativos : Linux, Unix, BSDs, Mac OS, Beos,Windows, etc. (34)

Documentación muy bien organizada, pública y libre, con comentarios de los propios usuarios.

Comunidades muy activas, varias comunidades en castellano.

Bajo Costo de Propiedad Total y rápido Retorno de la Inversión Inicial.

Altamente adaptable a las necesidades del cliente.

Page 12: Documentacion postgresql

Agosto 2009

Arquitectura de PostgreSqlPostgres utiliza un simple modelo cliente/servidor de "proceso por usuario". Una sesión de Postgres consiste en los siguientes procesos Unix (programas) cooperando:

Page 13: Documentacion postgresql

Agosto 2009

Arquitectura de PostgreSql

Un proceso demonio supervisor (postmaster): gestiona los archivos de base de datos, acepta conexiones a la base de datos por aplicaciones y realiza acciones sobre la BD en nombre de los clientes . El servidor de BD se llama postgres.

Las aplicaciones de usuario final (frontEnd): Aplicación que desea realizar operaciones sobre la base de datos. Las Aplicaciones pueden ser de diversa natrualeza: Una herramienta de texto o consola, una aplicación gráfica, una interface Web.

Page 14: Documentacion postgresql

Agosto 2009

Arquitectura de PostgreSql

Page 15: Documentacion postgresql

Agosto 2009

Busca Información!

Donde? En el sitio Oficial.→

www.postgresql.orgPostgres-TutorialPostgres-UsuarioPostgres-ProgramadorPostgres-AdministradorManual de Referencia

Page 16: Documentacion postgresql

Agosto 2009

Acerca de ...

Esta guía se basará en PostgreSql 8.x

La conexión a la consola o prompt de linux como usuario (se identificará con el simbolo $)

La conexión a la consola o prompt de linux como usuario root (se identificará con el simbolo #)

Page 17: Documentacion postgresql

Agosto 2009

Acerca de ...La conexión al prompt de PostgreSql (se identificará así: postgres@usmaq-laptop:/home$)

La conexión a la consola interactiva de postgreSql (se identificará asi: =#)

Herramientas a utilizar: Prompt de PostgreSql

PgAdminIII

PhppgAdmin

Page 18: Documentacion postgresql

Agosto 2009

Empezando con PostgreSql

Para usar Postgres, algunos procesos los puede hacer cualquier usuario, y algunos los deberá realizar el administrador de la base de datos.

El administrador debe instalar PostgreSql e iniciar el servicio postmaster.

Page 19: Documentacion postgresql

Agosto 2009

Instalacion de PostgreSql

Conectarse a la consola de linux en debian

$ su

[su] password:

root@laptop-laptop:~#

Instalar PostgreSql:

#aptitude install postgresql-8.x

Page 20: Documentacion postgresql

Agosto 2009

Configuracion del ServicioArchivo de Configuracion:

pg_hba.conf: fichero de configuración de la autenticación de los clientes y usuarios y del acceso a las bases de datos del cluster.

Acceder al archivo, con ayuda de un editor de texto:#gedit /etc/postgresql/8.x/main/pg_hba.conf &

Page 21: Documentacion postgresql

Agosto 2009

Configuracion del ServicioEn la Seccion IPV4 local conections:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# IPv4 local connections:

host all all 127.0.0.1 md5

host all all 192.168.1.14/32 md5 conexión remota→

host administracion_publica admin 127.0.0.1 255.255.255.255 md5

Page 22: Documentacion postgresql

Agosto 2009

Configuracion del ServicioArchivo de Configuración

postgresql.conf: fichero de configuración principal, contiene la asignación a los parámetros que configuran el funcionamiento del servidor.

Acceder al archivo, con ayuda de un editor de texto:

#qedit /etc/postgresql/8.x/main/postgresql.conf &

Page 23: Documentacion postgresql

Agosto 2009

Configuracion del ServicioEn la seccion Conenections and authentication

#------------------------------------------------------------------------------

# CONNECTIONS AND AUTHENTICATION

#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*' # what IP address(es) to listen on;

# comma-separated list of addresses;

# defaults to 'localhost', '*' = all

# (change requires restart)

port = 5432 # (change requires restart)

Page 24: Documentacion postgresql

Agosto 2009

Entonación del Servicio

Como PostgreSql es un servicio que se encuentra en el directorio /etc/init.d, se debe proceder a reiniciar el servicio:

#/etc/init.d/postgresql-8.x restart

Page 25: Documentacion postgresql

Agosto 2009

Entonación del Servicio

Otras acciones fundamentales para el servicio de PostgreSql:

# /etc/init.d/postgresql-8.x start

# /etc/init.d/postgresql-8.x stop

# /etc/init.d/postgresql8.x restart

#/etc/init.d/postgresql-8.x reload

#/etc/init.d/postgresql-8.x force-reload

Page 26: Documentacion postgresql

Agosto 2009

Tipos de Datos en PostgreSqlTIPO DESCRIPCION

bool Valor lógico o booleano (true/false)

char(n) Cadena de caracteres, tamaño fijo.

varchar(n) Cadena de caracteres, tamaño variable.

date Fecha sin hora aaa-mm-dd

datetime aaaa-mm-dd hh:mm:ss

time hora en horas, minutos, segundos

bigint entero 8 byte

integer entero 4 byte

smallint entero 2 byte

decimal(p,q) número decimal con signo de p dígitos,

float número de punto flotante

Page 27: Documentacion postgresql

Agosto 2009

Tipos de Datos en PostgreSql Extendido

TIPO REPRESENTACION DESCRIPCION

box ((x1,y1)(x2,y2)) caja rectangular en el plano (izquierda,derecha)

cidr x.x.x.x dirección de red o de host en IPV4

macaddr xx:xx:xx:xx:xx:xx dirección MAC

serial identificador numerico unico

polygon ((x1,y1),...) trayectoria geometrica cerrada en el plano

circle ((x,y),r) círculo geometrico (centro, radio)

Page 28: Documentacion postgresql

Agosto 2009

Conexión a PostgreSql

Conectarse al manejador de base de datos desde la consola de linux:

# su postgres

postgres@maq1-laptop:/home$

postgres@maq1-laptop:/home$whoami

postgres

Page 29: Documentacion postgresql

Agosto 2009

Conexión a PostgreSql

Como superusuario postgres, se puede hacer lo que sigue:

Crear usuarios.

Crear bases de datos.

Listar bases de datos.

Borrar bases de datos.

Borrar usuarios.

Page 30: Documentacion postgresql

Agosto 2009

Conexión a PostgreSqlCrear Usuarios.

$createuser nombre_usuario [opciones]

Opciones:

-a, adduser el usuario podrá crear otros usuarios

-A, noadduser el usuario no podrá crear otros usuarios

-d, createdb el usuario podrá crear bases de datos

-D, nocreatedb el usuario no podrá crear bases de datoss

-P, pwprompt asignar una contraseña al nuevo usuario $man createuser

Page 31: Documentacion postgresql

Agosto 2009

Conexión a PostgreSql

Crear bases de datos.$createdb nombre_bd

$createdb bd1 $createdb bd2 -E LATIN1 -O postgres$createdb bd3 -O usuario$createdb h localhost U usuario_bd bd_del_usuario

$man createdb

Page 32: Documentacion postgresql

Agosto 2009

Conexión a PostgreSqlListar bases de datos.

$psql -l

Listado de base de datos

Nombre | Dueño | Codificación

-------------+----------+--------------

postgres | postgres | UTF8

said | admin | UTF8

said1 | admin1 | UTF8

saidpruebas | erika | UTF8

template0 | postgres | UTF8

template1 | postgres | UTF8

(6 filas)

Page 33: Documentacion postgresql

Agosto 2009

Conexión a PostgreSql

Borrar bases de datos

$dropdb nombre_bd$dropdb bd1$dropdb bd2 -u usuario_bd$dropdb otra_basededatos h localhost U usuario_propietario

$man dropdb

Page 34: Documentacion postgresql

Agosto 2009

Conexión a PostgreSqlBorrar usuarios

$dropuser [opciones] usuario_bd

Opciones:

-h host maquina del usuario

-p port puerto tcp o local en el que el servidor esta a la escucha

-w password clave de conexion

-u username usuario que invoca el borrado del usuario

-i interactive confirmacion antes de eliminar

-q que no muestre una respuesta al borrar el usuario$man dropuser

Page 35: Documentacion postgresql

Agosto 2009

Conexión Consola Interactiva de PostgreSql

$ psql template1

Bienvenido a psql 8.3.7, la terminal interactiva de PostgreSQL.

Teclee: \copyright para ver los términos de distribución

\h para ayuda sobre órdenes SQL

\? para ayuda sobre órdenes psql

\g o punto y coma («;») para ejecutar la consulta

\q para salir

template1=#

Page 36: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Crear Grupo.

CREATE GROUP: crea un grupo nuevo

CREATE GROUP name [WITH USER usuario]

$# \du

$# CREATE GROUP desarrolladores WITH USER pepe;

$# \du

DROP GROUP: borra el grupo de usuarios

$# DROP GROUP desarrolladores;

$# \du

Page 37: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

mibd=# CREATE USER said -P;

mibd=# CREATE GROUP desarrolladores with user said;

CREATE ROLE

mibd=# \du

Lista de roles

Nombre de rol | Superusuario | Crear rol | Crear BD | Conexiones | Miembro de

-----------------+--------------+-----------+----------+------------+-------------------

admin | sí | sí | sí | sin límite | {}

administrador | sí | sí | sí | sin límite | {}

desarrolladores | no | no | no | sin límite | {}

escuela | sí | sí | sí | sin límite | {}

postgres | sí | sí | sí | sin límite | {}

said | sí | sí | sí | sin límite | {desarrolladores}

tronco | sí | sí | sí | sin límite | {}

(7 filas)

mibd=#

Page 38: Documentacion postgresql

Agosto 2009

Administracion de una Base de datos

Crear un usuario para la Base de datos:$createuser usuario_bd -p

Crear una base de datos, donde el dueño sea usuario_bd

$createdb nombre_bd -O usuario_bd

Conectarse a la base de datos creada:$psql nombre_bd

Page 39: Documentacion postgresql

Agosto 2009

Administracion de una Base de datos

Ejecutando en el prompt de PostgreSql:

$createuser administrador -P

Ingrese la contraseña para el nuevo rol:

Ingrésela nuevamente:

¿Será el nuevo rol un superusuario? (s/n) s

postgres@maq1-laptop:/usr/local/bin$

Page 40: Documentacion postgresql

Agosto 2009

Administracion de una Base de datos

Ejecutando en el pormpt de PostgreSql:$ createdb administracion -O administrador

$ psql administracion

Bienvenido a psql 8.3.7, la terminal interactiva de PostgreSQL.

Teclee: \copyright para ver los términos de distribución

\h para ayuda sobre órdenes SQL

\? para ayuda sobre órdenes psql

\g o punto y coma («;») para ejecutar la consulta

\q para salir

administracion=#

Page 41: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Almacenamiento de Datos:PostgreSQL almacena los datos en el directorio /var/lib/postgresql/8.3/main/base . Los nombres de las tablas pertenecientes al sistema llevan el prefijo pg_.

El archivo PG_VERSION (presente en cada base de datos) contiene la version mayor con la que fue creada la base.

Al cambiar de versión de PostgreSQL es importante verificar que no haya sido cambiado el formato de algunas de estas tablas, en cuyo caso sera necesario respaldarlas antes de instalar una nueva version y luego volver a cargarlas.

Page 42: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Crear Esquemas.=#CREATE SCHEMA nombre_esquema

Crear Tablas dentro de Esquemas.=#CREATE TABLE nombre_esquema.nombre_tabla(campo1 tipo_dato1,campo2 tipo dato2, campo3 tipo_dato3,...,campoN tipo_datoN)

Page 43: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Ejecutando en la consola interactiva de PostgreSql:

Creando Esquema:

administracion=#CREATE SCHEMA personal

Creando Tabla dentro del Esquema.

administracion=#CREATE TABLE personal.personas(nombres varchar(50) not null,apellidos varchar(50) not null,ci varchar(10) not null, primary key(ci));

Page 44: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Insertar Registros en una tabla que pertenece a un esquema:

administracion-#INSERT INTO nombre_esquema.nombre_tabla(campo1,campo2,campo3)values('registro1','registro2','registro3');

En la consola interactiva de PostgreSql:administracion-#INSERT INTO personal.personas(nombres,apellidos,ci)values('Erika del Valle','Veliz Barreto','V-14800683');

Page 45: Documentacion postgresql

Agosto 2009

Administracion de una Basede Datos

Funciones

de Agregaciónmax();

min();

avg();

count();

sum();

Clausulas

WHERE

GROUP BY

ORDER BY

HAVING

Page 46: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Practica:Crear una base de datos con el nombre: bdescuela

Crear 1 esquema para la base de datos:nombre_esquema: registro_alumnos

Page 47: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Crear 3 tablas para el esquema: 1.-denominada alumnos:

Con los siguientes campos: (id, nombres,apellidos,ci,direccion,fecha_nacto,sexo,num_telefono,email,grado)

2.-denominada usuariosCon los siguientes campos: id,nombre,clave.

3-denominada notaCon los siguientes campos: id,nota.

Page 48: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Insertar 20 registros en las tablas del esquema, a través de la consola interactiva de PostgreSql.

Consultar los registros de las tablas generadas:

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start ] [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]

Page 49: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Actualizar Registros (Update)

UPDATE [ ONLY ] table [ [ AS ] alias ]

SET { column = { expression | DEFAULT } |

( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]

[ FROM fromlist ]

[ WHERE condition | WHERE CURRENT OF cursor_name ]

[ RETURNING * | output_expression [ AS output_name ] [, ...] ]

Borrar Registros (Delete)

DELETE FROM [ ONLY ] table [ [ AS ] alias ]

[ USING usinglist ]

[ WHERE condition | WHERE CURRENT OF cursor_name ]

[ RETURNING * | output_expression [ AS output_name ] [, ...] ]

Page 50: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Unir Tablas

SELECT a.cn, b.cn a LEFT JOIN b ON a.c1=b.c1 AND a.c2=b.c2

AND a.c3=b.c3

#$ SELECT * FROM nombre_tabla1 LEFT JOIN nombre_tabla2 ON

nombre_tabla1.campo1=nombre_tabla2.campo1;

#$ SELECT * FROM nombre_tabla1 RIGHT JOIN nombre_talba2 ON

nombre_tabla2.campo1=nombre_tabla1.campo1;

Page 51: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Descripción: cambia la definición de una tabla

Sintaxis:

ALTER TABLE [ ONLY ] nombre [ * ] acción [, ... ]

donde acciónes es una de:

ADD [ COLUMN ] columna tipo [ restricción_de_columna [ ... ] ]

DROP [ COLUMN ] columna [ RESTRICT | CASCADE ]

ALTER [ COLUMN ] columna TYPE type [ USING expresión ]

ALTER [ COLUMN ] columna SET DEFAULT expresión

Page 52: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Para alterar el nombre de un campo se hace de la siguiente forma:

$# ALTER TABLE nombre_tabla RENAME nombre_campo TO nombre_nuevo_campo;

Para colocar que el campo sea NULL o NOT NULL o un valor por defecto

ALTER TABLE nombre_tabla ALTER nombre_campo DROP NOT NULL;ALTER TABLE nombre_tabla ALTER nombre_campo SET NOT NULL;ALTER TABLE nombre_tabla ALTER nombre_campo SET DEFAULT 'valorpor defecto';ALTER TABLE nombre_tabla ALTER COLUMN nombre_campo DROP DEFAULT;

Page 53: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Respaldar bases de datos:$ pg_dump mydb > db.sql

$ pg_dump -Fc mydb > db.dump

$ pg_dump -d -i -O -x <mydb> -f bd_resp.sql

$ pg_dump -Fc mydb > db.dump

$ pg_dump mydb > /tmp/db.txt

Revisar:man pg_dump

Page 54: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Restaurar bases de datos:$ pg_restore -C -d postgres db.dump

$ pg_restore -d newdb db.dump

$ pg_restore -d bdnueva /tmp/db.tar

$ psql d db f /tmp/db.txt

$ psql f /tmp/db.out

$ psql <db> -q -f bd_rest.sql

Revisar:man psql, man pg_restore.

Page 55: Documentacion postgresql

Agosto 2009

Reglas de Integridad en PostgreSql

Restricciones: Permiten especificar condiciones que deberan cumplir las tablas o columnas para mantener la integridad de sus datos.

null y not null.

unique.

primary key.

references y foreign key.

check.

Page 56: Documentacion postgresql

Agosto 2009

Reglas de Integridad en PostgreSql

Reglas de Integridad Referencial.En la Clausula ON DELETE y ON UPDATE se pueden específicar:

set nullset defaultcascadeRestrict

Page 57: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

CREATE TABLE productos(id_producto serial,nombre varchar(80) not null,precio float not null check(precio>0), primary key(id_producto));

mibd=# \d productos; Tabla «public.productos» Columna | Tipo | Modificadores -------------+-----------------------+----------------------------------------------------------------- id_producto | integer | not null default nextval('productos_id_producto_seq'::regclass) nombre | character varying(80) | not null precio | double precision | not nullÍndices: «productos_pkey» PRIMARY KEY, btree (id_producto)Restricciones CHECK: «productos_precio_check» CHECK (precio > 0::double precision)

Page 58: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

=#create table persona(nombre varchar(40) not null, ci varchar(12) not null primary key, conyugue varchar(40) unique)

Page 59: Documentacion postgresql

Agosto 2009

Administracion de una Basede Datos

=#create table Mascota(nombre varchar(20) not null,dueño varchar(20) foreign key dueño references persona(ci) );

=#create tabla Mascota(nombre varchar(40) not null, dueño varchar(20) references persona on delete set null);

Page 60: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Ejemplo de Sintaxis

CREATE TABLE t1 ( a integer PRIMARY KEY, b integer, c integer,

FOREIGN KEY (b, c) REFERENCES other_table (c1, c2));

Page 61: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Crear un Index

Descripción: define un nuevo índiceSintaxis:

CREATE [ UNIQUE ] INDEX name ON table [ USING method ]

( { column | ( expression ) } [ opclass ] [, ...] ) [ TABLESPACE tablespace ] [ WHERE predicate ]

En resumen:

CREATE INDEX nombre_indice ON nombre_tabla (campo de la tabla que se usara como indice);

Page 62: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

Crear Vistas.CREATE VIEW -> define una nueva vista.

CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ] AS query

Page 63: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

mibd=# CREATE VIEW myvista as select * from usuarios;

CREATE VIEW

mibd=# SELECT * from myvista;

id | nombre | clave

----+--------+--------

1 | eveliz | 123456

(1 fila)

Page 64: Documentacion postgresql

Agosto 2009

Administracion de una Base de Datos

mibd=# CREATE VIEW vistanueva as select a.nombres,a.apellidos,a.direccion,a.num_tlf,a.email, a.ci,n.nota from alumnos a,nota n where(a.ci=n.ci and n.nota =20);

CREATE VIEW

mibd=# SELECT * from vistanueva;

Page 65: Documentacion postgresql

Agosto 2009

Orientacion a ObjetosEl propósito de la Orientación a Objetos es desarrollar software que modelen

particularmente un esquema del mundo real.

Entre más atributos y acciones, mayor será la similitud del modelo con la

realidad.

Un objeto es una instancia de clase que posee una estructura; es decir, tiene

atributos (propiedades) y realiza acciones. Las acciones son todas las tareas

que puede realizar el Objeto.

Una clase, más que una categorización es una plantilla para fabricar objetos.

Page 66: Documentacion postgresql

Agosto 2009

Abstracción: Se refiere a quitar atributos o propiedades, para dejar sólo las

necesarias.

Herencia: Un objeto, por ser una instancia de una clase posee las características

de la clase que proviene, a esto se le conoce como herencia. Un objeto, no solo

hereda de una clase, sino que una clase también puede heredar de otra.

Polimorfismo: Una operación puede tener el mismo nombre en distintas clases y

funcionar diferente en cada una.

Encapsulamiento: Es ocultar la funcionalidad de un objeto.

Orientacion a Objetos

Page 67: Documentacion postgresql

Agosto 2009

Abstracción: Se refiere a quitar atributos o propiedades, para dejar sólo las

necesarias

Herencia: Un objeto, por ser una instancia de una clase posee las características

de la clase que proviene, a esto se le conoce como herencia. Un objeto, no solo

hereda de una clase, sino que una clase también puede heredar de otra.

Polimorfismo: Una operación puede tener el mismo nombre en distintas clases y

funcionar diferente en cada una.

Encapsulamiento: Es ocultar la funcionalidad de un objeto.

Orientacion a Objetos

Page 68: Documentacion postgresql

Agosto 2009

Envío  de  Mensajes:  Los  objetos  interectuan  en  conjunto  y  esto  es 

posible a través del envío de mensajes. Un objeto le envía un mensaje a 

otro para realizar un operación y el receptor se encarga de ejecutarla.

Asociación:  Un  objeto  puede  estar  asociado  a  otro,  puesto  que  se 

relacionan  entre  sì.  O  una  clase  puede  estar  asociada  con  otras  clases 

distintas.

Agregación:  Es cuando un objeto se  conforma de una combinación de 

varios tipos de objetos.

Orientacion a Objetos

Page 69: Documentacion postgresql

Agosto 2009

Una Composición es un tipo de agregación que está

relacionado con su objeto agregado y sus objetos

componentes. En una composición el componente puede

morir antes del objeto; pero si destruyes el objeto

compuesto se destruirán todos sus componentes.

Dependencia: una clase utiliza a otra.

Orientacion a Objetos

Page 70: Documentacion postgresql

Agosto 2009

PostgreSql y OO

1er Enfoque 2º Enfoque

Los Objetos son Valores Tuplas

Las Clases son dominios Tablas

Page 71: Documentacion postgresql

Agosto 2009

PostgreSql y OO

En la OO el oid, es el mecanismo que permite hacer referencia a una objeto desde otro.

Dado que las tablas son clases, pueden definirse herencia de otras.

Las tablas hijas, heredan todos los atributos de la tabla padre.

Page 72: Documentacion postgresql

Agosto 2009

PostgreSql y OO

Creando Clases

=# CREATE TABLE persona(nombre varchar(40) not null,direccion varchar(80) not null)with oids

=# CREATE TABLE telefono(tipo char(10) not null,numero char(12) not null propietario oid)

Page 73: Documentacion postgresql

Agosto 2009

PostgreSql y OO

Enlazar Clases

=#select oid,nombre,direccion from persona;

=#insert into telefono(tipo,numero,propietario)values('movil','0271-23511761','137813')

=#select * from telefono t join persona p on (t.propietario=p.oid)

Page 74: Documentacion postgresql

Agosto 2009

PostgreSql y OO

Herencia

=# CREATE TABLE estudiante(carrera varchar(50) not null,grupo char not null,grado int)inherits(persona);

Page 75: Documentacion postgresql

Agosto 2009

PostgreSql y OO

Array : Permite el almacenamiento de más de un valor del mismo tipo en la misma columna.

=#CREATE TABLE alumnos(nombre varchar(30) parciales int [3]);

=#INSERT INTO alumnos VALUES('Marta','{16,19,18}');

Page 76: Documentacion postgresql

Agosto 2009

PostgreSql y la OOFunciones: Permite almacenar procedimientos en la base de datos (store procedure) que podran lanzarse cuando convenga.

CREATE [ OR REPLACE ] FUNCTION

nombre ( [ [ mode_arg ] [ nombre_arg ] tipo_arg [, ...] ] )

[ RETURNS tipo_retorno ]

{ LANGUAGE nombre_lenguaje

| IMMUTABLE | STABLE | VOLATILE

| CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT

| [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER

| COST costo_ejecución

| ROWS núm_filas_resultado

| SET parámetro_configuración { TO valor | = valor | FROM CURRENT }

| AS 'definición'

| AS 'archivo_objeto', 'símbolo_link'

} ...

[ WITH ( atributo [, ...] ) ]

Page 77: Documentacion postgresql

Agosto 2009

PostgreSql y OO

Disparadores: Permite ejecutar las funciones de forma automática, cuando cierto evento tenga lugar en cierta tabla.

=#CREATE TRIGER nombre_trigger {BEFORE|AFTER} {INSERT|UPDATE| DELETE [OR...] } ON nombre_tabla [FOR EACH] {ROW|STATEMENT} EXECUTE PROCEDURE nombre_funcion

Page 78: Documentacion postgresql

Agosto 2009

Funciones y DisparadoresEjemplo.

$createlang plpgsql nombre_bd;

$psql nombre_bd;

=#CREATE FUNCTION suma(integer, integer) returns

=#as 'BEGIN return $1+$2;'end;

=#language 'plpgsql';

=#SELECT suma(1,8);

Page 79: Documentacion postgresql

Agosto 2009

Funciones y Disparadores

Ejemplo:

$createdb test -O curso;

test=#CREATE LANGUAGE plpgsql;

=# CREATE TABLE numeros(numero bigint not null,cuadrado bigint not null,raiz2 float, raiz3 float, primary key(numero));

Page 80: Documentacion postgresql

Agosto 2009

Funciones y DisparadoresEjemplo

=# CREATE FUNCTION proteger_datos()

=#RETURNS TRIGGER AS $proteger_datos$

=#DECLARE

=#BEGIN

=#RETURN NULL;

=#END;

=#$proteger_datos$ LANGUAGE 'plpgsql';

Page 81: Documentacion postgresql

Agosto 2009

Funciones y Disparadores

Ejemplo

=# CREATE TRIGGER proteger_datos -#BEFORE DELETE

-#ON numeros FOR EACH ROW

-#EXECUTE PROCEDURE proteger_datos();

Page 82: Documentacion postgresql

Agosto 2009

Funciones y Disparadores

Ejemplo

=# CREATE TRIGGER rellenar_datos -#BEFORE INSERT OR UPDATE

-# ON numeros FOR EACH ROW

-# EXECUTE PROCEDURE rellenar_datos();

Page 83: Documentacion postgresql

Agosto 2009

Funciones y DisparadoresEjemplo

=# CREATE FUNCTION rellenar_datos()

-#RETURNS TRIGGER AS $rellenar_datos$

-#DECLARE BEGIN

-#NEW.cuadrado := power(NEW.numero,2);

-#NEW.cubo:=power(NEW.numero,3);

-#NEW.raiz2:=sqrt(NEW.numero);

-#NEW.raiz3:=cbrt(NEW.numero);

-#RETURN NEW;

-#END;

-#$rellenar_datos$ LANGUAGE 'plpgsql';

Page 84: Documentacion postgresql

Agosto 2009

Herramientas para Administrar PostgreSql

PgAdminIII

Page 85: Documentacion postgresql

Agosto 2009

Herramientas para Administrar PostgreSql

Page 86: Documentacion postgresql

Agosto 2009

Herramientas para Administrar PostgreSql

Page 87: Documentacion postgresql

Agosto 2009

Herramientas para Administrar PostgreSql

Phppgadmin

Page 88: Documentacion postgresql

Agosto 2009

Herramientas para Administrar PostgreSql

Haga uso de la base de datos del SAID

Trabajar con las tablas del Esquema Organismos.

Realice procesos de manipulacion de datos

Page 89: Documentacion postgresql

Agosto 2009

A trabajar!!!!.......

Contactame:[email protected]

0424-7814375/0416-1800882

http://eveliz.wordpress.com

Diseño de Diapositiva: Ing. Erika Veliz

Page 90: Documentacion postgresql

Agosto 2009

Muchas Gracias!!