Explorar as características dos dados relacionais

Concluído

Um dos principais benefícios dos bancos de dados de computador é que eles facilitam o armazenamento de informações para que seja rápido e fácil encontrá-las. Por exemplo, um sistema de comércio eletrônico pode usar um banco de dados para registrar informações sobre os produtos que uma organização vende, bem como os detalhes dos clientes e dos pedidos que eles fizeram. Um banco de dados relacional fornece um modelo para armazenamento dos dados e uma funcionalidade de consulta que permite a recuperação rápida de dados.

Nesta unidade, você aprenderá mais sobre as características dos dados relacionais e como você pode armazenar essas informações e consultá-las em um banco de dados relacional.

Compreensão das características dos dados relacionais

Em um banco de dados relacional, você modelará coleções de entidades do mundo real como tabelas. Uma entidade é descrita como uma coisa sobre a qual as informações precisam ser conhecidas ou mantidas. No exemplo de comércio eletrônico, você pode criar tabelas para clientes, produtos e pedidos. Uma tabela contém linhas e cada linha representa uma instância de uma entidade. No cenário de comércio eletrônico, cada linha na tabela clientes contém os dados de um cliente, cada linha na tabela produtos define um produto e cada linha na tabela pedidos representa um pedido feito por um cliente.

As linhas em uma tabela têm uma ou mais colunas que definem as propriedades da entidade, como o nome do cliente ou a ID do produto. Todas as linhas na mesma tabela têm as mesmas colunas. Algumas colunas são usadas para manter relações entre tabelas. Na imagem abaixo, a tabela Pedidos contém uma ID do cliente e uma ID do produto. A ID do cliente está relacionada à tabela Clientes para identificar o cliente que fez o pedido, enquanto a ID do produto está relacionada à tabela Produtos para indicar qual produto foi adquirido.

Diagrama que apresenta um exemplo de um modelo relacional, mostrando clientes, pedidos e dados de produtos.

Você cria um banco de dados relacional criando um modelo de dados. O modelo a seguir mostra a estrutura das entidades do exemplo anterior. Neste diagrama, as colunas marcadas como PK são a Chave Primária para a tabela. A chave primária indica a coluna (ou a combinação de colunas) que identifica exclusivamente cada linha. Todas as tabelas devem ter uma chave primária.

O diagrama também mostra as relações entre as tabelas. As linhas que conectam as tabelas indicam o tipo de relação. Nesse caso, a relação entre clientes e pedidos é de um para muitos (um cliente pode fazer vários pedidos, mas cada pedido é para apenas um cliente). Da mesma maneira, a relação entre pedidos e produtos é de muitos para um (vários pedidos podem ser para o mesmo produto).

As colunas marcadas como FK são colunas de Chave Estrangeira. Elas referenciam ou vinculam à chave primária de outra tabela e são usadas para manter as relações entre tabelas. Uma chave estrangeira também ajuda a identificar e impedir anomalias, como pedidos de clientes que não existem na tabela Clientes. No modelo abaixo, as colunas ID do cliente e ID do produto no link da tabela Pedidos para o cliente que fez o pedido e o produto que foi encomendado:

Diagrama que apresenta um exemplo de um modelo relacional, mostrando clientes, pedidos e produtos.

As características principais de um banco de dados relacional são:

  • Todos os dados são tabulares. As entidades são modeladas como tabelas, cada instância de uma entidade é uma linha na tabela e cada propriedade é definida como uma coluna.

  • Todas as linhas na mesma tabela têm o mesmo conjunto de colunas.

  • Uma tabela pode conter qualquer número de linhas.

  • Uma chave primária identifica exclusivamente cada linha em uma tabela. Duas linhas nunca podem compartilhar a mesma chave primária.

  • Uma chave estrangeira faz referência a linhas em outra tabela relacionada. Para cada valor na coluna de chave estrangeira, deve haver uma linha com o mesmo valor na coluna de chave primária correspondente na outra tabela.

Observação

A criação de um modelo de banco de dados relacional para uma organização de grande porte não é uma tarefa trivial. Podem ser necessárias várias iterações para a definição de tabelas de acordo com as características descritas acima. Às vezes, você precisa dividir uma entidade em mais de uma tabela. Esse processo é chamado de normalização.

A maioria dos bancos de dados relacionais dão suporte à linguagem SQL. Você usa o SQL para criar tabelas, inserir, atualizar e excluir linhas em tabelas e consultar dados. Você usa o comando CREATE TABLE para criar uma tabela, a instrução INSERT para armazenar dados em uma tabela, a instrução UPDATE para modificar dados em uma tabela e a instrução DELETE para remover linhas de uma tabela. A instrução SELECT recupera dados de uma tabela. A consulta de exemplo abaixo localiza os detalhes de cada cliente do banco de dados de exemplo mostrado acima.

SELECT CustomerID, CustomerName, CustomerAddress
FROM Customers

Em vez de recuperar cada linha, é possível filtrar dados usando uma cláusula WHERE. A próxima consulta busca a ID do pedido e a ID do produto para todos os pedidos feitos pelo cliente 1.

SELECT OrderID, ProductID
FROM Orders
WHERE CustomerID = 'C1'

É possível combinar os dados de várias tabelas em uma consulta usando uma operação de junção. Uma operação de junção abrange as relações entre tabelas, permitindo que você recupere os dados de mais de uma tabela por vez. A consulta a seguir recupera o nome de todos os clientes, junto com o nome e a quantidade do produto para cada pedido que esses clientes fizeram. Observe que cada coluna é qualificada com a tabela à qual ela pertence:

SELECT Customers.CustomerName, Orders.QuantityOrdered, Products.ProductName
FROM Customers JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
JOIN Products
ON Orders.ProductID = Products.ProductID

É possível encontrar detalhes completos sobre o SQL no site da Microsoft, na página da Linguagem SQL.

Explorar casos de uso do banco de dados não relacional

É possível usar um banco de dados relacional a qualquer momento para modelar facilmente seus dados como uma coleção de tabelas com um conjunto fixo de colunas. Teoricamente, é possível modelar quase todos os conjuntos de dados dessa maneira, mas alguns cenários se prestam ao modelo relacional melhor do que outros.

Por exemplo, se você tiver uma coleção de música, vídeo ou outros arquivos de mídia, a tentativa de forçar esses dados para o modelo relacional poderá ser difícil. Talvez seja melhor usar o armazenamento não estruturado, como o que está disponível no Armazenamento de Blobs do Azure. Da mesma forma, os sites de rede social usam bancos de dados para armazenar dados sobre milhões de usuários, sendo que cada um deles pode ser vinculado a qualquer número de outros usuários em uma rede altamente complexa de relacionamentos. Esse tipo de dados se presta mais a uma estrutura de banco de dados de grafo em vez de a uma coleção de tabelas relacionais.

Os bancos de dados relacionais são comumente usados em sistemas de comércio eletrônico, mas um dos principais casos de uso para bancos de dados relacionais é o OLTP (processamento de transações online). Os aplicativos OLTP se concentram em tarefas orientadas a transações que processam um número muito grande de transações por minuto. Os bancos de dados relacionais são adequados para aplicativos OLTP porque dão suporte naturalmente a operações de inserção, atualização e exclusão. Um banco de dados relacional geralmente pode ser ajustado para tornar essas operações rápidas. Além disso, a natureza do SQL torna fácil para os usuários executar consultas ad hoc em dados.

Exemplos de aplicativos OLTP que usam bancos de dados relacionais são:

  • Soluções bancárias
  • Aplicativos de varejo online
  • Sistemas de reserva de voo
  • Muitos aplicativos de compra online.