Организация таблиц в Oracle в разрезе предметных областей

Доброе время суток.

При переносе структуры данных из Ms SQl Server на Oracle у меня появился вопрос об организации таблиц по предметным областям. На Ms SQL Server понятие схема хорошо ложиться на предметную область.

Например, что-то подобное:

Finance.Table1 ,  Finance.Table2,  Finance.Table3 ...
 Production.Table1 ,  Production.Table2 ...
 ...
 Branch_N.Table1, Branch_N.Table2, Branch_N.Table3...

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

 Finance$Table1 ,  Finance$Table2,  Finance$Table3 ...
 Production$Table1 ,  Production$Table2 ...
 ...
 Branch_N$Table1, Branch_N$Table2, Branch_N$Table3...

, ну или "_" вместо $ Но наглядность и удобство работы, при таком делении проигрывает делению из MS SQl.

Подскажите, пожалуйста, как в Oracle принято организовывать таблицы по предметным областям?

Можно просто ссылку на "best practices" по этой части.


Ответы (1 шт):

Автор решения: 0xdb

В отличии от SQl Server, схемы в Oracle связаны с определённым пользователем, имя схемы и пользователя совпадают. Так сложилось исторически, т.к. Oracle БД создавалась, когда известных на сегодняшний день норм и стандартов ещё не было.

Однако, не стоит ассоциировать имя пользователя с конкретным физическим лицом, например, "Вася" или "Маша". Имя пользователя, и соответственно схемы, выбирается в соответствии с терминами бизнес логики или технической реализации: "Finance", "Purchase", "Common", "Api" итд. То есть, как и указанно в вопросе - по предметным областям.

Данная "эволюция" именования схем прослеживается в схемах с примерами. Традиционную схему SCOTT (Bruce Scott автор и архитектор первых версий БД), которая больше не входит в комплет поставки, заменили, например на:

  • HR - Human resources
  • OE - Order entry
  • SH - Sales history

Хотя в БД используются прфиксы, например - SYS_, ORA_ и др., использовать префиксы для именования обьектов БД не рекомендуется. Следует воспользоваться рекомендациями:

→ Ссылка