Lição 8 - Modelos de Base de Dados:
modelo relacional
modelo relacional
Olá, caro(a) aluno(a), agora que você já conhece a base dos conceitos de banco de dados, começaremos a trabalhar com as ideias de modelagem e criação de banco de dados. Nesta lição, revisitaremos alguns conceitos que vimos no primeiro trimestre, que é o modelo relacional de dados.
A partir deste modelo, poderemos explorar outros modelos, como entidade relacionamento e não relacionais. Cada modelo tem uma aplicação específica e modos diferentes de serem trabalhados, e são estas aplicações e regras que você conhecerá.
O conceito do modelo relacional surgiu a partir da teoria dos conjuntos que estudamos na álgebra relacional, e consiste, basicamente, na ideia de que não é necessário que o usuário conheça onde os dados estão ou onde se encontram. Em linhas gerais, um banco de dados relacional é uma coleção de informações que organiza os dados com relacionamentos definidos para tornar o acesso simplificado e descentralizado. No modelo relacional, as estruturas de dados são organizadas em tabelas de dados, índices e visualizações que permanecem separadas das estruturas de armazenamento físico, permitindo que os administradores de banco de dados editem o armazenamento físico de dados sem afetar a estrutura lógica da base de dados.
No mercado, os bancos de dados relacionais facilitam a classificação e a localização de informações, o que ajuda as organizações a tomarem decisões de negócios com mais eficiência e minimizarem custos.
Com o crescimento do número de dispositivos eletrônicos e a geração maciça de dados nos últimos anos, os dados tornaram-se essenciais para todos os negócios e, em quase todas as organizações, eles são gerados por diferentes fontes. Entretanto muitas pessoas desconhecem as tecnologias e as técnicas relacionadas à manipulação de banco de dados. No senso comum, tratar dados é apenas criar uma planilha eletrônica e aplicar alguns filtros. Uso de uma planilha pode não causar um problema sério para um pequeno conjunto de dados, porém, para um grande volume de dados de uma organização, pode levar a sérios erros.
Trabalhando com muitos dados, alguns problemas podem surgir, como:
Dados redundantes: esta redundância de dados pode tornar o conjunto de dados inconsistente.
Violação da integridade dos dados: integridade dos dados significa consistência entre os dados armazenados.
Acesso centralizado: dependendo da tecnologia, o acesso pode ser restrito a apenas uma máquina, de modo que outros profissionais podem não ter acesso aos dados.
Portanto, para evitar estes problemas, a tecnologia de banco de dados deve ser aplicada. Um banco de dados é uma coleção organizada de dados relacionados. Existem diferentes paradigmas de organização de banco de dados, o mais popular é o modelo relacional, que estudaremos nesta lição.
Conforme define Elmasri (2005), o modelo relacional tem como base os princípios de que os dados podem ser “conectados”, por meio de relações matemáticas que podem ser representadas de maneira uniforme por tabelas e atributos. Este modelo foi definido por EF Codd, em 1983, e, atualmente, é o modelo de dados mais utilizado.
Codd (1983) define doze regras que definem como um banco de dados relacional deve trabalhar, atualmente algumas dessas regras foram descartadas ou simplesmente utilizadas em alguns sistemas de gerenciamento de banco de dados.
Informação: todos os dados presentes na base relacional devem ser apresentados em nível lógico, por meio de tabelas.
Garantia de acesso: todos os dados devem ser acessíveis, logicamente, pela combinação do nome de tabelas, chaves ou colunas.
Tratamento de valores nulos: a base deve ser capaz de tratar valores nulos, independentemente do tipo do dado.
Catalogação: o dicionário da base de dados deve ser criado a partir do modelo relacional. Os metadados devem ser organizados e armazenados como dados comuns, isso é, em tabelas no SGBD.
Linguagem: a base de dados relacional pode ser compatível com diversas linguagens. Entretanto deve suportar uma linguagem declarativa para suporte de declaração de dados, busca, visualização, manipulação, criação de regras e gerenciamento de transações.
Atualização: todas as atualizações de visualização dos dados devem ser atualizadas, por meio do sistema.
Manipulação de alto nível: a manipulação dos dados, como inserção, atualização e exclusão devem ser suportadas. Isso é, a manipulação dos dados deve ser suportada, por meio de comandos de uma linguagem de manipulação de dados (DML).
Independência física: aplicações e recursos independentes não são afetados, logicamente, com a alteração de recursos de armazenamento físico.
Independência lógica: aplicações e recursos lógicos independentes não são afetados com a alteração da estrutura de tabelas, por exemplo, alteração no tamanho de uma coluna.
Independência de integridade: identidade, referência e domínio devem ser possíveis de serem definidas na linguagem relacional e armazenadas no dicionário do sistema. A base de dados não deve ser afetada com a ocorrência de mudanças nas restrições de integridade.
Independência de distribuição: os usuários não devem ser afetados pelo modo de distribuição dos dados, seja em banco de dados locais sejam distribuídos.
Transposição de regras: se o banco de dados dá suporte a acesso de baixo nível aos dados, não deve ocorrer a quebra da integridade dos dados.
Observe que todas as regras listadas anteriormente já estão, previamente, programadas nos sistemas de gerenciamento de banco de dados que utilizaremos para criar as nossas bases. Porém, é importante conhecê-las para compreender como os dados são manipulados dentro do SGBD.
No modelo relacional os dados são agrupados a partir de uma relação que é dada, por meio de uma tabela com linhas não ordenadas e colunas (ALVES, 2009). Uma relação consiste em um esquema que especifica o nome de uma relação e o domínio de cada coluna, que são denominadas atributos. Por exemplo, definiremos a tabela de um banco de dados relacional de um jogo de RPG. Uma das tabelas que teríamos que criar seria a de cadastro de usuários, que pode ser definida da seguinte forma:
usuarios(id: int, nome: varchar, dataNascimento: date, email: varchar, senha: varchar)
Uma instância do modelo relacional deve seguir sempre respeitando o número de atributos definidos, no caso do exemplo apresentado, os atributos são:
id
nome
dataNascimento
senha
A partir destes atributos, é possível preencher as linhas da tabela criada. Um exemplo de uma instância para a tabela usuários é apresentado no Quadro 1.
Apenas uma tabela isolada, porém, não tem muita utilidade, em um banco de dados relacional existe uma coleção de tabelas que se relacionam entre si. Existem, basicamente, três tipos de relacionamentos:
1:1 Um para um: este relacionamento é utilizado quando uma entidade A pode se relacionar com apenas uma entidade B. Imagine o exemplo do banco de dados para um jogo de RPG onde existem as classes mago, arqueiro e guerreiro. E, também, temos apenas três tipos de arma: cajado, arco e espada. Neste jogo, cada personagem só pode utilizar a arma correspondente à sua classe, assim, o mago só pode utilizar o cajado, o arqueiro, o arco, a guerreira e a espada. Este é um exemplo de relacionamento um para um.
1: Um para muitos: este relacionamento é utilizado quando uma entidade A pode se relacionar com muitas entidades do tipo B. Seguindo o exemplo do jogo aqui, imagine um usuário, ele pode ter vários personagens no jogo, porém um personagem só pode estar associado a um único usuário. Esse é um relacionamento um para muitos.
N:N Muitos para muitos: este relacionamento utilizamos quando várias entidades A se relaciona com várias entidades do tipo B. Neste caso, imagine as skills dos personagens, cada personagem pode ter diversas skills, e as skills podem pertencer a diversos personagens. Assim, constituímos um relacionamento muitos para muitos.
Para constituir essas relações, precisamos utilizar o conceito de chaves, entraremos de forma mais profunda neste ponto em outra lição. Porém, inicialmente, entenderemos o conceito de chaves com um item de busca, ou seja, um valor que será utilizado para consultar dados no banco de dados, considerando a relação entre as tabelas. Basicamente, temos dois tipos de chaves:
Chave primária: utilizamos a chave primária quando precisamos identificar, unicamente, um item ou uma linha na base de dados. Por exemplo, se definirmos o campo ID da tabela usuários como a nossa chave primária, então, temos que o ID é responsável por representar os usuários. Observe o campo ID do Quadro 1. Quando eu quiser procurar pelo usuário José basta buscar pelo ID 3.
Chave estrangeira: as chaves estrangeiras são constituídas por atributos que são chaves primárias em outra tabela. Por exemplo, temos uma tabela de usuários e uma tabela de personagens. Cada personagem tem um usuário, e podemos utilizar a chave primária do usuário para relacioná-lo com o personagem. Observe o Quadro 2.
O personagem Suroki pertence ao usuário José, podemos identificar isso, pois o atributo usuárioId faz referência à chave primária da tabela usuários, de forma que o usuário com o id 3 é o josé.
O modelo relacional não é o mais utilizado apenas por ser o mais antigo, mas sim por trazer inúmeras vantagens na sua utilização. Podemos citar algumas, como:
Independência dos dados.
Segurança na manipulação de acesso aos dados.
Agilidade de consulta.
Visão global dos dados.
Esta vantagem, porém, não é exclusiva apenas do modelo relacional, e podemos encontrá-las, também, em outros modelos que exploraremos na próxima lição. Está ansioso? Espero você lá!
ALVES, W. P. Banco de dados: teoria e desenvolvimento. São Paulo: Saraiva Educação S. A., 2009.
CODD, E. F. A Relational Model of Data for Large Shared Data Banks. Information Retrieval, v. 13, n. 6, jun. 1970.
ELMASRI, R. et al. Sistemas de banco de dados. São Paulo: Pearson Addison Wesley, 2005.