AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 8511
Accepted
Stuart Blackler
Stuart Blackler
Asked: 2011-11-29 16:07:30 +0800 CST2011-11-29 16:07:30 +0800 CST 2011-11-29 16:07:30 +0800 CST

Uso excessivo/correto de esquemas?

  • 772

Tendo feito esta pergunta no Stackoverflow , me perguntei onde o que fiz é a prática correta/melhor.

Basicamente, todo objeto que eu crio vai para um esquema com o nome do esquema refletindo um uso. Por exemplo, tenho os esquemas Audite Admin(entre outros).

Isso, por sua vez, não deixa objetos em dbo. tudo bem? Existe mais alguma coisa que eu preciso fazer?

sql-server best-practices
  • 5 5 respostas
  • 4375 Views

5 respostas

  • Voted
  1. Best Answer
    Thomas Stringer
    2011-11-29T18:31:02+08:002011-11-29T18:31:02+08:00

    Os esquemas não são apenas uma ótima ferramenta de segurança (o que é motivo suficiente para usá-los), mas também são perfeitos para a separação lógica. E parece que é isso que você está praticando.

    Mesmo que o requisito atual não precise de segurança especial, digamos que no futuro todos os objetos de banco de dados relacionados à auditoria devem ser protegidos para uma função de banco de dados. Se esses objetos estivessem espalhados por todo o dboesquema, você teria que conceder denypermissões explicitamente nos objetos individuais. Mas com o Auditesquema, você faz um único denye está pronto.

    Eu pessoalmente pratico o uso de esquemas. Como todas as coisas em bancos de dados, porém, existe um meio termo. Eu não criaria um esquema para cada aspecto granular da camada de dados. Existem muitos esquemas e separações. Mas eu estou supondo que você não está nem perto disso.

    • 13
  2. gbn
    2011-11-29T21:41:32+08:002011-11-29T21:41:32+08:00

    Um padrão típico são os esquemas baseados em permissões, portanto, você teria WebGUI, Desktopetc. para código, para que todos os objetos tenham as mesmas permissões do esquema .

    Se você tiver grupos de usuários claros, poderá permitir isso, mas acabará com permissões sobrepostas e confusas em algum momento. Costumo adiar as verificações de usuário/grupo para algumas verificações dentro do código e não para objetos de permissão: digamos que você tenha usuários Admin e HR Excel: todos eles executam Desktopcódigo.

    Os dados geralmente são compartilhados, então eu teria um Dataesquema, talvez um esquema Historyou Archive.

    Algum código não é público (como um UDF ou procedimento interno), então eu usaria um Helperesquema para código que não deveria ser executado pelo código do cliente.

    Finalmente, esquemas como Stagingou Systemou Maintenancesão úteis às vezes.

    Embora não haja objetos de usuário no dboesquema, o usuário dbopossui todos os esquemas.

    • 5
  3. Simon Righarts
    2011-11-29T16:16:31+08:002011-11-29T16:16:31+08:00

    Nenhum objeto no dboesquema está perfeitamente bem. Pelo que posso ver, também não é uso excessivo de esquemas - embora quantos esquemas sejam 'demais' seja uma questão bastante subjetiva (é comparável a "Quantas classes meu design OO deve ter?").

    A única outra coisa que eu mencionaria seria conceder permissões no esquema em vez de objetos individuais (sua pergunta SO não especifica nada sobre permissões).

    • 4
  4. Atilla Ozgur
    2011-12-06T23:25:07+08:002011-12-06T23:25:07+08:00

    Eu gostaria de usar esquemas para separar banco de dados de acordo com módulos e padrões de uso. Acho que facilita muito o entendimento das tabelas do banco de dados, portanto, a manutenção se torna mais fácil. Eu tinha os seguintes tipos de esquema em meu último projeto de servidor SQL. LT -- Tabelas de Consulta

    COMMON
    LT_COMMON
    MODULENAME1
    LT_MODULENAME1
    ..
    

    Para módulos grandes, também os separamos em mais esquemas. Por exemplo, o módulo pessoal consiste em mais de 5 módulos.

    PERSONEL_COMMON
    PERSONEL_FINANCE
    PERSONEL_MODULE2
    ..
    LT_PERSONEL_COMMON
    LT_PERSONEL_FINANCE
    LT_PERSONEL_MODULE2
    

    Também incluímos esquemas como para outras atividades TEMP,MANUTENÇÃO. No estúdio de gerenciamento, você pode filtrar usando o nome do esquema. Um desenvolvedor responsável pelo MODULE1 , filtra por nome e trabalha quase o tempo todo apenas com essas tabelas. Isso torna muito fácil para desenvolvedores, dbas e novatos entenderem as tabelas de banco de dados.

    • 1
  5. kevinskio
    2011-11-29T17:31:51+08:002011-11-29T17:31:51+08:00

    As melhores práticas podem ser diferentes para o SQL Server e para o Oracle, no entanto, minha experiência é que quanto menos esquemas, melhor.
    Eu gosto de ter um esquema para o dba/programmer que tenha privilégios especiais e algum código para fazer manutenção. Todos os dados de negócios devem ir em um esquema para que você saiba onde eles estão. As convenções de nomenclatura são suficientes para diferenciar o uso da tabela ou do código armazenado.
    Posso ver um caso em que você tem várias unidades de negócios devido a dados diferentes com pouca sobreposição, cada uma com seu próprio esquema. Caso contrário, mantenha-o simples.

    • -1

relate perguntas

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Melhores práticas para conectar bancos de dados que estão em diferentes regiões geográficas

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve