Разница между базой данных и схемой

166

В чем разница между базой данных и схемой в SQL Server? Оба являются контейнерами таблиц и данных.

Если схема удалена, все ли таблицы, содержащиеся в этой схеме, также удаляются автоматически или они удаляются при удалении базы данных?

sqlchild
источник

Ответы:

171

База данных является основным контейнером, она содержит файлы данных и журналов, а также все схемы внутри нее. Вы всегда создаете резервную копию базы данных, это отдельная единица.

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

РЕДАКТИРОВАТЬ для дополнительного вопроса

drop schema test1

Сообщение 3729, уровень 16, состояние 1, строка 1
Невозможно удалить схему 'test1', так как на нее ссылается объект 'copyme'.

Вы не можете удалить схему, когда она используется. Вы должны сначала удалить все объекты из схемы.

Связанное чтение:

  1. Что хорошего в схемах SQL Server?
  2. MSDN: разделение схемы пользователя
RichardTheKiwi
источник
5
в SQL Server 2005 и более поздних версиях по умолчанию все идет внутри схемы DBO, если мы не упоминаем имя схемы при создании объектов базы данных?
sqlchild
@sqlchild да, верно. Схема обязательна, каждый объект содержится в схеме, поэтому по умолчанию используется dbo
RichardTheKiwi
Считаете ли вы целесообразным тиражировать таблицы в одной и той же базе данных и группировать их в схеме в соответствии с разными клиентами вместо создания отдельной базы данных для каждого клиента?
Евграф Андреевич Живаго
Логика та же для AWS Redshift? Кто угодно? Я запутался между двумя с точки зрения AWS.
Аакаш Басу
19

Схема - это способ категоризации объектов в базе данных. Это может быть полезно, если у вас есть несколько приложений, совместно использующих одну базу данных, и при этом есть некоторый общий набор данных, к которому все приложения обращаются.

Димас
источник
12

База данных - это как контейнер данных со схемой, а схемы - это расположение таблиц, типы данных, отношения и прочее.

Сагир А. Хатри
источник
1
Это не правильно для SQL Server специально; У таблиц есть схемы в общих базах данных, но схемы (для тех, кто знает, по какой причине) в SQL Server также являются пространствами имен, которые содержат таблицы (и эти таблицы также имеют схемы в традиционном смысле). Неудачное имя, которое Microsoft выбрала для них - namespaceкуда более уместно.
SacredSkull
7

Схема говорит, что таблицы в базе данных, какие столбцы у них есть и как они связаны. Каждая база данных имеет свою собственную схему.

Роберт
источник
но если я не создаю никакой схемы явно и не создаю таблицы без упоминания какого-либо имени схемы, тогда где создаются таблицы. по умолчанию они должны входить в схему dbo. не так ли?
sqlchild
да, но обычно вы не имеете дело со схемой вручную, вы создаете таблицы либо из какого-либо инструмента управления, либо с помощью функции кода вначале из какого-либо инструмента ORM
Robert
я использую студию управления сервером sql и не упоминаю ни одного имени схемы
sqlchild
4

Схема в SQL Server - это объект, который концептуально содержит определения для других объектов базы данных, таких как таблицы, представления, хранимые процедуры и т. Д.

Хардик Мишра
источник