Este repositorio proporciona un ejemplo de configuración y uso de PostgreSQL en un contenedor Docker para gestionar una base de datos de servicios, pacientes, horarios y citas.
Para crear y ejecutar un contenedor Docker con PostgreSQL, usa el siguiente comando:
docker run --name NewPatrones_Container -e POSTGRES_USER=newadmin -e POSTGRES_PASSWORD=newadmin123 -e POSTGRES_DB=NewBrodents -p 5433:5432 -d postgres:latest
Este comando hará lo siguiente:
- Creará un contenedor llamado
NewPatrones_Container
. - Establecerá el usuario como
newadmin
, la contraseña comonewadmin123
y la base de datos inicial comoNewBrodents
. - Expondrá el puerto 5433 para acceder a la base de datos desde tu máquina local.
- Ejecutará PostgreSQL en segundo plano.
Para acceder a la consola de PostgreSQL dentro del contenedor, usa:
docker exec -it NewPatrones_Container psql -U newadmin -d NewBrodents
Esto abrirá la terminal de PostgreSQL para que puedas interactuar con la base de datos.
Para configurar las tablas necesarias, ejecuta los siguientes comandos SQL dentro de la consola de PostgreSQL:
CREATE TABLE servicios (
id SERIAL PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
precio DECIMAL(10, 2) NOT NULL
);
CREATE TABLE pacientes (
cedula VARCHAR(20) PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
telefono VARCHAR(15) NOT NULL
);
CREATE TABLE horarios (
numero SERIAL PRIMARY KEY,
horario TIME NOT NULL
);
CREATE TABLE citas (
id SERIAL PRIMARY KEY,
cedula_paciente VARCHAR(20) NOT NULL,
id_servicio INT NOT NULL,
id_horario INT NOT NULL,
fecha DATE NOT NULL,
FOREIGN KEY (cedula_paciente) REFERENCES pacientes(cedula),
FOREIGN KEY (id_servicio) REFERENCES servicios(id),
FOREIGN KEY (id_horario) REFERENCES horarios(numero)
);
Puedes probar la inserción de datos en las tablas con los siguientes comandos SQL:
-- Insertar tipos de servicio
INSERT INTO servicios (nombre, precio) VALUES ('Consulta General', 30.00);
INSERT INTO servicios (nombre, precio) VALUES ('Cirugía Dental', 60.00);
INSERT INTO servicios (nombre, precio) VALUES ('Blanqueamiento', 35.00);
INSERT INTO servicios (nombre, precio) VALUES ('Limpieza Dental', 25.00);
INSERT INTO servicios (nombre, precio) VALUES ('Radiografías', 20.00);
INSERT INTO servicios (nombre, precio) VALUES ('Extracción Dental', 45.00);
INSERT INTO servicios (nombre, precio) VALUES ('Implante Dental', 120.00);
INSERT INTO servicios (nombre, precio) VALUES ('Ortodoncia', 150.00);
INSERT INTO servicios (nombre, precio) VALUES ('Tratamiento de Conducto', 75.00);
INSERT INTO servicios (nombre, precio) VALUES ('Revisión y Seguimiento', 40.00);
INSERT INTO servicios (nombre, precio) VALUES ('Selladores Dentales', 30.00);
-- Insertar horarios
-- Insertar horarios mejorados
INSERT INTO horarios (horario) VALUES
('08:00'),
('08:30'),
('09:00'),
('09:30'),
('10:00'),
('10:30'),
('11:00'),
('11:30'),
('12:00'),
('13:00'),
('14:00'),
('14:30'),
('15:00'),
('15:30'),
('16:00'),
('16:30'),
('17:00'),
('17:30');
-- Insertar pacientes de ejemplo con cédulas y teléfonos simulados
INSERT INTO pacientes (cedula, nombre, apellido, telefono) VALUES
('0101234567', 'Sofia', 'Benítez', '099123456'),
('0202345678', 'Andrés', 'Morales', '099234567'),
('0303456789', 'Isabela', 'Cruz', '099345678'),
('0404567890', 'Javier', 'García', '099456789'),
('0505678901', 'Valeria', 'Ortega', '099567890');
-- Insertar citas de ejemplo
INSERT INTO citas (cedula_paciente, id_servicio, id_horario, fecha) VALUES
('0101234567', 1, 1, '2024-08-05'),
('0202345678', 2, 2, '2024-08-05'),
('0303456789', 3, 3, '2024-08-06'),
('0404567890', 4, 4, '2024-08-06'),
('0505678901', 5, 5, '2024-08-07');
-- Consultar datos
SELECT * FROM servicios;
SELECT * FROM pacientes;
SELECT * FROM horarios;
SELECT * FROM citas;
- Asegúrate de tener Docker instalado y en funcionamiento en tu máquina.
- Puedes ajustar los valores predeterminados como el nombre de usuario, contraseña y nombre de la base de datos según tus necesidades.
- Los datos de prueba son solo ejemplos y deben adaptarse a los requerimientos específicos de tu aplicación.
¡Listo! Ahora tienes todo lo necesario para comenzar a trabajar con PostgreSQL en Docker. Si tienes alguna pregunta o necesitas ayuda adicional, no dudes en abrir un issue en el repositorio.