Base de dados para um Software Modularizado

Ortiz de Arcanjo Antonio David - Jan 3 - - Dev Community

Definições Relacionadas

Software Modularizado: É um software que é dividido em módulos independentes, cada um com uma função específica.

Schema da Base de dados: É um conjunto de objectos de banco de dados, como tabelas, views, triggers e funções, que são organizados de forma lógica.

Equivalência entre Módulo e Schema

Em sistemas complexos, a organização da base de dados é crucial para facilitar o acesso aos dados. Dada a presença de inúmeras tabelas, é fundamental reconhecer que cada uma está vinculada a um domínio específico da aplicação.
Uma abordagem viável é aproveitar o conceito de módulos e integrá-lo à estrutura oferecida pela base de dados. Nesse contexto, a opção adequada para representar os módulos é a utilização de Schemas.
Neste contexto, a estrutura fudamental segue as directrizes:

  • Cada módulo é representado por um schema na base de dados.
  • Cada schema contém seus próprios objectos, como views, tabelas, triggers e functions.
  • Ao construir queries complexas, é crucial considerar o schema onde a tabela está localizada.

Passos para criar uma Base de Dados Modularizada

Para criar uma base de dados para um sistema modular, podemos seguir os seguintes passos:

  • Criar um banco de dados.
  • Criar os schemas necessários.
  • Criar as tabelas, views, triggers e funções em cada schema.
  • Se necessário, definir as regras de acesso específicas para cada schema.

Vantagens dos Schemas

  • Organização: Ajudam a organizar a base de dados de forma lógica, facilitando o entendimento e o gerenciamento.
  • Modularização da Base de Dados: Permitem que a base de dados seja dividida em módulos independentes, cada um com uma função específica.
  • Separação de Responsabilidades: Ajudam a separar as responsabilidades entre os diferentes módulos do software.
  • Navegabilidade: Facilitam a navegação pela base de dados, pois permitem que as tabelas sejam agrupadas por domínio. A partir do nome do Schema, é possível saber o domínio.
  • Reusabilidade de Código: Funcionalidades específicas podem ser encapsuladas em módulos separados, permitindo que esses módulos sejam reutilizados em diferentes partes do sistema ou em projetos futuros.
  • Segurança Aprimorada: Controles de acesso e permissões podem ser mais facilmente aplicados a módulos específicos, garantindo que apenas usuários autorizados tenham acesso a determinadas partes da base de dados.
  • Aprimoramento na Colaboração: Diferentes equipas podem se concentrar em módulos específicos sem interferir nas actividades umas das outras.

Desafios na Criação de Schemas

  • Complexidade nas Consultas: Quando se trata de reunir dados de vários módulos, a intersecção de diferentes Schemas pode exigir um entendimento aprofundado da estrutura da base de dados.
  • Verbosidade no Código: Ao construir consultas que referenciam objectos de diferentes schemas, podem aumentar a quantidade de código, tornando-o mais extenso.
  • Manutenção da Consistência entre módulos: Mudanças em um schema podem exigir ajustes em vários pontos do código. A sincronização entre os módulos é crucial para evitar inconsistências nos dados.
  • Padronização e Consistência na Nomenclatura: Garantir a padronização na nomenclatura dos objectos em diferentes Schemas pode ser desafiador, visto que a manutenção de uma convenção consistente é crucial para evitar confusões e erros.
  • Treinamento da Equipa: Pode exigir treinamento adicional para a equipa. A falta de compreensão sobre a estrutura modular pode resultar em erros de implementação e manutenção.

Conclusão

Recomenda-se aos desenvolvedores dedicarem tempo no estudo da linguagem SQL, incluindo a nomenclatura de schemas, tabelas de modo consistente, ajudando na navegabilidade da base de dados.

Exemplo

Criação da base de dados para um sistema modular usando PostgreSQL. O nome da base de dados será golang_modular_software.
Inicialmente, vamos criar uma base de dados com quatro schemas:

  • configurations: Para armazenar as configurações do sistema.
  • authentication: Para armazenar os dados de autenticação dos usuários.
  • human_resources: Para armazenar os dados dos funcionários da empresa.
  • customers: Para armazenar os dados dos clientes da empresa.

Código fonte: https://github.com/ortizdavid/golang-modular-software.

Image description

Image description

Image description

Image description

Image description

Image description

Image description

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player