AD04 Configuración de conexión para pgAdmin con Render - jcpichardo/Progra-II GitHub Wiki
Paso 1: Abrir pgAdmin
- Inicia pgAdmin en tu computadora
- Haz clic derecho en "Servers" en el panel izquierdo
- Selecciona "Create" y luego "Server..."
Paso 2: Configurar la conexión
En la ventana que aparece, completa la siguiente información:
Pestaña "General":
- Name: Un nombre descriptivo para tu conexión (por ejemplo, "Render-ControlEstudiantes")
Pestaña "Connection":
- Host name/address: Usa el valor de "Host" que encontrarás en la página de detalles de tu base de datos en Render (algo como
dpg-xxxxx-a.oregon-postgres.render.com
) - Port: 5432 (el puerto predeterminado, confirma en los detalles de Render)
- Maintenance database: El nombre de tu base de datos (por ejemplo,
db_control_estudiantes
) - Username: El nombre de usuario proporcionado por Render
- Password: La contraseña proporcionada por Render
- Save password?: Marca esta casilla si quieres guardar la contraseña
Pestaña "SSL":
- SSL mode: Selecciona "Require" (Render requiere conexiones SSL)
- Puedes dejar las demás opciones con sus valores predeterminados
Paso 3: Probar la conexión
- Haz clic en "Save" para guardar la configuración
- pgAdmin intentará conectarse a tu base de datos
- Si la conexión es exitosa, verás tu servidor en el panel izquierdo
Ya en PostgreSQL correr los scripts para la creación de tablas.
-- Crear los esquemas
CREATE SCHEMA IF NOT EXISTS seguridad;
CREATE SCHEMA IF NOT EXISTS escolar;
-- Crear tabla personas en el esquema seguridada
CREATE TABLE seguridad.personas (
id SERIAL PRIMARY KEY, -- En PostgreSQL se usa SERIAL en lugar de IDENTITY
nombre_completo VARCHAR(255) NOT NULL,
correo VARCHAR(100) NOT NULL, -- Correo electrónico de la persona
telefono VARCHAR(15) NOT NULL, -- Número de teléfono de la persona
curp VARCHAR(18) NOT NULL, -- CURP de la persona
fecha_nacimiento DATE NULL, -- Fecha de nacimiento de la persona
estatus BOOLEAN NOT NULL DEFAULT TRUE -- En PostgreSQL se usa BOOLEAN en lugar de BIT
);
-- Crear tabla estudiantes en el esquema escolar
CREATE TABLE escolar.estudiantes (
id SERIAL PRIMARY KEY, -- En PostgreSQL se usa SERIAL en lugar de IDENTITY
id_persona INTEGER NOT NULL, -- Relación con la tabla personas
matricula VARCHAR(20) NOT NULL UNIQUE,
semestre VARCHAR(20) NULL, -- Semestre o grado en el que está inscrito
fecha_alta DATE NOT NULL DEFAULT CURRENT_DATE, -- En PostgreSQL se usa CURRENT_DATE en lugar de GETDATE()
fecha_baja DATE NULL, -- Fecha en la que el estudiante se dio de baja (NULL si sigue activo)
estatus SMALLINT NOT NULL DEFAULT 1, -- Estado del estudiante: 0 = Baja, 1 = Activo, 2 = Baja Temporal
CONSTRAINT chk_estudiantes_estatus CHECK (estatus IN (0, 1, 2)),
CONSTRAINT fk_estudiantes_personas FOREIGN KEY (id_persona) REFERENCES seguridad.personas(id)
);
-- Crear índices para mejorar el rendimiento
CREATE INDEX idx_estudiantes_id_persona ON escolar.estudiantes(id_persona);
CREATE INDEX idx_estudiantes_matricula ON escolar.estudiantes(matricula);
CREATE INDEX idx_personas_nombre ON seguridad.personas(nombre_completo);
-- Comentarios en las tablas y columnas
COMMENT ON TABLE seguridad.personas IS 'Tabla que almacena información básica de todas las personas';
COMMENT ON COLUMN seguridad.personas.id IS 'Identificador único de la persona';
COMMENT ON COLUMN seguridad.personas.nombre_completo IS 'Nombre completo de la persona';
COMMENT ON COLUMN seguridad.personas.correo IS 'Correo electrónico de contacto';
COMMENT ON COLUMN seguridad.personas.telefono IS 'Número telefónico de contacto';
COMMENT ON COLUMN seguridad.personas.fecha_nacimiento IS 'Fecha de nacimiento de la persona';
COMMENT ON COLUMN seguridad.personas.estatus IS 'Estado de la persona: TRUE=Activo, FALSE=Inactivo';
COMMENT ON TABLE escolar.estudiantes IS 'Tabla que almacena información de los estudiantes';
COMMENT ON COLUMN escolar.estudiantes.id IS 'Identificador único del estudiante';
COMMENT ON COLUMN escolar.estudiantes.id_persona IS 'Referencia al ID en la tabla personas';
COMMENT ON COLUMN escolar.estudiantes.matricula IS 'Código de matrícula único del estudiante';
COMMENT ON COLUMN escolar.estudiantes.semestre IS 'Semestre o grado actual del estudiante';
COMMENT ON COLUMN escolar.estudiantes.fecha_alta IS 'Fecha de registro del estudiante en el sistema';
COMMENT ON COLUMN escolar.estudiantes.fecha_baja IS 'Fecha en que el estudiante causó baja, NULL si sigue activo';
COMMENT ON COLUMN escolar.estudiantes.estatus IS 'Estado del estudiante: 0=Baja, 1=Activo, 2=Baja Temporal';