Un modello di dati per facilitare la consultazione del database

Ah! Capito! Hai qualche idea su come potrebbe essere? Siamo sempre alla ricerca di modi per renderlo più facile qui :slight_smile:

2 Mi Piace

Certamente! Qualcosa come il modello di dati di Northwind (famoso per MS Access!) sarebbe brillante. Potrebbe persino esserci uno strumento che ne generi uno indagando sullo schema Postgres

2 Mi Piace

Puoi condividerlo come se stessi parlando con un principiante? Ad esempio:

  • Cosa aiuterebbe a risolvere l’aggiunta di questo?
  • Come ti aspetteresti di vedere questo se venisse aggiunto? Come apparirebbe?

Sto fondamentalmente prendendo il tuo suggerimento e chiedendo maggiori dettagli (per quanto puoi fornire :wink: ) in modo da poter migliorare l’esperienza per il prossimo Data Architect che arriverà. Non ho esperienza in dati, quindi il tuo suggerimento dettagliato sarà utile :slight_smile:

2 Mi Piace

Haha Osioke,

Un’ottima osservazione! Toccata…

Quindi la maggior parte delle persone che lavorano con i database (non solo architetti di dati! Anche gli sviluppatori!) trovano molto utile avere una sorta di modello di dati che mostri come le varie tabelle sono collegate tra loro.

Ad esempio, prendiamo la mia query ;), avevo bisogno di diverse informazioni su un utente - avevo bisogno di informazioni su un utente che:

  • era (o non era) in un particolare gruppo
  • aveva risolto un argomento
  • entro un certo intervallo di date

Per rispondere a quanto sopra, ho bisogno della tabella degli utenti, della tabella delle azioni dell’utente e della tabella dei gruppi. Un modello di dati mi avrebbe mostrato che posso collegare un utente a un’azione dell’utente tramite id/user_id, e collegare un utente a un gruppo tramite il suo primary_group_id/id visivamente.

Aiuta a visualizzare non solo quali dati sono disponibili, ma come unirli, specialmente se ci sono query un po’ lunghe in gioco.

Sì, potresti fare clic su ogni singola tabella nell’esploratore di dati per capire quali campi sono disponibili e annotarli in modo da non dimenticarli, ma avere un modello di dati potrebbe essere un po’ più umano per alcuni di noi :slight_smile:

5 Mi Piace

Ah! Ti ho beccato di nuovo! :sweat_smile:

Non sono un tecnico, quindi non mi era chiaro. Vedo la necessità, quindi sì. Un modello di dati sarebbe utile. Vediamo cosa posso fare. :slight_smile:

Nel frattempo, ho spostato questa conversazione in un nuovo argomento nella nostra categoria Site feedback in modo da mantenere pulita l’altra discussione.

2 Mi Piace

Sarebbe fantastico, grazie!

1 Mi Piace

Quindi sto parlando con il team e questa non è una cosa che sarebbe semplice per molte ragioni. L’abbiamo anche spostata su Feature perché mostra di più di cosa si tratterebbe.

Attualmente, noi che lavoriamo con i dati internamente utilizziamo principalmente i modelli disponibili nel codice sorgente:

Ho anche dato un’occhiata al modello dati di Northwind:

Quello è decisamente facile da capire e sta su carta o su uno schermo. 13 tabelle in tutto.

Confrontando quello con Discourse, abbiamo molte più tabelle, oltre 180 o più, visualizzarle sarebbe… un viaggio. Soprattutto perché ci sono anche tabelle dai plugin (e queste cambiano da installazione a installazione) e dati nelle tabelle *_custom_fields che dovrebbero essere inclusi se si vuole davvero avere un quadro completo.

Inoltre, a causa di come è progettato il nostro database, non possiamo utilizzare la maggior parte degli strumenti per la modellazione dei dati, avremmo bisogno di trovarne uno che funzioni con i modelli ActiveRecord. E penso che anche questo renda le cose complicate, tutte queste conversazioni sui dati sono al di sopra delle mie capacità. :sweat_smile:

Ma ciò non significa che non sia qualcosa che vogliamo fare, questo è solo un commento. Mi piacerebbe sentire suggerimenti da te o da chiunque altro su come potremmo migliorare questa cosa. :wink: :slight_smile:

6 Mi Piace

Non è molto utile, poiché le sue dimensioni, la mancanza di chiavi esterne e il fatto che lasciamo pochissima logica al RDMS rendono difficile comprendere il database di Discourse senza leggere il codice sorgente di Discourse.

Ma se ne hai davvero bisogno, RubyMine può generartelo.

14 Mi Piace

Puoi generarne uno con relazioni con rails-erd: GitHub - voormedia/rails-erd: Generate Entity-Relationship Diagrams for Rails applications

Non sono sicuro di quanto sia utile, però.

10 Mi Piace

@lju Spero che tutte le nostre spiegazioni ti siano d’aiuto, soprattutto con il contesto aggiunto. Chiuderò questa discussione tra uno o due giorni. Se ritieni di aver ancora bisogno di qualche dettaglio in più, non esitare a chiedere.

3 Mi Piace

Ciao @osioke,

Mi scuso per il ritardo nella risposta, sono stato un po’ oberato.

Ho alcune idee su cosa potrebbe essere utile: se potessi darmi qualche giorno, scriverò qualcosa.

Saluti,

Lju

1 Mi Piace

Fantastico! Tra qualche giorno ce l’avrai :slight_smile: grazie per averci dedicato attenzione.

Ciao a tutti,

Quindi la mia argomentazione sarebbe che un modello di dati sarebbe utile, ma non è necessario includere tutte le tabelle. Sospetto che ci siano probabilmente le circa 15-25 tabelle “chiave” che il 90% di tutte le query utilizzano/che le persone cercano. Infatti, guardando le varie tabelle disponibili, ci sono probabilmente una serie di modelli di dati che potrebbero essere creati, in base ai tipi di query/dati che si desidera esplorare.

Posso provare nei prossimi giorni a raccogliere quelle che penso siano le tabelle più comunemente interrogate - non sarà una ricerca approfondita, solo un tentativo. Sono sicuro che le varie domande poste nella categoria Data Explorer faranno anche luce sulle tabelle più popolari.

Potrebbe esserci anche un altro diagramma per rappresentare le “zone” di interesse per facilitare la navigazione delle diverse parti dei dati disponibili.

Ha senso?

Saluti,

Lju

6 Mi Piace

Data explorer elenca già le 9 tabelle più importanti per prime nel pannello dell’interfaccia utente di modifica delle query, ed è possibile visualizzare la struttura delle colonne e i tipi di tutte le tabelle con un clic:

3 Mi Piace

Quindi potremmo prendere quelle 9 tabelle e trasformarle in un modello di dati semplificato? :thinking: :wink:

5 Mi Piace

Certo, procedi pure e condividi i risultati!

4 Mi Piace

dann è enorme; uno degli schemi di database più grandi che abbia mai visto online
è stato creato con https://dbdiagram.io? ti dispiace condividere l’URL pubblico del diagramma?
sono più interessato alle relazioni e alle connessioni tra queste tabelle

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

grazie

molto utile ma sarebbe fantastico avere un URL condivisibile in modo da poter vedere le relazioni tra le tabelle e anche le chiavi primarie/esterne nelle tabelle
ci sono relazioni uno-a-uno nello schema? vorrei saperlo soprattutto tra le tabelle users e user_options

Qualcuno è disposto ad aiutare con le relazioni tra queste tabelle? dallo schema diagramma

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

interessato a sapere se ci sono relazioni 1-a-1

lo apprezzerò..grazie

cc @Falco @sam

È per lo più 1-N, poiché gli utenti hanno più notifiche, token di autenticazione, ecc.

user_options è 1-1.