Modelagem BD
Modelagem BD
Modelagem BD
Apostila de
Modelagem de Dados
Versão 2007
Elaborado por: Prof. Fernando Salles Claro
Apostila de A.S.M.D. – Módulo de Modelagem de Dados I
Sumário
Modelo de Rede
No modelo de rede, a visão do usuário é a de um grafo ou uma malha de ligações um-
para-muitos entre os registros. Um tipo de registro pode estar envolvido em mais de um
relacionamento, pode ter vários ascendentes e vários descendentes
O grupo CODASYL (que desenvolveu o Cobol), através do Database Task Group
(DBTG) desenvolveu um modelo de rede que é o mais difundido e aceito. O modelo DBTG
criou a figura do grupo ou conjunto, uma representação para os relacionamentos. Cada conjunto
tem um tipo de registro proprietário, que só pode participar de uma ocorrência do conjunto, e
um tipo de registro membro, que pode participar em qualquer quantidade de ocorrências
A figura a seguir apresenta registros ligados de acordo com uma estrutura de grafo,
própria do modelo rede:
Apostila de A.S.M.D. – Módulo Modelagem de Dados 3
Modelo Relacional
Um banco de dados relacional é visto pelo usuário como um conjunto de tabelas. Uma
tabela ou relação é formada por linhas conhecidas como t-uplas (lê-se “tuplas”) e colunas. Cada
coluna tem um conjunto de valores possíveis chamado domínio. Em linguagem de computação,
tabela ou relação equivale a arquivo, t-upla equivale a registro e coluna equivale a campo. A
representação por um conjunto de tabelas estabelece a diferença em relação ao modelo rede, que
é um conjunto de registros e relacionamentos através de ligações.
Portanto, definimos um sistema relacional como aquele onde os dados são notados pelos
usuários como tabelas e as operações aplicáveis ao sistema geram tabelas partindo da primeira.
Na figura abaixo, podemos observar um exemplo de modelo relacional:
operadas;
Diferença : Cria uma tabela contendo t-uplas que pertencem a primeira
tabela operada, mas não à segunda;
Produto Cartesiano : Gera todas as combinações possíveis entre as tuplas
de duas tabelas.
Projeção : Cria uma tabela contendo alguns atributos específicos da tabela
operada;
Seleção ou Restrição : Serve para extrair t-uplas de uma certa tabela;
Junção : Gera uma tabela que é a combinação das tabelas operadas
segundo critérios impostos sobre atributos de uma e outra tabela;
Divisão : Opera duas tabelas, criando uma terceira com os atributos da
primeira tabela, cujos atributos que os acompanham existem também na
segunda tabela.
O cálculo relacional tem poder equivalente à álgebra e dá como resultado relações
(tabelas), da mesma forma. A diferença está na forma de expressão: a álgebra especifica as
operações a fazer sobre as tabelas, enquanto o cálculo relacional apenas nomeia a informação
desejada e um certo predicado ou critério para os valores a serem pesquisados, sem dizer quais as
operações a fazer.
Dentre os sistemas relacionais, os System/R e o Ingres foram os primeiros a serem
comercializados. Dentre os sistemas relacionais atuais mais utilizados no brasil, temos:
MS-Access
DB2
Informix
Oracle
Progress
Sybase
TSGDB
Unify
Zim
MS-SQL Server
Postgresql
Mysql
Interbase / Firebird
entre outros...
Apostila de A.S.M.D. – Módulo Modelagem de Dados 5
Tabela DEPTO
Id_depto Nome_depto
4 Compras
9 Televendas
3 Manutenção
Tabela FUNCIONÁRIO
Id_func Nome_func Data_nasc Sexo Id_depto
39 Maria de Bem 10/01/61 F 4
14 João dos Anzóis 22/11/55 M 3
76 Johnson Hooks 11/03/77 M 9
90 Carmem Bizet 02/02/67 F 4
91 Antenor Ópera 12/1259 M 4
No exemplo, as tabelas têm uma coluna em comum: id_depto e um atributo que cumpre o
papel em DEPTO, de identificador de cada registro e, em FUNCIONÁRIOS, de apontador que
permite chegar ao nome do departamento.
Projetar tabelas diretamente a partir da simples observação da realidade do ambiente nem
sempre é fácil e pode não ser o modo mais eficiente de projetar.
Os modelos semânticos de dados surgiram com o objetivo de agregar sentido à descrição
de um banco de dados. A abordagem semântica mais conhecida e adotada é a do modelo
Entidade-Relacionamento (ER), publicado em artigo de Peter Pin-Shan Chen, baseado na teoria
relacional e teoria dos conjuntos.
O ER é um modelo de dados que se propôs a englobar algumas propostas de modelagem
anteriores, como o modelo relacional e o de rede, e dar uma visão mais abstrata e de mais alto
nível a um ambiente de banco de dados.
Entidades
Entidade é um conjunto de objetos de mesma natureza, com as mesmas características ou
atributos, abrigados sob um nome genérico. Em um banco de dados de uma universidade, por
Apostila de A.S.M.D. – Módulo Modelagem de Dados 6
exemplo, são entidade: Aluno, Professor, Curso, Departamento, Disciplina, etc., pois cada uma
destas entidades representa uma coleção de objetos com os mesmos tipos de atributos.
Chamamos ocorrência de uma entidade à um objeto que pertence entidade. No exemplo
acima, Ciências da Computação poderia ser uma ocorrência da entidade Curso e Bancos de
Dados uma ocorrência de Disciplina.
Cada ocorrência de entidade apresentar-se-á como uma coleção de elementos de dados
ou atributos, por exemplo:
Entidade Atributos
ALUNO Nome
Número de matrícula
Endereço
PROFESSOR Nome
Código
Data de admissão
Salário
Tabela 2 – Entidades e seus atributos
Atributo determinante é aquele que identifica uma ocorrência da entidade. Por exemplo:
Número de matrícula, na entidade ALUNO.
Observe, no exemplo acima, que os atributos Nome aparecem tanto para a entidade
ALUNO quanto para PROFESSOR, mas são coisas diferentes, com significados diferentes.
Nos diagramas de entidades e relacionamento as entidades são representadas por
retângulos com seu nome inscrito. Os elementos de dados, quando representados, apresentam-se
ligados a entidade por um traço de detalhe.
endereço
nome número de matrícula
ALUNO
A definição sobre o que deve ou não ser entidade depende do ambiente para o qual se
projeta o banco de dados.
Vamos examinar, por exemplo, chassi. Para uma fábrica de chassis, certamente haverá
uma entidade Chassi, com elementos de dados dando as características de cada ocorrência ou
modelo de chassi. Agora, no banco de dados de uma montadora de veículos, chassi pode ser uma
ocorrência da entidade Parte (Item, Peça ou que nome possua), relacionando-se com outras
ocorrências da entidade para compor produtos ou subprodutos. Por fim, para o banco de dados
do Cadastro Nacional de Veículos Roubados, chassi poderá ser um elemento de dados da
entidade Veículo correspondente ao número de série do chassi (neste caso, a única informação
sobre chassi que interessa).
Portanto, conceber uma entidade é uma tarefa cuja decisão é relativa, depende do âmbito
do projeto. Uma boa garantia de que uma entidade foi bem projetada é ter a capacidade de lhe
atribuir um nome que represente o que é cada uma de suas ocorrências e identificar o atributo
determinante que lhe confere identidade.
Relacionamentos
GRAU 1:
Apostila de A.S.M.D. – Módulo Modelagem de Dados 9
GRAU 2:
GRAU 3:
Agregação
Representação Alternativa
A entidade Venda na figura 12, é conhecida como entidade de ligação pois funciona
como um relacionamento que associa Cliente a Vendedor, e como uma entidade associada a
Produto.
Generalização/Especialização
Capítulo 2 – Normalização
Introdução
Enunciado:
“Uma tabela só estará na 1FN se nenhum dos seus atributos tem domínio
multivalorado”
Para entendermos melhor, imaginaremos uma nota fiscal, onde teríamos nome do cliente,
endereço do cliente, numero da nota, nome do vendedor, data, código do produto, descrição do
Apostila de A.S.M.D. – Módulo Modelagem de Dados 16
produto, quantidade, preço unitário, total. Para isso, teríamos que ter atributos para cada coisa
armazenada na nota fiscal.
descr
endcli
pr-un total
unid qtde
data
Fig. 14 – Modelo de uma nota Fiscal
O total da nota é um elemento de dados redundantes, pois pode ser calculado a partir das
quantidades e preços de cada item vendido. Idealmente, não é necessário armazená-lo.
A idéia é armazenar todos os atributos em um tipo de registro, ou seja, em uma única
tabela. Chamaremos domínio ao conjunto de valores possíveis para um atributo. Assim, são
domínios simples: num, data, total, codven, codcli, nomcli, endcli, pois seus elementos são
atômicos, assumem um e só um valor. São domínios multivalorados ou múltiplos: codpro,
descr, un, pr_un e qtde, pois podem assumir muitos valores em cada registro da tabela (em cada
nota fiscal).
Portanto, temos que projetar os atributos codpro, descr, un, pr-un e qtde para fora da
tabela original, se quisermos torná-la uma tabela 1FN.
Cinco atributos violaram a condição 1FN, então, a normalização fará surgir uma a cinco
novas tabelas, além da tabela original desmembrada. No caso, podemos colocar todos os cincos
atributos projetados em uma única tabela, pois eles representam um item da nota fiscal. Para
cada nota, haverá exatamente o mesmo numero de atributos codpro, descr, un, pr-un e qtde.
Para preservar a informação dada pela tabela original precisamos dizer de qual nota fiscal
ela veio. Portanto, o atributo a ser incluindo na nova tabela é num.
A escolha de num para integrar a tabela de itens não é casual, pois num é o atributo
determinante ou chave da Nota_Fiscal, o atributo cujo valor identifica uma ocorrência da
tabela, pois nunca haverá duas notas fiscais com o mesmo numero (num).
Apostila de A.S.M.D. – Módulo Modelagem de Dados 17
Nota_Fiscal
Atributo Significado
num Número da nota
data Data de emissão
total Valor total da nota
codven (*) Código do vendedor
nomven Nome do vendedor
codcli (*) Código do cliente
nomcli Nome do cliente
endcli Endereço do cliente
codpro (*) Código do produto
descr Descrição do produto
un Unidade de medida na qual o produto é vendido
pr-un Preço unitário de venda do produto
qtde Quantidade vendida
tabela 4 – Levantamento inicial baseado na nota fiscal
Enunciado:
“Para uma tabela estar na 2FN ela deve estar na 1FN e seus atributos dependerem
funcionalmente da totalidade da chave ou atributo determinante.”
A 2FN serve para evitar que se mantenham informações sobre um conjunto que tem
interseção com o conjunto representado na tabela, mas tem existência independente.
Usamos a 2FN projetando-se os atributos que dependem funcionalmente de parte da chave
para fora da tabela, levando a parte da chave que os determina como elo para refazer a ligação e
recuperar o conteúdo da tabela original.
Enunciado:
“Uma tabela estará na 3FN quando estiver na 2FN e não houver dependência funcional
transitiva entre seus atributos.”.
Enunciado:
“Uma tabela está na FNBC quando todo atributo determinante existente na tabela é
chave candidata”.
Todo atributo (ou concatenação de atributos) cujo valor é único em uma tabela constitui
uma chave candidata. Pode ser que haja situações em que uma tabela possua mais de um
atributo com valor único, como por exemplo, se resolvêssemos colocar também o numero do
CPF e do RG do cliente, a tabela Cliente terá três chaves candidatas. Na tabela acima, num é
chave candidata de Nota_Fiscal, codven de Vendedor, codcli de Cliente, codpro de Produto e
num+codpro de Item. Se verificarmos as tabelas resultantes da 3FN, não encontraremos outros
determinantes além das chaves candidatas. Portanto, todas as tabelas estão de acordo com a
FNBC.
Não se admira, pois a forma de Boyce-Cood foi enunciada como um aperfeiçoamento da
3FN. Vemos que a FNBC garante que estão satisfeitas a 1FN, 2FN e 3FN.
Apostila de A.S.M.D. – Módulo Modelagem de Dados 21
NOTAS: O diretor de um filme pode ser ator em outro. Podem existir 1 ou mais fitas de um
mesmo filme.
24) Em um estudo realizado na biblioteca de nossa Escola, deseja-se criar um banco de dados
que vise controlar todos os livros que compõem o acervo. Para tanto, é desejado manter os
seguintes controles.
a) Cadastro de alunos
b) Cadastro de livros
c) Cadastro de livros emprestados e disponíveis.
Numa biblioteca, podem existir 1 ou mais exemplares de um mesmo livro. Sendo que
cada exemplar tem seu código.
Um aluno pode emprestar quantos livros desejar.
Abaixo, temos algumas perguntas que poderíamos fazer ao nosso banco de dados.
Extrato Bancário
Banco Pouca Grana Conta Corrente: 0001-X
Cliente: José Exemplo e/ou Maria Exemplo Tipo Conta: Conjunta Especial: R$ 1.000,00
Cliente desde: 05/02/1990 Saldo Médio do Último Período: R$ 325,00
Horário de Aula
Curso: Processamento de Dados Série: 3º Turma: X Período: Mat
28) Refaça o exercício 27 de tal forma que sejam considerados uma tabela de professores que
lecionam determinada matéria em um determinado dia/aula de uma classe.