Abbiamo un team che progetta i tavoli e le relazioni per gli sviluppatori di software. Nella nostra organizzazione, sono piuttosto severi nel far rispettare la normalizzazione 3NF - che a dire il vero, sono d'accordo con la dimensione della nostra organizzazione e come le esigenze oi nostri clienti cambiano nel tempo. C'è solo un'area in cui non sono chiaro i motivi alla base della loro decisione di progettazione: gli indirizzi.
Mentre questo si concentra principalmente sugli indirizzi negli Stati Uniti, penso che questo potrebbe applicarsi a qualsiasi paese che lo fa. Ogni parte di un indirizzo ottiene la propria colonna nella tabella degli indirizzi. Ad esempio, prendi questo nodoso indirizzo americano:
Attn: Jane Doe
485 1/2 N Smith St SW, APT 300B
Chicago, IL 11111-2222
Si dividerebbe nel database in questo modo:
- Numero civico: 485
- Frazione stradale: 1/2
- Via pre-direzionale: N (Nord)
- Nome della via: Smith
- Tipo di strada: ST (via)
- Via post-direzionale: SW (sud-ovest)
- Città: Chicago
- Stato: IL (Illinois)
- Codice postale: 11111
- Codice postale: 2222
- Paese (presunto essere USA)
- Attenzione: Jane Doe
- Casella postale: NULL
- Tipo di abitazione: APT (Appartamento)
- Numero dimora: 300B
E ci sarebbero alcune altre colonne relative alle rotte rurali e alle rotte contrattuali. Inoltre, la nostra specifica applicazione avrà probabilmente alcuni indirizzi internazionali al suo interno. I modellatori di dati hanno detto che avrebbero aggiunto colonne specifiche per gli indirizzi internazionali, che sarebbero i normali campi riga 1, riga 2.
All'inizio ho pensato che fosse MODO in mare. La ricerca online ripetutamente si riferisce all'utilizzo della riga dell'indirizzo 1, 2, 3 e possibilmente 4, quindi alla suddivisione di città, regione e codice postale. Abbiamo un caso d'uso per la nostra nuova applicazione in cui questa granularità è vantaggiosa. Dobbiamo confermare che l'utente non sta creando un'attività duplicata e che la verifica dell'indirizzo è una delle convalide. Siamo in grado di farlo funzionare con la linea di indirizzo 1 e 2, ma sarebbe più difficile.
Per quanto riguarda la nostra specifica applicazione, dobbiamo archiviare più tipi di indirizzi per aziende e persone (fisiche, postali, spedizioni, ecc.). Noi potremmo bisogno di generare lettere tipo stampabili, ma tale obbligo non è stato discusso finora.
Alcune altre cose che le applicazioni della nostra organizzazione devono supportare:
- Auditing (con tabelle cronologiche complete)
- Stampa di etichette postali
- Generazione di moduli stampati
- Rapporti (per i governi nazionali e regionali)
Mentre la nostra applicazione potrebbe non fare tutto ciò che fa ogni altra applicazione, dividere gli indirizzi in più componenti è uno standard aziendale in cui lavoro. Indipendentemente dal fatto che la nostra applicazione ne trarrebbe beneficio, siamo costretti a farlo.
Domanda StackOverflow semi-correlata: dov'è un buon parser di indirizzi che è stato chiuso, ma illustra quanto possano essere difficili gli indirizzi di analisi.
Per consentirmi di comprendere meglio la loro decisione di progettazione e di vendere l'idea del nostro cliente ...
Quali problemi vengono risolti suddividendo l'indirizzo in singole colonne?
Punti bonus per chiunque abbia implementato un sistema come questo, perché si sono imbattuti in problemi.