es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

cómo administrar información común entre múltiples tablas en bases de datos

Esta es mi primera pregunta en Stack Overflow, soy un desarrollador full-stack y trabajo con el siguiente stack: Java – Spring – Angular – MySQL. Estoy trabajando en un proyecto secundario y tengo algunas preguntas sobre el diseño de la base de datos.

Tengo alguna información que es común entre varias tablas, como:

  • Información de documentos (puede ser utilizada inicialmente en las tablas FOLDER y CONTRACT).
  • Información de tipo (tablas: COURT, FOLDER, OPPONENT, …).
  • Estado (tablas: CONTRACT, FOLDER, …).
  • Dirección (tablas: OFFICE, CLIENT, OPPONENT, COURT, …).

Para evitar la repetición y acoplar las tablas principales con tablas “técnicas” (información que puede ser utilizada en muchas tablas), estoy pensando en fusionar las tablas “técnicas” en una tabla funcional. Por ejemplo, podemos tener una tabla genérica DOCUMENT con las siguientes columnas:
– ID
– TÍTULO
– DESCRIPCIÓN
– FECHA DE CREACIÓN
– TIPO DE DOCUMENTO (FOLDER, CONTRACT, …)
– ID DEL OBJETO (Clave primaria de la tabla TIPO DE DOCUMENTO)
– ID DE LA OFICINA
– DATOS PATT

Por ejemplo, podemos recuperar la información sobre un documento con la siguiente consulta:

SELECT * FROM DOCUMENT WHERE ID DE LA OFICINA = “ID de oficina 1” AND TIPO DE DOCUMENTO = “CONTRACT” AND ID DEL OBJETO = “ID del contrato”;

También podemos utilizar el siguiente índice para optimizar la consulta:
CREATE INDEX idx_document_retrieve ON DOCUMENT (ID DE LA OFICINA, TIPO DE DOCUMENTO, ID DEL OBJETO);

Mis preguntas son:
– ¿Es este un buen diseño?
– ¿Existe una mejor manera de implementar este diseño?
– ¿Debería simplemente usar un diseño de base de datos normal? Por ejemplo, una carpeta puede tener muchos documentos, por lo que crearía una tabla folder_document con el ID de la carpeta como clave externa, y hacer lo mismo para todas las demás tablas.

Cualquier sugerencia o nota es bienvenida y gracias de antemano por la ayuda.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Respuesta

    ¿Es este un buen diseño?

    El diseño propuesto de tener una tabla genérica para la “información técnica” es una buena opción ya que reduce la repetición y el acoplamiento en las tablas principales. Además, proporciona una solución más flexible y escalable en caso de que haya tablas adicionales que requieran la misma información técnica.

    ¿Existe una mejor manera de implementar este diseño?

    Depende de los requisitos específicos y casos de uso del proyecto. Sin embargo, tener una tabla genérica es una solución viable. Una posible mejora podría ser utilizar una tabla separada para cada tipo de información técnica (por ejemplo, Documento, Tipo, Estado, Dirección) para mejorar la organización y gestión de datos.

    ¿Debería simplemente utilizar un diseño normal de base de datos?

    Utilizar un diseño normal de base de datos con tablas separadas para cada tipo de información técnica es una opción válida. Sin embargo, puede agregar más complejidad y repetición en las tablas principales.

    En resumen, el diseño propuesto de tener una tabla genérica para la información técnica es una buena solución que se puede mejorar en función de los requisitos específicos del proyecto.

Comments are closed.