Sistemas de Informação e
Modelagem de Dados
Cristiano Biancardi 2
Banco de Dados
Projeto Lógico
Um aspecto fundamental dos modelos
lógicos consiste em estabelecer de que
forma serão armazenados os dados do
sistema.
Deve ser feito levando em consideração a
abordagem que será utilizada: Relacional,
OO, Hierárquica, Redes.
Modelagem conceitual de dados (MER) deve
ser adequado a abordagem considerada.
A representação é independente dos
dispositivos ou meios de armazenamento
físico das estruturas de dados por ela
Banco de Dados
Banco de Dados Relacionais
Atualmente, a plataforma de
implementação para
armazenamento de dados mais
difundida.
Iremos usar o Modelo relacional.
Banco de Dados
Modelo Relacional : Definições
Relação:
– Tabela bidimensional organizada
em linhas e colunas.
– Representa uma entidade do
Banco de Dados
– Grau da Relação: Número de colunas da tabela. Ex: 6
– Linha (Tupla): Representa uma instância da entidade.
• Ex: Funcionário 0789 do conjunto de Funcionários.
– Colunas: Representam os vários atributos do conjunto de entidades ou classe.
• Ex: Matrícula, Nome, CPF, Endereço, Dt-Nasc, Dt-Adm.
– Célula: Item de dado elementar da linha i, coluna j.
Banco de Dados
Chaves Candidatas: Ocorrem quando em uma relação existe mais de uma combinação de atributos possuindo a propriedade de
identificação única. Ex: Matrícula, CPF
Chave Primária: Atributo ou combinação de atributos que possuem a propriedade de
identificar de forma única uma linha da tabela. Corresponde a um atributo determinante do Modelo Conceitual
.
– Ex: Matrícula
Chave Estrangeira: Ocorre quando um atributo de uma relação for chave primária em outra
Banco de Dados
Modelo Relacional : Definições
Ligações:
– Representam os relacionamentos do Modelo
E/R.
– A ligação entre duas entidades é feita, em
geral, transportando-se a chave de uma
entidade para outra (item transposto).
• Exemplo:
– a chave da tabela Departamentos foi transposta para a tabela Funcionários.
– “Departamentos” é denominada relação origem e “Funcionários” relação destino.
– no caso de relacionamentos muitos-para-muitos, é necessário criar uma nova tabela, dita Tabela Associativa, que deverá ter as chaves das duas tabelas relacionadas.
Banco de Dados
Banco de Dados
Nenhum campo componente de uma chave primária pode ser nulo;
Cada célula de uma relação pode ser vazia (exceto de uma chave primária), ou ao contrário, conter no máximo um único valor;
A ordem das linhas é irrelevante;
Não há duas linhas iguais;
Cada coluna tem um nome e colunas distintas devem ter nomes distintos;
Usando-se os nomes para se fazer referência às colunas, a ordem destas torna-se irrelevante;
Banco de Dados
Cada tabela recebe um nome próprio distinto do nome de qualquer outra tabela da base de dados;
Os valores de uma coluna são retirados todos de um mesmo conjunto, denominado domínio da
coluna;
Duas ou mais colunas distintas podem ser definidas sobre um mesmo domínio;
Um campo que seja uma chave estrangeira ou um item transposto só pode assumir valor nulo ou um valor para o qual exista um registro na tabela
onde ela é chave primária.
Banco de Dados
Diagrama Relacional
Um Diagrama Relacional é a
representação gráfica das ligações entre
tabelas de um modelo relacional.
Banco de Dados
No exemplo:
– a coluna Matrícula foi transposta para a
relação Departamentos.
– O contrário também poderia ser feito, isto é,
transpor Código para Funcionários.
• Escolhemos esta solução porque há poucos
funcionários que são gerentes, enquanto todos os departamentos têm gerentes.
• Assim, a coluna Matrícula Chefe não terá valores vazios e dizemos que ela é mais densa do que a coluna resultante da transposição de Código.
Banco de Dados
Elementos do DER
Nesta apresentação são considerados:
– As tabelas são representadas por retângulos, com uma
referência à chave primária da tabela em cima.
– No caso das chaves transpostas (estrangeiras), serão
representadas em cima do retângulo da relação destino, com um subscrito “t”.
– Atributos não são representados nos diagramas, mas sim em dicionário de dados.
Banco de Dados
Diagrama Relacional
– As ligações, que derivam dos relacionamentos, são
representadas por linhas contínuas, associadas aos símbolos abaixo:
Banco de Dados
Se B for total em R (todo B está associado a um A), é melhor colocar a chave de (#A) em B. Caso contrário, é melhor colocar a chave de B(#B) em A.
Banco de Dados
Todo departamento tem um empregado gerente, mas nem todo empregado gerencia um departamento.
Banco de Dados
Transpor a chave do conjunto de entidades de cardinalidade máxima 1 para a tabela que representa o conjunto de entidades cuja cardinalidade máxima é N.
Banco de Dados
Um Departamento pode estar associado a vários Funcionários, mas um Funcionário só pode estar associado a um Departamento, logo transpor a chave primária
Departamentos para Funcionários.
Banco de Dados
Cria-se uma terceira tabela que tenha a chave das duas entidades que participam do relacionamento N:N (agregado). Se existirem atributos do relacionamento, estes deverão ser colocados na nova tabela. Cada tabela se associa com a tabela gerada da seguinte forma: 1 - N
Banco de Dados
Regras de Tradução do Modelo E/R para o Relacional
Um aluno pode cursar várias disciplinas e uma disciplina pode ser cursada por vários alunos. É preciso saber o período em que a disciplina foi cursada pelo aluno.
Banco de Dados
Criar uma chave #A' a ser colocada na própria tabela que representa A.
Banco de Dados
Regras de Tradução do Modelo E/R para o Relacional
Um empregado é gerenciado por outro empregado e um empregado é gerente de vários outros empregados.
Banco de Dados
Assim como feito para qualquer relacionamento N:N, devemos criar uma tabela de ligação com as chaves #A e #A't, transformando a ligação N:N em duas ligações 1:N.
Banco de Dados
Banco de Dados
Cria-se uma tabela para o supertipo e tantas tabelas quantos forem os subtipos, todos com a mesma chave.
Banco de Dados
Banco de Dados
Regras de Tradução do Modelo E/R para o Relacional
1. Criar tantas colunas quantas necessárias para representar o atributo. Esta solução, contudo, pode, em muitos casos, não ser eficiente segundo uma perspectiva de
armazenamento de dados.
Banco de Dados
Normalização
Finalizado o MER, passa-se para o processo de
normalização.
Processo baseia-se no conceito de forma normal.
Forma normal: regra que deve ser obedecida por
uma tabela para que esta seja considerada bem
projetada.
Objetivos:
– Reagrupar informações para eliminar redundâncias
de dados
– Reagrupar informações para eliminar estruturas
inexistentes no modelo ER (atributos multivalorados)
Existem diversas formas normais.
Banco de Dados
Exemplo de Tabela Aninhada: linha
de Projeto
Banco de Dados
Banco de Dados
– Alternativas:
• Construir uma única tabela com
redundância de dados
• Construir uma tabela para cada
Banco de Dados
– uma única tabela
• Uma tabela na qual os dados das linhas
externas à tabela aninhada são
repetidos para cada linha da tabela
aninhada
• Exemplo
– ProjEmp (CodProj, Tipo, Descr, CodEmp,
Nome, Cat, Sal, DataIni, TempAl)
– Dados do projeto aparecem repetidos para
Banco de Dados
– uma tabela para cada tabela
aninhada
• Cria-se uma tabela referente a
própria tabela que está sendo
normalizada e uma tabela para cada
tabela aninhada
• Exemplo:
– Proj (CodProj, Tipo, Descr)
– ProjEmp (CodProj,CodEmp, Nome, Cat,
Banco de Dados
– Para fins práticos
• preferimos a segunda alternativa
(decomposição de tabelas)
– Quando houver diversas tabelas
aninhadas, eventualmente com
diversos níveis de aninhamento,
fica difícil visualizar a tabela na
Banco de Dados
Segunda alternativa:
– Passo 1:
• Criar uma tabela na 1FN referente a
tabela não normalizada
• A chave primária da tabela na 1FN é
Banco de Dados
– Passo 2:
• Para cada tabela aninhada
– criar uma tabela na 1FN composta pelas
seguintes colunas:
» a chave primária de cada uma das
tabelas na qual a tabela em questão está aninhada
Banco de Dados
– Passo 3:
• Definir as chaves primárias das
tabelas na 1FN que correspondem a
tabelas aninhadas.
Banco de Dados
– Outro exemplo:
• Dados referentes a alunos de uma universidade.
• Cada registro contém informações referentes a um aluno. • O registro do aluno contém seu código, seu nome, uma
lista de ingressos m cursos e ma lista de disciplinas
cursadas. A lista de ingressos em curso contém o código do curso em que o aluno ingressou junto com o semestre de ingresso no curso. A lista de disciplinas cursadas
contém um entrada para cada disciplina que o aluno cursou. Para cada disciplina cursada é informado seu código, junto com os diversos semestres em que o aluno cursou a disciplina. Para cada semestre é informado o semestre e a nota qu o aluno obteve na disciplina no semestre em questão.
Banco de Dados
Dependência funcional
– Para entender 2FN e 3FN
• é necessário compreender o conceito de
dependência funcional.
– Em uma tabela relacional, diz-se que –
uma coluna C2 depende funcionalmente
de uma coluna C1 (ou que a coluna C1
determina a coluna C2) quando,
• em todas linhas da tabela, para cada valor
de C1 que aparece na tabela, aparece o mesmo valor de C2.
Banco de Dados
– Cada valor de código está associado
sempre ao mesmo valor de salário:
Banco de Dados
Passagem à 2FN
– Objetiva eliminar um certo tipo de
redundância de dados
– Exemplo:
• (CodProj, CodEmp, Nome, Cat, Sal, DataIni,
TempAl)
– Dados referentes a empregados
(Nome, Cat e Sal)
• Redundantes, para os empregados que
Banco de Dados
– Dependência parcial
Banco de Dados
– Tabela 1FN e que possui apenas uma
coluna como chave primária
• não contém dependências parciais
• É impossível uma coluna depender de uma
parte da chave primária, quando a chave primária não é composta por partes
– Conclusão
• Toda tabela 1FN que possui apenas uma
coluna como chave primária já está na 2FN
Banco de Dados
– Também
• Tabela que contenha apenas colunas
chave primária
• Impossível atributo não chave
depender de parte da chave (tabela
não tem colunas não chave)
• Tabela sem colunas não chave já está
Banco de Dados
Banco de Dados
Passagem à 3FN
– Trata de um outro tipo de redundância
– Exemplo
– Considerar
• salário (coluna Sal) é determinado pela
categoria funcional (coluna Cat)
• Salário que é pago a uma categoria funcional
é armazenado tantas vezes quantos
empregados possui a categoria funcional
Banco de Dados
Banco de Dados
Banco de Dados
Banco de Dados
Exercício:
ATRIBUTO CONTEÚDO
Cd-ordem-compra Código chave da ordem de compra
Dt-emissão Data de emissão da ordem de compra
Cd-fornecedor Código do fornecedor
Nm-fornecedor Nome do fornecedor
En-fornecedor Endereco do fornecedor
Cd-material Código do material ( n vezes)
Ds-material Descrição do material ( n vezes)
Qt-comprada Quantidade comprada ( n vezes)
Vl-unitário Valor unitário do material ( n vezes)
Vl-total-item Valor total do item ( n vezes)
Vl-total-ordem Valor total da ordem de compra
Banco de Dados
cd-ordem
-compradt-emissaocd-fornece-dor nm-forne-cedor end-forne-cedor vl-total
cd-ordem-compracd-materialds-materialqt-comptadavl-unitariovl-total-item Ordem de compra ordem de compra - item 1 N ordem-compra ordem-compra-item Possui
Exemplo (1FN)
Banco de Dados
ordem de compra - item
cd-ordem-compracd-mate-rial qt-comptadavl-total-item
material rialcd-mate-ds-materialvl-unitario
1 N
ordem-compra ordem-compra- item
material 1 N Possui Contém
Exemplo (2FN)
Banco de Dados
ordem de compra –
item
cd-ordem-compracd-mate-rial qt-comptadavl-total-item
Material
cd-mate-rial ds-materialvl-unitario cd-ordem-compradt-emissaocd-fornece-dor vl-total
Ordem de compra
Fornecedor
cd-forne-cedor nm-forne-cedor end-forne-cedorExemplo (3FN)
Banco de Dados
1 N
ordem-compra ordem-compra-item
material 1 N fornecedor 1 N Recebe Possui Contém
Formas Normais
Banco de Dados