Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 5 de 5

Tema: Como crear la siguiente estructura de una base de datos

  1. #1
    Me va gustando esto... Habitante
    Fecha de Ingreso
    27 ago, 11
    Ubicación
    Santiago
    Mensajes
    38
    Poder de Reputación
    10

    Como crear la siguiente estructura de una base de datos

    Hola a todos, en esta ocasion quisiera recibir de parte de ustedes acerca de como puedo crear la siguiente estructura de una base de datos partiendo de que ya he hecho varias pruebas para ver el funcionamiento de la programacion en php y yo como usuario muy novato en este lenguaje solo manejando el html y codigos que encuentros en php he podido ir comprendiendo.

    Pues bien estoy por elaborar un sistema de facturacion online para el area medica poder elaborar una base de datos que cumpla mas o menos con los siguientes datos generales:

    PACIENTES
    MEDICOS
    SEGUROS
    FACTURAS
    REPORTES
    PROCEDIMIENTOS
    USUARIOS

    Sobre los detalles que son relativos a la estructura quisiera saber como puede estar hecha esta segun el tipo es decir barchar, int, auto increment etc.. cosas como estas.

    casi todos estos datos sera identicos en cada uno de los casos anteriores.

    id Nombres Apellidos Direccion Centro Clinico Especialidad Telefono Celular fax correo ciudad pais zona fecha usuario comentarios

    Como podrian ir uniendose cada uno de los menu hasta mezclar cada uno por ejemplo si digo que un PACIENTE PERTENECE A UN MEDICO X , A SU VEZ ESTE PERTENECE A UNA ASEGURADORA X Y ESA ASEGURADORA X TIENE X PROCEDIMIENTOS. ETC..

    Con respecto a los usuarios que un usuario este ligado a MEDICO es decir solo pueda ver sus pacientes sin que pueda a su vez ver los pacientes de otro MEDICO y aun entrando a las aseguradoras solo vea su informacion y no la de los demas generar sus reportes etc.. que el sistema permita tanto al medico poder crear su perfil es decir contar con un registro al sistema o a su vez el ADMINISTRADOR pueda crearlo y este si pueda ver todos los perfiles MEDICOS y sus PACIENTES.

    Por otra parte por donde deberia empezar primero partiendo de que por ejemplo ya haya creado la base de datos. De mi parte yo pienso en crear la base de datos relativa a ciudades, paises, especialidades, luego aseguradoras, clinicas, procedimientos, luego la asignacion de medicos a las aseguradoras y los procedimientos del catalogo contratado, y mas adelante lo que tiene que ver con los pacientes, la factura, y con respecto a los usuarios y lo que este pueda ver es mi duda si hacerlo al principio o al final para poder poner los controles de lo que puede este ver o no puede ver.

    Espero su recomendacion.

    Gracias,

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,044
    Poder de Reputación
    21
    Hola, lo que pides es muy extenso de explicar y de hacer, por ende te diría que averigues como normalizar una base de datos en base a la teoría relacional, que es el esquema con el que se manejan las bases de datos actualmente (a no ser de que yo este obsoleto).

    En lugar de crear una base de datos para cada ítem (ciudades, paises, especialidades, etc.) deberías crear una tabla para cada ítem. La idea es que no existan datos duplicados, pero que no se necesite modificar una tabla para añadir datos. Por ejemplo: si tienes una tabla usuario con las columnas id (int, llave primaria - primary key), nombre (varchar - 50), apellido (varchar - 100), teléfono (int o varchar) e e-mail (varchar - 100 o text); comienzas a insertar datos, pero en algún momento te das cuenta que el usuario puede tener más de un email, entonces ¿que haces si no puedes asociar un más de un email al mismo usuario - id (respetando la teoría relacional que no permite duplicados)? En estos casos es cuando creas una nueva tabla (llamada contacto, por ejemplo) y en esta ingresas los datos de contacto asociándolos a través de una llave foránea (foreign key - palabra clave en SQL, al igual que primary key):

    usuario_tabla
    id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(100) NOT NULL,


    contacto_tabla
    id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
    telefono VARCHAR(20) NULL,
    email VARCHAR(100) NULL,
    usuario_id INT,
    INDEX uid (usuario_id),
    FOREIGN KEY (usuario_id)
    REFERENCES usuario_tabla(id)
    ON DELETE CASCADE
    ON UPDATE CASCADE;

    Ahora podrás crear un usuario y asignarle un cantidad "ilimitada" de información de contacto. Aquí puedes empezar, para que entiendas mas o menos de lo que tratan las bases de datos relacionales.

    Saludos y perdona por no ayudarte más allá.

  3. #3
    Me va gustando esto... Habitante
    Fecha de Ingreso
    27 ago, 11
    Ubicación
    Santiago
    Mensajes
    38
    Poder de Reputación
    10
    Cita Iniciado por skaparate Ver Mensaje
    Hola, lo que pides es muy extenso de explicar y de hacer, por ende te diría que averigues como normalizar una base de datos en base a la teoría relacional, que es el esquema con el que se manejan las bases de datos actualmente (a no ser de que yo este obsoleto).

    En lugar de crear una base de datos para cada ítem (ciudades, paises, especialidades, etc.) deberías crear una tabla para cada ítem. La idea es que no existan datos duplicados, pero que no se necesite modificar una tabla para añadir datos. Por ejemplo: si tienes una tabla usuario con las columnas id (int, llave primaria - primary key), nombre (varchar - 50), apellido (varchar - 100), teléfono (int o varchar) e e-mail (varchar - 100 o text); comienzas a insertar datos, pero en algún momento te das cuenta que el usuario puede tener más de un email, entonces ¿que haces si no puedes asociar un más de un email al mismo usuario - id (respetando la teoría relacional que no permite duplicados)? En estos casos es cuando creas una nueva tabla (llamada contacto, por ejemplo) y en esta ingresas los datos de contacto asociándolos a través de una llave foránea (foreign key - palabra clave en SQL, al igual que primary key):

    usuario_tabla
    id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
    nombre VARCHAR(50) NOT NULL,
    apellido VARCHAR(100) NOT NULL,


    contacto_tabla
    id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
    telefono VARCHAR(20) NULL,
    email VARCHAR(100) NULL,
    usuario_id INT,
    INDEX uid (usuario_id),
    FOREIGN KEY (usuario_id)
    REFERENCES usuario_tabla(id)
    ON DELETE CASCADE
    ON UPDATE CASCADE;

    Ahora podrás crear un usuario y asignarle un cantidad "ilimitada" de información de contacto. Aquí puedes empezar, para que entiendas mas o menos de lo que tratan las bases de datos relacionales.

    Saludos y perdona por no ayudarte más allá.
    Gracias por responder y no te preocupes porque se que es muy valioso los comentarios que ofreces aqui para mi pregunta. he estado leyendo sobre el particular ya que lo que busco es no tener que hacer un conjunto de cosas y luego verme con el problema encima y mas cuando se trata con la base de datos y en este caso he estado viendolo desde varios puntos de vista ya que el punto mas complicado ha sido el como unir y relacionar un dato con otro y que si a su vez es modificado o eliminado se realize en todas las tablas o no se realice en todas ellas, por ejemplo, si decido modificar un medico y las tablas estan relacionadas; se modificará el nombre de este medico en todas las tablas incluyendo los pacientes que hayan sido ya guardados con el nombre del medico que lo atendió si estass tablas se relacionan o solo se modifica el medico y en el registro del paciente queda como tal este de ahi que debo saber como crear cada tabla para que estas interactuen cuando sea necesario y en otros casos no.

    Un punto a tomar tambien en cuenta si las tablas son relacional al llamar la base de datos como son estas llamadas si estan en tablas distintas habria que mencionar el nombre de cada tabla en donde se encuentra por ejemplo id_usuario?

    Pero gracias nuevamente voy a leer lo que me recomiendas para lograr captar una idea mejor y cuando ya este mas acaba compartire las tablas que ire creando para que me den su opinion al respecto.
    Última edición por Dramidom; 02/09/2011 a las 13:45

  4. #4
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,044
    Poder de Reputación
    21
    el punto mas complicado ha sido el como unir y relacionar un dato con otro y que si a su vez es modificado o eliminado se realize en todas las tablas o no se realice en todas ellas, por ejemplo, si decido modificar un medico y las tablas estan relacionadas; se modificará el nombre de este medico en todas las tablas incluyendo los pacientes que hayan sido ya guardados con el nombre del medico que lo atendió si estass tablas se relacionan o solo se modifica el medico y en el registro del paciente queda como tal este de ahi que debo saber como crear cada tabla para que estas interactuen cuando sea necesario y en otros casos no.
    Esto es justamente lo más extenso (a mi juicio) y es en este punto donde aprender a relacionar las tablas (en base a bases de datos relacionales - valga la redundancia) es una ayuda importantísima :D.

    como son estas llamadas si estan en tablas distintas habria que mencionar el nombre de cada tabla en donde se encuentra por ejemplo id_usuario?
    En SQL existen formas de extraer columnas de distintas tablas y bases de datos y combinar los datos en una sola respuesta. En MySQL, una de las formas de hacerlo es así:

    SELECT * FROM tabla1, tabla2 WHERE tabla1.id = xx AND tabla2.id = yy;

    Si yo no incluyo la condición WHERE, se extraerán todos los datos, incluso si estos están duplicados (eso es lo que se intenta eliminar con las bases de datos relacionales). Existen otras instrucciones como JOIN, que permite mezclar los resultados sin que estos se mezclen.

    Igualmente, a pesar de todo lo que te he comentado, no soy un experto en bases de datos y me cuesta bastante (a veces) relacionarlas y extraer/modificar/eliminar datos, así que por ello tampoco te puedo ayudar mucho XD.

    Saludos.

  5. #5
    Me va gustando esto... Habitante
    Fecha de Ingreso
    27 ago, 11
    Ubicación
    Santiago
    Mensajes
    38
    Poder de Reputación
    10
    Cita Iniciado por skaparate Ver Mensaje
    Esto es justamente lo más extenso (a mi juicio) y es en este punto donde aprender a relacionar las tablas (en base a bases de datos relacionales - valga la redundancia) es una ayuda importantísima :D.



    En SQL existen formas de extraer columnas de distintas tablas y bases de datos y combinar los datos en una sola respuesta. En MySQL, una de las formas de hacerlo es así:

    SELECT * FROM tabla1, tabla2 WHERE tabla1.id = xx AND tabla2.id = yy;

    Si yo no incluyo la condición WHERE, se extraerán todos los datos, incluso si estos están duplicados (eso es lo que se intenta eliminar con las bases de datos relacionales). Existen otras instrucciones como JOIN, que permite mezclar los resultados sin que estos se mezclen.

    Igualmente, a pesar de todo lo que te he comentado, no soy un experto en bases de datos y me cuesta bastante (a veces) relacionarlas y extraer/modificar/eliminar datos, así que por ello tampoco te puedo ayudar mucho XD.

    Saludos.
    Entiendo perfectamente yo en cuanto a esto solo tengo la idea pero surgen los problemas de como hacerlo ya que conociendo ciertos programas de informatica he visto como en ocasiones tienen algunos fallos debido a que en cuanto a la forma de la base de datos no se realizo como debia y es lo que trato de evitar. Voy a tratar de hacer lo mejor que pueda y probar hasta que vea que todo funciona bien. Aprendo mas comiendo errores que leyendo tutoriales, pues en cada error descubro una forma de solucionar otro problema que aparezca en el camino jeje.

Temas Similares

  1. ¿Como crear una base de datos de imagenes?
    Por scarsx en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 8
    Último Mensaje: 29/08/2009, 17:48
  2. Como plantear la siguiente base de datos
    Por FRACTO en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 4
    Último Mensaje: 03/12/2008, 17:19

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •