Pregunta

Mi DBA me dijo que usara un tipo de datos SQL definida por el usuario para representar las direcciones, y luego usar una sola columna de ese nuevo tipo en nuestra tabla de usuarios en lugar de varias columnas de dirección. Nunca he hecho esto antes y estoy preguntando si este es un enfoque común.

Además, ¿cuál es el mejor lugar para obtener información acerca de esto? - ¿es específica del producto

¿Fue útil?

Solución

Hay una serie de otras preguntas sobre SO sobre cómo representar las direcciones en una base de datos. AFAICR, ninguno de ellos sugieren un tipo definido por el usuario para el propósito. Yo no lo consideran como un enfoque común; eso no quiere decir que no es un enfoque razonable. Las principales dificultades que se encuentran para decidir qué métodos para proporcionar a manipular los datos de dirección - los utilizados para dar formato a los datos que aparecen en un sobre, o en lugares específicos en un formulario impreso, o para actualizar campos, preocuparse por las muchas ramificaciones de direcciones internacionales , y así sucesivamente.

Definición de tipos definidos por el usuario es muy específica del producto. Las formas en las que lo hacen en Informix son diferentes de las formas en que se hace en DB2 y Oracle, por ejemplo.

Otros consejos

Por lo que yo puedo decir, por lo menos en el mundo de SQL Server, UDT no se utilizan mucho.

Problemas con la UDT es el hecho de que no se puede actualizar fácilmente. Una vez creado y utilizado en bases de datos, son casi como de piedra.

No hay "ALTER (UDT)" comando :-( Así que para cambiar algo, lo que tiene que hacer un montón de barajar alrededor - posiblemente la copia de los datos de distancia existente, a continuación, dejar caer un montón de columnas de otras tablas, a continuación, dejar caer su UDT, volverlo a crear con la nueva estructura y volver a aplicar los datos y todo.

Eso es simplemente demasiado complicado - y lo sabes: no que cambiar!

Ahora mismo, en la tierra de SQL Server, UDT son sólo una buena idea - pero realmente mal implementada. Yo no recomendaría su uso ampliamente.

Marc

lo haría también prefiere evitar el uso de tipos de datos definidos por el usuario como su defination y facilidad de uso hará que depende su código en una base de datos en particular.

En su lugar si está utilizando cualquier lenguaje orientado a objetos, crear una relación de composición para definir direcciones para un empleado (por ejemplo) y almacenar las direcciones en una tabla separada.

Ej. tabla de empleados y mesa Employee_Addresses. Un empleado puede tener varias direcciones.

  

tipo de datos SQL definida por el usuario para representar las direcciones

Los tipos definidos por el usuario pueden ser muy útiles, pero una dirección de correo no salta como uno de esos casos (para mí, al menos). ¿Qué es una dirección de correo para usted? ¿Es algo que imprimir en un sobre para enviar a alguien? Si es así, el texto es casi tan bueno como se va a conseguir. Si lo que necesita saber lo que alguien está en el estado por razones legales, tienda que por separado y no es un problema.

Otros puestos aquí han criticado UDT, pero creo que tienen algunos usos sorprendentes. PostgreSQL ha tenido búsqueda de texto completo como un plugin basado en UDT durante mucho tiempo antes de que la búsqueda de texto completo en realidad estaba integrada en el núcleo del producto. En este momento PostGIS es un producto muy exitoso SIG que es totalmente un plugin basado en UDT (tiene licencia GPL, por lo que nunca será integrado en el núcleo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top