Best practice per mappare un ID esterno sul mio sistema

3

Ho effettuato alcune ricerche per "mappatura id" e "mappatura id esterna" e non riesco a trovare nulla di significativo sul sito o su Google, quindi, ecco la mia domanda / scenario.

Sto sviluppando un'applicazione che abbinerà alcuni record del nostro sistema interno con gli "stessi" record di un sistema esterno (esterno alla società). Lo scambio di dati (ricevere i dati dal sistema esterno) è irrilevante (potrebbe essere TXT, CSV, XML, Excel, ecc.).

A un certo punto dovrò abbinare il nostro ID cliente interno con l'ID cliente esterno. Il fatto è: io so il mio id è immutabile , ma non conosco id l'id esterno è modificabile . E non c'è modo di saperlo, perché il sistema esterno è fuori dal mio controllo e può essere cambiato a mia insaputa in qualsiasi momento.

Quindi ho 2 scenari:

  • Caso migliore: l'ID esterno è immutabile;
  • Caso peggiore: l'ID esterno è mutabile (all'interno dei vincoli di seguito);

Quindi sto sviluppando una tabella di mappatura con i seguenti attributi:

  • ID cliente sistema interno;
  • ID cliente sistema esterno;

Cose piuttosto standard.

La vera domanda è: Cosa dovrei aggiungere su questa tabella per preparare lo scenario peggiore?

Vincoli:

  • Se l'ID è mutabile, sarà su base giornaliera, quindi non ci può essere un ID interno-esterno 1-a-molti nello stesso giorno (questa è una regola aziendale che può essere applicata );
  • L'ID esterno può essere qualsiasi cosa, da un numero intero a un GUID o un codice postale. Ma niente più grande di un GUID;
posta Machado 03.01.2014 - 15:01
fonte

2 risposte

3

Per eseguire la mappatura, è necessario qualcosa che identifichi univocamente l'oggetto nel sistema esterno. Questo è esattamente lo scopo di un ID.

Se il sistema esterno utilizza ID mutabili, il sistema è danneggiato. Ciò include il caso in cui un ID di un'entità rimossa viene riutilizzato per una nuova entità.

Per avere un suggerimento che il sistema è rotto, puoi confrontare diverse proprietà dell'entità memorizzata localmente con le informazioni del sistema esterno. Ad esempio, per un cliente, è possibile abbinare il nome e il cognome, l'indirizzo e-mail o la data di nascita. Mentre una mancata corrispondenza in uno di questi campi non significa nulla (ad esempio, il cliente può cambiare il suo nome, o la data di nascita originale può essere errata e corretta in seguito), il fatto che molti di loro siano cambiati è una buona indicazione del Riciclaggio ID.

    
risposta data 03.01.2014 - 15:10
fonte
1

La migliore pratica è che l'ID esterno deve essere immutabile.

Diciamo che la tua corrispondenza solo sull'ID dipendente. Certamente prendere solo l'ID dipendente potrebbe non essere sufficiente in quanto società diverse potrebbero utilizzare lo stesso tipo di assegnazione di ID. Ad esempio, l'ID dell'impiegato della società X è 1234 e l'ID del dipendente della società Y è 1234. Il sistema è ora danneggiato se si utilizza l'ID dipendente in questo caso.

In questi casi, è necessario più design per ottenere un ID immutabile. In questo caso, forse l'ID è una combinazione di ID dipendente e ID dell'azienda, o forse ID dipendente, ID azienda e nome della società, qualunque sia la combinazione, deve essere immutabile.

Ciò richiederà una certa previdenza per garantire che gli ID esterni possano essere trovati e abbinati ai tuoi ID interni.

Ora se la società sta inviando nuovi ID per sostituire quelli più vecchi, devono inviare quello precedente, oppure come farai a trovare i dati precedenti e corrispondenti e aggiornare i tuoi dati. Devi trattare qualsiasi ID non trovato come nuovo.

Potresti usare tecniche come @MainMa suggerisce di fare corrispondenze di tipo property / fuzzy logic, ma queste sono sempre imperfette e tendono a diventare molto complesse rapidamente.

Considera questo caso:

  • 123 South Main Street Apt 1
  • 123 S. Main St. Plaza Building Apt 1

Questi indirizzi sono gli stessi? Può essere. L'acqua è profonda e torbida in questa piscina.

Utilizza ID esterni immutabili.

    
risposta data 03.01.2014 - 22:30
fonte

Leggi altre domande sui tag