Buscar

MDados_Parte_01_e 02

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?

Continue navegando