Содержит ли Microsoft Access 2003 наборы или мультимножества?

StackOverflow https://stackoverflow.com/questions/1717081

Вопрос

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

Сформулированный другим способом, имеет ли MS Access 2003 эквивалент инструкции SQL:

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

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

Это было полезно?

Решение

Вы имеете в виду механизм базы данных Access Engine многозначные типы данных?Если это так, то да, они являются новыми для версии движка ACE (2007) и недоступны в Jet 4.0, поскольку это версия движка Access2003.

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

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

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

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

Обновить:

МУЛЬТИМНОЖЕСТВО является ли новый тип данных официальным начиная с SQL: 2003, поэтому я предполагаю, что одной из причин добавления его в Access 2007 является полное соответствие стандарту SQL

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

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

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

Значения a MULTISET тип может быть создан либо путем перечисления отдельных элементов, либо путем предоставления элементов с помощью запроса выражения;например ,,

MULTISET[1, 2, 3, 4]

или

MULTISET( SELECT grades FROM courses )

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

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

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

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

Основная функция, которую мы добавили в новый механизм Access engine, - это поддержка “сложных данных”.

Это определенно особенность двигателя!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top