2009-09-22 36 views
6

Recientemente me presentaron la nueva característica de Access 2007, que es campos multivalor. Mi impresión inicial es que es una mala idea usar múltiples valores en un solo campo. Tradicionalmente, si quería permitir que un registro tuviera varios valores para un campo, crearía otras dos tablas y las vincularía con claves externas. Esto permite consultas fáciles y garantiza que los valores duplicados hagan referencia al mismo artículo. Mantener listas en una celda parece una violación del propósito de las bases de datos.¿Campos multivalorados una buena idea?

¿Hay buenos usos para estos campos que no me hacen sentir sucio?

Respuesta

3

La idea de los campos con varios valores era la de facilitar la creación de objetos de informe/interfaz, además, se puede crear un formulario que muestre categorías de un problema. En vez de hacer un trabajo intenso, dios no lo quiera une, que era supuestamente más simple para almacenar:

mecánica, eléctrica

como un valor en un campo en lugar de

mecánica eléctrica

Personalmente me no me gusta y supongo que este tipo de campo fue creado para personal no técnico como contadores :) (es broma). No en serio, no uses esto a menos que estés creando una herramienta tonta que rara vez alguien usará y rara vez alguien tendrá que aprovechar.

La forma correcta de manejar esto es unir, sin duplicados y sin valores múltiples dentro de las columnas (esto es todo 3nf de todos modos).

Otro motivo por el que se creó fue para admitir los valores múltiples dentro de una lista de puntos compartidos.

Jon

+0

1 para los contadores broma, je. – Bratch

3

Un gran segmento del mercado de Acceso no es un desarrollador, sino un tipo de usuarios técnicos. Puede que no entiendan el valor de la normalización, pero pueden hacer que algo funcione. Simplemente necesitan algo fácil y es mejor que un campo de texto libre donde las personas escriben, donde espera que todos tipeen lo mismo.

A medida que aprenden más, pueden comenzar a utilizar otras tablas y claves externas. Pero, a veces, un campo multivaluado es lo suficientemente bueno.

+2

Al igual 640K y 2 dígitos para almacenar el año;) – RedFilter

1

APENAS DIGA NO!
si está aprendiendo SQL, aprenda de la forma correcta y normalice sus tablas. si conoce el diseño de la base de datos, hágalo de forma adecuada. No todas las características tienen que ser usadas.

6

Ver:

Multivalued datatypes considered harmful: How dangerous can a data type be?

tuve una larga conversación con Suraj Poozhiyil, la Administrador de Programas de Acceso ... tanto Suraj y estoy de acuerdo de todo corazón que los desarrolladores no necesitan utilizar campos de múltiples valores. Las personas que entienden las bases de datos ya tienen una buena forma de implementando muchas relaciones y no obtendrán ningún beneficio de campos de valores múltiples.

Por lo tanto, mi consejo claro y cierto a los desarrolladores de es no utilizar los campos de varios valores . No tienen nada que ofrecernos excepto dolor potencial.

+1

Entonces, ¿por qué los crearon? Claramente tienen uso en el mundo real, hay una base de datos completa, Unidata y Universe, que se construyen a su alrededor. – Noah

+0

@Noah: un Google rápido me dice que se basan en PICK y no en SQL. Según tengo entendido, PICK tiene la sintaxis (operadores, etc.) requerida para consultar datos multivalor, Access/Jet/ACE no. No es realmente mi campo, para ser sincero (he usado Intersystems Caché pero solo a través de su SQL Gateway, que es excelente, y no de MUMPS). Estoy más feliz con 5NF :) – onedaywhen

4

realidad, no responder a la pregunta aquí, pero los lectores les gustaría señalar que hay toda una industria del lugar alrededor de la idea de MultValued Databases:

Estas bases de datos difieren de una base de datos relacional en que tienen características que apoyan y alientan el uso de atributos que tienen una lista de valores, en lugar de todos los atributos tener un único valor

Dado que en este caso el motor de base de datos tiene extensiones para su lenguaje de consulta para acomodar la naturaleza multidimensional de sus tablas (que supongo que Access probablemente no) entonces no es realmente comparable a campos multivalor en Access. Pero un paralelo interesante en cualquier caso (para cualquier persona que no haya escuchado hablar previamente de las Bases de datos MultValued).

0

Realmente no me gustan los campos multivaluables. Tal vez lo hicieron para facilitar la interfaz con otros sistemas de múltiples valores como el antiguo sistema PICK/Unidata. Apuesto a que es divertido actualizar una base de datos de Access con un uso intensivo de esta nueva función en SQL Server.

+0

Su única razón para estar en ACE es la compatibilidad con Sharepoint. Los datos son realmente accesibles a través de conjuntos de registros y sería bastante fácil escribir algunos VBA para escribirlos en tablas N: N reales. Por supuesto, podría ser que el SSMA para Access 4.2 comprenda los campos de MV y los actualice muy bien. Si está interesado, podría darle un golpe y averiguarlo, ya que tengo tanto A2007 como SSMA 4.2 instalados. –

+0

@ David-W-Fenton: "Su única razón para estar en ACE es la compatibilidad con Sharepoint" ... pero el Equipo de Acceso promueve su uso general en Access, p. esto no menciona SharePoint una vez: http://office.microsoft.com/en-us/access-help/use-a-list-that-stores-multiple-values-HA010031117.aspx – onedaywhen

+1

Los materiales de marketing a menudo no lo hacen revela toda la verdad –

2

campos multivalorados pueden ahorrarle fácilmente tener que crear una nueva tabla y relación.

Soda -> Tipos

¿Por qué necesito una mesa completamente nueva sólo para decir que viene en Pepsi regular, dieta, y más.

Me gustaría que nos permiten dar columnas campos de varios valores, entonces sería igual que una mesa, pero con mucho menos trabajo

Cuestiones relacionadas