Microsoft Access 2003 содержит наборы или мультимножества? - PullRequest
2 голосов
/ 11 ноября 2009

Я пытаюсь подтвердить или опровергнуть возможность определения столбца таблицы в MS Access 2003 как набора. Похоже, что - это , реализованный в Office 2007 - вы можете определить столбец, который будет иметь «список с множественным выбором» в запросе / поиске, но эта функция уникальна для нового формата файла access 2007 насколько я могу определить.

Другими словами, MS Access 2003 имеет эквивалент SQL-выражения:

CREATE TABLE mytable (foo VARCHAR(10), bar VARCHAR(5) MULTISET); 

Или есть разумный способ обойти что-то подобное? Я бы принял ответ, предоставляющий информацию о любых конструкторах коллекций в Access 2003.

1 Ответ

4 голосов
/ 12 ноября 2009

Имеете ли вы в виду многозначные типы данных ядра СУБД Access ? Если это так, то да, они являются новыми для версии двигателя ACE (2007) и недоступны в Jet 4.0, являющейся версией двигателя Access2003.

FWIW Я попробовал ваш SQL в Access2007 с использованием режима запросов ANSI-92 (OLE DB, тип движка = 5), а ключевое слово MULTISET не было распознано.

Обратите внимание, что вам могут не понадобиться и не хотеть многозначные типы. Особую критику вызывает то, что служба выражений SQL DML базы данных Access не была изменена для учета многозначных типов. Также см. Эту статью Многозначные типы данных, которые считаются вредными :

и Сурадж [Поожиил, MS Access Руководитель программы] и я согласен от всего сердца, что разработчики не нужно использовать многозначные поля. Люди, которые понимают базы данных уже есть хороший способ реализуя много ко многим отношения и не принесут никакой пользы из многозначных полей.

Итак, мой четкий и верный совет разработчики не использовать многозначные поля. Им нечего нам предложить кроме потенциальной боли.

UPDATE:

MULTISET официально новый тип данных начиная с SQL: 2003, поэтому я угадав часть причины добавления это в Access 2007 должно быть полностью соответствует стандарту SQL

Это почти забавно. Команда доступа не проявляет интереса к добавлению синтаксиса SQL, который совместим с любым стандартом SQL.

[Когда команда SQL Server модифицировала Jet для своей версии 4.0, они хотели достичь соответствия SQL-92, но не смогли этого сделать команда Windows, компоненты которой зависели от некоторых функций, оставаясь несовместимыми ... но это другая история. У команды Access есть свои собственные люди из кодовой базы, поэтому у них нет такого оправдания ... разве у команды SharePoint теперь нет чрезмерного влияния? Я отвлекся ...]

Рассмотрим эту цитату из документа о стандарте SQL2003:

Значения типа MULTISET могут быть создан либо путем перечисления отдельные элементы или путем поставки элементы через запрос выражение; например.,

MULTISET[1, 2, 3, 4]

или

MULTISET( SELECT grades FROM courses )

... И наоборот, значение мультимножества может быть используется в качестве ссылки на таблицу в FROM предложение с использованием оператора UNNEST.

Команда доступа не добавила ни новых выражений, ни операторов в синтаксис ACE SQL DML. Так что нет, это не имеет ничего общего со стандартами SQL и не связано с SharePoint.

Дэвид В. Фентон: Нет, [поддержка многозначные типы] был добавлен в Формат ACCDB (не ACE, как @onedaywhen говорит ...)

Рассмотрите эту цитату из собственного блога группы доступа :

Основная функция, которую мы добавили в новый Движок доступа - это поддержка «сложного» данные».

Это определенно функция двигателя!

...