Domanda

Il mio DBA mi ha detto di utilizzare un tipo di dati SQL definita dall'utente per rappresentare gli indirizzi, e quindi utilizzare una singola colonna di quel nuovo tipo nella nostra tabella utenti, invece di più colonne di indirizzo. Non l'ho mai fatto prima e mi chiedo se questo è un approccio comune.

Inoltre, qual è il posto migliore per ottenere informazioni su questo -? È specifica del prodotto

È stato utile?

Soluzione

Ci sono una serie di altre domande sul SO su come rappresentare gli indirizzi in un database. AFAICR, nessuno di loro suggeriscono un tipo definito dall'utente per lo scopo. Non vorrei considerarlo come un approccio comune; questo non vuol dire che non è un approccio ragionevole. Le principali difficoltà risiedono nel decidere quali sono i metodi per fornire per manipolare i dati indirizzo - quelli utilizzati per la formattazione dei dati a comparire su una busta, o in luoghi specifici su un modulo stampato, o per aggiornare i campi, preoccuparsi delle tante ramificazioni di indirizzi internazionali , e così via.

La definizione di tipi definiti dall'utente è molto specifico prodotto. I modi lo si fa in Informix sono diversi dai modi si è fatto in DB2 e Oracle, per esempio.

Altri suggerimenti

Per quanto posso dire, almeno nel mondo di SQL Server, UDT non vengono utilizzati molto.

Il problema con UDT è il fatto non è possibile aggiornare facilmente. Una volta creato e utilizzato nei database, sono quasi come scolpito nella pietra.

Non c'è "CREATE OR ALTER (UDT)" il comando :-( Quindi, per cambiare qualcosa, devi fare un sacco di mischiare intorno - forse la copia via i dati esistenti, quindi cadere un sacco di colonne di altre tabelle, quindi far cadere il UDT, ricreando con la nuova struttura e riapplicare i dati e tutto.

Questo è solo troppo fastidio - e lo sai: ci da cambiare!

In questo momento, nella terra di SQL Server, UDT sono solo una bella idea - ma veramente male implementata. Non mi consiglia di utilizzarli ampiamente.

Marc

Vorrei anche piuttosto evitare l'uso di tipi di dati definiti dall'utente come loro defination e usabilità renderà il vostro codice dipendente da un particolare database.

Se invece si utilizza qualsiasi linguaggio orientato agli oggetti, creare una relazione di composizione per definire gli indirizzi per un lavoratore dipendente (per esempio) e memorizzare gli indirizzi in una tabella separata.

Eg. tabella Impiegati e la tabella Employee_Addresses. Un dipendente può avere più indirizzi.

  

tipo di dati SQL definita dall'utente per rappresentare gli indirizzi

I tipi definiti dall'utente possono essere molto utili, ma un indirizzo postale non salta fuori come uno di quei casi (per me, almeno). Che cosa è un indirizzo di posta per te? E 'qualcosa che si stampa su una busta per posta a qualcuno? Se è così, il testo è di circa buono come si sta per arrivare. Se avete bisogno di sapere ciò che qualcuno è stato in per motivi legali, negozio che separatamente e non è un problema.

Altri post qui hanno criticato UDT, ma penso che loro hanno alcuni usi sorprendenti. PostgreSQL ha avuto ricerca a testo integrale come plugin in base a UDT per molto tempo prima di ricerca full-text è stato effettivamente integrato nel prodotto di base. In questo momento PostGIS è un prodotto GIS di grande successo che è interamente un plugin in base a UDT (ha licenza GPL, quindi non potrà mai essere integrato in core).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top