Почему имена таблиц в SQL Server начинаются с "dbo"?
По крайней мере, в моем локальном экземпляре, когда я создаю таблицы, все они имеют префикс "dbo". Это почему?
6 ответов
dbo - это схема по умолчанию в SQL Server. Вы можете создавать свои собственные схемы, чтобы лучше управлять пространством имен вашего объекта.
Если вы используете Sql Server Management Studio, вы можете создать свою собственную схему, выбрав Базы данных - Ваша база данных - Безопасность - Схемы.
Создать его с помощью скрипта так же просто, как (например):
CREATE SCHEMA [EnterSchemaNameHere] AUTHORIZATION [dbo]
Вы можете использовать их для логической группировки таблиц, например, путем создания схемы для "финансовой" информации и другой для "личных" данных. Ваши таблицы будут отображаться как:
Financial.BankAccounts Financial.Transactions Personal.Address
Вместо того, чтобы использовать схему по умолчанию dbo.
Microsoft представила схему в версии 2008. Для тех, кто не знал о схеме, и тех, кому все равно, объекты были помещены в схему по умолчанию.
dbo
.
dbo
означает владелец базы данных, но это не очень важно.
Представьте схему как папку для файлов:
- Вам не нужно ссылаться на схему, если объект находится в той же схеме или схеме по умолчанию.
- Вы можете ссылаться на объект в другой схеме, используя схему в качестве префикса, так же, как вы можете ссылаться на файл в другой папке.
- У вас не может быть двух объектов с одинаковым именем в одной схеме, но вы можете использовать разные схемы.
- Использование схемы может помочь вам организовать большее количество объектов
- Схема также может быть назначена конкретным пользователям и ролям, чтобы вы могли контролировать доступ к тому, кто и что может делать.
Вы всегда можете получить доступ к любому объекту из любой схемы.
Потому как
dbo
является значением по умолчанию, обычно вам не нужно указывать его в одной базе данных:
SELECT * FROM customers;
SELECT * FROM dbo.customers;
означают то же самое.
Я склонен не согласиться с идеей всегда использовать
dbo.
префикс, поскольку чем больше вы загромождаете свой код ненужными деталями, тем сложнее его читать и управлять.
По большей части схему можно игнорировать. Однако схема будет очевидна в следующих ситуациях:
Если вы просматриваете таблицы либо в навигаторе объектов, либо во внешнем приложении, таком как Microsoft Excel или Access, вы увидите
dbo.
приставка. Вы все еще можете игнорировать это.Если вы ссылаетесь на таблицу в другой базе данных, вам понадобится ее полное имя в форме
database.schema.table
:SELECT * FROM bookshop.dbo.customers;
По историческим причинам, если вы пишете определяемую пользователем скалярную функцию, вам нужно будет вызвать ее с префиксом схемы:
CREATE FUNCTION tax(@amount DECIMAL(6,2) RETURNS DECIMAL(6,2) AS BEGIN RETURN @amount * 0.1; END; GO SELECT total, dbo.tax(total) FROM pricelist;
Это не относится к другим объектам, таким как табличные функции, процедуры и представления.
Вы можете использовать схему для преодоления конфликтов имен. Например, если у каждого пользователя есть личная схема, они могут создавать дополнительные объекты, не сражаясь с другими пользователями из-за имени.
Он является новым для SQL 2005 и предлагает упрощенный способ группировки объектов, особенно в целях защиты объектов в этой "группе".
Следующая ссылка предлагает более подробное объяснение того, что это такое, почему мы будем его использовать:
Кое-что от Microsoft (Документация)
Пользователь — это специальный пользователь-участник в каждой базе данных. Все администраторы SQL Server, члены
sysadmin
фиксированная роль сервера,
sa
логин и владельцы базы данных, введите базы данных как пользователь. Пользователь имеет все разрешения в базе данных и не может быть ограничен или удален. обозначает владельца базы данных, но учетная запись пользователя не совпадает с фиксированной ролью базы данных, а
db_owner
фиксированная роль базы данных не совпадает с учетной записью пользователя, которая записана как владелец базы данных.
Пользователь владеет схемой. Схема является схемой по умолчанию для всех пользователей, если не указана какая-либо другая схема.
dbo
схему нельзя сбрасывать. Пользователь dbo владеет схемой dbo. Схема dbo является схемой по умолчанию для всех пользователей, если не указана какая-либо другая схема. Схему dbo нельзя удалить.
DBO — это схема по умолчанию в SQL Server. Вы можете создавать свои собственные схемы, чтобы лучше управлять пространством имен объектов. В качестве лучшей практики я всегда добавляю «DBO». префикс, хотя он и не нужен. Большую часть времени в SQL хорошо быть явным.