Ha Microsoft Access 2003 contiene insiemi o multiinsiemi?
-
19-09-2019 - |
Domanda
Sto cercando di confermare o smentire se è possibile definire una colonna della tabella in MS Access 2003 come un insieme. Sembra che questo implementato in Office 2007 - è possibile definire una colonna di avere una 'lista di selezione multipla' nella query / lookup, ma questa caratteristica sembra essere unico per il nuovo formato di file Access 2007 per quanto posso determinare.
Formulato in un altro modo, non MS Access 2003 hanno l'equivalente alla istruzione SQL:
CREATE TABLE mytable (foo VARCHAR(10), bar VARCHAR(5) MULTISET);
O c'è una soluzione intelligente per ottenere qualcosa di simile? Vorrei accettare una risposta che fornisce informazioni su eventuali costruttori di raccolta in Access 2003.
Soluzione
Si riferisce a multivalore tipi di dati del database del motore di Access ? Se è così allora sì, questi sono nuovi per l'ACE (2007) versione del motore e non sono disponibili in Jet 4.0 essere la versione di Access2003 del motore.
FWIW Ho cercato il tuo SQL in Access2007 utilizzando la modalità di query ANSI-92 (OLE DB, tipo di motore = 5) e la parola chiave MULTISET non è stato riconosciuto.
Si noti potrebbe non essere necessario né vogliono tipi più valori. Una critica particolare è che il servizio di database di Access espressioni SQL DML non è stato modificato per tener conto dei tipi più valori. Inoltre, si veda questo articolo tipi di dati multivalore ritenuti dannosi :
sia Suraj [Poozhiyil, la MS Access Program Manager] e 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.
UPDATE:
MULTISET è un nuovo tipo di dato ufficialmente A partire da SQL: 2003, quindi sono indovinando parte della ragione per l'aggiunta di in Access 2007 è quello di essere pienamente compatibile con lo standard SQL
E 'quasi divertente. Il team di accesso hanno mostrato alcun interesse per l'aggiunta di sintassi SQL che è compatibile con qualsiasi standard SQL.
[Quando il team di SQL Server sono stati modificando Jet per la sua release 4.0 che volevano raggiungere la SQL-92 conformità, ma è stato impedito di farlo da parte del team di Windows i cui componenti erano affidamento su alcune caratteristiche rimanenti non conforme ... ma questo è un'altra storia. Il team di accesso hanno la loro gente privata della base di codice in modo essi hanno nessuna tale scusa ... a meno che il team di SharePoint ora ha influenza indebita? Sto divagando ...]
Considerate questa citazione dal documento sulla SQL2003 standard:
I valori di tipo
MULTISET
possono essere creato sia enumerando il singoli elementi o fornendo gli elementi attraverso una query espressione; per es.,
MULTISET[1, 2, 3, 4]
o
MULTISET(
SELECT grades
FROM courses
)
... Al contrario, un valore multinsieme può essere utilizzato come riferimento nella tabella
FROM
Clausola utilizzando l'operatoreUNNEST
.
Il team di accesso non ha aggiunto nessun nuove espressioni né alcun operatore alla sintassi SQL DML ACE. Quindi, no, questo non ha nulla a che fare con SQL Standard e tutto a che fare con SharePoint.
David W. Fenton: No, [il supporto per tipi multivalore] è stata aggiunta nel formato ACCDB (non l'ACE, come @onedaywhen dice ...)
Considerate questa citazione da proprio blog del team di accesso :
La caratteristica principale abbiamo aggiunto alla nuova L'accesso del motore è il supporto per “complesso Dati”.
E 'sicuramente una caratteristica del motore!