Buscar

Estrutura com alguns componentes em um SI com ênfase para os componentes de BD

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Figura 1.1 – Estrutura com alguns componentes em um SI com
ênfase para os componentes de BD
Fonte: Elaborada pelo autor.
Os dados dos bancos de dados estão organizados e estruturados
conforme um modelo de dados, no caso um dos tipos de modelo, o Modelo
Relacional foi ilustrado. Essa arquitetura é comumente chamada de
arquitetura cliente-servidor, pois um determinado sistema-cliente que
precisa de um certo serviço, no caso para o trato de dados, dispara as
requisições para um servidor responsável por prover o serviço. Ela não é
exclusiva para dados, visto que esses mesmos conceitos podem ser
usados para outros serviços, como navegação na internet por meio de
requisições a servidores Web (HTTP) ou a leitura de mensagens enviadas
e recebidas por meios de servidores de correio eletrônico (e-mail). Vale
ainda destacar que outras arquiteturas mais complexas e outros
componentes podem ser empregados. O propósito nesse momento fica na
compreensão desses conceitos simples de arquitetura cliente-servidor e
será base para os assuntos subsequentes de sistemas gerenciadores de
bancos de dados.
Mas tranquilo quanto a que vocês não estão gostando como eu faço meu trabalho, mas se
trata de uma tabela direcionando os os clientes ao seu produto, mas vou mandar algumas
ponderações:
Modelo Relacional, Exemplo de Tabela
O Modelo entidade relacionamento proposto por Peter P. Chen pode ser melhor
compreendido por uma teoria chamada de A lei do Mundo, teoria essa, que
conceitua que o mundo está cheio de coisas que possuem características próprias e
que se relacionam entre si. Sua analise da teoria pode ser dividida em três partes.
O mundo está cheio de coisas
Tudo que possa ser caracterizado, conceituado, real ou imaginário, no nosso
Universo (Mundo), é definido como coisa, que futuramente, dependendo da
abordagem, poderá ser definido como uma entidade.
Que possuem características próprias
Características comuns percebidas entre as coisas de modo que haja a possibilidade
de enquadramento dessas coisas em conjuntos particulares. Exemplo: “conselho de
economia, conselho de medicina, conselho de odontologia” todos podem ser
enquadrados em um mesmo conjunto, denominado como Órgão normalizador.
E que se relacionam entre si
São as relações entre as coisas. Como as mesmas irão relaciona-se entre elementos
individualizados de diferentes conjuntos ou entre elementos de um mesmo
conjunto. A forma de comunicação entre as coisas ou um conjunto delas,
Exemplos: Adail é credenciado pelo conselho de economia é um relacionamento
entre elementos de diferentes conjuntos. Adail é substituto de Caio é um
relacionamento entre elementos do mesmo conjunto.
Objeto de Dados ou Entidade
É a representação genérica de um componente do mundo real, sobre o qual
desejamos armazenar informações, uma representação de quase todas as
informações com varias propriedades que devem ser compreendidas pelo sistema
de informação, qualquer coisa que produza ou consuma informações. Entidade são
coisas significativas sobre a qual a organização deseja guarda, ou seja, (coletar,
manter e etc) dados podendo ser algo tangível ou intangível.
Ex.: Cliente; Produto; Contrato de Operação
Vários autores defendem formas de identificar e classificar as entidades, onde suas
tipificações mais comuns são:
● Coisas tangíveis: todos os elementos que tenham existência concreta.
Fisicamente existente. Ex: Produto, animal, carro.
● Funções: todo o tipo de papel, atribuição, classificação, capacitação, ou
outra característica que especifique atuação. Ex: Cliente, professor,
departamento.
● Eventos ou ocorrências: só conseguem ser percebidos ou caracterizados,
enquanto uma certa ação se desenrola. Ex: Lançamento em conta corrente.
Nomenclatura e Dicionarização
Como objeto de comunicação, um modelo de dados, deve ter a capacidade de
informar sobre o que representa de forma clara, sendo uma unificação do diagrama
com informações textuais, sua representação gráfica por si só normalmente não é
suficiente para gerar entendimento dos conceitos representados, entretanto um
modelo deve ser auto-explicativo, fundamental, é necessário para gerar a
interpretação correta, onde a definição do nome do objeto bem como a sua
conceituação tem o papel fundamental para gerar esse entendimento, desta forma,
nomes e definições não podem gerar ambiguidade, isto é devem ser precisa, de
forma que não gere dúvida, incerteza, interpretação de conceitos distintos.
Cada um dos elementos identificados e representados deverá ser definido
claramente para que, associando-se seu nome, sua representação e sua definição,
sejamos capazes de ter o completo entendimento do conceito que estes procuram
transmitir. Ex: Cobertura: o que serve para cobrir, para seguros.
A nomenclatura de objetos deve prever nomes breves e objetivos, que identifiquem
facilmente o conteúdo da entidade. Estar no singular, pois a pluralidade decorre,
naturalmente da cardinalidade. Ex: PESSOA, CLIENTE, CONTRATO
A definição do objeto deve ser uma definição formal dos elementos, o que irá gerar
o dicionário de dados, que devera trazer a conhecimento público a toda e qualquer
informação útil para o processo de compreensão e unificação de conceitos, que
possam parecer triviais para quem está modelando, não serão do mesmo modo
triviais para outras pessoas que não tenham conhecimento prévio.
Atributo
Atributo é tudo o que se pode relacionar como próprio da entidade (propriedade)
que de alguma maneira a qualifique e a distinga de outras, estes podem ser
classificados e identificados como:
● Atributos descritivos: atributo que seja capaz de demonstrar, ou
representar, características formadoras, ou pertencentes, a um objeto. Ex:
Data de nascimento, idade, sexo.
● Atributos Nominativos: atributo que além de cumprirem a função de
descritivos, também servem como definidores de nomes ou rótulos de
identificação aos objetos aos quais pertencem. Ex: código do..., matrícula,
número...
● Atributos Referenciais: atributo que não pertencem propriamente a
entidade onde estão, mas fazem algum tipo de referência dessa entidade com
outra entidade.
Relacionamento
Relacionamento é a relação existente entre entidades, isto é a ligação lógica entre
duas entidades que representa uma regra ou restrição de negócio, possibilitando
entender como uma entidade se comporta em relação às demais, qual o seu grau de
dependência de outras entidades e qual a associação de dados existentes entre elas.
Representação de Relacionamentos de Modelo
Podem ser estabelecidos mais de um relacionamento entre entidades, de acordo
com a regra de negócio a ser representada onde cada entidade pode participar de
vários relacionamentos.
Os relacionamentos possuem características que os tipificam.
● Cardinalidade: Indica a quantidade de ocorrências de determinado
relacionamento, Sempre a maior possibilidade, sua representação é variável
de acordo com a notação, por exemplo N para Perter Chen e Para James
Martin.
● N : várias vezes
● 1 : apenas uma vez
● 0: não acontece
● Opcionalidade: Analisa os relacionamentos pelo lado da obrigatoriedade
das ocorrências de uma entidade se ligarem às ocorrências das outras.
Podem ser de 3 tipos:
○ Opcional: quando as ocorrências das entidades que se relacionam são
independentes das outras.
○ Contingente: a obrigatoriedade só acontece por um lado do
relacionamento e somente uma entidade possui independência com
relação a outra.
○ Mandatório: As ocorrências das entidades somente podem existir se
ambas (dominante e dependente) existirem.
Existem várias bibliografias sobre as tipificações de relacionamentos, as mais
comuns são:
Representação de
Relacionamento Ternário
Representação de Relacionamento Ternário
● Ternário: um único fato que relaciona três entidades (Figura 33).
● Auto-Relacionamento: Uma entidade por relacionar com ela mesma.
● Agregação: é o relacionamento. Este relacionamento possui uma condição
de existência, que o relacionamento fundamental tem que ser
necessariamente N:N.
Representação de
RelacionamentoAgregação de Modelo de Dados.
Representação de Relacionamento
Agregação de Modelo de Dados.
● Especialização: Um grupo hierárquico de entidades que compartilham
atributos em comum.
● Entidade Supertipo: contém a chave primária e os atributos genéricos.
● Entidade Subtipo: herda a chave primária e contém os atributos específicos
de cada tipo.
https://www.devmedia.com.br/introducao-a-modelagem-de-dados/24953
Exemplo de
Relacionamento Especialização.
Exemplo de Relacionamento Especialização
Integridade
Realizada por meio de restrições, que são condições obrigatórias impostas pelo
modelo, como exemplo integridade de domínio ou referencial.
A integridade de domínio Implementa restrições nas informações armazenadas,
quanto mais limitados os dados que podem ser inseridos em um campo, menor será
a probabilidade de entrada de dados errados no banco de dados. Também
especifica quais dados são absolutamente necessários para que o banco de dados
funcione apropriadamente. Podendo ser:
● Restrições de check: Permite controlar os dados inseridos em certa coluna,
de qualquer tabela, avaliando uma expressão. Ex: maior que, menor que,
diferente de.
● Nulidade: controla se existe obrigatoriamente o valor para aquela coluna. O
valor nulo deve ser evitado, pois implica em desperdício de espaço. Deve
utilizar nulo quando o valor existe, mas é desconhecido; o valor é
conhecido, mas está ausente.
● Unicidade: Toda tabela deve ter definido um atributo ou conjunto de
atributos cujo valor ou combinação deve ser distinto em qualquer ocorrência
da tabela.
● Unique: Determina que todos os valores, de uma determinada coluna,
precisam ser exclusivos (diferentes). Gera integridade.
● Default: Estabelece um valor padrão para determinada coluna.
Atributo de uma tabela que referencia à outra tabela, a chave primária da entidade
pai que migra para a entidade filha através de um relacionamento.
A integridade referencial garante que linhas relacionadas em um par de tabelas
continuem relacionadas mesmo depois de terem sido feitas alterações na tabela,
desta forma, uma linha em uma tabela que se refere a outra tabela deve referenciar
uma linha existente naquela tabela.
Representação de Integridade entre Tabelas
Chave primária compreende a identificação única de uma ocorrência em uma
entidade, um identificador das linhas da tabela, no caso de mais de uma chave em
uma tabela, é escolhida uma chave primária, desta forma, nenhum valor de chave
primária pode ser nulo. Uma chave primária não tem nenhuma ligação com o
conceito de ordenação e com o acesso à tabela. Para questões de acesso às
informações a recomendação é a utilização de índices.
Documentação
Definição formal dos elementos (dicionário de dados), evitando assim,
ambiguidade: falta de clareza, falta de precisão, incerteza, dúvida. Cada um dos
elementos identificados e representados deverá ser definido claramente para que,
associando-se seu nome, sua representação e sua definição, sejamos capazes de ter
o completo entendimento do conceito que estes procuram transmitir. A
dicionarização deve trazer a conhecimento público toda e qualquer informação útil
para o processo de compreensão e unificação de conceitos.
Normalização
É um processo formal, passo a passo, que examina os atributos de uma entidade,
com objetivo de evitar anomalias observadas na inclusão, exclusão e alteração de
linhas específicas, tem como objetivos a preservação da integridade dos dados,
gerar estabilidade para o modelo, eliminar redundância. Dados bem definidos,
íntegros no seu significado, consistentes, confiáveis, seguros e compartilhados
fazem com que cada novo sistema defina apenas os dados que são do seu escopo e
compartilhe os demais dados com outros sistemas presentes na organização.
● Primeira Forma Normal: O objetivo é retirar os atributos ou grupos
repetitivos. Representação de informações que se repetem para a mesma
unidade, retratando ocorrências de um mesmo fato dentro de uma única
entidade, vinculado a sua chave, onde para cada chave há a ocorrência de
uma e somente uma informação de cada atributo. Desta forma, cada campo
de uma tabela precisa conter somente um único tipo de dado, e cada parcela
de dado deve ser armazenada em somente um lugar. Essa exigência é
conhecida como atomicidade de dados.
● Segunda Forma Normal: O objetivo é separar as dependências parciais. É
preciso que as tabelas estejam na primeira forma normal e que cada uma
contenha dados sobre uma e somente uma entidade, onde as colunas que
dependem parcialmente da PK, devem formar uma nova tabela, algumas
entidades, para serem identificadas e individualizadas, necessitam conter em
sua chave mais de um atributo, formando, portanto, uma chave concatenada,
verificar se a mesma possui chave concatenada e, se for o caso, constatar se
todos os tributos não chaves não apresentam dependência parcial com a
referida chave. Isto é, quando os atributos não-chaves dependem
parcialmente de chave concatenada.
● Terceira Forma Normal:: O objetivo é eliminar dependências transitivas.
Quando alguns atributos não são dependentes diretos da chave da entidade,
mas sim por transitividade, através de outros residentes na mesma entidade
referenciada. Isto é dependência indireta de um atributo com a chave da
entidade, através de outro atributo não-chave, do qual é diretamente
dependente. É preciso que as tabelas estejam na segunda forma normal e que
todos os campos não-chaves dependam diretamente da chave primária, ou
seja, não pode ter colunas determinadas por outras colunas. Os campos
calculados devem ser eliminados, desta forma é verificado se algumas
tabelas precisam ser divididas em partes, pois todas as tabelas devem conter
informações sobre somente uma coisa.
Agora Keren estou mandando um artigo de PASSO a PASSO de como construir um modelo:
A aplicação de conceitos de modelagem possibilitará uma boa performance,
facilidade de integração com outras aplicações, além da segurança que será
aumentada, já que as melhores práticas, se seguidas, enfocam questões de
segurança também.
É recomendado para o desenvolvimento de todo tipo de aplicação, independente de
sua complexidade. Também possibilitará uma documentação prática e efetiva sobre
projetos de banco de dados.
Atualmente, com a proliferação da tecnologia e as facilidades de obtenção de
novos equipamentos, assim como as novas técnicas administrativas, tem-se tornado
imprescindível que as empresas utilizem ferramentas de controle para melhorar sua
competitividade em meio à concorrência cada vez mais acirrada. Uma destas
tecnologias é o desenvolvimento e manutenção de um banco de dados que
armazene todas as informações necessárias para a tomada de decisão.
Porém, com a crescente necessidade, vem surgindo uma inundação de aplicações
pré-fabricadas que tentam suprir este mercado de consumo. Estas opções nem
sempre são capazes de atender às exigências das empresas que, normalmente, vêm
se adequando às ferramentas disponíveis. Nossa proposta é justamente
disponibilizar ferramentas que venham diretamente ao encontro das necessidades
das empresas, e para isso se torna necessário um trabalho de pesquisa e
desenvolvimento mais apurado.
Neste artigo serão apresentadas algumas das boas práticas de análise, modelagem
e distribuição de dados, integração com outras aplicações e, principalmente,
documentação de nossas tarefas, para que posteriormente fique mais simples
manter ou integrar o trabalho desenvolvido na área de banco de dados.
Iniciando uma Modelagem
Iniciar um novo projeto é uma tarefa que poderá ser bastante agradável e
compensadora se você conseguir trabalhar de forma correta, utilizando o que é
comumente chamado de “melhores práticas”, que nada mais são do que os
métodos, formas e preceitos utilizados na obtenção de melhores resultados.
Este processo será inicialmente maçante, principalmente com a grande cobrança
inicial da parte dos contratantes, pois não é um trabalho que aparecerá ao cliente,
porém, o desenrolar dos processos será perceptível tanto na questãoda
produtividade quanto na qualidade do produto final.
Também vemos esforços hercúleos de desenvolvedores, analistas e DBAs, além
das equipes de infraestrutura, para corrigir erros e adaptar a aplicação a situações
não previstas. Estes esforços se tornaram tão costumeiros que ultimamente as
equipes de manutenção são maiores do que as equipes de desenvolvimento.
Uma simples mudança na legislação, que normalmente requer urgência na
adaptação, caso contrário serão aplicadas multas à empresa, poderá desestruturar
toda a aplicação se esta não for bem projetada e planejada.
Neste artigo, nosso objetivo será direcionar o desenvolvimento de uma base de
dados que suporte não só uma grande massa de dados, como também a integração
com novas aplicações e as indispensáveis melhorias pelas quais toda aplicação
deve passar.
Também aproveitaremos para avaliar melhor o tamanho de uma base de dados de
forma a evitar que tenhamos qualquer tipo de problemas neste sentido, e como
fazer para resolver problemas quando as bases ficam significativamente grandes.
Todos estamos acostumados a consultar os tutoriais existentes na internet, porém
estes servem para solucionar problemas, poucos, quando há, são para criar
aplicações e evitar problemas.
Como nosso trabalho será voltado exclusivamente para bancos de dados, vamos
partir de um pressuposto que estamos trabalhando em conjunto com um analista de
sistemas, e vamos trabalhar na modelagem de um banco de dados para uma
aplicação simples.
Existem diversas formas de se trabalhar em modelagem de dados. Iremos aqui
demonstrar uma forma prática e simples que poderá ser muito útil aos nossos
projetos futuros. A proposta é de fazermos o trabalho em módulos, onde cada
módulo será desenvolvido separadamente e será integrado aos módulos já
existentes.
https://www.devmedia.com.br/modelagem-de-dados-tutorial/20398
Iniciando o projeto
Inicialmente vamos definir o escopo geral do projeto para que não nos percamos e
não comecemos a investir energia em ações não prioritárias. Abaixo são descritos
os passos iniciais para definirmos o escopo e também o que não será contemplado
no projeto. Contudo, faremos nossas ações sempre pensando em futuras
integrações com outros módulos e outros aplicativos.
Nenhum sistema deve funcionar isolado dos demais sistemas da empresa, nem
mesmo RH ou financeiro. Qualquer um que trabalhe desta forma é um gerador de
retrabalho, redundância de informações e, inevitavelmente, de dados incorretos e
desatualizados.
Vamos discutir os princípios básicos de um projeto de sucesso. Entenderemos
como sucesso, aquele projeto que atinge seus objetivos, cumpre seu ciclo de vida
sem trazer transtornos e tormentos a seus usuários. Indiferente de se vender
milhões de cópias ou se for para utilização interna de uma única empresa, o
sucesso estará no cumprimento dos requisitos estabelecidos para ele.
O primeiro passo é elaborar com clareza o que se deseja obter de um programa de
computador. Teremos em nossa primeira etapa a definição clara do que desejamos
fazer, primeiro uma definição macro e vamos tornando-a cada vez mais detalhada
até que possamos descrever cada módulo com total clareza.
Desenvolvendo em módulos
É interessante se trabalhar com o desenvolvimento de aplicações por módulos
principalmente porque você pode disponibilizar ao cliente/usuário final as partes
do programa que serão utilizadas enquanto outro módulo está em desenvolvimento.
Presenciei muitos projetos que foram encerrados por que quando estavam
próximos à sua conclusão, não tinham mais serventia, pois tentou-se fazer o
projeto por inteiro, ou então a verba foi cortada.
Outra boa argumentação sobre esta forma de trabalho é que, havendo a necessidade
de se trabalhar uma manutenção ou melhoria, apenas um módulo, isto é, uma parte
do todo, será revisto, pois ele será o responsável por aquela informação. Os demais
módulos, por estarem integrados com aquele que foi modificado, receberão as
informações corretas, sem que seja necessário sofrer qualquer manutenção extra.
E o principal motivo que justifica este tipo de desenvolvimento é que você não
precisará ficar procurando em milhares de linhas de programação os pontos que
apresentam algum tipo de problema.
Quem trabalhou no famoso BUG do ano 2000 saberá do que estou falando.
Pesquisamos milhões de linhas de programação, procurando por alguma parte do
sistema que não estava utilizando os quatro dígitos do ano para modificá-lo. Isso
também inclui centenas e até milhares de tabelas, dependendo do porte da empresa.
Se os processos e a modelagem (que não existia na maioria das empresas) fossem
modulares, seria muito mais simples este tipo de manutenção.
Existem empresas cuja programação não só não é modular, como também
extremamente sem considerar qualquer tipo de padrão de desenvolvimento
(particular até mesmo para clientes diferentes de uma mesma aplicação). Quando
encontravam algum erro, tinham que procurar em todos os servidores de aplicações
para identificar quais os programas que continham aquele tratamento de
informação. Invariavelmente, algum programa específico passava despercebido,
gerando incoerências e divergências contábeis bastante significativas, o que
poderia gerar inclusive processos judiciais.
Saiba mais
Série Eu sobrevivo sem UML?
No contexto deste artigo, utilizaremos uma aplicação de fácil entendimento e
visualização para facilitar o entendimento do problema.
https://www.devmedia.com.br/uml/
https://www.devmedia.com.br/uml/
Modularidade
Podemos desenvolver, para iniciar, a modelagem de uma aplicação que controle
uma mercearia ou um mercado. Estipularemos o que desejamos controlar e depois
vamos definir como modularizar a aplicação.
Com já foi dito, não é conveniente tentar desenvolver módulos de forma
simultânea, a menos que se trate de uma fábrica de software muito bem integrada e
utilizando métodos sofisticados de desenvolvimento, como o SCRUM. Assim,
trataremos os módulos de forma individual e contínua. Também gostaríamos de
ressaltar que não estamos tratando com programação, estamos trabalhando na
modelagem de um banco de dados para abrigar uma aplicação.
Nota: Scrum é uma forma das equipes trabalharem juntas para desenvolver um produto. Este
desenvolvimento ocorre em pequenos pedaços, com cada peça construído sobre peças criadas
anteriormente. Este método de desenvolvimento estimula a criatividade e permite que as
equipes possam responder ao feedback dos clientes e trabalhar nas mudanças para construir
exatamente e apenas o que é necessário.
Definindo o escopo
Se vamos controlar uma mercearia ou mercado, temos que definir onde começa e
onde termina nosso projeto, inclusive as partes que simplesmente não fazem parte
https://www.devmedia.com.br/guia/scrum/34636
https://www.devmedia.com.br/cursos/banco-de-dados
de nosso escopo e as partes que poderão fazer parte do escopo em uma segunda
fase.
Folha de pagamento, controle de ponto, faltas, benefícios e outras atribuições
ligadas a departamento de recursos humanos, apesar de serem importantes, não
fazem parte do controle da mercearia, portanto vamos deixar de fora de nosso
escopo inicial.
Contas a pagar e receber, assim como fluxo de caixa, mesmo fazendo parte de
nosso escopo geral serão deixados para uma segunda etapa, já que para se obter as
informações que alimentarão estes módulos necessitaremos de outros módulos aos
quais daremos prioridade. Portanto, iremos nos concentrar no que o cliente tem de
maior urgência, isto é, controlar seu empreendimento.
Para isso, podemos realizar uma sessão de brainstorm sobre a aplicação. Esta é
uma atividade que muitas empresas deveriam utilizar, mas sem o preconceito e sem
predeterminações, pois ir a uma reunião onde serão feitas muitas sugestões e
encontrar restrições aos seus pensamentos é como enterrar este tipo de iniciativa.
Nota: Tempestade mental, uma alusão à tempestade de ideias, dirigidas por todos os
membros de uma equipe a respeito de um determinado assunto. Depois de tudo anotado,
escolhe-seo que é importante, o que é relevante, o que pode ser aproveitado e o que deve ser
descartado.
Esta aplicação deve inicialmente controlar o estoque. Para isso deve ter um cadastro completo
de produtos. Para se ter um cadastro de produtos, necessitaremos de um cadastro de
fornecedores. Teremos também que possuir uma entrada de mercadoria que possibilitará o
controle de estoque assim como a validade dos produtos. A partir destas informações,
teremos a possibilidade de controlar também as contas que teremos a pagar (mesmo não
fazendo parte do escopo inicial, estas informações deverão ser contempladas ou ,pelo menos,
previstas).
Um dos grandes erros na modelagem está em definir a obrigatoriedade de todas as
informações que poderão ser utilizadas no futuro, tornando o simples cadastro de um item um
verdadeiro transtorno para seus clientes. É interessante também, dependendo do contratante,
ter um cadastro de clientes, o que possibilitará uma maior integração e conhecimento dos
clientes. Isto permitirá também que o sistema possa acompanhar seus hábitos de consumo,
frequência, sugestões de produtos e serviços, enviar mala direta, etc.
Tamanho dos dados
Com base neste escopo macro que foi elaborado, pode-se pensar, por maior que
seja a mercearia ou o mercado, quantos produtos distintos serão armazenados no
banco? Quantos fornecedores? Fluxo de entrada de mercadorias, vendas? Esta é
uma atividade normalmente entregue a um profissional chamado Administrador de
Dados (AD), pois ele irá quantificar estas informações, definir o tamanho de uma
base de dados para o primeiro ano e depois, seu crescimento para os próximos
cinco anos.
Neste caso, estamos trabalhando com uma massa de dados bastante restrita, onde
um banco de dados “parrudo” não se tornará necessário. Existem diversos bancos
de dados de utilização livre, que poderão comportar esta aplicação com bastante
segurança e versatilidade.
Pode-se sugerir o MySQL, PostgreSQL ou FireBird, que são bancos bastante
simples de se instalar, implementar e dar manutenção. Bancos de dados mais
corporativos como SQL Server, Oracle, DB2 entre outros, são normalmente mais
interessantes de serem utilizados em aplicações que possuam massa de dados
grandes e complexas o suficiente para justificar estas plataformas.
Não é anormal nem errado possuir diversas plataformas de bancos de dados em
uma empresa. É verdade que a diversidade torna a administração um tanto quanto
mais complexa, porém é comum vermos diversos tipos de aplicação com seus
respectivos bancos de dados. O ideal deste processo é possibilitar a integração
entre as aplicações, evitando redundância e discrepância entre as informações.
As tabelas, no padrão SQL, possuem um comportamento um tanto quanto
previsível, portanto, podemos fazer uma primeira modelagem e, a partir dela,
fazermos o trabalho de AD na escolha de um banco de dados mais apropriado.
Levantamento de informações
O primeiro passo que devemos trabalhar é a questão de módulos. Temos que
quebrar nossos grupos de informação de forma a ser possível um controle mais
efetivo sobre cada etapa do desenvolvimento.
Quando pensamos em fazer uma modelagem de dados, a primeira questão que nos
vem à mente é começar a criar as tabelas e fazer seu relacionamento. Entretanto,
existem outras etapas que devem ser concretizadas antes de irmos para a
ferramenta de modelagem.
A primeira forma normal, de modelagem de dados, nos indica que devemos fazer
uma relação simples e direta de tudo o que envolverá a parte da aplicação que será
modelada. Como nosso cliente tem pressa de colocar a mão na massa,
principalmente ele quer ter certeza de que alguma coisa está sendo feita, então
vamos projetar os dados referentes ao cadastro de produtos. Assim, enquanto ele
está cadastrando seus produtos nós desenvolveremos outra parte da aplicação.
Vamos pensar no que envolve o cadastro de produtos. Um bom ponto de partida é
conhecer o ambiente sobre o qual será desenvolvido o projeto, portanto, nada
melhor do que passear pelo estoque do cliente e por outras empresas semelhantes e
ver seus produtos, levar uma caderneta e anotar todas as informações que possam
ser úteis ao seu cadastro.
Cuidado sempre para anotar informações completas, anote tudo, desde o nome do
produto, validade, quem embala e produz, quais os valores calóricos, tipo de
embalagem, peso, vá anotando tudo o que encontrar de importante e até mesmo
irrelevante. Depois faremos outro brainstorm para ver o que entrará em nossa
modelagem, o que é importante e o que pode ser útil, mas dispensável.
Só poderemos selecionar o que precisamos se tivermos informações o suficiente,
portanto, não existe neste momento informação inútil. Passe por diversos tipos de
produto, enlatados, conservas, laticínios, massas, etc. Lembre-se, esta é uma fase
inicial de levantamento de informações, nem tudo o que será anotado será usado,
mas deixe a decisão do que será dispensado para quando for avaliar suas
anotações.
Após ter passado pelos diversos setores, feito todas as suas anotações, você
perceberá que possui uma gama muito grande de dados, muito mais do que
imaginava inicialmente. Esta é uma das grandes surpresas de quem experimenta a
modelagem de dados desde seu início.
Normalização
Normalização é a atividade que estabelece, em relação a problemas existentes ou
potenciais, prescrições destinadas à utilização comum e repetitiva com vistas à
obtenção do grau ótimo de ordem em um dado contexto. Na prática, ela está
presente na fabricação dos produtos, na transferência de tecnologia, na melhoria da
qualidade de vida através de normas relativas à saúde, à segurança e à preservação
do meio ambiente.
Também podemos entender, dentro dos conceitos de bancos de dados, que
normalização é a decomposição das informações levantadas de forma que não haja
redundância, evitando assim possíveis problemas de atualização. Este processo
deve manter a integridade das informações ali contidas, mantendo-se a semântica e
as restrições pertinentes.
Quando queremos armazenar o conteúdo de nome do produto em uma tabela, não
faz sentido algum chamar esta coluna de informações de A1, por que não nos trará
nenhuma informação clara de seu conteúdo. Serão necessárias várias incursões a
códigos-fonte das aplicações para conhecer o seu conteúdo.
Existem aplicações que necessitam ser totalmente reescritas por causa da falta de
documentação e da inviabilidade de se obter informações concretas sobre os dados
ali armazenados, muita informação foi perdida.
Portanto, ao definir colunas de informações, seja claro ao documentar, tanto as
tabelas quanto as informações ali contidas. Algumas “coisas” devem ficar fora de
nossa modelagem, tabelas auxiliares e temporárias. Estas poderão ser necessárias
para alguma extração e em algum momento para auxiliar ETL (processo de
extração, transformação e carga de dados) ou a programação, mas não farão parte
de nossa documentação inicial.
Primeira etapa
Primeiramente, você deve saber o que o seu cliente deseja controlar e como ele
deseja controlar estas informações. Não devemos desenvolver um sistema muito
complexo e também não será útil projetar um sistema simples demais tornando-o
incompleto.
Caso você possua uma lousa ou um flip chart, utilize-os, pois é muito mais simples
visualizar as informações em uma destas “ferramentas de apoio”. Depois de
colocar todas as informações colhidas em um local grande e facilmente visível,
vamos começar a separar as informações por tipo de dado e por aproximação.
Vamos trabalhar com alguns exemplos de informações para se ter uma ideia do que
é tipo de dado e o que é aproximação.
Vamos pegar para iniciar nosso trabalho, grãos, por exemplo, feijão, arroz, lentilha.
Como estes produtos são comercializados? Podem estar ensacados, enlatados, em
pacotes, caixas ou a granel. Como nosso cliente gostaria que estes produtos fossem
controlados? Por tipo de produto? Por unidade de armazenamento? Por variedade?
Estas questões são importantes para que possamos definir como projetaremosnosso banco de dados.
Caso nosso cliente queira controlar por tipo de produto, por exemplo, feijão, então
teríamos que ter um produto cadastrado e uma tabela auxiliar contendo as
possibilidades de armazenamento: saco, lata, granel, etc.
Se ele desejar um controle mais genérico, então no cadastro já constará todas as
informações relacionadas ao produto. O importante é que a visualização dos
cadastros seja totalmente amigável, o cliente não precisa saber em que níveis de
detalhe está entrando, tampouco de que forma estas informações estão
armazenadas.
O mais importante é que a documentação desta modelagem seja suficientemente
clara para futuras manutenções e implementações.
Então vamos fazer uma documentação completa, evitando assim futuros
esquecimentos e facilitando manutenções e eventuais atualizações. Assim, nesta
primeira etapa levantamos todas as informações que podem ser úteis ao cliente.
Segunda etapa
Não iremos nos ater à nomenclatura. Vamos deixar os nomes das informações
como foram levantadas inicialmente. O que importa é que não haja redundância e
também não existam falhas em partes do levantamento. É muito comum que o
levantamento inicial não leve em considerações exceções e deixe de considerar
pontos aparentemente insipientes, por isso que coloquei que deveremos andar por
toda a loja, verificando os mais diversos tipos de mercadoria e as mais variadas
informações.
Assumiremos que o dono do estabelecimento não queira dados mais rebuscados,
então vamos fazer uma modelagem mais simples para definirmos nossa
modelagem de produtos.
Todo produto deve ter um nome, isso é bastante evidente. Também necessitará de
um código de identificação. Aqui teremos nossa primeira decisão importante a
tomar tendo-se em vista que nem todo produto possui um código de barras.
Torna-se necessário ou a utilização de uma impressora de código de barras para os
produtos que não possuem ou então a utilização de um código sequencial para
todos os produtos.
Todo produto tem um ou mais fornecedores. Em alguns casos, como produtos a
granel, podemos ter mais de um fornecedor para o mesmo produto, então não
poderemos ter o fornecedor diretamente ligado ao produto, sendo necessária uma
tabela intermediária.
Usando esta mesma sequência de raciocínio, devemos separar as informações em
grupos que posteriormente serão convertidos em tabelas. As informações devem
estar agrupadas de acordo com sua similaridade e/ou proximidade, não deve haver
redundâncias, pelo menos neste primeiro momento.
Existe uma teoria que defende a desnormalização de dados, porém este tipo de
trabalho é algo que exige um bom conhecimento em modelagem de dados e uma
larga experiência em aplicações. Este é um caminho perigoso, já que haverá
redundâncias e subutilização de tabelas, além de uma sobrecarga na massa de
dados e um trabalho considerável em sua manutenção constante.
Quando formos trabalhar com código de barras, é interessante verificar quais são
as normas vigentes no momento. É sempre saudável que validemos as informações
que usaremos para desenvolver os projetos. Isso evitará problemas futuros,
lembrando sempre de documentar as fontes de informação utilizadas para a tomada
de decisão. Isto poderá parecer um tanto quanto burocrático, mas é a melhor forma
de se prevenir contra futuros descompassos.
Lembre-se sempre de consultar sites oficiais, isso obviamente excluirá todo e
qualquer blog, Wikipédia, e outros sites não oficiais. Se um destes for realmente
sério, fornecerá a fonte e você deve ir à fonte para conhecer o conceito completo.
Quando fazemos esta primeira separação de informações, estamos realizando a
segunda etapa da modelagem. Neste momento ainda não se mostra necessária a
definição de nomes e tamanho de dados, também não precisamos nos preocupar
com as chaves primárias (PK) e estrangeiras (FK), vamos nos ater apenas às
informações que deverão ser agrupadas. Porém, até aqui já tomamos todas as
precauções necessárias para que não haja redundância de informações,
duplicidades, incompatibilidades, etc.
Terceira etapa
Agora partiremos para a terceira etapa da modelagem. É aqui que começaremos a
dar nomes e tamanhos às informações que serão armazenadas. Existem diversas
formas de se nomear as tabelas e colunas, porém, acredito quanto mais simples e
direta for a informação, mais fácil será identificar seu conteúdo e trabalhar em
manutenções e integrações.
O primeiro passo é encontrar o núcleo da informação, neste caso, como estamos
trabalhando em um cadastro de produtos, torna-se evidente que todas as
informações orbitarão em torno desta tabela principal.
Então, na tabela de produtos, teremos o código e nome do produto, devemos
classificar qual o tipo de envasamento deste produto, isto é, se é enlatado,
ensacado, engarrafado, por peso, etc., qual o peso ou quantidade. Devemos
considerar também as informações valor de compra e de venda.
Teremos como tabelas de apoio: unidade de medida e tipo de embalagem. Você
pode questionar por que este tipo de tabela, a justificativa é simples, quanto menos
oportunidades as pessoas tiverem de errar no cadastro, melhor.
Exemplificando, se em um produto a pessoa cadastra LITRO, em outro ela cadastra
Litro, ou litor(com erro de digitação), então, caso exista a necessidade de alguma
correção, será bem mais simples fazê-la em único lugar, que se refletirá em todos
os produtos.
Também colocaremos a possibilidade de pacotes, isto é, “combos” que possuem
vários de um mesmo produto, ou combinados. Isso também poderá ser considerado
em seu levantamento.
Colocando em prática
Agora está na hora de colocar em prática esta parte do trabalho que foi discutida.
Como foi definido que a tabela de produtos será a base deste módulo, então iremos
nos concentrar nela e projetar também as tabelas auxiliares conforme tenhamos a
necessidade.
Todo produto deverá ser identificado por um código único, como definimos a
utilização de um código de barras, então usaremos uma coluna alfa numérica.
Assim como um código, este produto precisa de um nome. Não confunda nome
com descrição, por exemplo, Ovomaltine é nome, achocolatado é descrição, já que
tanto Nescau quanto Toddy são achocolatados. Em sua modelagem você pode ter
um campo descrição (isso vai depender dos objetivos de seu cliente).
Da mesma forma, todo produto vem embalado, com exceção dos produtos a granel.
No caso do Ovomaltine, o encontraremos em sacos econômicos e em potes
plásticos, além, é claro, de quantidades distintas. Para evitarmos que a cada
produto seja dada uma descrição diferente para o tipo de envasamento, então é
aconselhável que tenhamos uma tabela auxiliar. Neste caso, tipo de envase, que
terá basicamente o código identificador e a descrição.
Todo produto deve ter uma unidade de medida (metros, quilos, litros, etc.) também
para evitarmos que sejam feitos cadastramentos distintos. Iremos criar uma tabela
de apoio que terá o código identificador da unidade de medida, sua descrição por
extenso e sua descrição curta, por exemplo, metro como descrição e m como
descrição curta.
É aconselhável que o valor unitário de compra faça parte deste cadastro. Esta
informação deve ser recalculada a cada nova entrada já que fornecedores distintos
trabalham com valores distintos. Em país que há inflação, os valores devem estar
sempre sendo recalculados. Com base neste valor, é possível perceber se o valor de
venda ainda está dentro da lucratividade estabelecida ou se está na hora de
remarcar preços.
Outra informação indispensável é a quantidade em estoque, tanto para produtos de
alta rotatividade quanto para produtos de baixa rotatividade, pois saber a hora de
recompor o estoque é imprescindível (uma loja com prateleiras vazias terá sérios
problemas de caixa em pouco tempo).
Vimos até aqui que, ao definir a tabela de produtos, também definimos
indiretamente outras duas tabelas que nos auxiliarão na identificação dos mesmos.
Outra tabela importante é a de pacotes ou kits, isto é, quando existem diversos
itens do mesmo produto, por exemplo,pacotes de papel higiênico, ou itens de
produtos distintos, como shampoo e condicionador, compondo um kit. Este deve
ser catalogado não como um produto diferente e sim como uma promoção. Neste
caso, teremos um novo preço de produto, que é a composição dos valores de
compra de todos os itens que pertencem ao pacote, e teremos um valor de venda.
Novamente podemos ou não ter uma coluna controlando a quantidade de pacotes,
porém muitos mercados criam pacotes simbólicos, isto é, se você comprar
determinados produtos, formando um pacote, a soma destes será menor que a
compra individual destes mesmos produtos. A inclusão de uma coluna de
quantidade em estoque vai depender exclusivamente de seu cliente.
Para que possamos desfrutar da melhor forma possível este conceito de pacotes,
então criaremos mais uma tabela auxiliar, que fará a ligação entre pacotes e
produtos. Observe como ficou nosso projeto de banco de dados na Figura 1.
Figura 1. Estrutura simplificada do primeiro módulo a ser desenvolvido
Para alimentar estas tabelas, devemos iniciar pelas tabelas auxiliares, neste caso,
Unidade de Medida e Tipo de Envase, pois sem estas informações não será
possível cadastrar os produtos que dependem destas informações para compor seu
cadastro.
Para cadastrar os itens do pacote, deve-se primeiro criar o registro em pacote,
depois alimentar a tabela Produto x Pacote, caso contrário ficará inviável seu
cadastramento.
Análise
Ao examinarmos como ficou nossa primeira modelagem, na Figura 1, notamos
que os nomes das tabelas aparecem de forma simples, facilitando sua identificação.
É uma boa prática sempre utilizar o singular.
Da mesma forma, temos que ter um padrão para nomear as colunas de informação,
de id identificação, cod quando vamos trabalhar com códigos alfanuméricos, num
quando vamos trabalhar com informações numéricas, assim por diante.
Uma vez que se definiu que cod_produto será o código do produto, esta
nomenclatura deverá ser utilizada em todo o resto da aplicação. Devemos evitar
que colunas do tipo cod_cliente, cod_cli, cliente, num_cliente, surjam em
nossas aplicações.
Devemos evitar também que colunas com tipos de dados e/ou tamanhos diferentes,
venham compor nossas aplicações, pois construir uma integração nestes casos
torna-se um trabalho incrivelmente complexo. Caso isso ocorra, teremos que
aplicar conceitos de refatoração para ajustar o banco de dados. A refatoração, neste
caso, pode ser entendida como sendo um processo de “higienização” do banco de
dados e dos processos envolvidos em toda a aplicação, é um processo minucioso e
detalhado de pequenas alterações efetuadas de forma constante e renovadora em
todo processo.
Conclusão
Com o que foi apresentado neste artigo, poderemos explorar todas as
possibilidades de levantamento nos mais diversos tipos de aplicação, desde que
sigamos sempre as melhores práticas.
Aproveite para pesquisar um novo assunto, por exemplo, bibliotecas, locadoras,
etc., pois são áreas que, mesmo havendo uma grande oferta de produtos prontos, há
uma grande carência de aplicações desenvolvidas de acordo com as necessidades
dos clientes.
Por fim, vale destacar que devemos estar sempre atentos também à praticidade das
informações cadastradas. Se fizermos uma modelagem excessivamente rebuscada,
o desenvolvimento das aplicações que irão alimentá-la será complexo e
provavelmente confuso, portanto a simplicidade é a “ordem do dia”.
Desde já peço desculpas se não correspondi ao que você esperava, estamos aqui
para tirar e talvez ponderar sobre algumas reclamações.

Continue navegando