entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Ayuda diseño base de datos

Buenas,

mi pregunta es, quiero hacer una base de datos que guarde citas. Estas citas podrian ser por ejemplo lunes de 10 a 12. Mi problema es, como hago para "deshabilitar" esas horas para que no las reserven mas? Me podriais comentar como estructurariais las tablas y campos?

Gracias.

2 Respuestas

4votos

Leonardo-Tadei Puntos227020

Hola @JonnyReyes,

normalizá el almacenamiento para que esté en 3ra Forma Normal al menos, de forma tal de que sea consistente y sin repeticiones.

Para una cita/agenda lo mínimo será:

id (int autoincremental)
inicio (datetime)
fin (datetime)
descripcion (varchar)

Luego, no hay como "deshabilitarlas", sino que tenés que hacer una query para ver si el inicio o fin de la cita nueva no se superpone con una cita existente.

Quedaría algo como:

SELECT * FROM Citas
WHERE (inicio >= "$fini" AND fin <= "$fini")
OR (inicio >= "$ffin" AND fin <= "$ffin")

Es decir, que la fecha y hora de inicio de una cita nueva no esté entre el inicio y fin de una existente, o que la fecha de fin de una cita nueva no esté entre el inicio y fin de una existente. Si esta query devuelve algún resultado, la franja horaria estará oculada; si no devuelve nada, estará libre.

Saludos!

1voto

LeOrmazabal Puntos350

Creas una tabla de citas, algo así:
id
codigo
fecha_solicitada
hora_inicio
hora_fin
.....

Dejas como PK (clave pirmaria ) fecha_solicitada, hora_inicio y hora_fin

Igual deberías crear un codigo que verificará la disponibilidad.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta