Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Зачем нужны схемы БД ?  [new]
ЗвездаYo
Member

Откуда:
Сообщений: 18
Не пинайте ногами, но ответа на вопрос не смог найти пересмотрев не один десяток книг по MS SQL (работаю с 2008) и форум. Все ограничиваются историей про то, что раньше схема была тождественна имени пользователи и что схемы можно использовать для разграничения доступа и что за схемами большое и светлое будущее. Никаких рекомендаций связанных с выбором схем при проектировании БД не обнаружил. Например: при проектировании БД торговой информационной системы можно схемой разделить таблицы по типам : справочники, регистры, журналы документов, табличные части документов... А можно по смыслу : управление ассортиментом, товародвижение, ценообразование ... А может они вообще не нужны - только кола больше становится ? Какие будут рекомендации ? Есть умные книжки ? Читать умею.
Модератор: Тема перенесена из форума "Проектирование БД".


Сообщение было отредактировано: 10 фев 09, 09:05
10 фев 09, 01:25    [6798656]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Схемы нужны прежде всего для управления правами доступа. А не для типизации.
10 фев 09, 10:20    [6799237]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Владимир М.
Member

Откуда: Москва
Сообщений: 4990
А мне вот тоже не совсем понятно... А роли для чего? Можно и ими рулить права.
10 фев 09, 10:24    [6799273]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Владимир М.
А мне вот тоже не совсем понятно... А роли для чего? Можно и ими рулить права.

Можно. Аналогия приблизительна как зачем view-ы, если есть select-ы.
Схема нужна, чтобы отделить владение объекта от конкретного пользователя
10 фев 09, 10:30    [6799323]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29606
Владимир М.
А мне вот тоже не совсем понятно... А роли для чего? Можно и ими рулить права.
Может, можно провести такую аналогию:
Роли - это группы пользователей.
Схемы - это группы ресурсов.

Честно говоря, сам никогда схемами не пользовался.
10 фев 09, 10:33    [6799346]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2635
Владимир М.
А мне вот тоже не совсем понятно... А роли для чего? Можно и ими рулить права.

Схемы дают твоей машине дополнительный руль. Можно в принципе и без них, но сними удобнее.
Еще схемы играют важную роль в цепочках владения.
10 фев 09, 10:34    [6799362]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Владимир М.
Member

Откуда: Москва
Сообщений: 4990
alexeyvg
Владимир М.
А мне вот тоже не совсем понятно... А роли для чего? Можно и ими рулить права.
Может, можно провести такую аналогию:
Роли - это группы пользователей.
Схемы - это группы ресурсов.

Честно говоря, сам никогда схемами не пользовался.

Самое смешное, что сам я пользуюсь схемами... утилитарно, так сказать.
Есть схема test, в которой создаются объекты, тестируются и после успешного результата переносятся в схему dbo.
Но это разделение ресурсов, а не доступа.
10 фев 09, 10:53    [6799543]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Владимир М.
Member

Откуда: Москва
Сообщений: 4990
Хотя конечно назначая права на схемы различным пользователям можно очень удобно разруливать эти права... Я думаю, что понимание придёт после того, как испытаешь это на практике.
10 фев 09, 10:56    [6799564]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Sim.On
Member

Откуда: Ростов-на-Дону
Сообщений: 92
Схема в MSSQL Server 2005, 2008 - пространство имен, которому можно дать определенные разрешения. Смотрите первоисточник.
10 фев 09, 11:18    [6799733]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
ЗвездаYo
Member

Откуда:
Сообщений: 18
Владимир М.
Хотя конечно назначая права на схемы различным пользователям можно очень удобно разруливать эти права... Я думаю, что понимание придёт после того, как испытаешь это на практике.

Т.е. если я правильно понял, то желательно, чтобы схемы отображала реальное "жизненное" разделение возможных служебных обязанностей пользователей.
Получается правильнее делить по смыслу : управление ассортиментом, товародвижение, ценообразование ...
10 фев 09, 13:36    [6800954]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Sandist
Member

Откуда:
Сообщений: 395
Вот прочитал и ничего не понял... тоже порылся, поискал, но так и не нашел зачем эти схемы нужны, особенно в sql server 2008, ими могут владеть пользователи и они имеют список пользователей, притом для чего они вообще не ясно... есть роли, в которых можно манипулировать данными раздавать права, зачем тогда схемы? вообще хоть один пример приведите где их применяют?
19 дек 09, 14:44    [8090338]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Sandist
Вот прочитал и ничего не понял... тоже порылся, поискал, но так и не нашел зачем эти схемы нужны, особенно в sql server 2008, ими могут владеть пользователи и они имеют список пользователей, притом для чего они вообще не ясно... есть роли, в которых можно манипулировать данными раздавать права, зачем тогда схемы? вообще хоть один пример приведите где их применяют?

А теперь подумайте, что должно произойти с объектом, которым владеет пользователь, при удалении этого пользователя из базы ?
19 дек 09, 18:35    [8090750]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Guest000
Member

Откуда: Moscow
Сообщений: 341
Glory, неужели аннигилироваться?
21 дек 09, 00:00    [8093357]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Sandist
Member

Откуда:
Сообщений: 395
И что теперь, если я программист и создал валом ХП, теперь меня увольняют и удаляют логин, следовательно все мои ХП увольняются со мной? :-)
21 дек 09, 13:09    [8095126]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Sandist
И что теперь, если я программист и создал валом ХП, теперь меня увольняют и удаляют логин, следовательно все мои ХП увольняются со мной? :-)

По вашей логике - да
По логике со схемой данных - нет, у схемы меняется владелец
21 дек 09, 13:17    [8095184]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10436
Sandist
И что теперь, если я программист и создал валом ХП, теперь меня увольняют и удаляют логин, следовательно все мои ХП увольняются со мной? :-)


это и есть мечта девелопера
21 дек 09, 13:19    [8095193]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Sandist
Member

Откуда:
Сообщений: 395
Короче есть реальный ответ чем что можно сделать схемой и нельзя ролью?
21 дек 09, 13:20    [8095210]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]

Guest
а теперь представь что тебе надо написать процедуру которая ведет себя по разному для разных пользователей... при участие схем это разруливается на уровне системы, а без схем - только на уровне процедуры..
21 дек 09, 13:21    [8095216]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Sandist
Короче есть реальный ответ чем что можно сделать схемой и нельзя ролью?

Нельзя удалить пользователя, если он владеет объектом
Схема - это контейнер для объектов
Роль - это контейнер для пользователей
Как вы, например, будете давать права на объекты относящиеся к проекту "Отдел кадров" ?
Будете каждый раз сверять список этих объектов в свойствах роли и на бумажке ?
21 дек 09, 13:26    [8095262]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 36970
Glory
Sandist
Короче есть реальный ответ чем что можно сделать схемой и нельзя ролью?

Нельзя удалить пользователя, если он владеет объектом
Схема - это контейнер для объектов
Роль - это контейнер для пользователей

Как вы, например, будете давать права на объекты относящиеся к проекту "Отдел кадров" ?
Будете каждый раз сверять список этих объектов в свойствах роли и на бумажке ?

Однако пользователь может входить одновременно в разные роли, а объект только в одну схему
21 дек 09, 13:53    [8095456]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Glory
Member

Откуда:
Сообщений: 104764
Wizandr
Glory
Sandist
Короче есть реальный ответ чем что можно сделать схемой и нельзя ролью?

Нельзя удалить пользователя, если он владеет объектом
Схема - это контейнер для объектов
Роль - это контейнер для пользователей

Как вы, например, будете давать права на объекты относящиеся к проекту "Отдел кадров" ?
Будете каждый раз сверять список этих объектов в свойствах роли и на бумажке ?

Однако пользователь может входить одновременно в разные роли, а объект только в одну схему

А в схему могут входить множество типов объектов, а роль - всего два. И что дальше ?
Вы пытаетесь сравнивать контейнеры разных типов
21 дек 09, 13:56    [8095485]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Guest000
Member

Откуда: Moscow
Сообщений: 341
Glory
Sandist
Короче есть реальный ответ чем что можно сделать схемой и нельзя ролью?

Нельзя удалить пользователя, если он владеет объектом
Схема - это контейнер для объектов
Роль - это контейнер для пользователей
Как вы, например, будете давать права на объекты относящиеся к проекту "Отдел кадров" ?
Будете каждый раз сверять список этих объектов в свойствах роли и на бумажке ?

А если, например, таблица бух.платежи нужна еще и финансистам, а иногда и директору, а не только бухгалтерам?
Все равно по бумажке...
23 дек 09, 13:18    [8106975]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
SoftRain
Member

Откуда:
Сообщений: 92
По-моему, логическая цепочка, обуславливающая присутствие схем в MS SQL такова:

1. Изначальный (до SQL Server 2005) постулат о наименовании объектов в виде:
[DatabaseServer].[DatabaseName].[ObjectOwner].[DatabaseObject]
причем - ObjectOwner = пользователь базы (database user).

Очевидны недостатки - если какой-то пользователь когда-то умудрился создать объект, который оказался необходимым и используемым, то имя этого пользователя оказывается увековеченным в базе (удалить его нельзя).

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

Мое мнение - главная необходимость наличия схем - в совместимости с предыдущими версиями.
23 дек 09, 14:36    [8107603]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
iap
Member

Откуда: Москва
Сообщений: 46899
SoftRain
По-моему, логическая цепочка, обуславливающая присутствие схем в MS SQL такова:

1. Изначальный (до SQL Server 2005) постулат о наименовании объектов в виде:
[DatabaseServer].[DatabaseName].[ObjectOwner].[DatabaseObject]
причем - ObjectOwner = пользователь базы (database user).

Очевидны недостатки - если какой-то пользователь когда-то умудрился создать объект, который оказался необходимым и используемым, то имя этого пользователя оказывается увековеченным в базе (удалить его нельзя).

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

Мое мнение - главная необходимость наличия схем - в совместимости с предыдущими версиями.
Мне кажется, ошибочно рассматривать схему с точки зрения одной частной реализации SQL Server (фирмой Microsoft).
Дело в том, что схема - понятие, включённое (и давно) в стандарт SQL
23 дек 09, 14:51    [8107762]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
SoftRain
Member

Откуда:
Сообщений: 92
iap
Мне кажется, ошибочно рассматривать схему с точки зрения одной частной реализации SQL Server (фирмой Microsoft).
Дело в том, что схема - понятие, включённое (и давно) в стандарт SQL


Согласен, конечно, я не спорю, что схемы имеют теоретическое обоснование. Ведь и до 2005 их наличие, хотя и в неуклюжей реализации, было обусловлено (наверное как раз стандартами языка SQL).
23 дек 09, 15:08    [8107965]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
M0us
Member

Откуда: Moscow
Сообщений: 883
Glory
Схемы нужны прежде всего для управления правами доступа. А не для типизации.


правильно. но если из молотка (sql 2000) сделать молоток, похожий на лопату (sql 2005/2008), то очень даже удобно и копать будет.

Glory

Как вы, например, будете давать права на объекты относящиеся к проекту "Отдел кадров" ?
Будете каждый раз сверять список этих объектов в свойствах роли и на бумажке ?


зачастую распределение прав более глубокое чтение/просмотр, поэтому сделать кого-то владельцем схемы маловато.
23 дек 09, 15:34    [8108200]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
Excel
Member

Откуда: UA, Kiev
Сообщений: 119
Схема очень похожа на пространство имен в программировании.
Вы можете создать два объекта с одинаковым именем но в разных схемах.
Удобно групировать объекты, если есть понимание зачем вам это нужно.
Можно работать с группой объектов, например при нарезке прав.
Пример использования - схема sys.
Отделяет системные объекты от пользовательских.
Да и вам может понадобиться создать ещё один набор объектов с именами которые уже есть в этой же базе. Например одинаковые наборы таблиц для разных филлиалов.

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

Рекомендаций, кроме как игнорировать до появления необходимости воспользоваться, нет :)
23 дек 09, 15:35    [8108216]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
SoftRain
Member

Откуда:
Сообщений: 92
M0us


зачастую распределение прав более глубокое чтение/просмотр, поэтому сделать кого-то владельцем схемы маловато.


Нет, ну на схему можно абсолютно все те же права, что и на объекты давать.
23 дек 09, 18:13    [8109531]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
M0us
Member

Откуда: Moscow
Сообщений: 883
SoftRain
M0us


зачастую распределение прав более глубокое чтение/просмотр, поэтому сделать кого-то владельцем схемы маловато.


Нет, ну на схему можно абсолютно все те же права, что и на объекты давать.


Да, наверно я со своей "колькольни" сужу. Просто когда вам в наследство достается не очень чистая БД (старые неиспользуемые объекты, таблицы, куча систем, обращающихся к БД тем или иным способом в режиме 24/7, различное клиентское ПО, куча левых грантов в том числе на table-objects), то вот так просто взять и раскидать все по схемам нереально :)
С момента перехода на 2005-й мы уже давно постепенно все чистим и систематизируем, переводим на разные схемы по мере возможности.

Хотя соглашусь, что проект "с нуля" будет отлично работать по схемам при грамотном проектировании.
23 дек 09, 18:59    [8109724]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
SoftRain
Member

Откуда:
Сообщений: 92
M0us

...
то вот так просто взять и раскидать все по схемам нереально :)

Хотя соглашусь, что проект "с нуля" будет отлично работать по схемам при грамотном проектировании.


Тоже так думаю, хотя может быть в теории и не так трудно раскидать существующую базу по схемам, честно говоря, не задумывался серьезно, какие последствия для проектов, написанных под единственной схемой "dbo" могут возникнуть, и оправданы ли в итоге будут полученные плюсы.
24 дек 09, 14:01    [8113198]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Зачем нужны схемы БД ?  [new]
sql7
Member

Откуда:
Сообщений: 5
понимаю что тема поднята из гроба. тем не менее.

думая про схему ее смысл пришла аналогия с папками

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

что скажете.
10 сен 19, 11:51    [21967584]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
sql7
Member

Откуда:
Сообщений: 5
отсюда вытекает ответ на вопрос " а смысл использования схемы?" такой же какой имеют
папки при организации доступа к файлам. и правилам разграничения доступа к файлам.
10 сен 19, 11:52    [21967586]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
sql7
Member

Откуда:
Сообщений: 5
схема позволяет задать права доступа к группе обьектов непривязываясь к конкретным обьектам. мы выдаем права доступа к схеме. а потом привязывая обьект к схеме мы получаем на этот обьект нужные права.
10 сен 19, 11:54    [21967589]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 496
sql7,

Ну да, соглашусь.

Или, к примеру - DWH - различные схемы нужны, дабы отделять уровни пирога и модули, логически организовывать подсистемы БД, ну и управлять безопасностью.
К примеру - организуется схема [DataMart]., кладем в нее все витрины, - звезды-снежинки, и только она видна потребителю Хранилища - кубу или BI-приложению.
10 сен 19, 15:09    [21967811]     Ответить | Цитировать Сообщить модератору
 Re: Зачем нужны схемы БД ?  [new]
sql7
Member

Откуда:
Сообщений: 5
спасибо :)
11 сен 19, 09:39    [21968277]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить