-- CreateTable CREATE TABLE "paises" ( "id" SERIAL NOT NULL, "codigo" VARCHAR(3) NOT NULL, "codigo_alpha2" VARCHAR(2) NOT NULL, "nombre" VARCHAR(100) NOT NULL, "nombre_en" VARCHAR(100) NOT NULL, "capital" VARCHAR(100) NOT NULL, "region" VARCHAR(50) NOT NULL, "subregion" VARCHAR(50) NOT NULL, "emoji" VARCHAR(10) NOT NULL, "latitud" DECIMAL(10,8), "longitud" DECIMAL(11,8), "activo" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "paises_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "departamentos" ( "id" SERIAL NOT NULL, "codigo" VARCHAR(2) NOT NULL, "nombre" VARCHAR(100) NOT NULL, "latitud" DECIMAL(10,8), "longitud" DECIMAL(11,8), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "departamentos_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "provincias" ( "id" SERIAL NOT NULL, "codigo" VARCHAR(4) NOT NULL, "codigo_dep" VARCHAR(2) NOT NULL, "nombre" VARCHAR(100) NOT NULL, "latitud" DECIMAL(10,8), "longitud" DECIMAL(11,8), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "provincias_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "distritos" ( "id" SERIAL NOT NULL, "codigo" VARCHAR(6) NOT NULL, "codigo_prov" VARCHAR(4) NOT NULL, "codigo_dep" VARCHAR(2) NOT NULL, "nombre" VARCHAR(100) NOT NULL, "capital" VARCHAR(100), "categoria" VARCHAR(30), "altitud" DECIMAL(10,2), "poblacion" INTEGER, "latitud" DECIMAL(10,8), "longitud" DECIMAL(11,8), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "distritos_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "paises_codigo_key" ON "paises"("codigo"); -- CreateIndex CREATE UNIQUE INDEX "paises_codigo_alpha2_key" ON "paises"("codigo_alpha2"); -- CreateIndex CREATE INDEX "paises_codigo_idx" ON "paises"("codigo"); -- CreateIndex CREATE INDEX "paises_codigo_alpha2_idx" ON "paises"("codigo_alpha2"); -- CreateIndex CREATE INDEX "paises_nombre_idx" ON "paises"("nombre"); -- CreateIndex CREATE INDEX "paises_region_idx" ON "paises"("region"); -- CreateIndex CREATE UNIQUE INDEX "departamentos_codigo_key" ON "departamentos"("codigo"); -- CreateIndex CREATE INDEX "departamentos_codigo_idx" ON "departamentos"("codigo"); -- CreateIndex CREATE INDEX "departamentos_nombre_idx" ON "departamentos"("nombre"); -- CreateIndex CREATE UNIQUE INDEX "provincias_codigo_key" ON "provincias"("codigo"); -- CreateIndex CREATE INDEX "provincias_codigo_idx" ON "provincias"("codigo"); -- CreateIndex CREATE INDEX "provincias_codigo_dep_idx" ON "provincias"("codigo_dep"); -- CreateIndex CREATE INDEX "provincias_nombre_idx" ON "provincias"("nombre"); -- CreateIndex CREATE UNIQUE INDEX "distritos_codigo_key" ON "distritos"("codigo"); -- CreateIndex CREATE INDEX "distritos_codigo_idx" ON "distritos"("codigo"); -- CreateIndex CREATE INDEX "distritos_codigo_prov_idx" ON "distritos"("codigo_prov"); -- CreateIndex CREATE INDEX "distritos_codigo_dep_idx" ON "distritos"("codigo_dep"); -- CreateIndex CREATE INDEX "distritos_nombre_idx" ON "distritos"("nombre"); -- AddForeignKey ALTER TABLE "provincias" ADD CONSTRAINT "provincias_codigo_dep_fkey" FOREIGN KEY ("codigo_dep") REFERENCES "departamentos"("codigo") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "distritos" ADD CONSTRAINT "distritos_codigo_prov_fkey" FOREIGN KEY ("codigo_prov") REFERENCES "provincias"("codigo") ON DELETE RESTRICT ON UPDATE CASCADE;