O modelo relacional um modelo de dados representativos (ou de implementao),
adequado a ser o modelo subjacente de um Sistema Gerenciador de Banco de Dados
(SGBD), que se baseia no princpio em que todos os dados esto guardados em tabelas (ou, matematicamente falando, relaes). Toda sua definio terica e baseada na lgica de predicados e na teoria dos conjuntos. O conceito foi criado por Edgar Frank Codd em 1970, sendo descrito no artigo "Relational Model of Data for Large Shared Data Banks". Na verdade, o modelo relacional foi o primeiro modelo de dados descrito teoricamente, os bancos de dados j existentes passaram ento a ser conhecidos como (modelo hierrquico, modelo em rede ou Codasyl e modelo de listas invertidas). O modelo relacional para gerncia de bases de dados (SGBD) um modelo de dados baseado em lgica e na teoria de conjuntos. Em definio simplificada, o modelo baseia-se em dois conceitos: conceito de entidade e relao - Uma entidade um elemento caracterizado pelos dados que so recolhidos na sua identificao vulgarmente designado por tabela. Na construo da tabela identificam-se os dados da entidade. A atribuio de valores a uma entidade constri um registro da tabela. A relao determina o modo como cada registro de cada tabela se associa a registros de outras tabelas. Historicamente ele o sucessor do modelo hierrquico e do modelo em rede. Estas arquiteturas antigas so at hoje utilizadas em alguns data centers com alto volume de dados, onde a migrao inviabilizada pelo custo que ela demandaria; existem ainda os novos modelos baseados em orientao ao objeto, que na maior parte das vezes so encontrados como kits em linguagem formal. O modelo relacional foi inventado pelo Frank Codd e subsequentemente mantido e aprimorado por Chris Date e Hugh Darwen como um modelo geral de dados. No Terceiro Manifesto (1995) eles mostraram como o modelo relacional pode ser estendido com caractersticas de orientao a objeto sem comprometer os seus princpios fundamentais. A linguagem padro para os bancos de dados relacionais, SQL, apenas vagamente remanescente do modelo matemtico. Atualmente ela adotada, apesar de suas restries, porque ela antiga e muito mais popular que qualquer outra linguagem de banco de dados. A principal proposio do modelo relacional que todos os dados so representados como relaes matemticas, isto , um subconjunto do produto Cartesiano de n conjuntos. No modelo matemtico (diferentemente do SQL), a anlise dos dados feita em uma lgica de predicados de dois valores (ou seja, sem o valor nulo); isto significa que existem dois possveis valores para uma proposio: verdadeira ou falsa. Os dados so tratados pelo clculo relacional ou lgebra relacional. O modelo relacional permite ao projetista criar um modelo lgico consistente da informao a ser armazenada. Este modelo lgico pode ser refinado atravs de um processo de normalizao. Um banco de dados construdo puramente baseado no modelo relacional estar inteiramente normalizado. O plano de acesso, outras implementaes e detalhes de operao so tratados pelo sistema DBMS, e no devem ser refletidos no modelo lgico. Isto se contrape prtica comum para DBMSs SQL nos quais o ajuste de desempenho frequentemente requer mudanas no modelo lgico. Os blocos bsicos do modelo relacional so o domnio, ou tipo de dado. Uma tupla um conjunto de atributos que so ordenados em pares de domnio e valor. Uma relvar (varivel relacional) um conjunto de pares ordenados de domnio e nome que serve como um cabealho para uma relao. Uma relao um conjunto desordenado de tuplas. Apesar destes conceitos matemticos, eles correspondem basicamente aos conceitos tradicionais dos bancos de dados. Uma relao similar ao conceito de tabela e uma tupla similar ao conceito de linha. O princpio bsico do modelo relacional o princpio da informao: toda informao representada por valores em relaes (relvars). Assim, as relvars no so relacionadas umas s outras no momento do projeto. Entretanto, os projetistas utilizam o mesmo domnio em vrios relvars, e se um atributo dependente de outro, esta dependncia garantida atravs da integridade referencial. ndice [esconder] 1 Banco de dados exemplo 2 Exemplo: cliente 3 Ver tambm 4 Referncias 5 Ligaes externas Banco de dados exemplo[editar | editar cdigo-fonte] Um exemplo bem simples da descrio de algumas tabelas e seus atributos: Cliente(ID Cliente, ID Taxa, Nome, Endereo, Cidade, Estado, CEP, Telefone) Pedido de compra(Nmero do pedido, ID Cliente, Factura, Data do pedido, Data prometida, Status) Item do pedido(Nmero do pedido, Nmero do item, Cdigo do produto, Quantidade) Nota fiscal(Nmero da nota, ID Cliente, Nmero do pedido, Data, Status) Item da nota fiscal(Nmero da nota,Nmero do item,Cdigo do produto, Quantidade vendida) Neste projeto ns temos cinco relvars: Cliente, Pedido de compra, Item do pedido, Nota fiscal e Item da nota fiscal. Os atributos em negrito e sublinhados so chaves candidatas. Os itens sublinhados sem negrito so as chaves estrangeiras. Normalmente uma chave candidata escolhida arbitrariamente para ser chamada de chave primria e utilizada com preferncia sobre as outras chaves candidatas, que so ento chamadas de chaves alternativas. Uma chave primria um identificador nico que garante que nenhuma tupla ser duplicada; isto faz com que o relacionamento em algo denominado um multiconjunto, porque viola a definio bsica de um conjunto. Uma chave pode ser composta, isto , pode ser formada por vrios atributos. Abaixo temos um exemplo tabular da nossa varivel exemplo Cliente; um relacionamento pode ser abstrado como um valor que pode ser atribudo a uma relvar. Exemplo: cliente[editar | editar cdigo-fonte] ID Cliente ID Taxa Nome Endereo [Mais campos....] 1234567890 555-5512222 Joo Carlos Rua Principal n 120 ... 2223344556 555-5523232 Dorotia Santos Avenida Principal n 12 ... 3334445563 555-5533322 Lisbela da Cruz Rua de trs n123 ... 4232342432 555-5325523 E. F. Codd Travessa principal n 51 ... 4265871131 555-5487333 franciwilliam projetada n 1252 ... Se ns tentarmos inserir um novo cliente com o ID 1234567890, isto ir violar o projeto da relvar pois ID Cliente uma chave primria e ns j temos um cliente com o nmero 1234567890. O DBMS deve rejeitar uma transao como esta e deve acusar um erro de violao da integridade. As chaves estrangeiras so condies 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 unio uma operao que retorna a informao de vrias relvars de uma vez. Atravs da unio de relvars do exemplo acima podemos consultar no banco de dados quais so os clientes, pedidos e notas. Se ns queremos apenas as tuplas de um cliente especfico, podemos especificar isto utilizando uma condio de restrio. 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 Nmero do pedido. Existe uma imperfeio no projeto de banco de dados acima. A tabela de notas contm um atributo nmero do pedido. Assim, cada tupla na tabela de notas ter um pedido, o que implica precisamente um pedido para cada nota. Mas na realidade uma nota pode ser criada a partir de muitos pedidos, ou mesmo para nenhum pedido em particular. Adicionalmente um pedido contm um nmero de nota, implicando que cada pedido tem uma nota correspondente. Mas novamente isto no verdadeiro no mundo real. Um pedido s vezes pago atravs de vrias notas, e s vezes pago sem um nota. Em outras palavras podemos ter muitas notas por pedido e muitos pedidos por nota. Isto um relacionamento vrios-para-vrios entre pedidos e notas. Para representar este relacionamento no banco de dados uma nova tabela deve ser criada com o propsito de especificar a correspondncia entre pedidos e notas: PedidoNota(Nmero do pedido,Nmero da nota) Agora, um pedido tem um relacionamento um-para-vrios para a tabela PedidoNota, assim como o Cliente tem para a tabela de pedidos. Se quisermos retornar todas as notas de uma pedido especfico, podemos consultar no banco de dados todos os pedidos cujo Nmero do pedido igual ao Nmero do pedido na tabela PedidoNota, e onde o Nmero da nota na tabela PedidoNota igual Nmero da nota na tabela Notas. A normalizao de banco de dados normalmente realizada quando projeta-se um banco de dados relacional, para melhorar a consistncia lgica do projeto do banco de dados e o desempenho transacional. Existem dois sistemas mais comuns de diagramao que ajudam na representao visual do modelo relacional: O diagrama de entidade-relacionamento DER, e o diagrama correlato IDEF utilizado no mtodo IDEF1X criado pela Fora Area dos Estados Unidos baseado no DER.