Существует ли пространство имен таблиц базы данных? - PullRequest
5 голосов
/ 01 июля 2010

Меня всегда интересовала одна важная (для меня), но не существующая особенность всех реляционных баз данных, с которыми я работал: невозможность создания таблиц пространства имен.

Например,

в MySQL можно полностью квалифицировать таблицу с именем базы данных, например, dbname.tablename, при этом база данных выступает в качестве «префикса» или «пространства имен». Тем не менее, эта функция останавливается здесь, и не очень далеко. Поддержка пространства имен предоставит вам возможность иметь синтаксис вроде dbname.namespace.table. Вы можете сгруппировать связанные таблицы в разные пространства имен, например (для блога)

db.userdata.logininfo
db.userdata.preferences
db.postdata.content
db.postdata.acls

или

db.blog.whatever
db.wiki.whatever
db.common.auth

Это позволило бы оставаться в одной базе данных (используя все преимущества такой настройки), в то же время предоставляя более гибкую и самодокументируемую среду. Однако большую часть времени я обнаружил, что подчеркивание в имени таблицы используется для достижения этой цели в качестве очевидного обходного пути.

Мои вопросы: существуют ли СУБД с такой функцией (может быть, с другим именем)? считается ли он недостаточно важным в методах проектирования баз данных для предоставления поддержки?

Ответы [ 3 ]

3 голосов
/ 01 июля 2010

Я считаю, что это называется схема в SQL Server . Он был введен в SQL Server 2005. Таблицы принадлежат схемам и обозначаются точечной нотацией, такой как owner.schema.tablename, например dbo.HumanResources.Employee.

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

Теперь, когда вы знаете, что это имя использует SQL Server, вы можете найти много информации об этом. Вот пара статей, в которых рассказывается о преимуществах этой функции:

Преимущество новой схемы SQL Server 2005

Улучшения безопасности в SQL Server 2005: схема

0 голосов
/ 01 июля 2010

Я никогда не видел иерархического пространства имен в таблицах базы данных, но вы можете использовать схемы в SQL Server 2005+ для этого. Подобные конструкции существуют и в других платформах СУБД.

Oracle имеет область модуля для кода хранимой процедуры (называемой пакетами), которая предоставляет пространства имен для уровня модуля. Ничего эквивалентного в T-SQL не существует, хотя хранимые процедуры могут жить в схемах.

0 голосов
/ 01 июля 2010

MS SQL Server (2005+) имеет схемы, которые вы можете интерпретировать как пространства имен (см. Примеры AdventureWorks).

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

Вы также можете использовать заключенные в кавычки идентификаторы (MS [], Oracle ""), чтобы использовать схемы именования "namespace.name".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...