[Php-avanzado] Base de Datos
Luciano Pelizzaro
lucianomdq_82 en hotmail.com
Lun Nov 21 15:07:06 ART 2011
Hola Leo,
El tema de los Accesos por eso lo quería dejar aparte terminar primero con
la funcionalidad principal del sistema y luego seguir con ese tema.
El problema esta que si yo identifico a un Técnico o un Administrativo ,
puede ir en la misma tabla ya que los datos serian lo mismo y lo único q
cambiaria seria su nivel (Lo Unificaría con el nombre Usuarios Por Ejem.).
En cambio los médicos no los puedo unificar en dicha tabla ya que lleva
otros datos totalmente distinto como la relaciones de consultorios,
matricula, etc.. Por lo cual si es un medico se volvería a cargar sus datos
sin matricula y consultorio en la Tabla Usuarios.
Con respecto a la eliminación de datos, están todas las tablas relacionadas
y si se elimina algún dato se preguntara por sistema, si desea eliminar las
relaciones. En los requerimientos dice que se puede gestionar por lo cual es
correcto que es posible eliminarlos, pero también se eliminaría las
relaciones entre si.
Saludos, Luciano.
-----Mensaje original-----
From: Leonardo Tadei - Pegasus Tech Supply
Sent: Monday, November 21, 2011 1:26 PM
To: Lista del curso de PHP Avanzado
Subject: Re: [Php-avanzado] Base de Datos
Hola Luciano,
El sáb, 19-11-2011 a las 20:41 -0300, Luciano Pelizzaro escribió:
> Hola Leo,
>
> Hay modifique todo, el tema esta, q por ejemplo Laboratorios Tiene
> Varias Obras Sociales, pero al mismo tiempo Varias Obras Sociales
> tiene Varios laboratorios,
Es correcto lo que planteás: entre los Laboratorios y las Obras
Sociales hay una relación N-N, y esta relación al normalizarla, genera 3
tablas: una para el Laboratorio, una para la Obra Social y otra para la
relación que queda solo con los IDs.
> entonces lo dividí en una tabla llamándola Rel_Laboratorios
A mi me da lo mismo, pero a esta tabla se la suele llamar con los
nombres de las dos entidades relacionadas. Por ejemplo para este caso
LaboratoriosObrasSociales o Laboratorios_ObrasSociales.
> Al igual que Horarios y Especialidades Medicas.
> En el caso de la Tabla de Acceso puse para que identifique las
> personas en forma individual y en Nivel por ejemplo en caso que sea
> administrativo, se cargara el id correspondiente y los dos restantes
> vacíos.
Mmm... esto no está bien normalizado.
Si los niveles son solo 3, entonces tendrás una tabla de Accesos y otra
de NivelesDeAcceso (solo con id y nombre), y en la tabla Accesos una
referencia al Id_NivelesDeAcceso correspondiente.
Si en cambio te hace falta que un Acceso pertenezca a más de un nivel a
la vez (y habría que buscar un escenario que justifique esta necesidad)
entonces tenés una relación 1-N de los Accesos con los Niveles, lo que
implica una tercer tabla para almacenarlos.
Las tablas Administración y Técnico tampoco se desprenden de la
normalización: debería ser una sola y simplemente saber quién es quién
por su relación con el Acceso.
Para no mezclar las cosas, y dado que el problema del Acceso siempre es
un subsitema aparte, va a ser más claro que separes estas tablas del
resto, así no se te mezclan con la funcionalidad... en este caso, tenés
a los Médicos a mitad de una cosa y de la otra, siendo que los Médicos
son parte de tu funcionalidad, pero los Técnicos y Administrativos no lo
son...
Para terminar, tenés un conflicto entre tu especificación y el
almacenamiento: me queda claro que salvo un error de tipeo, el médico no
va a cambiar en el sistema, pero al decir que las ConsultasMédicas
tienen solo el Id_Medico, estás diciendo que no se pueden borrar sin
generar una inconsistencia en los datos (y se pueden borrar porque en el
RF5 especificás que se gestionan, lo que quiere decir que también se
borran, pero si se borran, tenés un almacenamiento inconsistente).
Pasa lo mismo con los Pacientes, los Laboratorios, etc.
Una solución podría ser especificar que solo se pueden borrar si no
forman parte de una Consulta, etc.... sino, con tu especificación tal
cual, el almacenamiento está mal y tenés que repetir ahí los datos
relevantes del Médico.
Qué preferís hacer? Te pasa esto en varias entidades de la
especificación!
>
> Saludos y Gracias.
>
> Luciano.
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Base de Datos
>
>
> Localidades
> Accesos
> Nivel
> Administración
> Técnico
>
>
>
> Id
> Id
> Id
> Id
> Id
>
>
>
> Nombre
> Usuario
> Descripción
> Nombre
> Nombre
>
>
>
>
> Password
> id_Administración
> Apellido
> Apellido
>
>
>
>
> Id_Nivel
> Id_Medico
> Dirección
> Dirección
>
>
>
>
>
> Id_técnico
> Teléfono
> Teléfono
>
>
>
>
>
>
> Id_Localidad
> Id_Localidad
>
>
>
>
>
>
>
>
>
>
>
> Laboratorios
> Rel_Laboratorios
> Obras
> Sociales
> Rel_Medicos
> Medicos
> Horarios
> Rel_Horarios
> Consultorios
> Id
> Id
> Id
> Id
> Id
> Id
> Id
> Id
> Nombre
> Id_Laboratorio
> Nombre
> Id_ObraSocial
> Nombre
> Hora_Inicio
> Id_Horario
> Nro_Consultorio
> Dirección
> Id_ObraSocial
> Dirección
> Id_Medico
> Apellido
> Hora_Fin
> Id_Medico
> Descripción
> Teléfono
>
> Teléfono
>
> Teléfono
> Días
>
>
> Id_Localidad
>
> Id_Localidad
>
> Id_Localidad
>
>
>
> Observaciones
>
>
>
> Matricula
>
>
>
>
>
>
>
> Id_Consultorio
>
>
>
>
>
>
>
>
>
>
>
> Especialidades Medicas
> Rel_Especialidad
> Pacientes
> Recetas
> Consultas Medicas
> Estudios
>
>
> Id
> Id
> Id
> Id
> Id
> Id
>
>
> Nombre
> Id_Especialidad
> Nombre
> Fecha
> Fecha
> Nombre
>
>
>
> Id_Medico
> Apellido
> Medicamentos
> Id_Paciente
> Id_Medico
>
>
>
>
> Dirección
> Id_Consulta
> Id_Medico
> Id_Paciente
>
>
>
>
> Teléfono
> Id_Medico
> Motivo
> Fecha
>
>
>
>
> Id_Localidad
> Id_Paciente
> Diagnostico
> Informe
>
>
>
>
> Nro_Afiliado
>
>
> Observaciones
>
>
>
>
> Id_ObraSocial
>
>
> Imagen
>
>
>
>
>
>
>
> Id_Consulta
>
>
>
>
>
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> SOFTWARE CONSULTORIO MÉDICOS
>
>
> INTRODUCCIÓN:
>
> · Genera Fichas con los datos personales y de sus pacientes.
>
> · Llevará un completo registro cronológico de las consultas.
>
> · Indicara los tratamientos efectuados. Así como también los
> Medicamentos recetados.
>
> · Informe sobre los exámenes realizados, adjuntando imágenes de los
> estudios.
>
> · El sistema contempla la posibilidad de emitir recetas.
>
> · Completa ficha de los médicos del consultorio.
>
> · Administración de Obras Sociales y Laboratorios
>
> Intervinientes.
>
> · Registrará motivo de las consultas diarias.
>
> · Obtendrá estadísticas de consultas, causas, tratamientos, etc.
>
> · Nivel de seguridad con administración de usuarios, restringiendo
> acceso.
>
> Se restringirá por uso médico, administrativo o secretariado.
>
> · Uso Multiusuario.
>
> REQUERIMIENTOS FUNCIONALES
>
> 1. El sistema debe Gestionar LOCALIDADES.
>
> 2. El sistema debe Gestionar LABORATORIOS con su LOCALIDAD [1].
>
> 3. El sistema debe Gestionar OBRAS SOCIALES con sus LABORATORIOS [2].
>
> 4. El sistema debe Gestionar ESPECIALIDADES MEDICAS.
>
> 5. El sistema debe Gestionar MÉDICOS con sus ESPECIALIDADES MEDICAS
> [4], OBRAS SOCIALES [3] que trabaja y su LOCALIDAD [1] y su
> CONSULTORIO [6].
>
> 6. El sistema debe agregar y modificar CONSULTORIOS con los MÉDICOS
> [5] que atienden en ellos.
>
> 7. El sistema debe Gestionar PACIENTES con su LOCALIDAD [1] y su OBRA
> SOCIAL [3].
>
> 8. El sistema debe prescribir RECETAS por el MEDICO [5] de cada
> PACIENTE [7].
>
> 9. El sistema debe Registrar ESTUDIOS realizados por cada PACIENTE [7]
> con intervención de su MEDICO [5].
>
> 10. El sistema debe Registrar CONSULTAS MÉDICAS con su PACIENTE [7],
> OBRA SOCIAL [3], ESTUDIOS [10], RECETAS [8], con la intervención de
> cada MEDICO [5].
>
> 11. El sistema Debe Emitir un Listado de LABORATORIOS [2] por cada
> OBRA SOCIAL [3] que trabaje.
>
> 12. El sistema Debe Emitir un Listado de OBRAS SOCIALES [3] que
> trabaje cada MEDICO [5].
>
> 13. El sistema Debe Emitir un Listado de MÉDICOS [5] con sus
> ESPECIALIDADES MEDICAS [4] y datos personales.
>
> 14. El sistema Debe Emitir un Listado de CONSULTORIO [6] por los
> MÉDICOS [5] q atiendan en él.
>
> 15. El Sistema Debe Emitir un Listado de MÉDICOS [5] filtrados por
> nombre/apellidó.
>
> 16. El sistema Debe Emitir un Listado de PACIENTES [7] con sus datos
> personales, filtrados por nombre/apellido.
>
> 17. El sistema Debe Emitir un Listado de RECETAS [8] emitidas por cada
> MEDICO [5].
>
> 18. El sistema Debe Emitir un Listado de RECETAS [8] emitidas para
> cada PACIENTE [7] y MEDICO [5].
>
> 19. El Sistema Debe Emitir un Listado de RECETAS [8] por un rango de
> fechas de cada PACIENTE [7].
>
> 20. El Sistema Debe Emitir un Listado de ESTUDIOS [9] por cada
> PACIENTE [7].
>
> 21. El Sistema Debe Emitir un Listado de CONSULTAS MEDICAS [10] por un
> rango de fechas y PACIENTE [7].
>
>
>
>
>
> DICCIONARIO DE DATOS
>
> Localidades: Nombre.
>
> Laboratorios: Nombre, Dirección, Teléfono, Localidad y Observaciones.
>
> Obras Sociales: Nombre, Numero de Obra social y Laboratorios que
> Trabaja.
>
> Especialidades Médicas: Nombre.
>
> Consultorios: Numero de Consultorio, Descripción y Médicos.
>
> Médicos: Nombre, Apellido, Dirección, Teléfono, Localidad, Matricula,
> Especialidades Médicas, Obras Sociales, Numero de consultorio,
> Horarios de Atención y Días.
>
> Pacientes: Nombre, Apellido, Fecha de Nacimiento, Dirección, Teléfono,
> Localidad, Numero de
>
> Afiliado (Obra Social) y Obra Social.
>
> Estudios: Nombre, Medico, Paciente, Fecha, Informe, Observaciones e
> Imagen.
>
> Consultas Médicas: Fecha, Medico, Paciente, Motivo, Diagnostico, Obra
> Social, Tratamiento, Evolución, Estudios y Recetas.
>
> Recetas: Fecha, Numero de Afiliado del Paciente (Obra Social),
> Apellido, Nombre del Paciente, Edad del Paciente, Diagnostico (Una
> Consulta Médica), Medicamentos Recetados y Medico.
>
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Pegasus Tech Supply
Tel: (+54)(+223) 471-2880
La Salle 1131 - Mar del Plata - Argentina
http://www.pegasusnet.com.ar / http://blog.pegasusnet.com.ar
http://www.prometeustech.com.ar / http://www.grupopegasus.com
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
_______________________________________________
Php-avanzado mailing list
Php-avanzado en pato2.fi.mdp.edu.ar
http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
Más información sobre la lista de distribución Php-avanzado