Come dovrei strutturare uno schema DB per includere più dati di segmentazione del mercato?

2

Un cliente ha recentemente espresso il desiderio di assegnare le proprie etichette di segmentazione di mercato ai propri clienti, in modo che possano ordinare per segmentazione del mercato nei propri dashboard ("mostrami tutti i clienti VIP che soddisfano determinati criteri", ecc.). Buona idea. Mi piacerebbe offrire questo a tutti i miei clienti.

L'unico problema è che i "loro" clienti non sono esclusivi per loro. Sono anche clienti dei loro concorrenti, che capita anche di essere clienti (è SaaS, quindi tutti usano lo stesso DB). Alice e Bob potrebbero essere entrambi clienti "VIP" presso BusinessOne, ma Alice è un "Seg1" e Bob è un "Seg2" presso BusinessTwo (dove il ragazzo che ha fatto il PCA ha meno immaginazione).

Dovrei creare una tabella Segmentation con chiavi esterne che puntino alle voci Customer e Client pertinenti? O c'è qualche altro modo migliore per farlo?

    
posta Escher 23.04.2016 - 22:49
fonte

2 risposte

2

Capisco che tu abbia un database singolo di database che usi per tutti i tuoi clienti:

It's SaaS, so everyone is using the same DB

Capisco anche che i dati del cliente sono condivisi nel database:

The only trouble is that "their" customers aren't exclusive to them. They're also customers of their competitors, who happen to also be clients

Questo mi sembra strano, perché:

  • in un mercato molto competitivo, trovare i clienti è un argomento molto delicato. Quindi sarebbe molto strano che un cliente potesse vedere clienti che non gli appartengono, semplicemente perché qualcuno li ha inseriti nel database.
  • A parte dai dati di indirizzo molto semplici e dalla registrazione di aziende, molto rapidamente i dati dei clienti sono in generale specifici per un cliente (cioè acquirente responsabile, numero di conto del cliente, ecc ...).

Quindi, a mio avviso, nel tuo modello dovresti già avere una relazione N-N tra cliente e cliente (ad esempio, ogni cliente può essere utilizzato in più client e ogni cliente gestisce più clienti).

Comesapete,unarelazioneN/Nèimplementataconunatabelladiassociazione(chiaveprimaria:IDcliente+IDcliente).Quindiinseriraiidatidisegmentazioneinquestatabella.CiòconsentirebbeaunclientediessereVIPperunclienteecategoriaZperl'altro.

Se ogni cliente può definire i propri segmenti, è possibile elencarli in una tabella di configurazione distinta (chiave primaria: Client + ID categoria).

    
risposta data 23.04.2016 - 23:40
fonte
1

customer 1-m segmentation m-1 client

Questo design consente al cliente di essere associato a qualsiasi numero di clienti e viceversa.

Tuttavia, significa che ogni cliente ha un diverso set di record di segmentazione. Può sembrare uno spreco di spazio ma non in modo critico.

La cosa più significativa a riguardo è che le serie di segmentazioni di ciascun cliente variano in modo indipendente. Ciò significa che il lavoro svolto per aggiungere segmentazioni a un cliente non verrà automaticamente effettuato per altri client.

La duplicazione delle segmentazioni per i client è un aggiornamento molto semplice del database. Semplicemente non succede subito o gratuitamente. Aggiungere segmentazioni per tutti è semplice. Cancellarli per un cliente e non averli aggiunti di nuovo automaticamente è un dolore. Fatto in questo modo vogliono davvero essere indipendenti. Rendili coerenti nel tempo non sarà banale.

Un'alternativa:

customer 1-m segmentation
customer 1-m existing_relationship m-1 client

In questo modo la segmentazione del cliente non ha nulla a che fare con i tuoi clienti. Nessuna opzione di personalizzazione del client qui, a parte il lavoro che ti motiva a fare per ogni cliente.

La tabella existing_relationship è necessaria solo se i clienti hanno bisogno di qualcosa di diverso da tutti i tuoi clienti.

    
risposta data 23.04.2016 - 23:19
fonte

Leggi altre domande sui tag