DEV Community

Cover image for Base de dados para um Software Modularizado
Ortiz de Arcanjo António David
Ortiz de Arcanjo António David

Posted on

Base de dados para um Software Modularizado

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

Top comments (0)