2013-03-25 16 views
5

Sto cercando di creare una dimensione per l'approvvigionamento delle preferenze dei clienti da più tabelle.Modellazione dimensionale

Esempio delle tabelle sono le seguenti:

enter image description here

ho già preso costruito Dim Cliente e ora ho il disegno del cliente Preferenze Dimension. La nuova dimensione sarà SCD1; sempre con le ultime preferenze dei clienti. Ma un determinato cliente può avere più combinazioni.

Ora la mia domanda: è bene per la progettazione di dimensione per ogni tabella Preferenze sono dovrei comprare tutti gli attributi di preferenza di un cliente in un unico Table Dimension, come di seguito:

enter image description here

Colonne evidenziati farà una preferenza unica di un cliente. * Il cliente può avere più preferenze.

Cosa succede se nel business futuro si introducono altre preferenze e si desidera includere nella dimensione. Quindi devo portare quegli attributi nella tabella sopra e anche i tasti che rendono unici.

È meglio fare quote individuali per preferenza o unire tutte in un'unica grande dimensione come sopra.

Suggerimenti per favore.

Edit:

seguito alla mia lettura ho capito che devo andare con la progettazione di una tabella di ponte tra il mio cliente Dim e altre preferenze del cliente Dimensioni.

Quello che sto pianificando è la creazione di CustomerPreference Dimension per ogni tipo di preferenza con tutte le combinazioni. E mappali in una tabella di bridge dove possono avere relazioni cliente-preferenza molti-a-molti.

esempio come segue

E 'questo il modo giusto di fare o Ci sono dei migliori pratiche.

enter image description here

[o] è questo il modo giusto?

enter image description here

Edit: 27-03-2013

Come da suggerimento di Pondlife vado con l'approccio del fiocco di neve, come di seguito:

enter image description here

+0

Non so perché questa domanda è stata votata per "Chiudi". Nessuno del ragazzo che ha votato per questo sembra avere esperienza di Dimensional Modelling. Mentre il sito consente di pubblicare una domanda con un tag "Dimensina-Modeling". E non sono sicuro di come questa domanda non sia collegata alla programmazione o allo sviluppo del software. E se si guarda indietro nella storia delle domande su "Dimensonal Modeling" su Stackoverflow, ce ne sono molte e le risposte sono state positive. – Sreedhar

+0

Non sono sicuro del motivo per cui questa domanda è stata votata per "Chiudi". Nessuno del ragazzo che ha votato per questo sembra avere esperienza di Dimensional Modelling. Mentre il sito consente di pubblicare una domanda con un tag "Dimensina-Modeling". E non sono sicuro di come questa domanda non sia collegata alla programmazione o allo sviluppo del software. E se si guarda indietro nella storia delle domande su "Dimensonal Modeling" su Stackoverflow, ce ne sono molte e le risposte sono state positive. Gentilmente non usare i tuoi privilegi per downvotare una domanda se non capisci. – Sreedhar

risposta

4

Non hai detto niente sulla tua tabella dei fatti, che potrebbe essere un fattore chiave in una decisione. Se le preferenze si applicano solo ai clienti e non sono completamente correlate al fatto, è possibile utilizzare uno snowflake model per aggiungere una tabella delle preferenze cliente collegata solo alla dimensione cliente.

Ma lei ha citato "dimensioni individuali per preferenza", il che suggerisce che le preferenze potrebbero essere direttamente correlate al fatto.In tal caso, se hai un numero limitato di preferenze possibili per fatto (questo non è chiaro dalle informazioni che hai fornito) un mini-dimension che contenga tutte le combinazioni possibili delle preferenze potrebbe essere un'opzione migliore.

Se questo non è utile, vi suggerisco di chiarire i punti seguenti:

  1. Che la tabella dei fatti rappresenta
  2. Se le preferenze sono legate al fatto o al cliente
  3. Se un cliente (o fatto?) ha un massimo di 3 preferenze (marketing, piattaforma e genere) o un numero indefinito (es. 3 preferenze di marketing, 10 preferenze di piattaforma, 2 preferenze di genere)
+0

Non ci sono fatti associati e le preferenze sono solo associate al Cliente. Sì, ogni cliente può avere un numero indefinito di preferenze come quello che hai detto, ad es. 3 preferenze di marketing, 10 preferenze di piattaforma, 2 preferenze di genere – Sreedhar

+0

Avevo intenzione di andare con quello che hai detto di mini-dimensione per ogni tipo di preferenza con tutte le combinazioni possibili e quindi essere collegato con il cliente nella tabella Bridge (tabella senza fatti). – Sreedhar

+0

Sì, queste preferenze si applicano solo ai clienti e non sono completamente correlate al fatto. Solo il cliente è collegato ai fatti. – Sreedhar

0

You'v Ha il temuto modello "Entity-Attribute-Value" per le preferenze dei clienti, dal momento che gli sviluppatori pensano che rende le loro vite "più facili" non dover apportare modifiche al DB quando viene aggiunta una nuova preferenza. Certo che ti rende la vita molto più difficile.

Attualmente sto lavorando in una situazione simile e ho trovato il modo più semplice per modellare le preferenze dei clienti con una tabella dei ponti degli attributi come hai scoperto tu stesso, specialmente quando è veramente molti a molti.

La vera domanda che deve essere posta è che tipo di analisi verrà eseguita con queste preferenze? Se stai solo filtrando i clienti in base alle tue preferenze, poi andando a un dato di fatto con quella serie di clienti, il bridge many-many dovrebbe fare il trucco.

+0

Grazie per il suggerimento. Le mie dimensioni delle preferenze sono solo specifiche per Cliente Dim e sto adottando l'approccio Snowflake collegando Dim cliente su Dim cliente come suggerito da @Pondlife. Se queste dimensioni di preferenza sono state utilizzate altrove, dove sarei andato con il bridge table (factless fact). – Sreedhar

+0

C'è mai un caso in cui un cliente può avere più di una preferenza dello stesso tipo? Potresti aver bisogno di una tabella ponte attributi nel tuo fiocco di neve. –