Cap 01 - Machado 3ed
Cap 01 - Machado 3ed
Cap 01 - Machado 3ed
Projeto e Implementação
Felipe Nery Rodrigues Machado
Banco de Dados
Projeto e Implementação
3ª Edição
www.editoraerica.com.br
1
1
O QUE É PROJETO DE
BANCO DE DADOS
Durante muito tempo criou-se a ideia de que projetar bancos de dados era uma
disciplina com identidade própria, uma atividade específica e até certo ponto isolada no ciclo de
vida de um sistema, que tinha existência própria e podia ser realizada a partir de primitivas e
conceitos exclusivos da técnica de modelagem de dados.
Com a evolução das tecnologias de desenvolvimento de aplicações, novas linguagens e
principalmente com o advento da orientação a objetos não mais restrita ao ambiente de
programação, mas extensiva às metodologias de análise de sistemas, o trabalho de projetar as
bases de dados que serão utilizadas por um sistema em desenvolvimento assume, nos dias de
hoje, características que objetivam mixar um projeto orientado a objetos com as necessidades
de esse mesmo sistema interagir com um banco de dados relacional, constituído por um
conjunto de tabelas, que equivale à denominada camada de persistência de dados.
Essa necessidade de mixagem é real pela absoluta ausência de projetos comerciais
que utilizem bancos de dados orientados a objetos que sejam confiáveis a grandes massas de
dados, à não popularização desses produtos e aos grandes investimentos já realizados em
softwares de Sistemas Gerenciadores de Bancos de Dados Relacionais existentes no mercado
nacional e mundial.
É indiscutível a vantagem obtida em um projeto orientado a objetos; logo, surge a
necessidade de uma nova técnica de projetar banco de dados, que não é a formatação pura de
classes de dados, mas uma interação alta entre o ambiente de análise orientada a objetos e a
nossa sempre presente modelagem de dados, que é estritamente necessária à administração
de dados da organização de TI. A utilização de ferramentas para a camada de persistência,
tais como o Hybernate, acaba levando o desenvolvedor a deixar de lado a preocupação com
as estruturas do banco de dados, assim como a preocupação com a qualidade das queries
realizadas em uma aplicação.
Não existem técnicas nem ferramentas que possibilitem tanto ao administrador de
dados (DA) quanto ao administrador de bancos de dados (DBA) realizar suas funções sobre
classes de dados, pois esses mesmos bancos de dados relacionais atuam e têm todas as suas
funcionalidades sobre tabelas relacionais de dados, as quais são hoje de domínio maior dos
usuários de aplicações.
Modelagem de Dados
Modelagem de dados é o estudo das informações existentes em um contexto sob
observação para a construção de um modelo de representação e entendimento de tal contexto.
A modelagem de dados minera as informações que representam um contexto, estruturando-as
em um conjunto que denominamos modelo lógico de dados.
Uma das principais características da abordagem de modelagem de banco de dados é
que ela fornece níveis de abstração de dados que omitem do usuário final detalhes sobre o
armazenamento dos dados. Não existe a preocupação com um banco de dados tecnologica-
mente falando.
O modelo de dados é um conjunto de conceitos que podem ser utilizados para descre-
ver as estruturas lógicas e físicas de um banco de dados.
Já um modelo de classes de objetos não se detém somente às informações e dados,
sendo mais amplo no momento em que integra as informações e os seus métodos de acesso,
recuperação, processamento e outros em um único objeto.
Logo, temos de encontrar e separar os dados dos seus processos em um determinado
momento, para que possamos efetivamente obter domínio do negócio para o qual a aplicação
está sendo desenvolvida. Os objetivos reais da aplicação continuam sendo mais facilmente
compreendidos por meio de um modelo de dados, e não de um modelo de objetos.
Normalmente as aplicações têm sido desenvolvidas com AOO (Análise Orientada a
Objetos) mesclada com a tradicional modelagem de dados, com a utilização de paterns, ou
melhor, padrões de modelos de dados, que não são obtidos tão simplesmente quando da pura
criação de diagramas de classes. Desenvolvemos com isso um processo que pode ser chama-
do two fase commit entre diagrama de classes e modelo de dados Entidade-Relacionamento.
Para que isso possa ser realizado, é preciso entender e dominar as técnicas de
modelagem de dados e depois, finalmente, aprender a lidar com a sua equivalência em um
modelo de classes de objetos.
O objetivo deste livro é explorar e ensinar da melhor forma possível como modelar da-
dos para ambientes de bancos de dados relacionais, complementando com a implementação
desses bancos seja em um ambiente tradicional, seja em um ambiente orientado a objetos, tal
como uma aplicação desenvolvida em Java, com base em experiências por nós realizadas.
Que É Abstração?
Vamos levar o leitor a resolver exercícios que possibilitem um maior desenvolvimento
dessa sua capacidade, antes de desenvolvermos os conhecimentos e técnicas específicos de
modelagem de dados.
Uma abstração ou a capacidade de abstração é um processo, com certeza mental, que
usamos quando selecionamos várias características e propriedades de um conjunto de objetos
ou fatos, e excluímos outras que não são relevantes em um contexto. Em outras palavras,
aplicamos abstração quando nos concentramos nas propriedades de um conjunto de objetos
ou coisas que consideramos essenciais, e desprezamos outras que não consideramos impor-
tantes, sempre dentro de um determinado contexto sob observação ou análise.
O analista, durante a modelagem conceitual dos dados, deve se concentrar na obser-
vação dos objetos relevantes que existem em uma realidade ou contexto, com a finalidade de
construir um modelo de compreensão e conceitos existentes nessa realidade. Esse primeiro
modelo denominamos de minimundo, sem pensar no momento em automatizar ou processar a
informação dessa realidade.
Abstração, em síntese, nada mais é do que a visão, sem conceituações técnicas, que
obtemos na mente de uma realidade qualquer do mundo real.
Por exemplo, quando olhamos a figura ao lado, temos
o resultado de um processo de abstração em que excluímos
detalhes da estrutura de uma bicicleta, como os pedais, os
freios, os mecanismos de tração e inclusive as possíveis
diferenças entre várias bicicletas, e definimos o objeto como o
que conceituamos e denominamos de "bicicleta". Normal-
mente associamos um nome a cada abstração. No caso da figura, o conceito bicicleta é uma
representação dessa prática de abstração. Definimos um conceito para um objeto existente em
contexto sob observação. Denominamos essa capacidade humana de modelo conceitual.
Em realidade o que criamos é um modelo de conceitos de objetos em um primeiro
instante que denominamos de modelo conceitual.
Outra representação poderia ser a descrição textual da mesma figura apresentada.
Vamos detalhar mais os conceitos de abstração e as primitivas em capítulo à parte neste livro.
Quando modelamos, como veremos no livro, devemos buscar a realidade do ambiente,
o contexto em análise com total abstração em primeiro lugar, para somente depois iniciarmos
um processo de modelagem lógico que detalharemos adiante.
Banco de Dados
Um banco de dados pode ser definido como um conjunto de dados devidamente
relacionados. Podemos compreender como dados os objetos conhecidos que podem ser
armazenados e que possuem um significado implícito, porém o significado do termo banco de
dados é mais restrito que simplesmente a definição dada anteriormente. Um banco de dados
possui as seguintes propriedades:
É uma coleção lógica coerente de dados com um significado inerente; uma dis-
posição desordenada dos dados não pode ser referenciada como banco de dados.
Ele é projetado, construído e preenchido com valores de dados para um propósito
específico; um banco de dados possui um conjunto predefinido de usuários e de
aplicações.
Ele representa algum aspecto do mundo real, o qual é chamado de minimundo;
qualquer alteração efetuada no minimundo é automaticamente refletida no banco
de dados.
Modelo Conceitual
Representa, descreve a realidade do ambiente do problema, constituindo-se em uma
visão global dos principais dados e seus relacionamentos (estruturas de informação), comple-
tamente independente dos aspectos de sua implementação tecnológica.
Quando falamos em modelo conceitual, estamos nos referindo àquela que deve ser
sempre a primeira etapa de um projeto de banco de dados.
Modelo Lógico
Ele somente tem início após a criação do modelo conceitual, pois agora vamos considerar
uma das abordagens possíveis da tecnologia Sistemas Gerenciadores de Banco de Dados
(relacional, hierárquica, rede ou orientada a objetos) para estruturação e estabelecimento da
lógica dos relacionamentos existentes entre os dados definidos no modelo conceitual.
A elaboração direta e um modelo lógico de dados, independentemente de já sabermos a
abordagem para banco de dados, para a qual estamos realizando um projeto, levam à vinculação
tecnológica de nosso raciocínio, perturbando a interpretação pura e simples de um contexto.
Sempre que analisamos um contexto sob a óptica tecnológica, temos a tendência de sermos
Modelo Físico
O modelo físico será construído a partir do modelo lógico e descreve as estruturas
físicas de armazenamento de dados, tais como:
Tipo e tamanho de campos;
Índices;
Domínio de preenchimento desses campos;
Nomenclaturas;
Exigência de conteúdo;
Gatilhos etc.
Elas são projetadas de acordo com os requisitos de processamento e uso mais econô-
mico dos recursos computacionais. Esse modelo detalha o estudo dos métodos de acesso do
SGBD para criação dos índices necessários para cada informação colocada nos modelos
conceitual e lógico.
Validações: nessa fase busca-se a aprovação formal do modelo. Para que esse
objetivo seja alcançado, é necessária a participação ativa do usuário final, bem
como a visão de outros profissionais da área técnica (administrador de dados,
analista de sistemas, administrador de banco de dados etc., de acordo com o
caso). Esse processo deve ser rigoroso e crítico, tanto quanto possível.
As técnicas de modelagem de dados devem ser disseminadas à área usuária para que
a validação não se transforme em um monólogo de analistas de sistemas e deixe de cumprir o
seu verdadeiro objetivo (detectar falhas e anomalias), porém nunca tente fazer do usuário final
um expert no assunto modelagem de dados.