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.