Организация таблиц в 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 шт):
В отличии от SQl Server, схемы в Oracle связаны с определённым пользователем, имя схемы и пользователя совпадают. Так сложилось исторически, т.к. Oracle БД создавалась, когда известных на сегодняшний день норм и стандартов ещё не было.
Однако, не стоит ассоциировать имя пользователя с конкретным физическим лицом, например, "Вася" или "Маша". Имя пользователя, и соответственно схемы, выбирается в соответствии с терминами бизнес логики или технической реализации: "Finance", "Purchase", "Common", "Api" итд. То есть, как и указанно в вопросе - по предметным областям.
Данная "эволюция" именования схем прослеживается в схемах с примерами. Традиционную схему SCOTT (Bruce Scott автор и архитектор первых версий БД), которая больше не входит в комплет поставки, заменили, например на:
HR- Human resourcesOE- Order entrySH- Sales history
Хотя в БД используются прфиксы, например - SYS_, ORA_ и др., использовать префиксы для именования обьектов БД не рекомендуется. Следует воспользоваться рекомендациями: