Exemplo de diagrama de relacionamentos e modelo de dados
Na imagem acima, observamos três tabelas: Produtos, Venda e Cliente. Conseguimos identificar os relacionamentos entre as tabelas (uma venda possui um ou vários produtos, um cliente solicita uma ou várias vendas) e também as informações de cada tabela:
Tabela de produtos, campos:
codProd, que é do tipo inteiro, e é a chave primária.
descricaoProd, do tipo texto (varchar) e é a descrição do produto.
valorProd, do tipo inteiro (bigint) representa o preço do produto.
Tabela de cliente, campos:
codCli, inteiro, chave primária.
nomeCli, texto (varchar), nome do cliente.
telCli, texto, telefone do cliente.
Tabela de venda, campos:
codComp: inteiro chave primária da venda.
CLIENTE_codCli: chave primária do cliente, para identificar qual cliente fez a compra.
PRODUTOS_codProd: chave primária do produto, para identificar qual produto foi vendido.
qtdItensComp: inteiro, para identificar a quantidade de itens vendidos.
dataComp: inteiro, para identificar a data da compra.
Tabela de venda, índices:
Compra_fkindex1 – índice para localizar o código do produto.
Venda_fkindex2 – índice para localizar o código do cliente.
Esse modelo acima possui 3 erros / limitações, você conseguiu identificá-los? Veja quais são.
Alguns erros e limitações observados:
Esse modelo de dados só permite um único produto por venda, ou seja, caso o cliente quisesse comprar dois produtos, seriam necessárias duas vendas. O correto seria possuir outra tabela para associar os produtos de cada venda (veja como resolver no próximo diagrama abaixo).
O campo de valorProd (em Produtos), para identificar o preço do produto, utilizou um campo do tipo inteiro. Dessa forma, não é possível representar centavos, somente números inteiros. O correto seria que esse campo fosse do tipo fracionado.
O campo dataComp (em Venda) foi definido como tipo inteiro, mas uma data não é do tipo inteiro. Para ser possível registrar a data da venda, o correto seria que esse campo fosse do tipo data/hora.