Impone l'unicità dei record personali dei contatti in un sistema o no? [chiuso]

2

Ho una tabella di contatti che memorizza tutte le informazioni di contatto di una persona come nome, indirizzo, numero di telefono.

Il sistema sarebbe più intuitivo se potesse impedire agli utenti di inserire accidentalmente record duplicati.

Se è univoco, sarà più facile da usare, ma costa prestazioni da controllare, inoltre il codice aggiunto aumenta i costi di manutenzione in futuro.

Se non è necessario da un punto di vista dei requisiti aziendali, hai trovato record persona / contatto per cui valga la pena mantenere l'unicità? Riesci a pensare a eventuali problemi che potrei incorrere nell'applicare l'unicità su di loro?

    
posta Mai Hữu Lợi 02.12.2015 - 11:25
fonte

3 risposte

2

Probabilmente, ma se questi documenti di contatto saranno inseriti dai dipendenti, è perfettamente possibile che tu possa avere una differenza negli stili di indirizzo / nome / numero di telefono che renderebbero difficile questo. Per esempio. per indirizzo:

1 High Street  
1, High Street  
1 High St

Questo vale anche per le colonne:

Joe Smith|1 High Street
Jo Smith|1 High St

Considererei anche la possibilità di memorizzare numeri di telefono (forse anche indirizzi) in una tabella separata dal contatto, poiché un contatto può avere più di un numero.

Anche la tua interfaccia può essere di grande aiuto (presumendo che tu ne abbia una). Le linee di indirizzo, i nomi e i numeri di telefono possono essere suddivisi nelle loro parti costitutive e convalidati.

    
risposta data 02.12.2015 - 11:40
fonte
0

I have a table contact which store all contact information of a person name, address, phone number. The contact records will be entered by some employees.

I want to know that should I check for duplication when a contact record is saved?

Definisci "unico".

Ogni "Contatto" [record] dovrebbe avere un identificatore univoco che. IMO, non può essere una delle cose che menzioni (possono cambiare tutte nel tempo). Questo identificatore dovrebbe essere generato dall'applicazione, probabilmente privo di significato, e non dovrebbe cambiare dal momento in cui il record viene creato al momento in cui viene definitivamente distrutto (sistemi come questo sono improbabili fisicamente cancella i record molto spesso, mantenendo i record a lungo termine delle persone è un requisito legale molto comune in questi giorni).

Quindi sì, i tuoi record dovrebbero essere identificati in modo univoco, in modo da avere un solo record per Persona (senza questo vincolo, la tua tabella sarà di scarsa utilità pratica).

Dato questo, la tua domanda diventa quindi quella di scoprire se hai già visto questa particolare "Persona" - questo è un problema di De-duplicazione e, ancora, è molto comune a sistemi come questo.

Un modo per affrontarlo potrebbe essere quello di fornire una funzione di "Ricerca" che le persone possono utilizzare per localizzare una Persona prima di creare un nuovo record per loro.
In alternativa, dovrai eseguire numerose query sul database alla ricerca di elementi di dati "simili" a quelli immessi; gli indirizzi sono scarsamente standardizzati nel modo in cui vengono inseriti e quindi saranno problematici da abbinare. I numeri di telefono sono più semplici fino a quando hai un formato standardizzato per la memorizzazione.

Se trovi le tue query contenenti molte clausole "mi piace", specialmente quelle con i caratteri jolly che portano , probabilmente stai andando nella direzione generale delle scarse prestazioni delle applicazioni.

E, anche dopo tutto questo, ricorda che probabilmente dovrai creare il processo "mazza" che "unisce" due record di Contatto - e ogni altro record in ogni altra tabella che li riguarda - in uno.

    
risposta data 03.12.2015 - 13:57
fonte
0

Per coloro che ignorano i commenti, ma leggono le risposte, ecco una copia / incolla di un thread di commento sopra, che sembra soddisfare l'OP. Si prega di notare che non sto chiedendo di ricevere la risposta, solo per rendere questo scambio più visibile ai futuri lettori.

Can you make some fields unique - such as the phone number, if you are sure that no two customers will share the same 'phone number? Otherwise, SELECT before INSERT and, if a matching record already exists, ask the user who is inserting it what to do – Mawg

@Mawg Having two customers share a phone number is a very common scenario, although mobile phone numbers are of course, less likely to be shared... – Robbie Dee

Yup, I thought so - which is why I said "such as ..". Maybe social security number would be better .. – Mawg

@Mawg social security numbers are not guaranteed to be unique, at least not in every country. I don't think there's enough context in this question to provide a meaningful answer. What data is the OP storing? Why does it matter for users to be unique? The answers to these questions are use case specific. – toniedzwiedz

@Mawg that would be a great solution, a group of field would be unique such as Name+email+phone number so that I can prevent the employee from accidentally entering duplicated record. – Mai Hữu Lợi

    
risposta data 03.12.2015 - 09:53
fonte

Leggi altre domande sui tag