Un modelo de datos para facilitar la consulta de la base de datos

¡Ah! ¡Entendido! ¿Alguna idea de cómo podría ser? Siempre estamos buscando formas de hacerlo más fácil :slight_smile:

2 Me gusta

¡Por supuesto! Algo como el modelo de datos de Northwind (¡famoso por MS Access!) sería brillante. Incluso puede que haya una herramienta que genere uno investigando el esquema de Postgres.

2 Me gusta

¿Puedes compartir eso como si hablaras con un novato? Por ejemplo:

  • ¿Qué ayudaría a resolver añadir esto?
  • ¿Cómo esperarías ver esto si se añade? ¿Cómo se vería?

Básicamente, estoy tomando tu sugerencia y pidiendo más detalles (toda la información que puedas dar :wink: ) para que podamos mejorar la experiencia del próximo Arquitecto de Datos que venga. No tengo experiencia en datos, así que tu sugerencia detallada será útil :slight_smile:

2 Me gusta

Jaja Osioke,

¡Muy justo! Tienes razón…

Así que la mayoría de la gente que trabaja con bases de datos (¡no solo arquitectos de datos! ¡Los desarrolladores también!) encuentran muy útil tener algún tipo de modelo de datos que les muestre cómo se conectan las diversas tablas entre sí.

Por ejemplo, tomemos mi consulta ;), necesitaba varias piezas de información sobre un usuario - necesitaba información sobre un usuario que:

  • estaba (o no estaba) en un grupo en particular
  • había resuelto un tema
  • dentro de un cierto rango de fechas

Para responder a lo anterior, necesito la tabla de usuarios, la tabla de acciones de usuario y la tabla de grupos. Un modelo de datos me habría mostrado que puedo vincular un usuario a una acción de usuario a través de id/user_id, y vincular un usuario a un grupo a través de su primary_group_id/id visualmente.

Ayuda a visualizar no solo qué datos están disponibles, sino cómo unirlos, especialmente si hay algunas consultas largas en juego.

Sí, podrías hacer clic en cada tabla individual en el explorador de datos para averiguar qué campos están disponibles y anotarlos para no olvidarlos, pero tener un modelo de datos puede ser un poco más humano para algunos de nosotros :slight_smile:

5 Me gusta

¡Ah! ¡Te entendí de nuevo! :sweat_smile:

No soy técnico, así que esto no me quedó claro. Sin embargo, veo la necesidad, así que sí. Un modelo de datos sería útil. Déjame ver qué puedo hacer. :slight_smile:

Mientras tanto, he movido esta conversación a un nuevo tema en nuestra categoría Site feedback para mantener limpia la otra discusión.

2 Me gusta

¡Eso sería increíble, gracias!

1 me gusta

Estoy hablando con el equipo y esto no sería algo sencillo por muchas razones. También lo hemos movido a Feature porque eso muestra más de lo que sería.

Actualmente, quienes trabajamos con datos internamente usamos principalmente los modelos disponibles en el código fuente:

También eché un vistazo al modelo de datos de Northwind:

Definitivamente es fácil de entender y cabe en papel o en una pantalla. 13 tablas en total.

Comparado con Discourse, tenemos muchas más tablas, más de 180 o más, visualizar esto sería… un viaje. Especialmente porque también hay tablas de plugins (y estas cambian de una instalación a otra) y datos en las tablas *_custom_fields que también deberían incluirse si realmente quieres tener una imagen completa.

Además, debido a cómo está diseñada nuestra base de datos, no podemos usar la mayoría de las herramientas para modelado de datos, necesitaríamos encontrar una que funcione con modelos ActiveRecord. Y creo que eso también hace que esto sea complicado, todas estas conversaciones sobre datos están por encima de mi nivel. :sweat_smile:

Pero eso no quiere decir que no sea algo que queramos hacer, esto es solo un comentario. Me encantaría escuchar sugerencias tuyas o de cualquier otra persona sobre cómo podríamos mejorar esto. :wink: :slight_smile:

6 Me gusta

Realmente no es muy útil, ya que su gran tamaño, la falta de claves externas y el hecho de que dejamos muy poca lógica al RDMS significa que es difícil entender la base de datos de Discourse sin leer el código fuente de Discourse.

Pero si realmente lo necesitas, RubyMine puede generarlo por ti.

14 Me gusta

Puedes generar uno con relaciones con rails-erd: GitHub - voormedia/rails-erd: Generate Entity-Relationship Diagrams for Rails applications

Aunque no estoy seguro de lo útil que sea.

10 Me gusta

@lju Espero que todas nuestras explicaciones ayuden aquí, especialmente con el contexto adicional. Cerraré esto en uno o dos días. Si todavía sientes que necesitas algún detalle extra, no dudes en preguntar.

3 Me gusta

Hola @osioke,

Disculpa la demora en responder, he estado un poco atareado.

Tengo algunas ideas sobre lo que sería útil; si puedes darme unos días, escribiré algo.

Saludos,

Lju

1 me gusta

¡Genial! Tienes unos días :slight_smile: gracias por prestarle atención.

Hola a todos:

Mi argumento sería que un modelo de datos sería útil, pero no necesitamos incluir necesariamente todas las tablas. Sospecho que probablemente haya unas 15-25 tablas “clave” que se utilizan en el 90% de todas las consultas / lo que la gente busca. De hecho, al observar las diversas tablas disponibles, es probable que se puedan crear una serie de modelos de datos, basados en los tipos de consultas/datos que se buscan explorar.

Puedo intentar en los próximos días recopilar lo que creo que serían las tablas consultadas con más frecuencia; esto no sería una investigación exhaustiva, solo una suposición. Estoy seguro de que las diversas preguntas formuladas en la categoría Data Explorer también arrojarán luz sobre las tablas populares.

También podría haber otro diagrama para representar las “zonas” de interés para facilitar la navegación por las diferentes partes de los datos disponibles.

¿Tiene sentido?

Saludos,

Lju

6 Me gusta

El explorador de datos ya enumera las 9 tablas más importantes primero en el panel de la interfaz de usuario de edición de consultas, y puede ver la estructura y los tipos de columnas de todas las tablas con un clic:

3 Me gusta

¿Así que podríamos tomar esas 9 tablas y convertirlas en un modelo de datos simplificado? :thinking: :wink:

5 Me gusta

¡Claro, adelante y comparte los resultados!

4 Me gusta

Vaya, esto es enorme; uno de los esquemas de bases de datos más grandes que he visto en línea.

¿Fue creado con https://dbdiagram.io? ¿Podrías compartir la URL pública del diagrama?

Estoy más interesado en las relaciones y conexiones entre estas tablas:

users,
user_options,
api_keys,
user_api_keys,
user_auth_tokens,
user_auth_token_logs,
notifications

Gracias.

muy útil, pero sería genial tener una URL compartible para que podamos ver las relaciones de las tablas y también las claves primarias/externas en las tablas.

¿Hay alguna relación de 1 a 1 en el esquema? Me gustaría saber especialmente entre las tablas users y user_options.

¿Alguien dispuesto a ayudar con las relaciones entre estas tablas? del diagrama de esquema

users,
user_options,
api_keys,
user_api_keys,
user_auth_tokens,
user_auth_token_logs,
notifications

Interesado en saber si hay relaciones 1 a 1

Lo agradecería.. gracias

cc @Falco @sam

Es mayormente 1-N, ya que los usuarios tienen múltiples notificaciones, tokens de autenticación, etc.

user_options es 1-1.