O modelo de banco de dados relacional foi introduzido no início da década de 70 por um pesquisador da IBM chamado E. F. Codd. Segundo seu modelo, um sistema gerenciador de banco de dados baseia-se no armazenamento de dados em tabelas e suas relações entre si. A idéia é extremamente funcional: os dados correlatos devem estar contidos na mesma tabela e utilizamos relacionamentos entre tabelas para agruparmos dados menos correlatos.
Exemplo: Se sua aplicação controla toda uma loja de varejo, podemos ter tabelas de cadastros de clientes e tabelas de cadastros das vendas. Assim, podemos criar um relacionamento entre estas tabelas e facilmente termos dados de quanto, quando e o quê um dado cliente comprou na loja.
Este modelo tende a imitar a forma do pensar humano. Intuitivamente agrupamos informações sobre coisas semelhantes.... e as relacionamos com outras.
Os relacionamentos baseiam-se em tipos específicos de campos na tabela. Estes tipos são as chaves primárias e as chaves estrangeiras.
Os relacionamentos entre tabelas de um sistema gerenciador de banco de dados é realizada através da interconexão dos campos-chaves (ou apenas chaves) das tabelas. Uma chave em uma tabela fornece um meio rápido e eficaz do gerenciador de banco de dados localizar rapidamente informações específicas. Apesar destas chaves não significarem informações válidas ao usuário do banco de dados, internamente ela é de vital importância e nela se basea os relacionamentos.
Temos dois tipos de chaves: Primária e Estrangeira. Veremos mais adiante suas definições.
Temos basicamente 3 tipos de relacionamentos: de um registro de uma tabela para um registro da outra tabela (um para um) e de um registro para vários registros (um para vários).
Um para um: Implementa uma relação estreita e de unicidade. Um registro na tabela A deve ter um registro na tabela B. Se houver um registro na tabela B deve existir um correspondente na tabela A.
Exemplo: Em uma aplicação de controle de pedidos em uma loja talvez exista um relacionamento entre a tabela pedido e a tabela transacao. Para cada pedido há uma transação e para cada transação há um pedido.
Um para vários: Um registro na tabela A pode estar relacionado à vários registros na tabela B, porém os vários registros na tabela B só podem estar relacionados a um registro na tabela A.
Exemplo: Na mesma aplicação anterior, um registro na tabela cliente pode estar relacionada à vários registros na tabela pedido. Porém cada pedido só pode estar relacionado a um cliente.
Chaves Primárias são chaves que tem como função identificar um certo registro. Tem como característica ser não nula e única na tabela. Geralmente é utilizada com o nome de ID. Por exemplo, na tabela de transações, sua chave primária seria transacao_ID .
Chaves Estrangeiras tem como função apontar para um registro em outra tabela, criando uma relacionamento. Assim, seu conteúdo deve existir na tabela na qual ela aponta. Com isto é criado mecanismos de integridade de dados. Se o conteúdo da tabela na qual a chave estrangeira indica for deletado, ela também o será, não permitindo assim inconsistências no banco de dados.