Modelo relacional
O modelo relacional é um modelo de dados representativo, adequado a ser o modelo subjacente de um sistema gerenciador de banco de dados (SGBD), que se baseia no princípio de que todos os dados estão armazenados em tabelas. Toda sua definição é teórica e baseada na lógica de predicados e na teoria dos conjuntos.
Imagem: ayerviernes · BY-NC-ND · Openverse
Um exemplo bem simples da descrição de algumas tabelas e seus atributos: Cliente(ID Cliente, ID Taxa, Nome, Endereço, Cidade, Estado, CEP, Telefone) Pedido de compra(Número do pedido, ID Cliente, Factura, Data do pedido, Data prometida, Status) Item do pedido(Número do pedido, Número do item, Código do produto, Quantidade) Nota fiscal(Número da nota, ID Cliente, Número do pedido, Data, Status) Item da nota fiscal(Número da nota,Número do item,Código do produto, Quantidade vendida) Neste projeto nós temos cinco relvars: Cliente, Pedido de compra, Item do pedido, Nota fiscal e Item da nota fiscal. Os atributos em negrito e sublinhados são chaves candidatas. Os itens sublinhados sem negrito são as chaves estrangeiras. Normalmente uma chave candidata é escolhida arbitrariamente para ser chamada de chave primária e utilizada com preferência sobre as outras chaves candidatas, que são então chamadas de chaves alternativas.
Imagem: Jorge Barahona · BY-NC-ND · Openverse
Se nós tentarmos inserir um novo cliente com o ID 1234567890, isto irá violar o projeto da relvar pois ID Cliente é uma chave primária e nós já temos um cliente com o número 1234567890. O DBMS deve rejeitar uma transação como esta e deve acusar um erro de violação da integridade. As chaves estrangeiras são condições de integridade que garantem que o valor de um atributo é obtido de uma chave candidata de outra relvar, por exemplo na relvar Pedido o atributo ID Cliente é uma chave estrangeira. Uma união é uma operação que retorna a informação de várias relvars de uma vez. Através da união de relvars do exemplo acima podemos consultar no banco de dados quais são os clientes, pedidos e notas. Se nós queremos apenas as tuplas de um cliente específico, podemos especificar isto utilizando uma condição de restrição. Se queremos obter todos os pedidos do cliente 1234567890, podemos consultar o banco de dados de forma que este retorne toda linha na tabela de Pedidos com ID Cliente igual a 1234567890 e agrupar a tabela de pedidos com a tabela de itens de pedido baseado no Número do pedido.


