La Web del Programador: Comunidad de Programadores
 
    Pregunta:  37464 - RELACIONES C/POSTGRESQL !
Autor:  Mario Mora Suarez
Tengo el red hat 7.2 con postgres como manejador de bases, ya esta corriendo correctamente, solo que no puedo conseguir establecer las relaciones de mis tablas de manera correcta, he buscado en los howtos
de la herramienta psql, pero no puedo hallar nada, utilizando pgaccess establezco una relacion, pero no puedo verificar si es la adecuada, si alguien sabe como hacerlo correctamente, se lo voy a agradecer y si es posible con un pequeño ejem.

  Respuesta:  Armando Maldonado
carrera tiene una clave primaria (id_ca)
CREATE TABLE "carreras" (
"id_ca" integer NOT NULL,
"nombre_ca" character varying(60) NOT NULL,
"duracion_ca" integer DEFAULT 8 NOT NULL,
"titulo_ca" character varying(60) NOT NULL,
"nombre_in_ca" character varying(60),
"duracion_in_ca" integer DEFAULT 8,
"titulo_in_ca" character varying(60),
"nombre_corto_ca" character varying(60),
Constraint "carreras_pkey" Primary Key ("id_ca")
);

asignatura una clave compuesta (id_ca,id_as) produciendo relacion con carrera con id_ca
CREATE TABLE "asignaturas" (
"id_ca" integer REFERENCES carreras ON UPDATE CASCADE ON DELETE NO ACTION,
"id_as" integer NOT NULL,
"nombre_as" character varying(60) NOT NULL,
"alias_as" character varying(60) NOT NULL,
Constraint "asignaturas_pkey" Primary Key ("id_ca","id_as")
);

se produce relacion con tabla asignatura entre id_ca y id_as clave foreanea
CREATE TABLE "asignaturas_impartidas" (
"id_ca" integer,
"id_as" integer,
FOREIGN KEY (id_ca,id_as) REFERENCES asignaturas,
"seccion_ai" integer DEFAULT 1 NOT NULL,
"id_se" integer REFERENCES sedes ON UPDATE CASCADE ON DELETE NO ACTION,
"sem_ai" integer NOT NULL,
"ano_ai" integer NOT NULL,
"cupos_ai" integer DEFAULT 40 NOT NULL,
"user_ai" character varying(60),
"ip_ai" character varying(60),
"fh_trans_ai" timestamp with time zone DEFAULT now(),
"rut_em" integer,
FOREIGN KEY (rut_em,id_se) REFERENCES empleados
);

esperando que te sirva