Olá, caro(a) aluno(a)! Nesta lição, continuaremos conhecendo alguns conceitos de modelagem de dados. Relembrando alguns assuntos que já estudamos, a modelagem de dados tem como objetivo:
Representar o ambiente observado.
Documentar.
Normalizar.
Fornecer processos de validação.
Descrever relacionamento entre objetos.
Todos esses pontos listados são importantes para a criação de um banco de dados bem estruturado. Nenhum modelo é suficiente sem uma documentação formal dos elementos que compõem uma base de dados, pensando nisso, estudaremos a criação e a interpretação de dicionários de dados.
Em nossa disciplina, estamos estudando a utilização do modelo de entidade e relacionamentos, em que, para criar um banco de dados, definimos entidades que compõem o sistema, e essas entidades se relacionam entre si.
Para a melhor compreensão do modelo de entidade e relacionamento, utilizamos um documento que contém a explicação de todos os objetos nele criado, como: tipos de dados, formato, estrutura do banco, relacionamentos etc. Esse documento é denominado dicionário de dados e permite que todos os profissionais que participam da criação de um projeto obtenham informações sobre o modelo, de forma textual e direta. A importância do dicionário está em limitar erros ao criar a estrutura física do banco.
Existem diferentes formas de descrever o dicionário de dados, ele pode ser descrito, por exemplo, em texto corrido em um documento de texto ou em forma de tabelas. Porém o documento deve ser o mais claro e consistente possível, pois ele será responsável por guiar a implementação da banca de dados.
Um analista de sistemas tem que ser capaz de escutar os desejos de um cliente e converter isso para uma linguagem formal e técnica para os desenvolvedores que programarão o sistema. Por exemplo, um cliente procura uma empresa de software para desenvolver um jogo de RPG (Role Playing Game) e descreve que o jogo deve se passar em um ambiente medieval com as seguintes restrições:
O jogo deve conter três classes de personagens: mago, arqueiro e guerreiro.
Cada uma das classes tem seu próprio tipo de arma, e as armas são: cajado, arco e espada.
As habilidades (skills) dos personagens são adquiridas conforme o personagem evolui.
Apenas esta descrição do usuário não diz muito sobre a implementação do jogo. Porém com elas já é possível descrever algumas características do banco de dados do sistema de uma maneira técnica. Observe que os três pontos citados descrevem a relação que as tabelas do banco de dados de jogo devem conter. Cada personagem pode ter apenas uma classe, sendo elas mago, arqueiro e guerreiro, e, neste jogo, cada personagem só pode utilizar a arma correspondente à sua classe, assim o mago só pode utilizar o cajado, o arqueiro, o arco e guerreira, a espada. Este é um exemplo de relacionamento do tipo um para um.
Seguindo, podemos imaginar que um usuário do jogo pode criar vários personagens no jogo para testar cada classe, porém um personagem só pode estar associado a um único usuário. Esse é um relacionamento um para muitos. A última coisa que podemos inferir a partir da descrição do cliente é em relação às skills. Cada personagem pode ter diversas skills e pode pertencer a diversos personagens. Assim, constituímos um relacionamento muitos para muitos.
Toda esta descrição que criamos a partir do contexto da ideia do cliente é um exemplo de informação que pode estar em um dicionário de dados.
Para compreender a ideia por trás de um dicionário de dados, é importante relembrar alguns conceitos que já vimos em nossas aulas. Você lembra qual a diferença de um modelo conceitual, lógico e físico?
Modelo Conceitual: apresenta uma visão geral do negócio com o objetivo de facilitar o entendimento entre cliente e desenvolvedores. Este modelo possui as principais entidades e atributos (ELMASRI et al., 2005).
Modelo Lógico: observa os requisitos levantados no Modelo Conceitual, porém levando em consideração possíveis limites impostos pelas tecnologias utilizadas. Adequa às nomenclaturas e documenta as entidades e os atributos (ELMASRI et al., 2005).
Modelo Físico: consiste na implementação, levando em consideração o modelo lógico; aqui, são implementadas tabelas e colunas físicas (ELMASRI et al., 2005).
Precisamos, agora, recapitular as definições de entidades e atributos.
Entidade: representa um conjunto de informações sobre determinado objeto. Em linhas gerais, é o conjunto de características de alguma coisa que queremos representar no banco de dados (ALVES, 2010).
Atributos: como define Alves (2010), são as informações que referenciam a entidade. Por exemplo, uma entidade pode ser o personagem de um jogo de RPG, e os atributos são as informações que esse personagem deve ter, por exemplo: nome, classe, arma etc.
Dicionário de dados é um documento utilizado para descrever os metadados das informações que compõem o banco de dados. Os metadados são comumente definidos como um conjunto de dados que descreve e fornece informações sobre outros dados. Por exemplo, uma mensagem de texto é um dado, enquanto as informações referentes a horário de envio, formato, localização são os metadados. Dessa forma, esses dados são responsáveis por explicar como funcionam as estruturas de dados de banco de dados.
Os metadados das informações que serão armazenados no banco de dados devem ser descritos de forma detalhada no dicionário de dados para garantir que a implementação será exatamente como imaginada. Podemos descrever o dicionário de diferentes formas, e apresentaremos a você a forma mais convencional, que é por tabela.
A primeira fase do documento é uma descrição geral da modelagem dos dados, descrevendo as tecnologias a serem utilizadas como também o background das aplicações. Após a descrição, iniciamos a criação das tabelas de metadados. Para facilitar o entendimento, voltaremos ao exemplo exposto no case, criaremos um banco de dados para um jogo de RPG composto por três classes de personagens, onde cada personagem tem uma arma própria e várias skills.
Iniciamos criando a tabela que representa os metadados das entidades, isto é, aqui, listaremos todas as entidades do banco de dados e descreveremos quais são as tabelas de relacionamento, além de uma breve descrição da entidade. Para o nosso RPG, teremos quatro entidades: usuários, personagens, arma e skills. Observe, no Quadro 1, a descrição dessas entidades:
Quadro 1 - Tabela de entidades
Fonte: o autor.
#PraCegoVer: quadro com cinco linhas e quatro colunas. Na primeira linha, em negrito, temos a primeira coluna Tabela, na segunda coluna, Relacionamento, na terceira Nome do Relacionamento, na quarta, descrição. Na segunda linha, temos, na primeira coluna Usuários, na segunda coluna, personagem, na terceira, a palavra cria e, na quarta coluna, o texto “Tabela de cadastro de usuários do jogo”. Na terceira linha, na primeira coluna, temos personagem, na segunda, arma, skills e usuários, na terceira, a palavra contém, na quarta o texto “Tabela De personagens, onde cada personagem tem apenas uma arma e várias skills.”. Na quarta linha, temos, na primeira coluna, arma, na segunda, personagem, na terceira, pertence e, na quarta, o texto “Tabela de armas, onde cada arma pode estar associada a um personagem”. Por fim, na quinta linha, temos, na primeira coluna, skill, na segunda, personagem, na terceira, pertence, na quarta o texto “Tabela de skills”.
O formato da tabela de um dicionário de dados não é muito rígido, de modo que você como analista pode adicionar ou remover colunas da tabela conforme a necessidade. A criação do dicionário parte do diagrama de entidade e relacionamento, onde a primeira coluna se refere aos nomes das entidades do sistema. Na segunda coluna da tabela, descrevemos as entidades com as quais ela se relaciona, na coluna nome de relacionamento, damos um nome ao tipo de relação que uma tabela tem com a outra. Por fim, adicionamos uma breve descrição sobre a entidade.
Por exemplo, na primeira linha, temos a entidade de usuário, esta entidade se relaciona com personagem. Ela tem um relacionamento denominado “cria”, pois um usuário cria um novo personagem. Após a descrição das entidades, o segundo passo é criar as tabelas de atributos de cada entidade do banco de dados . Essa tabela é a que dá mais trabalho de criar, pois cada entidade pode conter vários atributos. Observe o Quadro 2 que apresenta os atributos da entidade personagem.
Quadro 2 - Tabela de atributos
Fonte: o autor.
#PraCegoVer: quadro com sete linhas e cinco colunas. Na primeira linha, em negrito, temos a primeira coluna entidade, na segunda, atributo, na terceira, tipo, na quarta, restrições e, na quinta coluna, descrição. Na segunda linha, temos, na primeira coluna, personagem, na segunda, id, na terceira, inteiro, na quarta, PK - not null, na quinta, o texto “Num. de identificação do personagem, autoincremento”. Na terceira linha, temos, primeira coluna vazia, na segunda coluna, nome, na terceira, char, na quarta, not null, e, na quinta, o texto “nome do personagem”. Na quarta linha, temos, primeira coluna vazia, na segunda, Dano base, na terceira, inteiro, quarta coluna vazia e, na quinta, o texto “Dano de personagem”. Na quinta linha, a primeira coluna vazia, segunda coluna classe, na terceira, char, na quarta not null, e, na quinta, o texto “Nome da classe”. Na sexta linha, primeira coluna vazia, na segunda, user, na terceira, inteiro, na quarta, FK, e, na quinta, o texto “num. identificação do usuário”. Na sétima e última linha, a primeira coluna vazia, na segunda, arma, na terceira, inteiro, na quarta, FK, e, na última, o texto “num. identificação da arma''.
O Quadro 2 exemplifica a criação de uma tabela de descrição de atributos. Como disse anteriormente, aqui também não existe uma regra sobre quais colunas devem existir, o importante é apresentar o máximo de informação possível sobre cada atributo. Por exemplo, analisaremos o atributo “id”, na coluna de tipo, descrevemos qual o tipo de dado, como o ID é a chave primária da tabela, isso é, a partir desse atributo realizaremos o relacionamento com outras entidades, declaramos do tipo inteiro. Na coluna de restrições, explicitamos que o ID é a PK (primary key), e que o campo não pode ser nulo. Na coluna descrição, adicionamos as características do atributo.
Por fim, mas não menos importante, o último passo é criar a tabela de descrição de relacionamentos entre as entidades. Observe o Quadro 3.
Na tabela de relacionamentos, devemos descrever como cada entidade se relaciona com as demais. Assim como nas outras etapas, aqui também é importante conter um campo de descrição de cada linha.
Criar um dicionário de dados pode ser trabalhoso e tedioso, porém ele pode ser o seu maior aliado na hora da implementação. Como vimos, esta estrutura é composta do conjunto de relações e propriedades que serão utilizadas para armazenar os dados.
Em geral, você entrará as seguintes informações em um dicionário de dados:
Definição de entidades.
Definição das colunas que compõem cada tabela de entidade.
Definições de relacionamentos.
Informações de segurança, por exemplo o tipo de operação que cada usuário do banco de dados pode realizar.
Definições de elementos estruturais do banco de dados, como visualizações e domínios.
ELMASRI, R. et al. Sistemas de banco de dados. São Paulo: Pearson, 2005.
ALVES, W. P. Banco de dados: teoria e desenvolvimento. São Paulo: Saraiva Educação SA, 2009.