Domanda

Sono stato recentemente introdotto la nuova funzionalità di Access 2007 che è campi multivalore. La mia impressione iniziale è che si tratta di una cattiva idea di fare uso di valori multipli in un unico campo. Tradizionalmente, se si voleva consentire per un record di avere diversi valori per un campo si creerebbe altri due tavoli e collegarli con le chiavi esterne. Questo permette una facile interrogazione e garantisce che i valori duplicati riferimento allo stesso elemento. Mantenere le liste in una cella sembra una violazione della finalità delle banche dati.

Ci sono buoni usi per questi campi che non mi fanno sentire sporco?

È stato utile?

Soluzione

L'idea di campi multivalore è stato quello di sostenere facile creazione di oggetti report / interfaccia, inoltre, si può creare un modulo che visualizza dicono le categorie per un problema. Invece di fare un lavoro intenso, Dio non voglia si unisce, era presumibilmente più semplice per memorizzare:

meccanica, elettrica

come valore in un campo piuttosto che

meccanica Elettrico

Personalmente non mi piace e assumo questo tipo di campo è stato creato per il personale non tecnici come ragionieri :) (sto scherzando). No seriamente, non utilizzare questo a meno che non si sta creando uno strumento stupido che raramente chiunque utilizzerà e raramente qualcuno avrà mai di attingere.

Il modo corretto per gestire questa situazione è join duplicati, e senza valori multipli all'interno di colonne (questa è comunque tutto 3NF).

Un altro motivo per questo è stato creato è stato quello di sostenere i valori multipli all'interno di un elenco SharePoint.

Jon

Altri suggerimenti

See:

tipi di dati multivalore considerati nocivi: come pericoloso può essere un tipo di dati ?

  

Ho avuto un lungo colloquio con Suraj   Poozhiyil, Access Program   Direttore ... sia Suraj ed io sono d'accordo   con tutto il cuore che gli sviluppatori non lo fanno   bisogno di usare i campi multivalore.   Le persone che capiscono i database   hanno già un buon modo di   attuazione molti a molti   relazioni e otterranno alcun beneficio   dai campi multivalore.

     

Quindi, la mia chiara e certa consulenza ai   gli sviluppatori è di non usare più valori   campi. Non hanno nulla da offrirci   tranne il dolore potenziale.

Non proprio rispondendo alla domanda qui, ma i lettori avrebbe fatto piacere notare che v'è un intero settore di nicchia intorno all'idea di MultValued database :

  

Queste banche dati differiscono da un   database relazionale nel senso che hanno   funzionalità che supportano e incoraggiano   l'uso di attributi avere una lista di   valori, piuttosto che tutti gli attributi   avente un singolo valore

Dal momento che in questo caso il motore di database ha estensioni al suo linguaggio di interrogazione per accogliere la natura multidimensionale del suo tabelle (che presumo di accesso, probabilmente non) allora non è davvero paragonabile ai campi multivalore in Access. Ma un interessante parallelo in ogni caso (per chi non ha in precedenza nemmeno sentito parlare di MultValued Database).

Un grande segmento del mercato di accesso non è sviluppatore, ma tipo di tecniche, gli utenti. Essi potrebbero non capire il valore di normalizzazione, ma possono ottenere qualcosa su cui lavorare. Hanno solo bisogno di qualcosa di facile ed è meglio di un campo di testo libero in cui la gente scrive dentro, dove la speranza che tutti i tipi la stessa cosa.

Come si impara di più, potrebbero iniziare a utilizzare altre tabelle e chiavi esterne. Ma, a volte, un campo multivalore è abbastanza buono.

campi multivalore possono facilmente evitare di dover creare una nuova tabella e di relazione.

Soda -> Tipi

Perché ho bisogno di un nuovo tavolo solo per dire che la Pepsi è disponibile in regolare, dieta, e altro ancora.

Vorrei che ci permettono di dare campi multivalore colonne, allora sarebbero proprio come un tavolo, ma con molto meno lavoro

BASTA DIRE NO!
se si sta imparando SQL, imparare il modo giusto e normalizzare le tabelle. se si sa progettazione di database farlo correttamente. Non ogni funzione è da utilizzare.

Necro-post ... Penso che la domanda avrebbe dovuto essere rivisto quando il filo iniziato, ma non voglio passare attraverso il processo di modifica ora.

La domanda è: "I campi multivalore una buona idea?"

La vera domanda che avrebbe dovuto essere chiesto è "multivalore campi in RDBMS una buona idea?"

Come altri hanno notato c'è un intero modello MVDBMS sostegno campi multivalore. Sono un esperto in questo campo e hanno lavorato con il modello da oltre 30 anni. Certo che è una buona idea a mio parere e ad altri che utilizzano la piattaforma ogni giorno. E sì, Caché non solo ha un grande modello multidimensionale stessa ma supporta anche il modello MVDBMS. Quindi, in questo senso, la risposta alla domanda è sì.

Ma per un RDBMS e in particolare MS ACCESS la risposta è quasi certamente NO perché né il modello RDBMS né che la piattaforma intrinsecamente supporta il concetto.

La risposta accettata è corretta, IMO, in quanto non si limita a rispondere alla domanda posta, risponde alla domanda che era destinato ad essere chiesto. Ma per essere meticoloso, per l'esatta domanda posta, la risposta accettata è errata.

Credo che la vera risposta è "E 'solo una buona idea se la piattaforma DBMS lo supporta, YES per MVDBMS e forse altre piattaforme NoSQL, NO per RDBMS."

Io davvero non mi piace i campi multivalore. Forse lo hanno fatto per rendere più facile di interfacciarsi con altri sistemi più valori, come il vecchio sistema / Unidata PICK. Scommetto che è divertente upsize un database di Access con un uso pesante di questa nuova funzionalità di SQL Server.

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