Почему в стандарте SQL нет определения или синтаксиса для концепции базы данных?

Я просмотрел ISO/IEC 9075:1992 и ISO /IEC 9075-4:2011, я обнаружил, что термин «база данных» не обсуждается. Например, определение «база данных». Также не указан стандартный синтаксис для таких операций, как create database, use database и т. д.

Документация для CREATE DATABASE здесь объясняется

Стандарт ANSI/ISO для языка SQL не определяет никакого синтаксиса для создания базы данных, процесса, посредством которого база данных создается и объявляется ее имя.

Я не понимаю этого упущения из стандарта, может ли кто-нибудь объяснить это?


person Hector    schedule 17.09.2017    source источник
comment
Не уверен, почему люди голосуют за это как за непонятное. Ясно мне.   -  person Martin Smith    schedule 17.09.2017
comment
Документы Postgres говорят, что в стандарте SQL нет оператора CREATE DATABASE. Базы данных эквивалентны каталогам, создание которых определяется реализацией.   -  person Martin Smith    schedule 17.09.2017
comment
@MartinSmith Потому что вы полностью переформулировали это :). Для меня это было не так, и я не уверен, что вы сделали то, что задумал ОП. Но я готов бросить кости.   -  person TT.    schedule 17.09.2017
comment
Я почти уверен, что это то, о чем они спрашивали в редакции 1. Хотя я реструктурировал его, чтобы сделать его более понятным.   -  person Martin Smith    schedule 17.09.2017
comment
Соответствующим понятием в стандарте SQL является каталог   -  person a_horse_with_no_name    schedule 17.09.2017


Ответы (1)


Термин «база данных» является изобретением различных разработчиков СУБД, и они используют этот термин нестандартно. Не ожидайте, что термин «база данных» будет использоваться одним и тем же поставщиком.

Стандарт ANSI/ISO SQL определяет каталоги и схемы. Не все поставщики реализуют их в соответствии со стандартом SQL, а некоторые со временем изменили свою реализацию.

https://mariadb.com/kb/en/library/sql-99/catalog/ частично говорит:

Кластер может содержать ноль или более каталогов. Каталог SQL — это именованная группа схем, одна из которых должна быть Ur-схемой с именем INFORMATION_SCHEMA. (Схема INFORMATION_SCHEMA — это набор представлений и доменов, которые содержат описания всех данных SQL, принадлежащих этому каталогу.) Каталоги зависят от некоторого кластера — имя каталога должно быть уникальным в пределах кластера. Каталог принадлежит — и создаются и удаляются с использованием методов, определенных реализацией.

Схемы известны как объекты каталога, и, как уже говорилось, каталог может состоять из одной или нескольких схем. Имя каталога определяет имена схем, которые ему принадлежат, и может быть либо указано явно, либо имя по умолчанию будет предоставлено вашей СУБД.

https://mariadb.com/kb/en/library/sql-99/17-sql-schemas-schema/ частично говорит:

Каталог может содержать одну или несколько схем. Схема SQL — это именованная группа данных SQL, принадлежащая определенному ID авторизации. Схемы зависят от некоторого Каталога — имя Схемы должно быть уникальным в пределах Каталога, к которому принадлежит Схема — и создаются, изменяются и удаляются с помощью операторов SQL-Schema. Объекты, которые могут принадлежать Схеме, известны как Объекты Схемы; то есть они зависят от некоторой схемы. Каждый Объект Схемы имеет имя, которое должно быть уникальным (среди Объектов своего класса имени) в Схеме, к которой он принадлежит. Классы имен объектов схемы:

  • Базовые таблицы и представления.
  • Домены и UDT.
  • Ограничения и утверждения.
  • Наборы символов.
  • Сопоставления.
  • Переводы.
  • Триггеры.
  • Модули SQL-сервера.
  • Подпрограммы, вызываемые SQL.

Схема может состоять из нуля или более таких объектов схемы. Имя схемы определяет имена принадлежащих ей объектов и может быть либо явно указано, либо имя по умолчанию будет предоставлено вашей СУБД.

person Bill Karwin    schedule 18.09.2017