Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIP - Universidade Paulista Ciência da Computação Prof. Marcelo Nogueira Modelagem de Dados - Parte 01 1. Teoria dos bancos de dados relacionais Quando o sistema a ser desenvolvido envolver automações comerciais, industriais, bancárias etc., mais importante que dominar especificamente uma linguagem de programação, é conhecer os conceitos e as diversas técnicas de modelagem de bancos de dados com a finalidade de extrair e especificar a reais necessidades e regras de negócios para cada caso. 1.1 Introdução Uma grande parte dos sistemas de bancos de dados desenvolvidos recentemente ainda é relacional, devido ao fato de que, nestes sistemas, o acesso aos dados é mais rápido, eficiente, além de ser baseado em noções simples e intuitivas. Num sistema relacional: 1. Os dados são organizados e visualizados na forma de tabelas; 2. É possível gerar novas tabelas a partir das antigas; 3. As tabelas são ligadas através de relações entre os dados. Esses detalhes serão apresentados a seguir: 1.2 Conceitos básicos de bancos de dados relacionais O elemento fundamental de um banco de dados relacional é a tabela. Uma tabela é um elemento do banco de dados que consiste num conjunto de dados dispostos em forma de linhas com conjuntos idênticos de propriedades (registros). Os valores associados aos registros da tabela aparecem em colunas (campos). Exemplo: Código Nome Telefone Departamento Cargo 1 Antonio José da Silva (11)8888-8888 2 1 2 Manoel Pereira (11)9999-9999 1 2 3 Ismael dos Santos (11)7777-7777 3 3 Tabela 1 – Tabela Funcionários. Um banco de dados é um conjunto de tabelas relacionadas. Uma tabela é um conjunto de informações sobre uma entidade dispostas em forma de linhas e colunas. No caso, a entidade em questão é funcionário. Um registro é uma linha da tabela, ou seja, representa todas as informações de uma entidade em particular. No exemplo, um registro contém todas as informações sobre um funcionário específico. Um campo é uma coluna da tabela, ou seja, representa uma das informações do registro (funcionário). No exemplo, "Nome" é um dos campos dos registros. Portanto, o campo é a menor unidade de informação de um banco de dados. UNIP - Universidade Paulista Ciência da Computação Prof. Marcelo Nogueira A interseção entre a linha e a coluna de uma tabela é chamada atributo e representa o valor de um campo. "Antonio José da Silva", por exemplo, é um valor do campo "Nome" de um registro da tabela. É desejável, mas não essencial que cada registro de uma tabela tenha um conjunto de atributos segundo os quais seja possível identificar inequivocamente o registro dentro da tabela. Esse conjunto é chamado identificador, sendo boa prática de projeto de banco de dados a sua existência. O campo que possui o atributo identificador é chamado chave primária. Por definição, o conjunto de valores dos atributos constituintes da chave primária deve ser único para cada registro. No exemplo, o campo "Código" é a chave primária da tabela, pois não podem existir funcionários que possuam o mesmo código. Na tabela 1 os campos "Cargo" e "Departamento" possuem códigos e não descrições como atributos. As descrições estão armazenadas em outras tabelas 2 e 3 com as quais a tabela principal (Funcionários) se relaciona. Código Cargo Salário 1 Analista de Suporte 1200,00 2 Atendente 750,00 3 Técnico 1500,00 Tabela 2 – Tabela Cargos. Código Departamento 1 Atendimento 2 Suporte 3 Tecnologia Tabela 3 – Tabela Departamentos. A divisão do banco de dados em várias tabelas é uma das características dos bancos de dados relacionais. As descrições dos campos "Cargo" e "Departamento" poderiam ser armazenadas na tabela de funcionários, mas isso seria pouco produtivo, pois além de exigir mais espaço em disco, poderia trazer problemas de consistência ao banco de dados. O relacionamento das tabelas "Funcionários" e "Cargos" se dá através do campo "Cargo" que é comum às duas tabelas. Dizemos que o campo "Cargo" da tabela "Funcionários" é uma chave externa (ou estrangeira) e que a tabela "Cargos" é uma tabela primária e "Funcionários" é a tabela relacionada. Os bancos de dados relacionais requerem dados duplicados entre tabelas (os dados que efetivarão as ligações), mas evitam ao máximo, dados duplicados dentro das tabelas. Há três tipos fundamentais de relações entre tabelas dentro de um modelo relacional: 1. Relações 1 x N: Permitem a existência de mais de um registro na tabela relacionada, relacionados a um único registro da tabela primária. Um exemplo é a relação entre a tabela "Cargos" e a tabela "Funcionários": UM cargo pode ser ocupado por VÁRIAS pessoas. UNIP - Universidade Paulista Ciência da Computação Prof. Marcelo Nogueira 2. Relações 1 x 1: Requerem a existência de um e somente um registro em uma tabela relacionada, relacionado a um único registro da tabela primária. São pouco usadas, pois é muito mais fácil juntar as duas tabelas numa única. Existem algumas situações, no entanto, que compensa ser utilizada. Vamos supor que na tabela de funcionários existisse um campo para guardar o número do brevê do funcionário. A menos que se tratasse de uma empresa aérea, seriam raros os casos de funcionários que possuíssem um brevê, o que justificaria a criação de outra tabela apenas com o código do funcionário e o número do brevê e outras informações pertinentes ao mesmo. Teria então: UM brevê pertence a apenas UMA pessoa. 3. Relações N x N: Não são relações diretas entre duas tabelas, já que requerem uma tabela intermediária, conhecida como tabela de relação, para manter os valores relacionados de ambas as tabelas. Para exemplificar, vamos pensar em outra situação, o relacionamento entre PRODUTOS E EMPRESAS FORNECEDORAS de uma determinada loja: um produto pode ter vários fornecedores, assim como, um fornecedor pode fornecer vários produtos, ou seja, VÁRIOS produtos podem ser fornecidos por VÁRIOS fornecedores. Para resolver o problema, cria-se uma tabela intermediária contendo o código do produto e o código da empresa fornecedora. Essa tabela sim, teria uma relação de 1 x N com as tabelas de produtos e empresas fornecedoras. 1.3 Normalização O processo de dividir as informações em tabelas separadas, a fim de eliminar a duplicação desnecessária e facilitar a manutenção é chamado de normalização. A normalização de uma tabela é um trabalho complexo com muitas regras específicas e diferentes níveis de profundidade. Uma completa discussão desse conceito foge do escopo desta introdução. No entanto, será apresentado nos capítulos futuros. Porém a seguir uma regra simples que pode ser utilizada na maioria dos bancos de dados: “Tabelas que contém repetidas informações devem ser divididas em tabelas separadas para eliminar a duplicação”. UNIP - Universidade Paulista Ciência da Computação Prof. Marcelo Nogueira Modelagem de Dados - Parte 02 2.1 Classificação dos Dados A seguir, será apresentada uma padronização para classificação dos dados, os quais deverão se encaixar em um dos tipos e serem descritos com um dos mnemônicos abaixo. Após a sua adoção, todos os envolvidos no sistema de informações deverão se encaixar em um dos tipos abaixo: Tipo� Descrição� cd� Código� ds� Descrição� dt� Data� dd� Dia� mm� Mês� aa� Ano� hr� Hora� ic� Indicador (binário, descreve dois valores ou estados)� nm� Nome� qt� Quantidade (valores não monetários)� sg� Sigla� pc� Indica uma Porcentagem� vl� Valor monetário� Exemplos: cd_matrícula_funcionário nm_funcionário vl_total_nota_fiscal dt_validade_cotrato hr_prevista_voo qt_material ic_validade_processo ds_material pc_desconto_venda 2.2 Classe de Dados A classe de dados engloba uma série de dados inter-relacionados. O exemplo mais comum de classe de dados é o endereço, que possui uma série de dados como nm_logradouro, UNIP - Universidade Paulista Ciênciada Computação Prof. Marcelo Nogueira cd_logradouro, cd_cep. Quando for necessário referir-se ao endereço como um todo, basta defini-lo como uma classe de dados, e fazer referência à mesma. A classe de dados será definida com dc (data class). Exemplo: dc_endereço_fornecedor = nm_logradouro_fornecedor + cd_logradouro_fornecedor + ds_logradouro_fornecedor + ds_complemento_logradouro_fornecedor + nm_bairro_fornecedor + cd_cep_fornecedor + nm_cidade_fornecedor + cd_ddd_telefone_fornecedor + cd_telefone_fornecedor + cd_fax_fornecedor Assim, toda vez que se fizer referência a dc_endereço_fornecedor, estará se fazendo referência a todo o fluxo acima. Uma classe pode aparecer dentro de um fluxo de dados: informações_fornecedor = num_fornecedor + cd_cnpj_fornecedor + cd_inscrição_estadual_fornecedor + dc_endereço_fornecedor 2.3 Exercícios Propostos 1. Dê um exemplo de uma sigla? 2. Como se escrevem os dados que indicam um período de tempo? 3. Como indicar a média final de um aluno? 4. Dê um exemplo de indicador. 5. Como se expressa um desconto geral de uma liquidação de uma loja? 6. Qual a diferença de descrição e nome? 7. Dê um exemplo de uma descrição? 8. Como se expressa a quantidade de dinheiro desembolsada em um pagamento? 9. Como se expressa o número de uma nota fiscal? 10. Qual a diferença entre sigla e código?
Compartilhar