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 / 51556
Accepted
Thronk
Thronk
Asked: 2013-10-16 09:59:33 +0800 CST2013-10-16 09:59:33 +0800 CST 2013-10-16 09:59:33 +0800 CST

Quando é apropriado usar um esquema separado para o design do banco de dados?

  • 772

Estou desenvolvendo um banco de dados que possui dados provenientes de vários aplicativos diferentes. Em minha primeira passagem no design, coloquei as tabelas de preparação cada uma em um esquema nomeado para seu aplicativo de origem.

Como vários aplicativos de origem têm dados e nomes de tabela semelhantes, uso o nome do esquema para diferenciar o aplicativo de origem. A alternativa que estou considerando seria usar um único esquema e incluir o aplicativo de origem no nome da tabela.

Eu queria examinar as regras de design relacionadas a quando usar um esquema diferente e os prós e contras de fazê-lo e não consegui encontrar nada.

O esquema é puramente para permissão e segurança?

Faz sentido, do ponto de vista organizacional, criar objetos em esquemas separados além do necessário para o desenvolvimento de aplicativos ou isso apenas adiciona complexidade desnecessária às consultas?

Existem outras repercussões desta decisão que eu deixei de considerar?

sql-server oracle
  • 2 2 respostas
  • 4946 Views

2 respostas

  • Voted
  1. Chris Aldrich
    2013-10-16T10:16:48+08:002013-10-16T10:16:48+08:00

    Vou mencionar o design lógico e físico aqui.

    Eu sei que a IBM recomenda colocar tabelas temporárias em seu(s) próprio(s) esquema(s) e até mesmo em seus próprios espaços de tabela (implementação de banco de dados específica para DB2 neste caso) por motivos de gerenciamento. Os esquemas permitem que você gerencie melhor por meio da separação de interesses e segurança. Os tablespaces (design físico) permitem lidar melhor com questões de manutenção relacionadas a REORGs, RUNSTATS e backups.

    Embora você não esteja implementando o IBM DB2, acho que a filosofia deles é algo que vale a pena pensar e implementar.

    • 4
  2. Best Answer
    Anup Shah
    2013-10-16T14:20:10+08:002013-10-16T14:20:10+08:00

    Pela descrição que você deu, não acho que a segurança seja a preocupação aqui. Como você disse, seu aplicativo recebe dados de várias fontes. A segurança vem/implementada quando você tem um tipo de segurança baseada em funções nos métodos de recuperação/acesso desses dados. Eu estou supondo que deve haver primeiro algum tipo de consolidação, análise, reconciliação etc ... acontecendo antes que os dados sejam apresentados ao usuário.

    Nesses casos, o esquema separado é a melhor maneira de manter os dados de origem intactos, não apenas durante a preparação, mas até mesmo uma cópia original dos dados de origem; Apenas no caso de você querer solucionar problemas mais tarde quais dados foram recebidos de uma fonte específica.

    Dependendo de quais são os provedores de dados, mas se forem dados financeiros, é muito provável que o provedor atualize o formato dos dados de origem, adicione/remova colunas etc. com frequência. se várias origens começarem a fazer isso ao mesmo tempo, será difícil gerenciar essas alterações se você tiver um design de esquema consolidado. mas se você tivesse um esquema separado, saberia que essas alterações não afetariam os dados de outras fontes.

    Segundo cenário, se você espera que seu aplicativo como fonte forneça algum tipo de dados consolidados ou dados específicos de origem para outros subsistemas, então, com um esquema separado, você tem mais controle e flexibilidade em termos de como e o que deseja compartilhar. Se você tiver o mesmo esquema; o compartilhamento de dados se tornará difícil selecionando algumas tabelas, funções personalizadas ou escrevendo APIs alternativas.

    O lado negativo de ter um esquema separado é que você precisa usar nomes de objeto totalmente qualificados para evitar resultados inesperados. Além disso, se você tiver algum cenário em que possa usar consultas abertas/distribuídas, servidores vinculados, etc... Lembre-se de que ele permite apenas dois níveis de resolução de nomes de objetos. Pense em outras coisas, como tarefas do agente SQL e outros recursos que você pode estar usando e verifique se ele oferece suporte à resolução de nome de objeto totalmente qualificada ou não.

    • 1

relate perguntas

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

  • 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 fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

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

    • 4 respostas
  • Marko Smith

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

    • 10 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
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +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

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