
-- Inicialmente basada en ingeniería inversa de datos a la base empleada en el 
-- "Banco de Datos de derechos humanos y violencia política" de 2000 a 2004. 
-- Dominio público. Sin garantias. vtamara@pasosdeJesus.org. 2004. 

SET client_encoding = 'LATIN1';


CREATE TABLE actualizacion_base (
	id VARCHAR(10) PRIMARY KEY,
	fecha DATE NOT NULL,
	descripcion VARCHAR(500) NOT NULL
);

CREATE SEQUENCE antecedente_seq;

CREATE TABLE antecedente (
		id INTEGER PRIMARY KEY DEFAULT(nextval('antecedente_seq')),
		nombre VARCHAR(25) NOT NULL,
		fecha_creacion	DATE NOT NULL,
		fecha_deshabilitacion	DATE CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion)
); 


-- CREATE SEQUENCE intervalo_seq;

CREATE SEQUENCE intervalo_seq;

-- Mejor inicio, fin (?)
CREATE TABLE intervalo (
		id INTEGER PRIMARY KEY DEFAULT (nextval('intervalo_seq')),
		nombre VARCHAR(25) NOT NULL,
		rango VARCHAR(25) NOT NULL
);

CREATE SEQUENCE caso_seq;

CREATE TABLE caso (
	id INTEGER PRIMARY KEY DEFAULT(nextval('caso_seq')),
	titulo VARCHAR(50),
	fecha DATE NOT NULL,
	hora VARCHAR(10),
	duracion VARCHAR(10),
	memo	TEXT NOT NULL,
	gr_confiabilidad VARCHAR(5), 
	gr_esclarecimiento VARCHAR(5),
	gr_impunidad VARCHAR(5),
	gr_informacion VARCHAR(5),
	bienes TEXT,
	tipo_ubicacion VARCHAR(1) CHECK (tipo_ubicacion='R' OR
		tipo_ubicacion='S' OR tipo_ubicacion='U' OR
		tipo_ubicacion='A'),
-- R Rural, U Urbano, A Ambos, S Sin Información
	id_intervalo INTEGER REFERENCES intervalo
); 

CREATE SEQUENCE parametros_reporte_consolidado_seq;

CREATE TABLE parametros_reporte_consolidado (
                no_columna INTEGER PRIMARY KEY DEFAULT (nextval('parametros_reporte_consolidado_seq')),
		rotulo VARCHAR(25) NOT NULL,
		tipo_violencia VARCHAR(25) NOT NULL,
		clasificacion VARCHAR(25) NOT NULL
);

CREATE TABLE tipo_violencia (
		id CHAR(1) PRIMARY KEY,
		nombre VARCHAR(50) NOT NULL,
		nomcorto VARCHAR(10) NOT NULL,
		fecha_creacion DATE NOT NULL,
		fecha_deshabilitacion	DATE CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion)
);

CREATE TABLE supracategoria (
		id INTEGER NOT NULL,
		nombre VARCHAR(50) NOT NULL,
		fecha_creacion DATE NOT NULL,
		fecha_deshabilitacion	DATE CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion), 
		id_tipo_violencia VARCHAR(1) REFERENCES tipo_violencia NOT NULL,
		PRIMARY KEY (id, id_tipo_violencia)
);


CREATE TABLE categoria (
		id INTEGER PRIMARY KEY,
		nombre VARCHAR(80) NOT NULL,
		fecha_creacion	DATE NOT NULL,
		fecha_deshabilitacion	DATE CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion),
		id_supracategoria INTEGER NOT NULL,
		id_tipo_violencia VARCHAR(1) NOT NULL REFERENCES tipo_violencia,
		col_rep_consolidado INTEGER REFERENCES parametros_reporte_consolidado (no_columna),
		contada_en INTEGER REFERENCES categoria,
		FOREIGN KEY (id_supracategoria, id_tipo_violencia) 
			REFERENCES supracategoria (id, id_tipo_violencia)
);


CREATE TABLE tipo_clase (
		id VARCHAR(3) PRIMARY KEY,
		nombre VARCHAR(50) NOT NULL
);


CREATE SEQUENCE departamento_seq;


CREATE TABLE departamento (
	id INTEGER PRIMARY KEY DEFAULT(nextval('departamento_seq')),
	nombre VARCHAR(50) NOT NULL
);


CREATE SEQUENCE municipio_seq;

CREATE TABLE municipio (
	id INTEGER NOT NULL DEFAULT(nextval('municipio_seq')),
	nombre VARCHAR(50) NOT NULL,
	id_departamento INTEGER NOT NULL REFERENCES departamento 
		ON DELETE CASCADE,
	PRIMARY KEY (id, id_departamento)
);


CREATE SEQUENCE clase_seq;

CREATE TABLE clase (
	id INTEGER NOT NULL DEFAULT(nextval('clase_seq')),
	nombre VARCHAR(50) NOT NULL,
	id_municipio INTEGER,
	id_tipo_clase VARCHAR(3) REFERENCES tipo_clase, 
	id_departamento INTEGER REFERENCES departamento ON DELETE CASCADE,
	FOREIGN KEY (id_municipio, id_departamento) REFERENCES 
		municipio (id, id_departamento) ON DELETE CASCADE,
	PRIMARY KEY (id, id_municipio, id_departamento)
);


CREATE SEQUENCE contexto_seq;

CREATE TABLE contexto (
	id INTEGER PRIMARY KEY DEFAULT(nextval('contexto_seq')),
	nombre VARCHAR(50) NOT NULL,
	fecha_creacion	DATE NOT NULL,
	fecha_deshabilitacion	DATE CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion)
);

CREATE SEQUENCE filiacion_seq;

CREATE TABLE filiacion (
		id INTEGER PRIMARY KEY DEFAULT(nextval('filiacion_seq')),
		nombre VARCHAR(100) NOT NULL
);

CREATE SEQUENCE frontera_seq;

CREATE TABLE frontera (
		id INTEGER PRIMARY KEY DEFAULT(nextval('frontera_seq')),
		nombre VARCHAR(25) NOT NULL
);

CREATE SEQUENCE fuente_directa_seq;

CREATE TABLE fuente_directa (
		id INTEGER PRIMARY KEY DEFAULT(nextval('fuente_directa_seq')),
		nombre VARCHAR(200) NOT NULL
);

CREATE SEQUENCE funcionario_seq;

-- Podria dejarse solo usuario con un campo para indicar que usuarios
-- pueden entrar en el momento y cuales ya no (?).
CREATE TABLE funcionario (
		id INTEGER PRIMARY KEY DEFAULT(nextval('funcionario_seq')),
		anotacion VARCHAR(50),
		nombre 	VARCHAR(15) NOT NULL
);

-- Por consistencia con demas deberia ser id no id_opcion
-- id_mama es id de opcion mama (menús son árbol)
CREATE TABLE opcion (
		id_opcion INTEGER PRIMARY KEY,
		descripcion VARCHAR(50) NOT NULL,
		id_mama	INTEGER,
		nomid VARCHAR(150)
);

CREATE SEQUENCE organizacion_seq;

CREATE TABLE organizacion (
		id INTEGER PRIMARY KEY DEFAULT(nextval('organizacion_seq')),
		nombre VARCHAR(25) NOT NULL
);

CREATE SEQUENCE prensa_seq;

CREATE TABLE prensa (
		id INTEGER PRIMARY KEY DEFAULT(nextval('prensa_seq')),
		nombre VARCHAR(40) NOT NULL,
		tipo_fuente VARCHAR(25) NOT NULL
);

CREATE SEQUENCE presuntos_responsables_seq;

CREATE TABLE presuntos_responsables (
		id INTEGER PRIMARY KEY DEFAULT(nextval('presuntos_responsables_seq')),
		nombre VARCHAR(50) NOT NULL,
		polo	CHAR(50) NOT NULL,
		fecha_creacion DATE NOT NULL,
		fecha_deshabilitacion	DATE CHECK (fecha_deshabilitacion IS NULL OR fecha_deshabilitacion>=fecha_creacion)
);

CREATE SEQUENCE rango_edad_seq;

-- Debería tener edad inicia y edad final para poder chequear bien en
-- interfaz (ver PagVictimaIndividual).  Sobre nombre.
CREATE TABLE rango_edad ( -- podria ser edad inicial, edad final
		id INTEGER PRIMARY KEY DEFAULT(nextval('rango_edad_seq')),
		nombre VARCHAR(20) NOT NULL,
		rango VARCHAR(20) NOT NULL
);

CREATE SEQUENCE region_seq;

CREATE TABLE region (
		id INTEGER PRIMARY KEY DEFAULT(nextval('region_seq')),
		nombre VARCHAR(50) NOT NULL
); 

CREATE SEQUENCE resultado_agresion_seq;

CREATE TABLE resultado_agresion (
		id INTEGER PRIMARY KEY DEFAULT(nextval('resultado_agresion_seq')),
		nombre VARCHAR(50) NOT NULL
); 

CREATE SEQUENCE rol_seq;

-- Por consistencia con otras tablas debería ser id en lugar de id_rol
CREATE TABLE rol (
		id_rol INTEGER PRIMARY KEY DEFAULT(nextval('rol_seq')),
		nombre VARCHAR(20) NOT NULL
); 

CREATE SEQUENCE sector_social_seq;

CREATE TABLE sector_social (
		id INTEGER PRIMARY KEY DEFAULT(nextval('sector_social_seq')),
		nombre VARCHAR(25) NOT NULL
); 

CREATE SEQUENCE ubicacion_seq;

CREATE TABLE ubicacion (
	id INTEGER PRIMARY KEY DEFAULT (nextval('ubicacion_seq')),
	lugar VARCHAR(60),
	sitio VARCHAR(60),
	id_clase INTEGER,
	id_municipio INTEGER,
	id_departamento INTEGER references departamento,
	tipo VARCHAR(1),
	FOREIGN KEY (id_municipio, id_departamento) REFERENCES
		municipio (id, id_departamento),
	FOREIGN KEY (id_clase, id_municipio, id_departamento) REFERENCES
		clase (id, id_municipio, id_departamento)
); 

CREATE TABLE usuario (
	id_usuario VARCHAR(15) PRIMARY KEY,
	password VARCHAR(32) NOT NULL,
	nombre VARCHAR(50),
	descripcion VARCHAR(50),
	id_rol INTEGER REFERENCES rol,
	dias_edicion_caso INTEGER 
);

CREATE SEQUENCE vinculo_estado_seq;

CREATE TABLE vinculo_estado (
	id INTEGER PRIMARY KEY DEFAULT(nextval('vinculo_estado_seq')),
	nombre VARCHAR(25) NOT NULL
);

CREATE SEQUENCE profesion_seq;

CREATE TABLE profesion (
	id INTEGER PRIMARY KEY DEFAULT(nextval('profesion_seq')),
	nombre VARCHAR(25) NOT NULL
);

CREATE SEQUENCE victima_seq;

-- Victima depende de caso.  Podría hacerse una tabla persona relacionada
-- con esta. 
CREATE TABLE victima (
	id INTEGER PRIMARY KEY DEFAULT(nextval('victima_seq')),
	nombre VARCHAR(100) NOT NULL,
	edad INTEGER CHECK (edad IS NULL OR (edad>='0' AND edad<='130')), 
	hijos INTEGER CHECK (hijos IS NULL OR (hijos>='0' AND hijos<='100')),
	sexo CHAR(1) NOT NULL CHECK (sexo='S' OR sexo='F' OR sexo='M'),
	id_profesion INTEGER REFERENCES profesion NOT NULL,
	id_rango_edad INTEGER REFERENCES rango_edad NOT NULL,
	id_filiacion INTEGER REFERENCES filiacion NOT NULL,
	id_sector_social INTEGER REFERENCES sector_social NOT NULL,
	id_organizacion	INTEGER REFERENCES organizacion NOT NULL,
	id_vinculo_estado INTEGER REFERENCES vinculo_estado NOT NULL,
	id_caso	INTEGER REFERENCES caso NOT NULL,
	id_organizacion_armada INTEGER REFERENCES presuntos_responsables NOT NULL,
	anotaciones	VARCHAR(1000)
);

CREATE SEQUENCE combatiente_seq;

CREATE TABLE combatiente (
	id INTEGER PRIMARY KEY DEFAULT(nextval('combatiente_seq')),
	nombre VARCHAR(100) NOT NULL,
	alias VARCHAR(100),
	edad INTEGER CHECK (edad IS NULL OR edad>=0), 
	sexo	CHAR(1)  NOT NULL CHECK (sexo='S' OR sexo='M' OR sexo='F'), 
	id_resultado_agresion INTEGER NOT NULL REFERENCES resultado_agresion,
	id_profesion INTEGER REFERENCES profesion,
	id_rango_edad	INTEGER REFERENCES rango_edad,
	id_filiacion	INTEGER	REFERENCES filiacion,
	id_sector_social	INTEGER	REFERENCES sector_social,
	id_organizacion	INTEGER REFERENCES organizacion,
	id_vinculo_estado INTEGER REFERENCES vinculo_estado,
	id_caso	INTEGER REFERENCES caso,
	id_organizacion_armada INTEGER REFERENCES presuntos_responsables
);

CREATE SEQUENCE victima_colectiva_seq;

CREATE TABLE victima_colectiva (
	id INTEGER PRIMARY KEY DEFAULT(nextval('victima_colectiva_seq')),
	anotacion VARCHAR(100),
	nombre VARCHAR(150),
	personas_aprox INTEGER,
	id_organizacion_armada INTEGER REFERENCES presuntos_responsables
);

CREATE TABLE victima_colectiva_caso (
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	id_caso INTEGER REFERENCES caso,
	PRIMARY KEY(id_v_colectiva, id_caso)
);

CREATE TABLE vinculo_estado_comunidad (
	id_vinculo_estado INTEGER REFERENCES vinculo_estado,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	PRIMARY KEY(id_vinculo_estado, id_v_colectiva)
);

CREATE TABLE profesion_comunidad (
	id_profesion INTEGER REFERENCES profesion,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	PRIMARY KEY(id_profesion, id_v_colectiva)
);


CREATE TABLE antecedente_caso (
	id_antecedente INTEGER REFERENCES antecedente,
	id_caso INTEGER REFERENCES caso,
	PRIMARY KEY(id_antecedente, id_caso)
);

-- Los antecedentes de la victima no deben ser subconjunto de los del caso
CREATE TABLE antecedente_victima (
	id_antecedente INTEGER REFERENCES antecedente,
	id_victima INTEGER REFERENCES victima,
	PRIMARY KEY(id_antecedente, id_victima)
);


CREATE TABLE antecedente_combatiente (
	id_antecedente INTEGER REFERENCES antecedente,
	id_combatiente INTEGER REFERENCES combatiente,
	PRIMARY KEY(id_antecedente, id_combatiente)
);

-- Si se quisieran reusan victimas_colectivas tal vez esta tabla
-- debería tener id_caso
CREATE TABLE antecedente_comunidad (
	id_antecedente INTEGER REFERENCES antecedente,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	PRIMARY KEY(id_antecedente, id_v_colectiva)
);


-- Por uniformidad mejor llamarlo contexto_caso
CREATE TABLE caso_contexto (
	id_caso INTEGER REFERENCES caso,
	id_contexto INTEGER REFERENCES contexto,
	PRIMARY KEY(id_caso, id_contexto)
);

CREATE TABLE categoria_caso (
	id_caso INTEGER REFERENCES caso,
	id_tipo_violencia VARCHAR(1) REFERENCES tipo_violencia,
	id_supracategoria INTEGER, 
	id_categoria INTEGER REFERENCES categoria,
	PRIMARY KEY(id_caso, id_tipo_violencia, 
		id_supracategoria, id_categoria),
	FOREIGN KEY (id_supracategoria, id_tipo_violencia) 
		REFERENCES supracategoria (id, id_tipo_violencia)
);

CREATE TABLE presuntos_responsables_caso (
	id_caso INTEGER REFERENCES caso,
	id_p_responsable INTEGER REFERENCES presuntos_responsables,
	tipo	INTEGER	NOT NULL,
	bloque	VARCHAR(50),
	frente	VARCHAR(50),
	brigada	VARCHAR(50),
	batallon VARCHAR(50),
	division VARCHAR(50),
	otro VARCHAR(50),
	id INTEGER NOT NULL,
	PRIMARY KEY (id_caso, id_p_responsable, id)
);


CREATE TABLE categoria_comunidad (
	id_tipo_violencia VARCHAR(1) REFERENCES tipo_violencia,
	id_supracategoria INTEGER,
	id_categoria INTEGER REFERENCES categoria,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	id_caso INTEGER REFERENCES caso,
	PRIMARY KEY(id_tipo_violencia, id_supracategoria, id_categoria,
		id_v_colectiva, id_caso),
	FOREIGN KEY (id_caso, id_tipo_violencia, id_supracategoria, 
		id_categoria) 
		REFERENCES categoria_caso (id_caso, id_tipo_violencia, 
		id_supracategoria, id_categoria)
);

CREATE TABLE categoria_p_responsable_caso (
	id_tipo_violencia VARCHAR(1) REFERENCES tipo_violencia,
	id_supracategoria INTEGER,
	id_categoria INTEGER REFERENCES categoria,
	id INTEGER NOT NULL,
	id_caso INTEGER REFERENCES caso,
	id_p_responsable INTEGER REFERENCES presuntos_responsables,
	PRIMARY KEY(id_tipo_violencia, id_supracategoria, id_categoria,
		id, id_caso, id_p_responsable),
	FOREIGN KEY (id_supracategoria, id_tipo_violencia) 
		REFERENCES supracategoria (id, id_tipo_violencia),
	FOREIGN KEY (id, id_caso, id_p_responsable)
                REFERENCES presuntos_responsables_caso (id, id_caso, 
			id_p_responsable),
	FOREIGN KEY (id_caso, id_tipo_violencia, id_supracategoria, 
		id_categoria) 
		REFERENCES categoria_caso (id_caso, id_tipo_violencia, 
		id_supracategoria, id_categoria)
);


-- Para verificar a nivel de SQL que las categorias de victimas
-- individuales también son del caso, toca cambiar victima para que NO
-- incluya id_caso.
CREATE TABLE categoria_personal (
	id_tipo_violencia VARCHAR(1) REFERENCES tipo_violencia,
	id_supracategoria INTEGER,
	id_categoria INTEGER REFERENCES categoria,
	id_victima INTEGER REFERENCES victima,
	PRIMARY KEY(id_tipo_violencia, id_supracategoria, id_categoria,
		id_victima),
	FOREIGN KEY (id_supracategoria, id_tipo_violencia) 
		REFERENCES supracategoria (id, id_tipo_violencia)
);


CREATE TABLE clase_caso (
	id_clase INTEGER, 
	id_municipio INTEGER,
	id_departamento INTEGER REFERENCES departamento,
	id_caso INTEGER REFERENCES caso,
	FOREIGN KEY (id_municipio, id_departamento) REFERENCES
		municipio (id, id_departamento),
	FOREIGN KEY (id_clase, id_municipio, id_departamento) REFERENCES
		clase (id, id_municipio, id_departamento),
	PRIMARY KEY(id_clase, id_municipio, id_departamento,
		id_caso)
);


CREATE TABLE departamento_caso (
	id_caso INTEGER REFERENCES caso,
	id_departamento INTEGER REFERENCES departamento,
	PRIMARY KEY(id_caso, id_departamento)
);

CREATE TABLE departamento_region (
	id_departamento INTEGER REFERENCES departamento,
	id_region INTEGER REFERENCES region,
	PRIMARY KEY(id_departamento, id_region)
);

CREATE TABLE descripcion_frontera (
	id INTEGER PRIMARY KEY,
	id_frontera INTEGER REFERENCES frontera,
	lugar VARCHAR(50) NOT NULL,
	sitio VARCHAR(50),
	tipo  VARCHAR(1)
);

-- Algunos campos ubicación, clasificacion y ubicacion_fisica son NULL (no pueden ser llave).
-- Puede mejorarse clasificacion, para que esté relacionada con clasificacion
-- del caso
CREATE TABLE escrito_caso (
	fecha DATE,
	ubicacion VARCHAR(100),  -- En interfaz descripción página
	clasificacion VARCHAR(100), -- Categoria que esta fuente clasifica 
	ubicacion_fisica VARCHAR(100),
	id_prensa INTEGER references prensa,
	id_caso	INTEGER REFERENCES caso,
	PRIMARY KEY(fecha, id_prensa,id_caso)
);

CREATE TABLE filiacion_comunidad (
	id_filiacion INTEGER REFERENCES filiacion,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	PRIMARY KEY(id_filiacion, id_v_colectiva)
);

CREATE TABLE frontera_caso (
	id_frontera INTEGER REFERENCES frontera,
	id_caso INTEGER REFERENCES caso,
	PRIMARY KEY(id_frontera, id_caso)
);

-- Tambien hay fuentes indirectas (pero no frecuentes).
CREATE TABLE fuente_directa_caso (
	id_caso INTEGER REFERENCES caso,
	id_fuente_directa INTEGER REFERENCES fuente_directa,
	anotacion VARCHAR(200),
	fecha DATE,
	ubicacion_fisica VARCHAR(100),
	tipo_fuente VARCHAR(25),
	PRIMARY KEY(id_caso, id_fuente_directa, fecha)
);

CREATE TABLE funcionario_caso (
	id_funcionario INTEGER REFERENCES funcionario,
	id_caso INTEGER REFERENCES caso,
	fecha_inicio DATE,
	PRIMARY KEY(id_funcionario, id_caso)
);

CREATE TABLE municipio_caso (
	id_municipio INTEGER,
	id_departamento INTEGER REFERENCES departamento,
	id_caso INTEGER REFERENCES caso,
	FOREIGN KEY (id_municipio, id_departamento) REFERENCES
		municipio (id, id_departamento),
	PRIMARY KEY(id_municipio, id_departamento, id_caso)
);


CREATE TABLE opcion_rol (
	id_opcion INTEGER REFERENCES opcion,
	id_rol INTEGER REFERENCES rol,
	PRIMARY KEY(id_opcion, id_rol)
);

CREATE TABLE organizacion_comunidad (
	id_organizacion INTEGER REFERENCES organizacion,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	PRIMARY KEY(id_organizacion, id_v_colectiva)
);

-- Esta tabla no puede llenarse desde la interfaz, pero paradojicamente
-- tiene algunos registros (83).
CREATE TABLE p_responsable_agrede_combatiente (
	id_p_responsable INTEGER REFERENCES presuntos_responsables,
	id_combatiente INTEGER REFERENCES combatiente,
	PRIMARY KEY(id_p_responsable, id_combatiente)
);

-- Para activar integridad referencial a nivel de SQL entre esta tabla
-- y presuntos_responsables_caso en esta tabla habría que agregar el
-- id de presuntos_responsables_caso. 
CREATE TABLE p_responsable_agrede_comunidad (
	id_p_responsable INTEGER REFERENCES presuntos_responsables,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	id_caso INTEGER REFERENCES caso,
	PRIMARY KEY(id_p_responsable, id_v_colectiva, id_caso)
);

-- Integridad referencial con el problema de p_responsable_agrede_comunidad
CREATE TABLE p_responsable_agrede_persona (
	id_p_responsable INTEGER REFERENCES presuntos_responsables,
	id_victima INTEGER REFERENCES victima,
	PRIMARY KEY(id_p_responsable, id_victima)
);

-- id_rango_edad en lugar de id_rango
CREATE TABLE rango_edad_comunidad (
	id_rango INTEGER REFERENCES rango_edad,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	PRIMARY KEY(id_rango, id_v_colectiva)
);


CREATE TABLE region_caso (
	id_region INTEGER REFERENCES region,
	id_caso INTEGER REFERENCES caso,
	PRIMARY KEY(id_region, id_caso)
);


-- id_sector_social en lugar de id_sector
CREATE TABLE sector_social_comunidad (
	id_sector INTEGER REFERENCES sector_social,
	id_v_colectiva INTEGER REFERENCES victima_colectiva,
	PRIMARY KEY(id_sector, id_v_colectiva)
);

CREATE TABLE ubicacion_caso (
	id_ubicacion INTEGER REFERENCES ubicacion,
	id_caso INTEGER REFERENCES caso,
	PRIMARY KEY(id_ubicacion, id_caso)
);


