Hola Florencia, veo que como PK figura persona. Adjunto foto de las relaciones que tiene.
Para crear la tabla nueva, solo adapté el siguiente script:
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- PERSONALIZACIÓN
-- SIU-GUARANI 3 - Sistema de Gestión Académica
-- Versión 3.X.Y
-- PERSONALIZACIÓN Tabla: sga_colaciones_ext
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SET SEARCH_PATH = 'negocio_pers';
CREATE TABLE sga_colaciones_ext
(
id_colacion INTEGER NOT NULL,
hora TIME
);
-- PRIMARY KEY
ALTER TABLE sga_colaciones_ext ADD CONSTRAINT pk_sga_colaciones_ext PRIMARY KEY (id_colacion);
-- FOREIGN KEY
CREATE INDEX ifk_sga_colaciones_ext_sga_colaciones ON sga_colaciones_ext (id_colacion);
ALTER TABLE sga_colaciones_ext
ADD CONSTRAINT fk_sga_colaciones_ext_sga_colaciones FOREIGN KEY (id_colacion)
REFERENCES negocio.sga_colaciones (colacion) on update restrict on delete restrict;
-- +++++++++++++++++ Fin tabla sga_colaciones_ext ++++++++++++++++++++++++++++++++++
Asi está la definicion de la tabla mdp_personas
– Table: negocio.mdp_personas
– DROP TABLE negocio.mdp_personas;
CREATE TABLE negocio.mdp_personas
(
persona integer NOT NULL DEFAULT nextval((‘mdp_personas_seq’::text)::regclass),
apellido character varying(60) NOT NULL,
nombres character varying(60) NOT NULL,
apellido_elegido character varying(60),
nombres_elegido character varying(60),
sexo character(1) NOT NULL,
fecha_nacimiento date NOT NULL,
localidad_nacimiento integer,
nacionalidad smallint NOT NULL,
fecha_ingreso_pais date,
pais_origen integer,
documento_principal integer,
recibe_mensajes_x_mail smallint NOT NULL DEFAULT 1,
usuario character varying(60),
clave character varying(255),
fecha_vencimiento_clave date,
autenticacion character varying(20) NOT NULL DEFAULT ‘md5’::character varying,
bloqueado smallint NOT NULL DEFAULT 0,
parametro_a character varying(255),
token character varying(250),
email_temporal character varying(100),
email_valido smallint NOT NULL DEFAULT 0,
id_imagen character varying(180),
tipo_usuario_inicial character varying(20),
pertenece_pueblo_originario character(1),
pueblo_originario integer,
pueblo_originario_otro character varying(100),
CONSTRAINT pk_mdp_personas PRIMARY KEY (persona),
CONSTRAINT fk_mdp_personas_acc_tipos_usuarios FOREIGN KEY (tipo_usuario_inicial)
REFERENCES negocio.acc_tipos_usuarios (tipo_usuario) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_mdp_personas_mdp_nacionalidades FOREIGN KEY (nacionalidad)
REFERENCES negocio.mdp_nacionalidades (nacionalidad) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_mdp_personas_mdp_personas_sexo FOREIGN KEY (sexo)
REFERENCES negocio.mdp_personas_sexo (sexo) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_mdp_personas_mdp_pueblos_originarios FOREIGN KEY (pueblo_originario)
REFERENCES negocio.mdp_pueblos_originarios (pueblo_originario) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_mdp_personas_mug_localidades FOREIGN KEY (localidad_nacimiento)
REFERENCES negocio.mug_localidades (localidad) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_mdp_personas_mug_paises FOREIGN KEY (pais_origen)
REFERENCES negocio.mug_paises (pais) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT ck_mdp_personas_autenticacion CHECK (autenticacion::text = ANY (ARRAY[‘md5’::character varying::text, ‘sha256’::character varying::text])),
CONSTRAINT ck_mdp_personas_bloqueado CHECK (bloqueado = ANY (ARRAY[0, 1])),
CONSTRAINT ck_mdp_personas_email_valido CHECK (email_valido = ANY (ARRAY[0, 1])),
CONSTRAINT ck_mdp_personas_pertenece_pueblo_originario CHECK (pertenece_pueblo_originario = ANY (ARRAY[‘S’::bpchar, ‘N’::bpchar, ‘X’::bpchar])),
CONSTRAINT ck_mdp_personas_recibe_mensajes_x_mail CHECK (recibe_mensajes_x_mail = ANY (ARRAY[1, 0]))
)
WITH (
OIDS=FALSE
);
ALTER TABLE negocio.mdp_personas
OWNER TO postgres;
GRANT ALL ON TABLE negocio.mdp_personas TO postgres;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE negocio.mdp_personas TO public;
– Index: negocio.ifk_mdp_personas_acc_tipos_usuarios
– DROP INDEX negocio.ifk_mdp_personas_acc_tipos_usuarios;
CREATE INDEX ifk_mdp_personas_acc_tipos_usuarios
ON negocio.mdp_personas
USING btree
(tipo_usuario_inicial COLLATE pg_catalog.“default”);
– Index: negocio.ifk_mdp_personas_mdp_nacionalidades
– DROP INDEX negocio.ifk_mdp_personas_mdp_nacionalidades;
CREATE INDEX ifk_mdp_personas_mdp_nacionalidades
ON negocio.mdp_personas
USING btree
(nacionalidad);
– Index: negocio.ifk_mdp_personas_mdp_personas_sexo
– DROP INDEX negocio.ifk_mdp_personas_mdp_personas_sexo;
CREATE INDEX ifk_mdp_personas_mdp_personas_sexo
ON negocio.mdp_personas
USING btree
(sexo COLLATE pg_catalog.“default”);
– Index: negocio.ifk_mdp_personas_mdp_pueblos_originarios
– DROP INDEX negocio.ifk_mdp_personas_mdp_pueblos_originarios;
CREATE INDEX ifk_mdp_personas_mdp_pueblos_originarios
ON negocio.mdp_personas
USING btree
(pueblo_originario);
– Index: negocio.ifk_mdp_personas_mug_localidades
– DROP INDEX negocio.ifk_mdp_personas_mug_localidades;
CREATE INDEX ifk_mdp_personas_mug_localidades
ON negocio.mdp_personas
USING btree
(localidad_nacimiento);
– Index: negocio.ifk_mdp_personas_mug_paises
– DROP INDEX negocio.ifk_mdp_personas_mug_paises;
CREATE INDEX ifk_mdp_personas_mug_paises
ON negocio.mdp_personas
USING btree
(pais_origen);
– Index: negocio.iu_mdp_personas_apellido_nombres
– DROP INDEX negocio.iu_mdp_personas_apellido_nombres;
CREATE INDEX iu_mdp_personas_apellido_nombres
ON negocio.mdp_personas
USING btree
(apellido COLLATE pg_catalog.“default”, nombres COLLATE pg_catalog.“default”);
– Index: negocio.iu_mdp_personas_usuario
– DROP INDEX negocio.iu_mdp_personas_usuario;
CREATE UNIQUE INDEX iu_mdp_personas_usuario
ON negocio.mdp_personas
USING btree
(usuario COLLATE pg_catalog.“default”);
– Trigger: tia_mdp_personas on negocio.mdp_personas
– DROP TRIGGER tia_mdp_personas ON negocio.mdp_personas;
CREATE TRIGGER tia_mdp_personas
AFTER INSERT
ON negocio.mdp_personas
FOR EACH ROW
EXECUTE PROCEDURE negocio.ftia_mdp_personas();