
El anterior ejemplo corresponde al modelo relacional de un sistema para la administración de proyetos, sus intervinientes, recursos, participación y aportes, sobre el que se codifica en postgresql la construcción de la base de datos, operaciones básicas y consultas.
Crear la base de datos
create database proyectos;
Creación de tablas
Para el ejemplo sólo se crearán las tablas estudiantes, proyectos y participacion, con aplicación de algunas restricciones, las demás quedan como ejercicio de parte del lector.
Tabla estudiantes:
create table estudiantes (
idestudiante bigint,
nomestudiante varchar (20) not null,
apeestudiante varchar (20) not null,
programa varchar (30),
semestre smallint not null check (semestre < 10),
direstudiante varchar (60),
telfestudiante bigint,
primary key (idestudiante)
);
Tabla proyectos:
create table proyectos (
idproyecto integer,
nomproyecto varchar (50) not null,
tiempo smallint,
fechainicio date,
fechafin date,
primary key (idproyecto)
);
Tabla participacion:
create table participacion (
idparticipacion integer,
idestudiante bigint,
idproyecto integer,
aporteparticipante integer not null,
tipoparticipacion varchar (29) not null,
primay key (idparticipacion),
foreign key (idestudiante) references estudiantes (idestudiante),
foreign key (idproyecto) references proyectos (idproyecto)
);
Insertar registros
En la tabla estudiantes:
insert into estudiantes values (88155234, 'Luis', 'Castillo', 'Ingeniería Electrónica', 5, 'Cra 3 No. 3-34', 3423434212);
En la tabla proyectos:
insert into proyectos values (2213, 'Agentes inteligentes', 10, '2015-06-03','2016-04-03');
En la tabla participacion:
insert into participacion values (1, 88155234, 2213, 500000, 'Investigador principal');
Operaciones
- Cambiar el nombre al campo tiempo de la tabla proyectos por tiempomeses:
alter table proyectos rename column tiempo to tiempomeses;
Las demás operaciones quedan como ejercicio del lector.
Consultas
Simples:
Estudiantes del programa de ingeniería electrónica entre los semestres 5 y 8 inclusive.
select *
from estudiantes
where (programa = 'Ingeniería Electrónica') and (semestre >= 5 and semestre <= 8)
;
Datos de los estudiantes registrados que no son del programa de ingeniería de sistemas.
select idestudiante, nomestudiante, apeestudiante
from estudiantes
where (programa <> 'Ingeniería de Sistemas')
;
Compuestas:
Relación de los proyectos que iniciaron el mes de mayo de 2015 con los datos de los esdudiantes participantes y sus aportes.
select proyectos.nomproyecto, proyectos.fechainicio, participacion.aporteparticipante, estudiantes.idestudiante, estudiantes.nomestudiante, estudiantes.apeestudiante
from estudiantes, participacion, proyectos
where ( (estudiantes.idestudiante = participacion.idestudiante) and (proyectos.idproyecto = participacion.idproyecto) and ( (estract(month from proyectos.fechainicio) = 5) and (estract(year from proyectos.fechainicio) = 2015) ) )
;
Como ejercicio, el lector debe formular variedad de consultas simples y compuestas sobre el modelo y codificarlas.
Volver al Contenido